Showing preview only (2,453K chars total). Download the full file or copy to clipboard to get everything.
Repository: Outerbridgeio/Outerbridge
Branch: master
Commit: e2aaae99205b
Files: 317
Total size: 2.3 MB
Directory structure:
gitextract_dr2lrn6b/
├── .dockerignore
├── .eslintrc.js
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ └── feature_request.md
│ └── workflows/
│ └── main.yml
├── .gitignore
├── .husky/
│ └── pre-commit
├── .prettierignore
├── .prettierrc.js
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE.md
├── README.md
├── babel.config.js
├── docker/
│ ├── Dockerfile
│ └── docker-compose.yml
├── package.json
├── packages/
│ ├── components/
│ │ ├── README.md
│ │ ├── credentials/
│ │ │ ├── Alchemy/
│ │ │ │ └── AlchemyApi.ts
│ │ │ ├── Arbiscan/
│ │ │ │ └── ArbiscanApi.ts
│ │ │ ├── Binance/
│ │ │ │ └── BinanceApi.ts
│ │ │ ├── Bscscan/
│ │ │ │ └── BscscanApi.ts
│ │ │ ├── Celoscan/
│ │ │ │ └── CeloscanApi.ts
│ │ │ ├── Cronosscan/
│ │ │ │ └── CronosscanApi.ts
│ │ │ ├── EmailSend/
│ │ │ │ └── EmailSendSmtp.ts
│ │ │ ├── Etherscan/
│ │ │ │ └── EtherscanApi.ts
│ │ │ ├── Fantomscan/
│ │ │ │ └── FantomscanApi.ts
│ │ │ ├── FootprintAnalytics/
│ │ │ │ └── FootprintAnalyticsApi.ts
│ │ │ ├── GitHub/
│ │ │ │ └── GitHubApi.ts
│ │ │ ├── Gnosisscan/
│ │ │ │ └── GnosisscanApi.ts
│ │ │ ├── GoogleDocs/
│ │ │ │ └── GoogleDocsOAuth2.ts
│ │ │ ├── GoogleSheet/
│ │ │ │ └── GoogleSheetOAuth2.ts
│ │ │ ├── HTTP/
│ │ │ │ ├── HTTPBasicAuth.ts
│ │ │ │ └── HTTPBearerTokenAuth.ts
│ │ │ ├── Helio/
│ │ │ │ └── HelioApi.ts
│ │ │ ├── Helius/
│ │ │ │ └── HeliusApi.ts
│ │ │ ├── Hubspot/
│ │ │ │ └── HubspotApi.ts
│ │ │ ├── HuggingFace/
│ │ │ │ └── HuggingFaceAccessToken.ts
│ │ │ ├── Imap/
│ │ │ │ └── Imap.ts
│ │ │ ├── Infura/
│ │ │ │ └── InfuraApi.ts
│ │ │ ├── Mailchimp/
│ │ │ │ └── MailchimpApi.ts
│ │ │ ├── MoonBeamScan/
│ │ │ │ └── MoonBeamScanApi.ts
│ │ │ ├── MoonRiverScan/
│ │ │ │ └── MoonRiverScanApi.ts
│ │ │ ├── Moralis/
│ │ │ │ └── MoralisApi.ts
│ │ │ ├── Notion/
│ │ │ │ └── NotionApi.ts
│ │ │ ├── OpenAI/
│ │ │ │ └── OpenAIApi.ts
│ │ │ ├── Opensea/
│ │ │ │ └── OpenseaApi.ts
│ │ │ ├── OptimisticEtherscan/
│ │ │ │ └── OptimisticEtherscanApi.ts
│ │ │ ├── Pinata/
│ │ │ │ └── PinataApi.ts
│ │ │ ├── Polygonscan/
│ │ │ │ └── PolygonscanApi.ts
│ │ │ ├── QuickNode/
│ │ │ │ └── QuickNodeEndpoints.ts
│ │ │ ├── RequestFinanceApi/
│ │ │ │ └── RequestFinanceApi.ts
│ │ │ ├── SnowTrace/
│ │ │ │ └── SnowTraceApi.ts
│ │ │ ├── Telegram/
│ │ │ │ └── TelegramApi.ts
│ │ │ ├── Twitter/
│ │ │ │ └── TwitterApi.ts
│ │ │ ├── Typeform/
│ │ │ │ └── TypeformApi.ts
│ │ │ ├── TypeformWebhook/
│ │ │ │ └── TypeformApi.ts
│ │ │ └── Xero/
│ │ │ └── XeroOAuth2.ts
│ │ ├── gulpfile.ts
│ │ ├── nodes/
│ │ │ ├── Alchemy/
│ │ │ │ ├── Alchemy.ts
│ │ │ │ ├── AlchemyTrigger.ts
│ │ │ │ ├── AlchemyWebhook.ts
│ │ │ │ ├── extendedOperation.ts
│ │ │ │ ├── solanaOperation.ts
│ │ │ │ ├── subscribeOperation.ts
│ │ │ │ └── supportedNetwork.ts
│ │ │ ├── Arbiscan/
│ │ │ │ ├── Arbiscan.ts
│ │ │ │ └── constants.ts
│ │ │ ├── BEP20Function/
│ │ │ │ ├── BEP20Function.ts
│ │ │ │ └── helperFunctions.ts
│ │ │ ├── BEP20Transfer/
│ │ │ │ └── BEP20Transfer.ts
│ │ │ ├── BEP20TransferTrigger/
│ │ │ │ └── BEP20TransferTrigger.ts
│ │ │ ├── BNBBalanceTrigger/
│ │ │ │ └── BNBBalanceTrigger.ts
│ │ │ ├── BNBTransfer/
│ │ │ │ └── BNBTransfer.ts
│ │ │ ├── Binance/
│ │ │ │ ├── BinancePrivate.ts
│ │ │ │ └── BinancePublic.ts
│ │ │ ├── BlockchainEvent/
│ │ │ │ └── BlockchainEvent.ts
│ │ │ ├── BscScan/
│ │ │ │ ├── Bscscan.ts
│ │ │ │ └── constants.ts
│ │ │ ├── ChainLink/
│ │ │ │ ├── ChainLink.ts
│ │ │ │ ├── ChainLinkFunctionWebhook.ts
│ │ │ │ └── supportedNetwork.ts
│ │ │ ├── ContractEventTrigger/
│ │ │ │ └── ContractEventTrigger.ts
│ │ │ ├── ContractFunctionTrigger/
│ │ │ │ └── ContractFunctionTrigger.ts
│ │ │ ├── CreateERC20Token/
│ │ │ │ └── CreateERC20Token.ts
│ │ │ ├── CreateNFT/
│ │ │ │ └── CreateNFT.ts
│ │ │ ├── Discord/
│ │ │ │ └── Discord.ts
│ │ │ ├── ERC20Function/
│ │ │ │ ├── ERC20Function.ts
│ │ │ │ └── helperFunctions.ts
│ │ │ ├── ERC20Transfer/
│ │ │ │ └── ERC20Transfer.ts
│ │ │ ├── ERC20TransferTrigger/
│ │ │ │ └── ERC20TransferTrigger.ts
│ │ │ ├── ETHBalanceTrigger/
│ │ │ │ └── ETHBalanceTrigger.ts
│ │ │ ├── ETHTransfer/
│ │ │ │ └── ETHTransfer.ts
│ │ │ ├── EmailSend/
│ │ │ │ └── EmailSend.ts
│ │ │ ├── EmailTrigger/
│ │ │ │ └── EmailTrigger.ts
│ │ │ ├── Etherscan/
│ │ │ │ ├── Etherscan.ts
│ │ │ │ └── constants.ts
│ │ │ ├── ExecuteContractFunction/
│ │ │ │ └── ExecuteContractFunction.ts
│ │ │ ├── FlowBalanceTrigger/
│ │ │ │ └── FlowBalanceTrigger.ts
│ │ │ ├── FootprintAnalytics/
│ │ │ │ ├── FootprintAnalytics.ts
│ │ │ │ └── constants.ts
│ │ │ ├── GitHub/
│ │ │ │ ├── GitHub.ts
│ │ │ │ └── GitHubWebhook.ts
│ │ │ ├── GoogleDocs/
│ │ │ │ └── GoogleDocs.ts
│ │ │ ├── GoogleSheet/
│ │ │ │ └── GoogleSheet.ts
│ │ │ ├── GraphQL/
│ │ │ │ └── GraphQL.ts
│ │ │ ├── HTTP/
│ │ │ │ └── HTTP.ts
│ │ │ ├── Helio/
│ │ │ │ ├── Helio.ts
│ │ │ │ └── HelioWebhook.ts
│ │ │ ├── Helius/
│ │ │ │ └── Helius.ts
│ │ │ ├── Hubspot/
│ │ │ │ └── Hubspot.ts
│ │ │ ├── HuggingFace/
│ │ │ │ └── HuggingFace.ts
│ │ │ ├── IfElse/
│ │ │ │ └── IfElse.ts
│ │ │ ├── ImageEditor/
│ │ │ │ └── ImageEditor.ts
│ │ │ ├── Infura/
│ │ │ │ ├── Infura.ts
│ │ │ │ ├── InfuraTrigger.ts
│ │ │ │ ├── extendedOperation.ts
│ │ │ │ └── subscribeOperation.ts
│ │ │ ├── MATICBalanceTrigger/
│ │ │ │ └── MATICBalanceTrigger.ts
│ │ │ ├── MATICTransfer/
│ │ │ │ └── MATICTransfer.ts
│ │ │ ├── Mailchimp/
│ │ │ │ └── Mailchimp.ts
│ │ │ ├── Moralis/
│ │ │ │ ├── Moralis.ts
│ │ │ │ ├── extendedDeFiOperation.ts
│ │ │ │ ├── extendedEVMOperation.ts
│ │ │ │ ├── extendedNFTOperation.ts
│ │ │ │ └── supportedNetwork.ts
│ │ │ ├── NFTMintTrigger/
│ │ │ │ └── NFTMintTrigger.ts
│ │ │ ├── NFTTransferTrigger/
│ │ │ │ └── NFTTransferTrigger.ts
│ │ │ ├── NodeJS/
│ │ │ │ └── NodeJS.ts
│ │ │ ├── Notion/
│ │ │ │ └── Notion.ts
│ │ │ ├── OpenAI/
│ │ │ │ └── OpenAI.ts
│ │ │ ├── Opensea/
│ │ │ │ ├── Opensea.ts
│ │ │ │ ├── OpenseaEventTrigger.ts
│ │ │ │ └── extendedParameters.ts
│ │ │ ├── OptimismScan/
│ │ │ │ ├── OptimismScan.ts
│ │ │ │ └── constants.ts
│ │ │ ├── PancakeSwap/
│ │ │ │ ├── PancakeSwap.ts
│ │ │ │ ├── abis/
│ │ │ │ │ └── WBNB.json
│ │ │ │ └── extendedTokens.ts
│ │ │ ├── Pinata/
│ │ │ │ └── Pinata.ts
│ │ │ ├── PolygonScan/
│ │ │ │ ├── PolygonScan.ts
│ │ │ │ └── constants.ts
│ │ │ ├── QuickNode/
│ │ │ │ ├── QuickNode.ts
│ │ │ │ ├── QuickNodeTrigger.ts
│ │ │ │ ├── extendedOperation.ts
│ │ │ │ ├── solanaOperation.ts
│ │ │ │ ├── subscribeOperation.ts
│ │ │ │ └── supportedNetwork.ts
│ │ │ ├── RequestFinance/
│ │ │ │ ├── RequestFinance.ts
│ │ │ │ ├── RequestFinanceTrigger.ts
│ │ │ │ └── constants.ts
│ │ │ ├── Scheduler/
│ │ │ │ └── Scheduler.ts
│ │ │ ├── Slack/
│ │ │ │ └── Slack.ts
│ │ │ ├── SnowTrace/
│ │ │ │ └── SnowTrace.ts
│ │ │ ├── Solidity/
│ │ │ │ └── Solidity.ts
│ │ │ ├── Solscan/
│ │ │ │ ├── Solscan.ts
│ │ │ │ └── constants.ts
│ │ │ ├── Teams/
│ │ │ │ └── Teams.ts
│ │ │ ├── Telegram/
│ │ │ │ └── Telegram.ts
│ │ │ ├── ThirdWeb/
│ │ │ │ ├── ThirdWeb.ts
│ │ │ │ ├── ThirdWebTrigger.ts
│ │ │ │ ├── constants.ts
│ │ │ │ └── supportedNetwork.ts
│ │ │ ├── Twitter/
│ │ │ │ └── Twitter.ts
│ │ │ ├── Typeform/
│ │ │ │ └── Typeform.ts
│ │ │ ├── TypeformWebhook/
│ │ │ │ └── TypeformWebhook.ts
│ │ │ ├── Uniswap/
│ │ │ │ ├── Uniswap.ts
│ │ │ │ └── nativeTokens.ts
│ │ │ ├── Wait/
│ │ │ │ └── Wait.ts
│ │ │ ├── Webhook/
│ │ │ │ └── Webhook.ts
│ │ │ └── Xero/
│ │ │ └── xero.ts
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── ChainNetwork.ts
│ │ │ ├── ETHOperations.ts
│ │ │ ├── Interface.ts
│ │ │ ├── abis/
│ │ │ │ ├── WBNB.json
│ │ │ │ └── WETH.json
│ │ │ ├── index.ts
│ │ │ └── utils.ts
│ │ └── tsconfig.json
│ ├── server/
│ │ ├── README.md
│ │ ├── babel.config.js
│ │ ├── bin/
│ │ │ ├── dev
│ │ │ ├── dev.cmd
│ │ │ ├── run
│ │ │ └── run.cmd
│ │ ├── nodemon.json
│ │ ├── oauth2.html
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── ActiveTestTriggerPool.ts
│ │ │ ├── ActiveTestWebhookPool.ts
│ │ │ ├── ChildProcess.ts
│ │ │ ├── CredentialsPool.ts
│ │ │ ├── DataSource.ts
│ │ │ ├── DeployedWorkflowPool.ts
│ │ │ ├── Interface.ts
│ │ │ ├── NodesPool.ts
│ │ │ ├── commands/
│ │ │ │ └── start.ts
│ │ │ ├── entity/
│ │ │ │ ├── Contract.ts
│ │ │ │ ├── Credential.ts
│ │ │ │ ├── Execution.ts
│ │ │ │ ├── Wallet.ts
│ │ │ │ ├── Webhook.ts
│ │ │ │ └── Workflow.ts
│ │ │ ├── index.ts
│ │ │ └── utils/
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ └── ui/
│ ├── .npmignore
│ ├── README.md
│ ├── jsconfig.json
│ ├── package.json
│ ├── public/
│ │ └── index.html
│ └── src/
│ ├── App.js
│ ├── api/
│ │ ├── apikey.js
│ │ ├── client.js
│ │ ├── contracts.js
│ │ ├── credential.js
│ │ ├── executions.js
│ │ ├── nodes.js
│ │ ├── oauth2.js
│ │ ├── wallets.js
│ │ ├── webhooks.js
│ │ └── workflows.js
│ ├── assets/
│ │ └── scss/
│ │ ├── _themes-vars.module.scss
│ │ └── style.scss
│ ├── config.js
│ ├── hooks/
│ │ ├── useApi.js
│ │ ├── useConfirm.js
│ │ └── useScriptRef.js
│ ├── index.js
│ ├── layout/
│ │ ├── MainLayout/
│ │ │ ├── Header/
│ │ │ │ └── index.js
│ │ │ ├── LogoSection/
│ │ │ │ └── index.js
│ │ │ ├── Sidebar/
│ │ │ │ ├── MenuList/
│ │ │ │ │ ├── NavCollapse/
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── NavGroup/
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── NavItem/
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── index.js
│ │ │ │ └── index.js
│ │ │ └── index.js
│ │ ├── MinimalLayout/
│ │ │ └── index.js
│ │ ├── NavMotion.js
│ │ └── NavigationScroll.js
│ ├── menu-items/
│ │ ├── dashboard.js
│ │ ├── index.js
│ │ └── settings.js
│ ├── routes/
│ │ ├── CanvasRoutes.js
│ │ ├── MainRoutes.js
│ │ └── index.js
│ ├── serviceWorker.js
│ ├── store/
│ │ ├── actions.js
│ │ ├── constant.js
│ │ ├── context/
│ │ │ ├── ConfirmContext.js
│ │ │ └── ConfirmContextProvider.js
│ │ ├── index.js
│ │ ├── reducer.js
│ │ └── reducers/
│ │ ├── canvasReducer.js
│ │ ├── customizationReducer.js
│ │ ├── dialogReducer.js
│ │ └── notifierReducer.js
│ ├── themes/
│ │ ├── compStyleOverride.js
│ │ ├── index.js
│ │ ├── palette.js
│ │ └── typography.js
│ ├── ui-component/
│ │ ├── Loadable.js
│ │ ├── Loader.js
│ │ ├── Logo.js
│ │ ├── StyledButton.js
│ │ ├── StyledFab.js
│ │ ├── TooltipWithParser.js
│ │ ├── cards/
│ │ │ ├── ItemCard.js
│ │ │ ├── MainCard.js
│ │ │ └── Skeleton/
│ │ │ └── WorkflowCard.js
│ │ ├── dialog/
│ │ │ ├── AttachmentDialog.js
│ │ │ ├── ConfirmDialog.js
│ │ │ ├── EditVariableDialog.css
│ │ │ ├── EditVariableDialog.js
│ │ │ ├── ExpandDataDialog.js
│ │ │ ├── HTMLDialog.js
│ │ │ ├── SaveWorkflowDialog.js
│ │ │ └── TestWorkflowDialog.js
│ │ ├── editor/
│ │ │ ├── DarkCodeEditor.js
│ │ │ ├── LightCodeEditor.js
│ │ │ ├── prism-dark.css
│ │ │ └── prism-light.css
│ │ └── extended/
│ │ ├── AnimateButton.js
│ │ ├── Avatar.js
│ │ ├── Breadcrumbs.js
│ │ └── Transitions.js
│ ├── utils/
│ │ ├── genericHelper.js
│ │ ├── useNotifier.js
│ │ └── usePrompt.js
│ └── views/
│ ├── apikey/
│ │ ├── APIKeyDialog.js
│ │ └── index.js
│ ├── canvas/
│ │ ├── AddNodes.js
│ │ ├── ButtonEdge.js
│ │ ├── CanvasHeader.js
│ │ ├── CanvasNode.js
│ │ ├── EditNodes.js
│ │ ├── VariableSelector.js
│ │ ├── index.css
│ │ └── index.js
│ ├── contracts/
│ │ ├── ContractDialog.js
│ │ └── index.js
│ ├── executions/
│ │ └── index.js
│ ├── inputs/
│ │ ├── ArrayInputParameters.js
│ │ ├── AsyncSelectWrapper.js
│ │ ├── CredentialInput.js
│ │ ├── InputParameters.css
│ │ ├── InputParameters.js
│ │ ├── OptionParamsResponse.css
│ │ └── OptionParamsResponse.js
│ ├── output/
│ │ └── OutputResponses.js
│ ├── settings/
│ │ └── index.js
│ ├── wallets/
│ │ ├── WalletDialog.js
│ │ └── index.js
│ └── workflows/
│ └── index.js
└── turbo.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .dockerignore
================================================
node_modules
dist
build
**/node_modules
**/build
**/dist
================================================
FILE: .eslintrc.js
================================================
module.exports = {
extends: [
'eslint:recommended',
'plugin:markdown/recommended',
'plugin:react/recommended',
'plugin:react/jsx-runtime',
'plugin:react-hooks/recommended',
'plugin:jsx-a11y/recommended',
'plugin:prettier/recommended'
],
settings: {
react: {
version: 'detect'
}
},
parser: '@typescript-eslint/parser',
ignorePatterns: ['**/node_modules', '**/dist', '**/build', '**/package-lock.json'],
plugins: ['unused-imports'],
rules: {
'@typescript-eslint/explicit-module-boundary-types': 'off',
'no-unused-vars': 'off',
'unused-imports/no-unused-imports': 'warn',
'unused-imports/no-unused-vars': ['warn', { vars: 'all', varsIgnorePattern: '^_', args: 'after-used', argsIgnorePattern: '^_' }],
'no-undef': 'off',
'no-console': [process.env.CI ? 'error' : 'warn', { allow: ['warn', 'error', 'info'] }],
'prettier/prettier': 'error'
}
}
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: "[BUG]"
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Setup**
- OS: [e.g. iOS, Windows, Linux]
- Browser [e.g. chrome, safari]
**Additional context**
Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: "[FEATURE]"
labels: ''
assignees: ''
---
**Describe the feature you'd like**
A clear and concise description of what you would like Outerbridge to have.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/workflows/main.yml
================================================
name: Node CI
on:
push:
branches:
- master
pull_request:
branches:
- '*'
permissions:
contents: read
jobs:
build:
strategy:
matrix:
platform: [ubuntu-latest]
node-version: [14.x, 16.x]
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- run: npm i -g yarn
- run: yarn install --ignore-engines
- run: yarn lint
- run: yarn build
================================================
FILE: .gitignore
================================================
# editor
.idea
.vscode
# dependencies
**/node_modules
**/package-lock.json
**/yarn.lock
## logs
**/*.log
## build
**/dist
**/build
## temp
**/tmp
**/temp
## test
**/coverage
# misc
.DS_Store
## env
.env.local
.env.development.local
.env.test.local
.env.production.local
**/.env
## turbo
.turbo
## secrets
**/*.key
**/api.json
## compressed
**/*.tgz
================================================
FILE: .husky/pre-commit
================================================
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
yarn quick # prettify
yarn lint-staged # eslint lint(also include prettify but prettify support more file extensions than eslint, so run prettify first)
================================================
FILE: .prettierignore
================================================
**/node_modules
**/dist
**/build
================================================
FILE: .prettierrc.js
================================================
module.exports = {
printWidth: 140,
singleQuote: true,
jsxSingleQuote: true,
trailingComma: 'none',
tabWidth: 4,
semi: false,
endOfLine: 'auto'
}
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
nationality, personal appearance, race, religion, or sexual identity and
orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at hello@outerbridge.io. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
================================================
FILE: CONTRIBUTING.md
================================================
<!-- markdownlint-disable MD030 -->
# Contributing to Outerbridge
As the old chinese saying goes: 礼轻情意重 (It's the thought that counts), we appreciate any form of contributions.
## ⭐ Star
Star and share the [Github Repo](https://github.com/Outerbridgeio/Outerbridge).
## 🙋 Q&A
Search up for any questions in [Q&A section](https://github.com/Outerbridgeio/Outerbridge/discussions/categories/q-a), if you can't find one, don't hesitate to create one. It might helps others that have similar question.
## 🙌 Share Workflow
Yes! Sharing how you use Outerbridge is a way of contribution. Export your workflow as JSON, attach a screenshot and share it in [Show and Tell section](https://github.com/Outerbridgeio/Outerbridge/discussions/categories/show-and-tell).
## 💡 Ideas
Ideas are welcome such as new feature, apps integration, and blockchain networks. Submit in [Ideas section](https://github.com/Outerbridgeio/Outerbridge/discussions/categories/ideas).
## 🐞 Report Bugs
Found an issue? [Report it](https://github.com/Outerbridgeio/Outerbridge/issues/new/choose).
## 👨💻 Contribute to Code
Not sure what to contribute? Some ideas:
- Create new node/credential component
- Update existing components such as extending functionality, fixing bugs
- Add new blockchain network to support
- Unit tests and E2E tests
### Developers
Outerbridge has 3 different modules in a single mono repository.
- `server`: Node backend to serve API logics
- `ui`: React frontend
- `components`: Nodes and Credentials of applications
#### Prerequisite
- Install MongoDB [here](https://www.mongodb.com/try/download/community?tck=docs_server)
- Install Yarn
```bash
npm i -g yarn
```
#### Step by step
1. Fork the official [Outerbridge Github Repository](https://github.com/Outerbridgeio/Outerbridge).
2. Clone your forked repository.
3. Create a new branch, see [guide](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository). Naming conventions:
- For feature branch: `feature/<Your New Feature>`
- For bug fix branch: `bugfix/<Your New Bugfix>`.
4. Switch to the newly created branch.
5. Go into repository folder
```bash
cd Outerbridge
```
6. Install all dependencies of all modules:
```bash
yarn install
```
7. Build all the code:
```bash
yarn build
```
8. Start the app on [http://localhost:3000](http://localhost:3000)
```bash
yarn start
```
9. For development, run
```bash
yarn dev
```
Any changes made in `packages/ui` or `packages/server` will be reflected on [http://localhost:8080](http://localhost:8080)
For changes made in `packages/components`, run `yarn build` again to pickup the changes.
10. After making all the changes, run
```bash
yarn build
```
and
```bash
yarn start
```
to make sure everything works fine in production.
11. Commit code and submit Pull Request from forked branch pointing to [Outerbridge master](https://github.com/Outerbridgeio/Outerbridge/tree/master). Example [PR](https://github.com/Outerbridgeio/Outerbridge/pull/50).
## 📖 Contribute to Docs
Contribute to Outerbridge [docs](https://github.com/Outerbridgeio/outerbridge-docs) if there is any mistake, confusion or grap.
## 🏷️ Pull Request process
A member of the Outerbridge team will automatically be notified/assigned when you open a pull request. You can also reach out to us on [Discord](https://discord.gg/Y9VE4ykPDJ).
## 📃 Contributor License Agreement
Before we can merge your contribution you have to sign our [Contributor License Agreement (CLA)](https://cla-assistant.io/OuterbridgeIO/Outerbridge). The CLA contains the terms and conditions under which the contribution is submitted. You need to do this only once for your first pull request. Keep in mind that without a signed CLA we cannot merge your contribution.
## 📜 Code of Conduct
This project and everyone participating in it are governed by the Code of Conduct which can be found in the [file](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to henryheng@outerbridge.io or hello@outerbridge.io.
================================================
FILE: Dockerfile
================================================
# Build local monorepo image
# docker build --no-cache -t outerbridge .
# Run image
# docker run -d -p 3000:3000 outerbridge
FROM node:16
WORKDIR /usr/src/packages
# Copy root package.json and lockfile
COPY package.json ./
COPY yarn.lock ./
# Copy components package.json
COPY packages/components/package.json ./packages/components/package.json
# Copy ui package.json
COPY packages/ui/package.json ./packages/ui/package.json
# Copy server package.json
COPY packages/server/package.json ./packages/server/package.json
RUN yarn install
# Copy app source
COPY . .
RUN yarn build
EXPOSE 3000
CMD [ "yarn", "start" ]
================================================
FILE: LICENSE.md
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
================================================
FILE: README.md
================================================
<!-- markdownlint-disable MD030 -->
# Outerbridge - Automate Web3 and Web2 applications
Outerbridge is a low code/no code workflow automation application, focusing on integrating both on-chain and off-chain applications. The project is licensed under [Apache License Version 2.0](LICENSE.md), source available and free to self-host.


## 💡Why another workflow automation tool?
There are many awesome automation tools out there, however there isn't one that has the built-in logic of interacting/consuming information from blockchains. Hence, Outerbridge is created to allow people building workflows involving on-chain and off-chain applications, with simple drag and drop interface.
## ⚡Quick Start
Watch [Outerbridge Quickstart Demo](https://www.youtube.com/watch?v=x-AfrkKvZ4M) on Youtube (4mins)
1. Install MongoDB [locally](https://www.mongodb.com/docs/manual/administration/install-community/) OR follow the guide of using MongoDB Atlas [here](https://docs.outerbridge.io/get-started#mongodb-atlas)
2. Install Outerbridge
```bash
npm install -g outerbridge
```
3. Start Outerbridge
```bash
npx outerbridge start
```
If using MongoDB Atlas
```bash
npx outerbridge start --mongourl=mongodb+srv://<user>:<password>@<your-cluster>.mongodb.net/outerbridge?retryWrites=true&w=majority
```
4. Open [http://localhost:3000](http://localhost:3000)
## 🐳 Docker
1. Go to `docker` folder at the root of the project
2. `docker-compose up -d`
3. This will automatically spins up mongodb and outerbridge containers
4. Open [http://localhost:3000](http://localhost:3000)
5. You can bring the containers down by `docker-compose stop`
6. If using MongoDB Atlas, follow the guide [here](https://docs.outerbridge.io/get-started#-docker)
## 👨💻 Developers
Outerbridge has 3 different modules in a single mono repository.
- `server`: Node backend to serve API logics
- `ui`: React frontend
- `components`: Nodes and Credentials of applications
### Prerequisite
- Install MongoDB [locally](https://www.mongodb.com/docs/manual/administration/install-community/) OR register a MongoDB Atlas [here](https://www.mongodb.com/atlas/database)
- Install Yarn
```bash
npm i -g yarn
```
### Setup
1. Clone the repository
```bash
git clone https://github.com/Outerbridgeio/Outerbridge.git
```
2. Go into repository folder
```bash
cd Outerbridge
```
3. Install all dependencies of all modules:
```bash
yarn install
```
4. Build all the code:
```bash
yarn build
```
5. Start the app:
```bash
yarn start
```
You can now access the app on [http://localhost:3000](http://localhost:3000)
6. For development build:
```bash
yarn dev
```
Any code changes will reload the app automatically on [http://localhost:8080](http://localhost:8080)
## 📖 Documentation
Official Outerbridge docs can be found under: [https://docs.outerbridge.io](https://docs.outerbridge.io)
## 💻 Cloud Hosted
- [Cloud Hosted](https://app.outerbridge.io) version of Outerbridge.
## 🌐 Self Host
- Digital Ocean Droplet: [Setup guide](https://gist.github.com/HenryHengZJ/93210d43d655b4172ee50794ce473b62)
- AWS EC2: [Setup guide](https://gist.github.com/HenryHengZJ/627cec19671664a88754c7e383232dc8)
## 🙋 Support
Feel free to ask any questions, raise problems, and request new features in [discussion](https://github.com/Outerbridgeio/Outerbridge/discussions)
## 🙌 Contributing
See [contributing guide](CONTRIBUTING.md). Reach out to us at [Discord](https://discord.gg/Y9VE4ykPDJ) if you have any questions or issues.
## 📄 License
Source code in this repository is made available under the [Apache License Version 2.0](LICENSE.md).
================================================
FILE: babel.config.js
================================================
module.exports = {
presets: [
'@babel/preset-typescript',
[
'@babel/preset-env',
{
targets: {
node: 'current'
}
}
]
]
}
================================================
FILE: docker/Dockerfile
================================================
FROM node:14.20.0-alpine
USER root
RUN apk add --no-cache git
# You can install a specific version like: outerbridge@1.0.5
RUN npm install -g outerbridge
WORKDIR /data
CMD "outerbridge"
================================================
FILE: docker/docker-compose.yml
================================================
version: '3.1'
services:
mongo:
image: mongo
ports:
- "27017:27017"
restart: always
environment:
- MONGO_INITDB_DATABASE=outerbridge
outerbridge:
image: outerbridgeio/outerbridge
restart: always
environment:
- MONGO_HOST=${MONGO_HOST}
- PASSPHRASE=${PASSPHRASE}
- ENABLE_TUNNEL=${ENABLE_TUNNEL}
- PORT=${PORT}
ports:
- "${PORT}:${PORT}"
links:
- mongo
volumes:
- ~/.outerbridge:/root/.outerbridge
command: /bin/sh -c "sleep 3; outerbridge start"
================================================
FILE: package.json
================================================
{
"name": "outerbridge",
"version": "1.0.20",
"private": true,
"homepage": "https://outerbridge.io",
"workspaces": [
"packages/*",
"outerbridge",
"ui",
"components"
],
"scripts": {
"build": "turbo run build",
"dev": "turbo run dev --parallel",
"start": "run-script-os",
"start:windows": "cd packages/server/bin && run start",
"start:default": "cd packages/server/bin && ./run start",
"clean": "npm exec -ws -- rimraf dist build",
"format": "prettier --write \"**/*.{ts,tsx,md}\"",
"test": "turbo run test",
"lint": "eslint \"**/*.{js,jsx,ts,tsx,json,md}\"",
"lint-fix": "yarn lint --fix",
"quick": "pretty-quick --staged",
"postinstall": "husky install"
},
"lint-staged": {
"*.{js,jsx,ts,tsx,json,md}": "eslint --fix"
},
"devDependencies": {
"turbo": "1.7.4",
"@babel/preset-env": "^7.19.4",
"@babel/preset-typescript": "7.18.6",
"@types/express": "^4.17.13",
"@typescript-eslint/typescript-estree": "^5.39.0",
"eslint": "^8.24.0",
"eslint-config-prettier": "^8.3.0",
"eslint-config-react-app": "^7.0.1",
"eslint-plugin-jsx-a11y": "^6.6.1",
"eslint-plugin-markdown": "^3.0.0",
"eslint-plugin-prettier": "^3.4.0",
"eslint-plugin-react": "^7.26.1",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-unused-imports": "^2.0.0",
"husky": "^8.0.1",
"lint-staged": "^13.0.3",
"prettier": "^2.7.1",
"pretty-quick": "^3.1.3",
"rimraf": "^3.0.2",
"run-script-os": "^1.1.6",
"typescript": "^4.8.4"
},
"engines": {
"node": ">=14.7.0"
}
}
================================================
FILE: packages/components/README.md
================================================
<!-- markdownlint-disable MD030 -->
# Outerbridge Components
Apps integration for Outerbridge. Contain Nodes and Credentials.

Install:
```bash
npm i outerbridge-components
```
## License
Source code in this repository is made available under the [Apache License Version 2.0](https://github.com/Outerbridgeio/Outerbridge/blob/master/LICENSE.md).
================================================
FILE: packages/components/credentials/Alchemy/AlchemyApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class AlchemyApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'alchemyApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: '',
description:
'Navigate to the <a target="_blank" href="https://dashboard.alchemyapi.io">Dashboard page</a> to copy your "API Key".'
},
{
label: 'Webhook Auth Token',
name: 'authToken',
type: 'string',
default: '',
optional: true,
description:
'Navigate to the top right corner of <a target="_blank" href="https://dashboard.alchemyapi.io/notify">Notify page</a> to copy your "Auth Token".'
}
]
}
}
module.exports = { credClass: AlchemyApi }
================================================
FILE: packages/components/credentials/Arbiscan/ArbiscanApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class ArbiscanApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'arbiscanApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
}
]
}
}
module.exports = { credClass: ArbiscanApi }
================================================
FILE: packages/components/credentials/Binance/BinanceApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class BinanceApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'binanceApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
},
{
label: 'Secret Key',
name: 'secretKey',
type: 'password',
default: ''
}
]
}
}
module.exports = { credClass: BinanceApi }
================================================
FILE: packages/components/credentials/Bscscan/BscscanApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class BscscanApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'bscscanApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
}
]
}
}
module.exports = { credClass: BscscanApi }
================================================
FILE: packages/components/credentials/Celoscan/CeloscanApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class CeloscanApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'celoscanApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
}
]
}
}
module.exports = { credClass: CeloscanApi }
================================================
FILE: packages/components/credentials/Cronosscan/CronosscanApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class CronosscanApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'cronosscanApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
}
]
}
}
module.exports = { credClass: CronosscanApi }
================================================
FILE: packages/components/credentials/EmailSend/EmailSendSmtp.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class EmailSendSmtp implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'emailSendSmtp'
this.version = 1.0
this.credentials = [
{
label: 'User',
name: 'user',
type: 'string',
default: ''
},
{
label: 'Password',
name: 'password',
type: 'password',
default: ''
},
{
label: 'Host',
name: 'host',
type: 'string',
default: ''
},
{
label: 'Port',
name: 'port',
type: 'number',
default: 465
},
{
label: 'SSL/TLS',
name: 'secure',
type: 'boolean',
default: true
}
]
}
}
module.exports = { credClass: EmailSendSmtp }
================================================
FILE: packages/components/credentials/Etherscan/EtherscanApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class EtherscanApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'etherscanApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
}
]
}
}
module.exports = { credClass: EtherscanApi }
================================================
FILE: packages/components/credentials/Fantomscan/FantomscanApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class FantomscanApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'fantomscanApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
}
]
}
}
module.exports = { credClass: FantomscanApi }
================================================
FILE: packages/components/credentials/FootprintAnalytics/FootprintAnalyticsApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class FootprintAnalyticsApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'footprintAnalyticsApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
}
]
}
}
module.exports = { credClass: FootprintAnalyticsApi }
================================================
FILE: packages/components/credentials/GitHub/GitHubApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class GitHubApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'gitHubApi'
this.version = 1.0
this.credentials = [
{
label: 'Access Token',
name: 'accessToken',
type: 'string',
default: '',
description: '<a target="_blank" href="https://github.com/settings/tokens">Register GitHub and get your access token.</a>"'
}
]
}
}
module.exports = { credClass: GitHubApi }
================================================
FILE: packages/components/credentials/Gnosisscan/GnosisscanApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class GnosisscanApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'gnosisscanApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
}
]
}
}
module.exports = { credClass: GnosisscanApi }
================================================
FILE: packages/components/credentials/GoogleDocs/GoogleDocsOAuth2.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class GoogleDocsOAuth2 implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'googleDocsOAuth2Api'
this.version = 1.0
this.credentials = [
{
label: 'Client ID',
name: 'clientID',
type: 'string',
default: '',
description: 'How to get Client ID & Secret: https://www.youtube.com/watch?v=VBwDwHbPaYQ'
},
{
label: 'Client Secret',
name: 'clientSecret',
type: 'password',
default: '',
description: 'How to get Client ID & Secret: https://www.youtube.com/watch?v=VBwDwHbPaYQ'
},
{
label: 'Authorization URL',
name: 'authUrl',
type: 'string',
default: 'https://accounts.google.com/o/oauth2/v2/auth'
},
{
label: 'Access Token URL',
name: 'accessTokenUrl',
type: 'string',
default: 'https://oauth2.googleapis.com/token'
},
{
label: 'Authorization URL Parameters',
name: 'authorizationURLParameters',
type: 'string',
default: 'access_type=offline&prompt=consent&response_type=code'
},
{
label: 'Scope',
name: 'scope',
type: 'json',
default: `["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/documents"]`
}
]
}
}
module.exports = { credClass: GoogleDocsOAuth2 }
================================================
FILE: packages/components/credentials/GoogleSheet/GoogleSheetOAuth2.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class GoogleSheetOAuth2 implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'googleSheetsOAuth2Api'
this.version = 1.0
this.credentials = [
{
label: 'Client ID',
name: 'clientID',
type: 'string',
default: '',
description: 'How to get Client ID & Secret: https://www.youtube.com/watch?v=VBwDwHbPaYQ'
},
{
label: 'Client Secret',
name: 'clientSecret',
type: 'password',
default: '',
description: 'How to get Client ID & Secret: https://www.youtube.com/watch?v=VBwDwHbPaYQ'
},
{
label: 'Authorization URL',
name: 'authUrl',
type: 'string',
default: 'https://accounts.google.com/o/oauth2/v2/auth'
},
{
label: 'Access Token URL',
name: 'accessTokenUrl',
type: 'string',
default: 'https://oauth2.googleapis.com/token'
},
{
label: 'Authorization URL Parameters',
name: 'authorizationURLParameters',
type: 'string',
default: 'access_type=offline&prompt=consent&response_type=code'
},
{
label: 'Scope',
name: 'scope',
type: 'json',
default: `["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/spreadsheets"]`
}
]
}
}
module.exports = { credClass: GoogleSheetOAuth2 }
================================================
FILE: packages/components/credentials/HTTP/HTTPBasicAuth.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class HTTPBasicAuth implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'httpBasicAuth'
this.version = 1.0
this.credentials = [
{
label: 'Username',
name: 'userName',
type: 'string',
default: ''
},
{
label: 'Password',
name: 'password',
type: 'password',
default: ''
}
]
}
}
module.exports = { credClass: HTTPBasicAuth }
================================================
FILE: packages/components/credentials/HTTP/HTTPBearerTokenAuth.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class HTTPBearerTokenAuth implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'httpBearerTokenAuth'
this.version = 1.0
this.credentials = [
{
label: 'Token',
name: 'token',
type: 'string',
default: ''
}
]
}
}
module.exports = { credClass: HTTPBearerTokenAuth }
================================================
FILE: packages/components/credentials/Helio/HelioApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class HelioApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'helioApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
},
{
label: 'Secret Key',
name: 'secretKey',
type: 'password',
default: ''
}
]
}
}
module.exports = { credClass: HelioApi }
================================================
FILE: packages/components/credentials/Helius/HeliusApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class HeliusApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'heliusApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
}
]
}
}
module.exports = { credClass: HeliusApi }
================================================
FILE: packages/components/credentials/Hubspot/HubspotApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class HubspotApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'hubspotCredential'
this.version = 1.0
this.credentials = [
{
label: 'Private App Access Token',
name: 'accessToken',
type: 'string',
description: `Private apps allow you to use HubSpot's APIs to access specific data from your HubSpot account. Learn how to create one <a target="_blank" href="https://developers.hubspot.com/docs/api/private-apps">here</a>`,
default: ''
}
]
}
}
module.exports = { credClass: HubspotApi }
================================================
FILE: packages/components/credentials/HuggingFace/HuggingFaceAccessToken.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class HuggingFaceAccessToken implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'huggingFaceAccessToken'
this.version = 1.0
this.credentials = [
{
label: 'Access Token',
name: 'accessToken',
type: 'string',
default: '',
description:
'Navigate to the <a target="_blank" href="https://huggingface.co/settings/tokens">Access Token page</a> and copy your token'
}
]
}
}
module.exports = { credClass: HuggingFaceAccessToken }
================================================
FILE: packages/components/credentials/Imap/Imap.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class Imap implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'imap'
this.version = 1.0
this.credentials = [
{
label: 'User Email',
name: 'userEmail',
type: 'string',
default: ''
},
{
label: 'Password',
name: 'password',
type: 'password',
default: ''
},
{
label: 'Host',
name: 'host',
type: 'string',
default: ''
},
{
label: 'Port',
name: 'port',
type: 'number',
default: 993
},
{
label: 'Enable TLS',
name: 'tls',
type: 'boolean',
default: true
}
]
}
}
module.exports = { credClass: Imap }
================================================
FILE: packages/components/credentials/Infura/InfuraApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class InfuraApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'infuraApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
},
{
label: 'Secret Key',
name: 'secretKey',
type: 'password',
default: ''
}
]
}
}
module.exports = { credClass: InfuraApi }
================================================
FILE: packages/components/credentials/Mailchimp/MailchimpApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class MailchimpApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'mailChimpCredential'
this.version = 1.0
this.credentials = [
{
label: 'Mailchimp API Key',
name: 'apiKey',
type: 'string',
default: ''
}
]
}
}
module.exports = { credClass: MailchimpApi }
================================================
FILE: packages/components/credentials/MoonBeamScan/MoonBeamScanApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class MoonBeamScanApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'moonBeamScanApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
}
]
}
}
module.exports = { credClass: MoonBeamScanApi }
================================================
FILE: packages/components/credentials/MoonRiverScan/MoonRiverScanApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class MoonRiverScanApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'moonRiverScanApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
}
]
}
}
module.exports = { credClass: MoonRiverScanApi }
================================================
FILE: packages/components/credentials/Moralis/MoralisApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class MoralisApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'moralisApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: '',
description: 'How to get API key: https://docs.moralis.io/reference/getting-the-api-key'
}
]
}
}
module.exports = { credClass: MoralisApi }
================================================
FILE: packages/components/credentials/Notion/NotionApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class NotionApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'notionApi'
this.version = 1.0
this.credentials = [
{
label: 'Internal Integration Token',
name: 'integrationToken',
type: 'string',
default: '',
description:
'Get your <a target="_blank" href="https://www.notion.so/my-integrations">Internal Integration Token</a> for your workspace'
}
]
}
}
module.exports = { credClass: NotionApi }
================================================
FILE: packages/components/credentials/OpenAI/OpenAIApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class OpenAIApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'openAIApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: '',
description:
'Navigate to the <a target="_blank" href="https://platform.openai.com/account/api-keys">API page</a> to copy your "API Key".'
}
]
}
}
module.exports = { credClass: OpenAIApi }
================================================
FILE: packages/components/credentials/Opensea/OpenseaApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class OpenseaApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'openSeaApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
}
]
}
}
module.exports = { credClass: OpenseaApi }
================================================
FILE: packages/components/credentials/OptimisticEtherscan/OptimisticEtherscanApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class OptimisticEtherscanApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'optimisticEtherscanApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
}
]
}
}
module.exports = { credClass: OptimisticEtherscanApi }
================================================
FILE: packages/components/credentials/Pinata/PinataApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class PinataApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'pinataApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
},
{
label: 'Secret Key',
name: 'secretKey',
type: 'password',
default: ''
}
]
}
}
module.exports = { credClass: PinataApi }
================================================
FILE: packages/components/credentials/Polygonscan/PolygonscanApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class PolygonscanApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'polygonscanApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
}
]
}
}
module.exports = { credClass: PolygonscanApi }
================================================
FILE: packages/components/credentials/QuickNode/QuickNodeEndpoints.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class QuickNodeEndpoints implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'quickNodeEndpoints'
this.version = 1.0
this.credentials = [
{
label: 'HTTP Provider',
name: 'httpProvider',
type: 'string',
default: '',
placeholder: 'https://sample-endpoint-name.network.discover.quiknode.pro/token-goes-here/'
},
{
label: 'WSS Provider',
name: 'wssProvider',
type: 'string',
default: '',
placeholder: 'wss://sample-endpoint-name.network.discover.quiknode.pro/token-goes-here/',
optional: true
}
]
}
}
module.exports = { credClass: QuickNodeEndpoints }
================================================
FILE: packages/components/credentials/RequestFinanceApi/RequestFinanceApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class RequestFinanceApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'requestFinanceApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
}
]
}
}
module.exports = { credClass: RequestFinanceApi }
================================================
FILE: packages/components/credentials/SnowTrace/SnowTraceApi.ts
================================================
import { INodeCredential, INodeParams } from '../../src/Interface'
class SnowTraceApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'snowtraceApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
}
]
}
}
module.exports = { credClass: SnowTraceApi }
================================================
FILE: packages/components/credentials/Telegram/TelegramApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class TelegramApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'telegramApi'
this.version = 1.0
this.credentials = [
{
label: 'Bot Token',
name: 'botToken',
type: 'string',
placeholder: 'eg: 1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI',
default: '',
description:
'Telegram bot token. <a target="_blank" href="https://www.youtube.com/watch?v=MZixi8oIdaA">Learn how to get it</a>'
}
]
}
}
module.exports = { credClass: TelegramApi }
================================================
FILE: packages/components/credentials/Twitter/TwitterApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class TwitterApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'twitterApi'
this.version = 1.0
this.credentials = [
{
label: 'Bearer Token',
name: 'bearerToken',
type: 'string',
default: '',
description:
'<a target="_blank" href="https://developer.twitter.com/en/docs/twitter-api/getting-started/getting-access-to-the-twitter-api">Register Twitter Dev account and get your token.</a>"'
}
]
}
}
module.exports = { credClass: TwitterApi }
================================================
FILE: packages/components/credentials/Typeform/TypeformApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class TypeformApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'typeformApi'
this.version = 1.0
this.credentials = [
{
label: 'API Key',
name: 'apiKey',
type: 'string',
default: ''
}
]
}
}
module.exports = { credClass: TypeformApi }
================================================
FILE: packages/components/credentials/TypeformWebhook/TypeformApi.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class TypeformApi implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'typeformApi'
this.version = 1.0
this.credentials = [
{
label: 'Typeform Access Token',
name: 'accessToken',
type: 'string',
default: '',
description: 'Get your access token from typeform account section'
}
]
}
}
module.exports = { credClass: TypeformApi }
================================================
FILE: packages/components/credentials/Xero/XeroOAuth2.ts
================================================
import { INodeParams, INodeCredential } from '../../src/Interface'
class XeroOAuth2 implements INodeCredential {
name: string
version: number
credentials: INodeParams[]
constructor() {
this.name = 'xeroOAuth2Api'
this.version = 1.0
this.credentials = [
{
label: 'Client ID',
name: 'clientID',
type: 'string',
default: '',
description: 'How to get Client ID & Secret: https://developer.xero.com/documentation/guides/oauth2/client-credentials/'
},
{
label: 'Client Secret',
name: 'clientSecret',
type: 'password',
default: '',
description: 'How to get Client ID & Secret: https://developer.xero.com/documentation/guides/oauth2/client-credentials/'
},
{
label: 'Authorization URL',
name: 'authUrl',
type: 'string',
default: 'https://login.xero.com/identity/connect/authorize'
},
{
label: 'Access Token Url',
name: 'accessTokenUrl',
type: 'string',
default: 'https://identity.xero.com/connect/token'
},
{
label: 'Authorization URL Parameters',
name: 'authorizationURLParameters',
type: 'string',
default: 'response_type=code'
},
{
label: 'Scope',
name: 'scope',
type: 'json',
default: `[
"openid",
"profile",
"email",
"accounting.settings",
"accounting.reports.read",
"accounting.journals.read",
"accounting.contacts",
"accounting.attachments",
"accounting.transactions",
"offline_access"
]`
}
]
}
}
module.exports = { credClass: XeroOAuth2 }
================================================
FILE: packages/components/gulpfile.ts
================================================
import gulp from 'gulp'
const { src, dest } = gulp
function copyIcons() {
return src(['nodes/**/*.{jpg,png,svg}']).pipe(dest('dist/nodes'))
}
exports.default = copyIcons
================================================
FILE: packages/components/nodes/Alchemy/Alchemy.ts
================================================
import { ICommonObject, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, NodeType } from '../../src/Interface'
import { handleErrorMessage, returnNodeExecutionData, serializeQueryParams } from '../../src/utils'
import { alchemyHTTPAPIs, NETWORK } from '../../src/ChainNetwork'
import {
alchemySupportedNetworks,
ethOperations,
IETHOperation,
operationCategoryMapping,
polygonOperations
} from '../../src/ETHOperations'
import {
getContractsForOwnerProperties,
getNFTMetadataProperties,
getNFTsForCollectionProperties,
getNFTsProperties,
getOwnersForCollectionProperties,
getOwnersForTokenProperties,
isHolderOfCollectionProperties,
NFTOperationsOptions,
searchContractMetadataProperties,
tokenAPIOperations,
transactionReceiptsOperations
} from './extendedOperation'
import axios, { AxiosRequestConfig, Method } from 'axios'
import { solanaAPIOperations, solanaOperationsNetworks } from './solanaOperation'
import { AlchemySupportedNetworks } from './supportedNetwork'
class Alchemy implements INode {
label: string
name: string
type: NodeType
description: string
version: number
icon: string
category: string
incoming: number
outgoing: number
credentials?: INodeParams[]
networks?: INodeParams[]
inputParameters?: INodeParams[]
constructor() {
this.label = 'Alchemy'
this.name = 'alchemy'
this.icon = 'alchemy.svg'
this.type = 'action'
this.category = 'Network Provider'
this.version = 1.1
this.description = 'Perform Alchemy on-chain operations'
this.incoming = 1
this.outgoing = 1
this.networks = [
{
label: 'Network',
name: 'network',
type: 'options',
options: [...AlchemySupportedNetworks]
}
] as INodeParams[]
this.credentials = [
{
label: 'Credential Method',
name: 'credentialMethod',
type: 'options',
options: [
{
label: 'Alchemy API Key',
name: 'alchemyApi'
}
],
default: 'alchemyApi'
}
] as INodeParams[]
this.inputParameters = [
{
label: 'API',
name: 'api',
type: 'options',
options: [
{
label: 'EVM Chain API',
name: 'chainAPI',
description: 'API for fetching standard EVM onchain data using Alchemy supported calls',
show: {
'networks.network': alchemySupportedNetworks
}
},
{
label: 'NFT API',
name: 'nftAPI',
description: 'API for fetching NFT data, including ownership, metadata attributes, and more.',
show: {
'networks.network': [NETWORK.MAINNET, NETWORK.GÖRLI, NETWORK.MATIC, NETWORK.MATIC_MUMBAI]
}
},
{
label: 'Transaction Receipts API',
name: 'txReceiptsAPI',
description: 'API that gets all transaction receipts for a given block by number or block hash.',
show: {
'networks.network': [
NETWORK.MAINNET,
NETWORK.GÖRLI,
NETWORK.MATIC,
NETWORK.MATIC_MUMBAI,
NETWORK.ARBITRUM,
NETWORK.ARBITRUM_GOERLI
]
}
},
{
label: 'Token API',
name: 'tokenAPI',
description:
'The Token API allows you to easily get token information, minimizing the number of necessary requests.',
show: {
'networks.network': alchemySupportedNetworks
}
},
{
label: 'Solana API',
name: 'solanaAPI',
description: 'API for fetching Solana on-chain data using Alchemy supported calls',
show: {
'networks.network': solanaOperationsNetworks
}
}
],
default: 'chainAPI'
},
{
label: 'Chain Category',
name: 'chainCategory',
type: 'options',
options: [
{
label: 'Retrieving Blocks',
name: 'retrievingBlocks',
description: 'Retrieve onchain blocks data'
},
{
label: 'EVM/Smart Contract Execution',
name: 'evmExecution',
description: 'Execute or submit transaction onto blockchain'
},
{
label: 'Reading Transactions',
name: 'readingTransactions',
description: 'Read onchain transactions data'
},
{
label: 'Account Information',
name: 'accountInformation',
description: 'Retrieve onchain account information'
},
{
label: 'Event Logs',
name: 'eventLogs',
description: 'Fetch onchain logs'
},
{
label: 'Chain Information',
name: 'chainInformation',
description: 'Get general selected blockchain information'
},
{
label: 'Retrieving Uncles',
name: 'retrievingUncles',
description: 'Retrieve onchain uncles blocks data'
},
{
label: 'Filters',
name: 'filters',
description: 'Get block filters and logs, or create new filter'
}
],
show: {
'inputParameters.api': ['chainAPI']
}
},
{
label: 'Chain Category',
name: 'chainCategory',
type: 'options',
options: [
{
label: 'Reading & Writing Transactions',
name: 'readWriteTransactions',
description: 'Read and Write transactins onto Solana chain'
},
{
label: 'Getting Blocks',
name: 'gettingBlocks',
description: 'Get Solana blocks data'
},
{
label: 'Account Information',
name: 'accountInformation',
description: 'Retrieve Solana onchain account information'
},
{
label: 'Network Information',
name: 'networkInformation',
description: 'Get Solana network onchain information'
},
{
label: 'Slot Information',
name: 'slotInformation',
description: 'Fetch Solana slot information'
},
{
label: 'Node Information',
name: 'nodeInformation',
description: 'Retrieve Solana node onchain information'
},
{
label: 'Token Information',
name: 'tokenInformation',
description: 'Fetch Solana onchain token information'
},
{
label: 'Network Inflation',
name: 'networkInflation',
description: 'Retrieve Solana network inflation onchain data'
}
],
show: {
'inputParameters.api': ['solanaAPI']
}
},
{
label: 'Operation',
name: 'operation',
type: 'asyncOptions',
loadMethod: 'getOperations'
},
...getNFTsProperties,
...getNFTMetadataProperties,
...getNFTsForCollectionProperties,
...getOwnersForCollectionProperties,
...getOwnersForTokenProperties,
...searchContractMetadataProperties,
...isHolderOfCollectionProperties,
...getContractsForOwnerProperties,
{
label: 'Parameters',
name: 'parameters',
type: 'json',
placeholder: '["param1", "param2"]',
optional: true,
description: 'Operation parameters in array. Ex: ["param1", "param2"]',
show: {
'inputParameters.api': ['chainAPI', 'txReceiptsAPI', 'tokenAPI', 'solanaAPI']
}
}
] as INodeParams[]
}
loadMethods = {
async getOperations(nodeData: INodeData): Promise<INodeOptionsValue[]> {
const returnData: INodeOptionsValue[] = []
const inputParametersData = nodeData.inputParameters
const networksData = nodeData.networks
if (inputParametersData === undefined || networksData === undefined) {
return returnData
}
const api = inputParametersData.api as string
const chainCategory = inputParametersData.chainCategory as string
const network = networksData.network as NETWORK
if (api === 'chainAPI' || api === 'txReceiptsAPI' || api === 'tokenAPI' || api === 'solanaAPI') {
const operations = getSelectedOperations(api, network).filter(
(op: IETHOperation) =>
Object.prototype.hasOwnProperty.call(op.providerNetworks, 'alchemy') &&
op.providerNetworks['alchemy'].includes(network)
)
if (api === 'chainAPI' && !chainCategory) return returnData
if (api === 'solanaAPI' && !chainCategory) return returnData
let filteredOperations: IETHOperation[] = operations
if (api === 'chainAPI' || api === 'solanaAPI')
filteredOperations = operations.filter(
(op: IETHOperation) => op.parentGroup === operationCategoryMapping[chainCategory]
)
for (const op of filteredOperations) {
returnData.push({
label: op.name,
name: op.value,
parentGroup: op.parentGroup,
description: op.description,
inputParameters: op.inputParameters,
exampleParameters: op.exampleParameters,
exampleResponse: op.exampleResponse
})
}
return returnData
} else if (api === 'nftAPI') {
return NFTOperationsOptions
} else {
return returnData
}
}
}
async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
const networksData = nodeData.networks
const inputParametersData = nodeData.inputParameters
const credentials = nodeData.credentials
if (inputParametersData === undefined || networksData === undefined) {
throw new Error('Required data missing')
}
if (credentials === undefined) {
throw new Error('Missing credentials')
}
// GET api
const api = inputParametersData.api as string
// GET network
const network = networksData.network as NETWORK
// GET credentials
const apiKey = credentials.apiKey as string
// GET operation
const operation = inputParametersData.operation as string
if (api === 'chainAPI' || api === 'txReceiptsAPI' || api === 'tokenAPI' || api === 'solanaAPI') {
const uri = `${alchemyHTTPAPIs[network]}${apiKey}`
let responseData: any // tslint:disable-line: no-any
let bodyParameters: any[] = [] // tslint:disable-line: no-any
const returnData: ICommonObject[] = []
const parameters = inputParametersData.parameters as string
if (parameters) {
try {
bodyParameters = JSON.parse(parameters.replace(/\s/g, ''))
} catch (error) {
throw handleErrorMessage(error)
}
}
try {
let totalOperations: IETHOperation[] = []
totalOperations = getSelectedOperations(api, network)
const result = totalOperations.find((obj) => {
return obj.value === operation
})
if (result === undefined) throw new Error('Invalid Operation')
const requestBody = JSON.parse(JSON.stringify(result.body))
const bodyParams = requestBody.params
requestBody.params = Array.isArray(bodyParameters) ? bodyParameters.concat(bodyParams) : bodyParameters
const axiosConfig: AxiosRequestConfig = {
method: result.method as Method,
url: uri,
data: requestBody,
headers: {
'Content-Type': 'application/json'
}
}
const response = await axios(axiosConfig)
responseData = response.data
} catch (error) {
throw handleErrorMessage(error)
}
if (Array.isArray(responseData)) returnData.push(...responseData)
else returnData.push(responseData)
return returnNodeExecutionData(returnData)
}
//NFT API
else if (api === 'nftAPI') {
const uri = `${alchemyHTTPAPIs[network]}${apiKey}/${operation}/`
let responseData: any // tslint:disable-line: no-any
const queryParameters: ICommonObject = {}
const returnData: ICommonObject[] = []
if (operation === 'getNFTs') {
const owner = inputParametersData.owner as string
const pageKey = inputParametersData.pageKey as string
const withMetadata = inputParametersData.withMetadata as boolean
queryParameters['owner'] = owner
queryParameters['withMetadata'] = withMetadata
if (pageKey) queryParameters['pageKey'] = pageKey
} else if (operation === 'getNFTMetadata') {
const contractAddress = inputParametersData.contractAddress as string
const tokenId = inputParametersData.tokenId as string
const tokenType = inputParametersData.tokenType as string
queryParameters['contractAddress'] = contractAddress
queryParameters['tokenId'] = tokenId
if (tokenType) queryParameters['tokenType'] = tokenType
} else if (operation === 'getNFTsForCollection') {
const contractAddress = inputParametersData.contractAddress as string
const startToken = inputParametersData.startToken as string
const withMetadata = inputParametersData.withMetadata as boolean
const limit = inputParametersData.limit as number
const tokenUriTimeoutInMs = inputParametersData.tokenUriTimeoutInMs as number
queryParameters['contractAddress'] = contractAddress
if (startToken) queryParameters['startToken'] = startToken
if (withMetadata) queryParameters['withMetadata'] = withMetadata
if (limit) queryParameters['limit'] = limit
if (tokenUriTimeoutInMs) queryParameters['tokenUriTimeoutInMs'] = tokenUriTimeoutInMs
} else if (operation === 'getOwnersForCollection') {
const contractAddress = inputParametersData.contractAddress as string
const withTokenBalances = inputParametersData.withTokenBalances as boolean
const block = inputParametersData.block as string
const pageKey = inputParametersData.pageKey as string
queryParameters['contractAddress'] = contractAddress
if (withTokenBalances) queryParameters['withTokenBalances'] = withTokenBalances
if (block) queryParameters['block'] = block
if (pageKey) queryParameters['pageKey'] = pageKey
} else if (operation === 'getOwnersForToken' || operation === 'computeRarity') {
const contractAddress = inputParametersData.contractAddress as string
const tokenId = inputParametersData.tokenId as string
queryParameters['contractAddress'] = contractAddress
queryParameters['tokenId'] = tokenId
} else if (
operation === 'isSpamContract' ||
operation === 'reingestContract' ||
operation === 'getFloorPrice' ||
operation === 'summarizeNFTAttributes' ||
operation === 'reportSpamContract'
) {
const contractAddress = inputParametersData.contractAddress as string
queryParameters['contractAddress'] = contractAddress
} else if (operation === 'searchContractMetadata') {
const query = inputParametersData.query as string
queryParameters['query'] = query
} else if (operation === 'isHolderOfCollection') {
const contractAddress = inputParametersData.contractAddress as string
const wallet = inputParametersData.wallet as string
queryParameters['contractAddress'] = contractAddress
queryParameters['wallet'] = wallet
} else if (operation === 'getNFTSales') {
const contractAddress = inputParametersData.contractAddress as string
const tokenId = inputParametersData.tokenId as string
const startBlock = inputParametersData.startBlock as string
const startLogIndex = inputParametersData.startLogIndex as number
const startBundleIndex = inputParametersData.startBundleIndex as number
const ascendingOrder = inputParametersData.ascendingOrder as boolean
const marketplace = inputParametersData.marketplace as string
const buyerAddress = inputParametersData.buyerAddress as string
const sellerAddress = inputParametersData.sellerAddress as string
const buyerIsMaker = inputParametersData.buyerIsMaker as boolean
const limit = inputParametersData.limit as number
queryParameters['contractAddress'] = contractAddress
queryParameters['tokenId'] = tokenId
if (startBlock) queryParameters['startBlock'] = startBlock
if (startLogIndex) queryParameters['startLogIndex'] = startLogIndex
if (startBundleIndex) queryParameters['startBundleIndex'] = startBundleIndex
if (ascendingOrder) queryParameters['ascendingOrder'] = ascendingOrder
if (marketplace) queryParameters['marketplace'] = marketplace
if (buyerAddress) queryParameters['buyerAddress'] = buyerAddress
if (sellerAddress) queryParameters['sellerAddress'] = sellerAddress
if (buyerIsMaker) queryParameters['buyerIsMaker'] = buyerIsMaker
if (limit) queryParameters['limit'] = limit
} else if (operation === 'getContractsForOwner') {
const owner = inputParametersData.owner as string
const pageKey = inputParametersData.pageKey as string
queryParameters['owner'] = owner
if (pageKey) queryParameters['pageKey'] = pageKey
}
try {
const axiosConfig: AxiosRequestConfig = {
method: 'GET',
url: uri,
params: queryParameters,
paramsSerializer: (params) => serializeQueryParams(params),
headers: {
'Content-Type': 'application/json'
}
}
const response = await axios(axiosConfig)
responseData = response.data
} catch (error) {
throw handleErrorMessage(error)
}
if (Array.isArray(responseData)) returnData.push(...responseData)
else returnData.push(responseData)
return returnNodeExecutionData(returnData)
}
return returnNodeExecutionData([])
}
}
const getSelectedOperations = (api: string, network: string) => {
switch (api) {
case 'chainAPI':
if (network === NETWORK.MATIC || network === NETWORK.MATIC_MUMBAI) return [...polygonOperations, ...ethOperations]
else return ethOperations
case 'txReceiptsAPI':
return transactionReceiptsOperations
case 'tokenAPI':
return tokenAPIOperations
case 'solanaAPI':
return solanaAPIOperations
default:
return ethOperations
}
}
module.exports = { nodeClass: Alchemy }
================================================
FILE: packages/components/nodes/Alchemy/AlchemyTrigger.ts
================================================
import { INode, INodeData, INodeOptionsValue, INodeParams, IProviders, NodeType } from '../../src/Interface'
import { handleErrorMessage, returnNodeExecutionData } from '../../src/utils'
import EventEmitter from 'events'
import {
alchemyWSSAPIs,
ArbitrumNetworks,
ETHNetworks,
NETWORK,
OptimismNetworks,
PolygonNetworks,
SolanaNetworks
} from '../../src/ChainNetwork'
import { subscribeOperations, unsubscribeOperations } from './subscribeOperation'
import { IETHOperation } from '../../src/ETHOperations'
import WebSocket from 'ws'
class AlchemyTrigger extends EventEmitter implements INode {
label: string
name: string
type: NodeType
description?: string
version: number
icon: string
category: string
incoming: number
outgoing: number
networks?: INodeParams[]
credentials?: INodeParams[]
inputParameters?: INodeParams[]
providers: IProviders
constructor() {
super()
this.label = 'Alchemy Trigger'
this.name = 'alchemyTrigger'
this.icon = 'alchemy.svg'
this.type = 'trigger'
this.category = 'Network Provider'
this.version = 1.0
this.description = 'Start workflow whenever subscribed event happened'
this.incoming = 0
this.outgoing = 1
this.providers = {}
this.networks = [
{
label: 'Network',
name: 'network',
type: 'options',
options: [...ETHNetworks, ...PolygonNetworks, ...ArbitrumNetworks, ...OptimismNetworks, ...SolanaNetworks]
}
] as INodeParams[]
this.credentials = [
{
label: 'Credential Method',
name: 'credentialMethod',
type: 'options',
options: [
{
label: 'Alchemy API Key',
name: 'alchemyApi'
}
],
default: 'alchemyApi'
}
] as INodeParams[]
this.inputParameters = [
{
label: 'Subscribe Operation',
name: 'subscribeOperation',
type: 'asyncOptions',
loadMethod: 'getSubscribeOperations'
},
{
label: 'Parameters',
name: 'parameters',
type: 'json',
placeholder: `[
"param1",
"param2"
]`,
optional: true,
description: 'Operation parameters in array. Ex: ["param1", "param2"]'
},
{
label: 'Unsubscribe Operation',
name: 'unsubscribeOperation',
type: 'asyncOptions',
loadMethod: 'getUnsubscribeOperations'
}
] as INodeParams[]
}
loadMethods = {
async getSubscribeOperations(nodeData: INodeData): Promise<INodeOptionsValue[]> {
const returnData: INodeOptionsValue[] = []
const networksData = nodeData.networks
if (networksData === undefined) {
return returnData
}
const network = networksData.network as NETWORK
const totalOperations = subscribeOperations
const filteredOperations = totalOperations.filter(
(op: IETHOperation) =>
Object.prototype.hasOwnProperty.call(op.providerNetworks, 'alchemy') && op.providerNetworks['alchemy'].includes(network)
)
for (const op of filteredOperations) {
returnData.push({
label: op.name,
name: op.value,
parentGroup: op.parentGroup,
description: op.description,
inputParameters: op.inputParameters,
exampleParameters: op.exampleParameters,
exampleResponse: op.exampleResponse
})
}
return returnData
},
async getUnsubscribeOperations(nodeData: INodeData): Promise<INodeOptionsValue[]> {
const returnData: INodeOptionsValue[] = []
const networksData = nodeData.networks
if (networksData === undefined) {
return returnData
}
const network = networksData.network as NETWORK
const totalOperations = unsubscribeOperations
const filteredOperations = totalOperations.filter(
(op: IETHOperation) =>
Object.prototype.hasOwnProperty.call(op.providerNetworks, 'alchemy') && op.providerNetworks['alchemy'].includes(network)
)
for (const op of filteredOperations) {
returnData.push({
label: op.name,
name: op.value,
parentGroup: op.parentGroup,
description: op.description,
inputParameters: op.inputParameters,
exampleParameters: op.exampleParameters,
exampleResponse: op.exampleResponse
})
}
return returnData
}
}
async runTrigger(nodeData: INodeData): Promise<void> {
const networksData = nodeData.networks
const credentials = nodeData.credentials
const inputParametersData = nodeData.inputParameters
if (networksData === undefined || inputParametersData === undefined) {
throw new Error('Required data missing')
}
if (credentials === undefined) {
throw new Error('Missing credentials')
}
// GET network
const network = networksData.network as NETWORK
// GET credentials
const apiKey = credentials.apiKey as string
const wssProvider = `${alchemyWSSAPIs[network]}${apiKey}`
// GET subscribeOperation
const subscribeOperation = inputParametersData.subscribeOperation as string
// GET parameters
let bodyParameters: any
const parameters = inputParametersData.parameters as string
if (parameters) {
try {
bodyParameters = JSON.parse(parameters.replace(/\s/g, ''))
} catch (error) {
throw handleErrorMessage(error)
}
}
const emitEventKey = nodeData.emitEventKey as string
const result = subscribeOperations.find((obj) => {
return obj.value === subscribeOperation
})
if (result === undefined) throw new Error('Invalid Operation')
const requestBody = result.body
requestBody.params = bodyParameters
const ws = new WebSocket(wssProvider)
ws.on('open', function open() {
ws.send(JSON.stringify(requestBody))
})
let subscriptionID = ''
ws.on('message', (data) => {
const messageData = JSON.parse(data as any)
if (messageData.method) {
this.emit(emitEventKey, returnNodeExecutionData(messageData))
} else {
subscriptionID = messageData.result
this.providers[emitEventKey] = { provider: ws, filter: subscriptionID }
}
})
}
async removeTrigger(nodeData: INodeData): Promise<void> {
const emitEventKey = nodeData.emitEventKey as string
const inputParametersData = nodeData.inputParameters
if (inputParametersData === undefined) {
throw new Error('Required data missing')
}
if (Object.prototype.hasOwnProperty.call(this.providers, emitEventKey)) {
const provider: WebSocket = this.providers[emitEventKey].provider
const subscriptionID = this.providers[emitEventKey].filter
const result = unsubscribeOperations.find((obj) => {
return obj.value === (inputParametersData.unsubscribeOperation as string)
})
if (result === undefined) throw new Error('Invalid Operation')
const requestBody = result.body
requestBody.params = [subscriptionID]
provider.send(JSON.stringify(requestBody))
provider.close(1000)
this.removeAllListeners(emitEventKey)
}
}
}
module.exports = { nodeClass: AlchemyTrigger }
================================================
FILE: packages/components/nodes/Alchemy/AlchemyWebhook.ts
================================================
import { ICommonObject, INode, INodeData, INodeParams, IWebhookNodeExecutionData, NodeType } from '../../src/Interface'
import { returnWebhookNodeExecutionData } from '../../src/utils'
import axios, { AxiosRequestConfig, Method } from 'axios'
class AlchemyWebhook implements INode {
label: string
name: string
type: NodeType
description: string
version: number
icon: string
category: string
incoming: number
outgoing: number
actions: INodeParams[]
networks?: INodeParams[]
credentials?: INodeParams[]
inputParameters?: INodeParams[]
constructor() {
this.label = 'Alchemy Webhook'
this.name = 'AlchemyWebhook'
this.icon = 'alchemy.svg'
this.type = 'webhook'
this.category = 'Network Provider'
this.version = 1.0
this.description = 'Start workflow whenever Alchemy webhook event happened'
this.incoming = 0
this.outgoing = 1
this.networks = [
{
label: 'Network',
name: 'network',
type: 'options',
options: [
{
label: 'Mainnet',
name: 'ETH_MAINNET'
},
{
label: 'Goerli',
name: 'ETH_GOERLI'
},
{
label: 'Polygon Mainnet',
name: 'MATIC_MAINNET'
},
{
label: 'Polygon Mumbai',
name: 'MATIC_MUMBAI'
},
{
label: 'Arbitrum Mainnet',
name: 'ARB_MAINNET'
},
{
label: 'Arbitrum Goerli',
name: 'ARB_GOERLI'
},
{
label: 'Optimism Mainnet',
name: 'OPT_MAINNET'
},
{
label: 'Optimism Goerli',
name: 'OPT_GOERLI'
}
],
default: 'ETH_MAINNET'
}
] as INodeParams[]
this.credentials = [
{
label: 'Credential Method',
name: 'credentialMethod',
type: 'options',
options: [
{
label: 'Alchemy API Key',
name: 'alchemyApi'
}
],
default: 'alchemyApi'
}
] as INodeParams[]
this.actions = [
{
label: 'Event',
name: 'webhook_type',
type: 'options',
options: [
{
label: 'Mined Transactions',
name: 'MINED_TRANSACTION',
description: 'Triggered anytime a transaction sent through your API key gets successfully mined.'
},
{
label: 'Dropped Transactions',
name: 'DROPPED_TRANSACTION',
description: `The Dropped Transactions Webhook is used to notify your app anytime a transaction send through your API key gets dropped.`
},
{
label: 'Address Activity',
name: 'ADDRESS_ACTIVITY',
description: `The Address Activity Webhook allows you to track all ETH, ERC20 and ERC721 transfer events for as many Ethereum addresses as you'd like.`
}
],
default: 'MINED_TRANSACTION'
}
] as INodeParams[]
this.inputParameters = [
{
label: 'App ID',
name: 'app_id',
type: 'string',
default: '',
description:
'App ID can be found within the URL of your specific app. For example, given the URL https://dashboard.alchemyapi.io/apps/xfu8frt3wf94j7h5 your App ID would be xfu8frt3wf94j7h5',
show: {
'actions.webhook_type': ['MINED_TRANSACTION', 'DROPPED_TRANSACTION']
}
},
{
label: 'Ethereum Addresses',
name: 'addresses',
type: 'string',
default: '',
description: 'Ethereum addresses to track the transfer events',
placeholder: '["<your-Ethereum-Address>"]',
show: {
'actions.webhook_type': ['ADDRESS_ACTIVITY']
}
}
] as INodeParams[]
}
webhookMethods = {
async createWebhook(nodeData: INodeData, webhookFullUrl: string): Promise<string | undefined> {
// Check if webhook exists
const credentials = nodeData.credentials
const inputParametersData = nodeData.inputParameters
const networksData = nodeData.networks
const actionsData = nodeData.actions
if (inputParametersData === undefined || actionsData === undefined || networksData === undefined) {
throw new Error('Required data missing')
}
if (credentials === undefined) {
throw new Error('Missing credentials')
}
const authToken = credentials.authToken as string
const axiosConfig: AxiosRequestConfig = {
method: 'GET' as Method,
url: `https://dashboard.alchemyapi.io/api/team-webhooks`,
headers: { 'X-Alchemy-Token': authToken }
}
try {
const response = await axios(axiosConfig)
const responseData = response.data
const webhooks = responseData.data
const network = networksData.network as string
const webhook_type = actionsData.webhook_type as string
let webhookExist = false
for (const webhook of webhooks) {
if (webhook.webhook_type === webhook_type && webhook.webhook_url === webhookFullUrl) {
if (webhook_type !== 'ADDRESS_ACTIVITY') {
const app_id = (inputParametersData.app_id as string) || ''
if (webhook.app_id === app_id) {
webhookExist = true
break
}
continue
}
webhookExist = true
break
}
}
if (!webhookExist) {
const data: ICommonObject = {
webhook_type,
network,
webhook_url: webhookFullUrl
}
if (webhook_type === 'ADDRESS_ACTIVITY') {
let addresses = (inputParametersData.addresses as string) || '[]'
//Remove whitespaces
addresses = addresses.replace(/\s/g, '')
if (addresses) data.addresses = JSON.parse(addresses)
} else {
const app_id = (inputParametersData.app_id as string) || ''
data.app_id = app_id
}
const axiosCreateConfig: AxiosRequestConfig = {
method: 'POST' as Method,
url: `https://dashboard.alchemyapi.io/api/create-webhook`,
data,
headers: { 'X-Alchemy-Token': authToken }
}
let createResponseData = await axios(axiosCreateConfig)
createResponseData = createResponseData.data
if (createResponseData && createResponseData.data && createResponseData.data.id) {
return createResponseData.data.id
}
return
}
} catch (error) {
return
}
},
async deleteWebhook(nodeData: INodeData, webhookId: string): Promise<boolean> {
const credentials = nodeData.credentials
if (credentials === undefined) {
throw new Error('Missing credentials')
}
const authToken = credentials.authToken as string
const axiosConfig: AxiosRequestConfig = {
method: 'DELETE' as Method,
url: `https://dashboard.alchemyapi.io/api/delete-webhook?webhook_id=${webhookId}`,
headers: { 'X-Alchemy-Token': authToken }
}
try {
await axios(axiosConfig)
} catch (error) {
return false
}
return true
}
}
async runWebhook(nodeData: INodeData): Promise<IWebhookNodeExecutionData[] | null> {
const inputParametersData = nodeData.inputParameters
const req = nodeData.req
if (inputParametersData === undefined) {
throw new Error('Required data missing')
}
if (req === undefined) {
throw new Error('Missing request')
}
//TODO: Verify webhook via signing key
const returnData: ICommonObject[] = []
returnData.push({
headers: req?.headers,
params: req?.params,
query: req?.query,
body: req?.body,
rawBody: (req as any).rawBody,
url: req?.url
})
return returnWebhookNodeExecutionData(returnData)
}
}
module.exports = { nodeClass: AlchemyWebhook }
================================================
FILE: packages/components/nodes/Alchemy/extendedOperation.ts
================================================
import { INodeOptionsValue, INodeParams, NETWORK } from '../../src'
import { IETHOperation } from '../../src/ETHOperations'
export const NFTOperationsOptions = [
{
label: 'Get NFTs',
name: 'getNFTs',
description: 'Gets all NFTs currently owned by a given address'
},
{
label: 'Get NFT Sales',
name: 'getNFTSales',
description: 'Gets NFT sales that have happened through on-chain marketplaces',
show: {
'networks.network': [NETWORK.MAINNET]
}
},
{
label: 'Get NFT Metadata',
name: 'getNFTMetadata',
description: 'Gets the metadata associated with a given NFT'
},
{
label: 'Get NFTs For Collection',
name: 'getNFTsForCollection',
description: 'Gets all NFTs for a given NFT contract'
},
{
label: 'Get Owners For Collection',
name: 'getOwnersForCollection',
description: 'Gets all owners for a given NFT contract.'
},
{
label: 'Get Owners For Token',
name: 'getOwnersForToken',
description: 'Get the owner(s) for a token.'
},
{
label: 'Get Contracts For Owner',
name: 'getContractsForOwner',
description: 'Gets all NFT contracts held by an owner address.'
},
{
label: 'Get Spam Contracts',
name: 'getSpamContracts',
description: 'Returns a list of all spam contracts marked by Alchemy.',
show: {
'networks.network': [NETWORK.MAINNET]
}
},
{
label: 'Is Spam Contracts',
name: 'isSpamContract',
description: 'Returns whether a contract is marked as spam or not by Alchemy.',
show: {
'networks.network': [NETWORK.MAINNET]
}
},
{
label: 'Reingest Contract',
name: 'reingestContract',
description:
'Triggers metadata refresh for an entire NFT collection and refreshes stale metadata after a collection reveal/collection changes.',
show: {
'networks.network': [NETWORK.MAINNET]
}
},
{
label: 'Get Floor Price',
name: 'getFloorPrice',
description: 'Returns the floor prices of a NFT collection by marketplace.',
show: {
'networks.network': [NETWORK.MAINNET]
}
},
{
label: 'Compute Rarity',
name: 'computeRarity',
description: 'Computes the rarity of each attribute of an NFT.',
show: {
'networks.network': [NETWORK.MAINNET]
}
},
{
label: 'Search Contract Metadata',
name: 'searchContractMetadata',
description: 'Search for a keyword across metadata of all ERC-721 and ERC-1155 smart contracts',
show: {
'networks.network': [NETWORK.MAINNET]
}
},
{
label: 'Summarize NFT Attributes',
name: 'summarizeNFTAttributes',
description: 'Generate a summary of attribute prevalence for an NFT collection.',
show: {
'networks.network': [NETWORK.MAINNET]
}
},
{
label: 'Is Holder Of Collection',
name: 'isHolderOfCollection',
description: 'Checks whether a wallet holds a NFT in a given collection'
},
{
label: 'Report Spam Contract',
name: 'reportSpamContract',
description: 'Report a particular contract address to our APIs if you think it is spam',
show: {
'networks.network': [NETWORK.MAINNET]
}
}
] as INodeOptionsValue[]
export const getNFTsProperties = [
{
label: 'Owner Address',
name: 'owner',
type: 'string',
description: 'Address for NFT owner (can be in ENS format!)',
default: '',
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTs']
}
},
{
label: 'PageKey',
name: 'pageKey',
type: 'string',
description:
'UUID for pagination. If more results are available, a UUID pageKey will be returned in the response. Pass that UUID into pageKey to fetch the next 100 NFTs.',
default: '',
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTs']
},
optional: true
},
{
label: 'Metadata',
name: 'withMetadata',
type: 'boolean',
description: 'If boolean is set to true the query will include metadata for each returned token.',
default: true,
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTs']
}
}
] as INodeParams[]
export const getNFTMetadataProperties = [
{
label: 'Contract Address',
name: 'contractAddress',
type: 'string',
description: 'Address of NFT contract',
default: '',
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTMetadata']
}
},
{
label: 'Token Id',
name: 'tokenId',
type: 'string',
description: 'Id for NFT',
default: '',
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTMetadata']
}
},
{
label: 'Token Type',
name: 'tokenType ',
type: 'options',
description: '"ERC721" or "ERC1155"; specifies type of token to query for',
options: [
{
label: 'ERC721',
name: 'ERC721'
},
{
label: 'ERC1155',
name: 'ERC1155'
},
{
label: '',
name: ''
}
],
default: '',
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTMetadata']
}
}
] as INodeParams[]
export const getNFTsForCollectionProperties = [
{
label: 'Contract Address',
name: 'contractAddress',
type: 'string',
description: 'Contract address for the NFT collection',
default: '',
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTsForCollection']
}
},
{
label: 'Start Token',
name: 'startToken',
type: 'string',
description: 'An offset used for pagination. Can be a hex string, or a decimal.',
default: '',
optional: true,
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTsForCollection']
}
},
{
label: 'Metadata',
name: 'withMetadata',
type: 'boolean',
description: 'If set to true, returns NFT metadata; otherwise will only return tokenIds',
default: true,
optional: true,
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTsForCollection']
}
},
{
label: 'Limit',
name: 'limit',
type: 'number',
description: 'Sets the total number of NFTs returned in the response. Defaults to 100.',
default: 100,
optional: true,
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTsForCollection']
}
},
{
label: 'Token Uri Timeout In Ms',
name: 'tokenUriTimeoutInMs',
type: 'number',
description:
'No set timeout by default - When metadata is requested, this parameter is the timeout (in milliseconds) for the website hosting the metadata to respond. If you want to only access the cache and not live fetch any metadata for cache misses then set this value to 0.',
optional: true,
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTsForCollection']
}
}
] as INodeParams[]
export const getOwnersForCollectionProperties = [
{
label: 'Contract Address',
name: 'contractAddress',
type: 'string',
description: 'Contract address for the NFT collection (ERC721 and ERC1155 supported).',
default: '',
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getOwnersForCollection']
}
},
{
label: 'With Token Balances',
name: 'withTokenBalances',
type: 'boolean',
description: 'If set to true the query will include the token balances per token id for each owner. false by default.',
default: false,
optional: true,
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getOwnersForCollection']
}
},
{
label: 'Block',
name: 'block',
type: 'string',
description: 'The point in time or block number (in hex or decimal) to fetch collection ownership information for.',
default: '',
optional: true,
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getOwnersForCollection']
}
},
{
label: 'PageKey',
name: 'pageKey',
type: 'string',
description:
'used for collections with >50,000 owners. pageKey field can be passed back as request parameter to get the next page of results.',
default: '',
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getOwnersForCollection']
},
optional: true
}
] as INodeParams[]
export const getOwnersForTokenProperties = [
{
label: 'Contract Address',
name: 'contractAddress',
type: 'string',
description: 'Contract address for the NFT collection (ERC721 and ERC1155 supported).',
default: '',
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': [
'getOwnersForToken',
'isSpamContract',
'reingestContract',
'getFloorPrice',
'computeRarity',
'summarizeNFTAttributes',
'reportSpamContract'
]
}
},
{
label: 'Token Id',
name: 'tokenId',
type: 'string',
description: 'The ID of the token. Can be in hex or decimal format.',
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getOwnersForToken', 'computeRarity']
}
}
] as INodeParams[]
export const searchContractMetadataProperties = [
{
label: 'Query',
name: 'query',
type: 'string',
description: 'The search string that you want to search for in contract metadata',
default: '',
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['searchContractMetadata']
}
}
] as INodeParams[]
export const isHolderOfCollectionProperties = [
{
label: 'Contract Address',
name: 'contractAddress',
type: 'string',
description: 'Contract address for the NFT collection (ERC721 and ERC1155 supported).',
default: '',
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['isHolderOfCollection']
}
},
{
label: 'Wallet',
name: 'wallet',
type: 'string',
description: 'Wallet address to check for collection ownership.',
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['isHolderOfCollection']
}
}
] as INodeParams[]
export const getNFTSalesProperties = [
{
label: 'Contract Address',
name: 'contractAddress',
type: 'string',
description: 'The contract address of a NFT collection to filter sales by. Defaults to returning all NFT contracts.',
default: '',
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTSales']
}
},
{
label: 'Token Id',
name: 'tokenId',
type: 'string',
description:
'The token ID of an NFT within the collection specified by contractAddress to filter sales by. Defaults to returning all token IDs.',
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTSales']
}
},
{
label: 'Start Block',
name: 'startBlock',
type: 'string',
description:
'The block number to start fetching NFT sales data from. Allowed values are decimal integers and "latest". Defaults to "latest".',
optional: true,
default: 'latest',
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTSales']
}
},
{
label: 'Start Log Index',
name: 'startLogIndex',
type: 'number',
description: 'The log index within the startBlock to start fetching NFT sales data from. Defaults to 0.',
optional: true,
default: 0,
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTSales']
}
},
{
label: 'Start Bundle Index',
name: 'startBundleIndex',
type: 'number',
description: 'The index of an NFT within a sale bundle to start fetching NFT sales data from. Defaults to 0.',
optional: true,
default: 0,
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTSales']
}
},
{
label: 'Ascending Order',
name: 'ascendingOrder',
type: 'boolean',
description: 'Whether to return the results ascending from startBlock or descending from startBlock. Defaults to ascending (true).',
optional: true,
default: true,
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTSales']
}
},
{
label: 'Marketplace',
name: 'marketplace',
type: 'options',
description: 'The name of the NFT marketplace to filter sales by. Currently only "seaport" is supported.',
options: [
{
label: 'Seaport',
name: 'seaport'
}
],
optional: true,
default: 'seaport',
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTSales']
}
},
{
label: 'Buyer Address',
name: 'buyerAddress',
type: 'string',
description: 'The address of the NFT buyer to filter sales by. Defaults to returning sales involving any buyer.',
optional: true,
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTSales']
}
},
{
label: 'Seller Address',
name: 'sellerAddress',
type: 'string',
description: 'The address of the NFT seller to filter sales by. Defaults to returning sales involving any seller.',
optional: true,
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTSales']
}
},
{
label: 'Buyer Is Maker',
name: 'buyerIsMaker',
type: 'boolean',
description:
'Filter by whether if the buyer was the maker in the trade, i.e. if the sale involved a buyer offering a bid and the seller then accepting the bid. Defaults to returning both maker and taker orders.',
optional: true,
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTSales']
}
},
{
label: 'Limit',
name: 'limit',
type: 'number',
description: 'The maximum number of NFT sales to return. Defaults to 100.',
optional: true,
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getNFTSales']
}
}
] as INodeParams[]
export const getContractsForOwnerProperties = [
{
label: 'Owner',
name: 'owner',
type: 'string',
description: 'Address for NFT owner (can be in ENS format!).',
placeholder: 'vitalk.eth',
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getContractsForOwner']
}
},
{
label: 'PageKey',
name: 'pageKey',
type: 'string',
description:
'key for pagination. If more results are available, a pageKey will be returned in the response. Pass back the pageKey as a param to fetch the next page of results.',
optional: true,
show: {
'inputParameters.api': ['nftAPI'],
'inputParameters.operation': ['getContractsForOwner']
}
}
] as INodeParams[]
export const transactionReceiptsOperations = [
{
name: 'alchemy_getTransactionReceipts',
value: 'alchemy_getTransactionReceipts',
parentGroup: 'Transaction Receipt Information',
description: 'Fetch all transaction receipts for a block number or a block hash in one API call ',
providerNetworks: {
alchemy: [NETWORK.MAINNET, NETWORK.GÖRLI, NETWORK.MATIC, NETWORK.MATIC_MUMBAI, NETWORK.ARBITRUM, NETWORK.ARBITRUM_GOERLI]
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'alchemy_getTransactionReceipts',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">blockNumber</code> - (hex) The block number you want to get transaction receipts for</li>
<li><code class="inline">blockHash</code> - The block hash you want to get transaction receipts for</li>
</ul>`,
exampleParameters: `[
{
"blockHash": "0xeb7214680220e50f1e9662d2f15569395f8e67455cc2f5cbf7db8b3b1567558c"
}
]`,
exampleResponse: {
jsonrpc: '2.0',
id: 1,
result: {
receipts: [
{
transactionHash: '0x103c47bd1917f5b57c89d55bc9a664eca732fadcc7596670030ad27ac26259ae',
blockHash: '0xbd6523808cf0a98c528b7e169b357c46a7cd0f602cec98f05bb5962553522647',
blockNumber: '0xd63adc',
contractAddress: null,
cumulativeGasUsed: '0x26d93',
effectiveGasPrice: '0x1e836343a7',
from: '0xcc72f778eedd8e337e6cb58ca9ec8ba2912e71dc',
gasUsed: '0x26d93',
logs: [
{
address: '0xa5def515cfd373d17830e7c1de1639cb3530a112',
topics: [
'0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
'0x000000000000000000000000cc72f778eedd8e337e6cb58ca9ec8ba2912e71dc',
'0x0000000000000000000000001ca1a5937d73f74f89764c3835d6796e4e1c8314'
],
data: '0x000000000000000000000000000000000000000000000df7b2d4343e99d38475',
blockNumber: '0xd63adc',
transactionHash: '0x103c47bd1917f5b57c89d55bc9a664eca732fadcc7596670030ad27ac26259ae',
transactionIndex: '0x0',
blockHash: '0xbd6523808cf0a98c528b7e169b357c46a7cd0f602cec98f05bb5962553522647',
logIndex: '0x0',
removed: false
}
],
logsBloom:
'0x00000000000000000000000000000000000000001400000020000000000000000000000000000000000000000000000008000000000000000000000008240000000000000000000000000408000000000000000000040000000000002000000000000000000000000000010000000004000000000000000000000810000000000000000000000000000000000000000000000000000020000000000000000000020000000000800000000004000000020000000000000000000000000000000000008002000000000000000000000000020000000000000000000000000040000010000000000000000000020000000000000000400000000000000000000000',
status: '0x1',
to: '0x1ca1a5937d73f74f89764c3835d6796e4e1c8314',
transactionIndex: '0x0',
type: '0x2'
}
]
}
}
}
] as IETHOperation[]
export const tokenAPIOperations = [
{
name: 'alchemy_getTokenAllowance',
value: 'alchemy_getTokenAllowance',
parentGroup: 'Token Information',
description: 'Returns the amount which the spender is allowed to withdraw from the owner.',
providerNetworks: {
alchemy: [
NETWORK.MAINNET,
NETWORK.GÖRLI,
NETWORK.MATIC,
NETWORK.MATIC_MUMBAI,
NETWORK.ARBITRUM,
NETWORK.ARBITRUM_GOERLI,
NETWORK.OPTIMISM,
NETWORK.OPTIMISM_GOERLI
]
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'alchemy_getTokenAllowance',
params: [],
id: 83
},
inputParameters: `
<ul>
<li><code class="inline">Object</code> - An object with the following fields:</li>
<ul>
<li><code class="inline">contract</code>: <code class="inline">DATA</code>, 20 Bytes - The address of the token contract.</li>
<li><code class="inline">owner</code>: <code class="inline">DATA</code>, 20 Bytes - The address of the token owner.</li>
<li><code class="inline">spender</code>: <code class="inline">DATA</code>, 20 Bytes - The address of the token spender.</li>
</ul>
</ul>`,
exampleParameters: `[
{
"contract": "0xE41d2489571d322189246DaFA5ebDe1F4699F498",
"owner": "0xe8095A54C83b069316521835408736269bfb389C",
"spender": "0x3Bcc5bD4abBc853395eBE5103b7DbA20411E38db"
}
]`,
exampleResponse: {
jsonrpc: '2.0',
id: 83,
result: '10963536149943846000'
}
},
{
name: 'alchemy_getTokenBalances',
value: 'alchemy_getTokenBalances',
parentGroup: 'Token Information',
description: 'Returns token balances for a specific address given a list of contracts.',
providerNetworks: {
alchemy: [
NETWORK.MAINNET,
NETWORK.GÖRLI,
NETWORK.MATIC,
NETWORK.MATIC_MUMBAI,
NETWORK.ARBITRUM,
NETWORK.ARBITRUM_GOERLI,
NETWORK.OPTIMISM,
NETWORK.OPTIMISM_GOERLI
]
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'alchemy_getTokenBalances',
params: [],
id: 42
},
inputParameters: `
<ul>
<li><code class="inline">DATA</code>, 20 Bytes - The address for which token balances will be checked</li>
<li>One of:</li>
<ul>
<li><code class="inline">Array</code> - A list of contract addresses</li>
<li><code class="inline">String</code> "DEFAULT_TOKENS" - denotes a query for the top 100 tokens by 24 hour volume</li>
</ul>
</ul>`,
exampleParameters: `[
"0x3f5ce5fbfe3e9af3971dd833d26ba9b5c936f0be",
[
"0x607f4c5bb672230e8672085532f7e901544a7375",
"0x618e75ac90b12c6049ba3b27f5d5f8651b0037f6",
"0x63b992e6246d88f07fc35a056d2c365e6d441a3d",
"0x6467882316dc6e206feef05fba6deaa69277f155",
"0x647f274b3a7248d6cf51b35f08e7e7fd6edfb271"
]
]`,
exampleResponse: {
jsonrpc: '2.0',
id: 42,
result: {
address: '0x3f5ce5fbfe3e9af3971dd833d26ba9b5c936f0be',
tokenBalances: [
{
contractAddress: '0x607f4c5bb672230e8672085532f7e901544a7375',
tokenBalance: '0x00000000000000000000000000000000000000000000000000003c005f81ab00',
error: null
}
]
}
}
},
{
name: 'alchemy_getTokenMetadata',
value: 'alchemy_getTokenMetadata',
parentGroup: 'Token Information',
description: 'Returns metadata (name, symbol, decimals, logo) for a given token contract address.',
providerNetworks: {
alchemy: [
NETWORK.MAINNET,
NETWORK.GÖRLI,
NETWORK.MATIC,
NETWORK.MATIC_MUMBAI,
NETWORK.ARBITRUM,
NETWORK.ARBITRUM_GOERLI,
NETWORK.OPTIMISM,
NETWORK.OPTIMISM_GOERLI
]
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'alchemy_getTokenMetadata',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">DATA</code>, 20 Bytes - The address of the token contract.</li>
</ul>`,
exampleParameters: `[
"0x1985365e9f78359a9B6AD760e32412f4a445E862"
]`,
exampleResponse: {
jsonrpc: '2.0',
id: 1,
result: {
logo: 'https://static.alchemyapi.io/images/assets/1104.png',
symbol: 'REP',
decimals: 18,
name: 'Augur'
}
}
}
] as IETHOperation[]
================================================
FILE: packages/components/nodes/Alchemy/solanaOperation.ts
================================================
import { NETWORK, NETWORK_PROVIDER } from '../../src/ChainNetwork'
import { IETHOperation } from '../../src/ETHOperations'
export const solanaOperationsNetworks = [NETWORK.SOLANA, NETWORK.SOLANA_DEVNET]
export const solanaAPIOperations = [
{
name: 'getTransaction',
value: 'getTransaction',
parentGroup: 'Reading & Writing Transactions',
description: 'Returns transaction details for a confirmed transaction.',
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getTransaction',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">base-58 encoded string</code> - transaction signature</li>
<li><code class="inline">object</code> - (optional) Config object:</li>
<ul>
<li><code class="inline">commitment</code> - (optional) Configures the commitment level of the blocks queried. Accepts one of the following strings:</li>
<ul>
<li><code class="inline">finalized</code> - the node will query the most recent block confirmed by supermajority of the cluster as having reached maximum lockout, meaning the cluster has recognized this block as finalized.</li>
<li><code class="inline">confirmed</code> - the node will query the most recent block that has been voted on by supermajority of the cluster.</li>
<li><code class="inline">processed</code> - the node will query its most recent block. Note that the block may not be complete.</li>
</ul>
<li><code class="inline">encoding</code>: <code class="inline">string</code> - (optional) encoding for tx data; Either "json", "jsonParsed", "base58" (slow), "base64". (default is "json")</li>
<li><code class="inline">maxSupportedTransactionVersion</code>: <code class="inline">number</code> - (optional) set the max transaction version to return in responses. If the requested transaction is a higher version, an error will be returned.</li>
</ul>
</ul>`,
exampleParameters: `[
"FhGuWorGjyu1sAMvn53GWb96apbExf8HvX18MVwexMQxmo2sweuSfFpoApJbMT19ijDHRRUk6kDbvE1kgNfRkse",
{
"commitment": "confirmed"
}
]`,
exampleResponse: {
jsonrpc: '2.0',
result: {
blockTime: 1655319302,
meta: {
err: null,
fee: 5000,
innerInstructions: [
{
index: 1,
instructions: [
{
accounts: [26, 13, 19, 15, 16, 0],
data: '63S77LdPnZrhcJ2wGjQ7xuV',
programIdIndex: 21
},
{
accounts: [14, 16, 0],
data: '3QCBRJNuTemd',
programIdIndex: 26
},
{
accounts: [2, 12, 19],
data: '3KiXXdFFB5Km',
programIdIndex: 26
}
]
}
]
}
},
id: 1
}
},
{
name: 'sendTransaction',
value: 'sendTransaction',
parentGroup: 'Reading & Writing Transactions',
description: 'Submits a signed transaction to the cluster for processing.',
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getTransaction',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">encoded string</code> - fully-signed Transaction</li>
<li><code class="inline">object</code> - (optional) Config object:</li>
<ul>
<li><code class="inline">skipPreflight</code>: <code class="inline">bool</code> - if true, skip the preflight transaction checks (default: false)</li>
<li><code class="inline">preflightCommitment</code>: <code class="inline">string</code> - (optional) Commitment level to use for preflight (default: "finalized").</li>
<ul>
<li><code class="inline">finalized</code> - the node will query the most recent block confirmed by supermajority of the cluster as having reached maximum lockout, meaning the cluster has recognized this block as finalized.</li>
<li><code class="inline">confirmed</code> - the node will query the most recent block that has been voted on by supermajority of the cluster.</li>
<li><code class="inline">processed</code> - the node will query its most recent block. Note that the block may not be complete.</li>
</ul>
<li><code class="inline">encoding</code>: <code class="inline">string</code> - (optional) Encoding used for the transaction data. Either "base58" (slow, DEPRECATED), or "base64". (default: "base58").</li>
<li><code class="inline">maxRetries</code>: <code class="inline">usize</code> - (optional) Maximum number of times for the RPC node to retry sending the transaction to the leader. If this parameter is not provided, the RPC node will retry the transaction until it is finalized or until the blockhash expires.</li>
<li><code class="inline">minContextSlot</code>: <code class="inline">number</code> - (optional) set the minimum slot that the request can be evaluated at.</li>
</ul>
</ul>`,
exampleParameters: `[
"AeF71jBTbqF33iO17K/WepKejY6ED8Db2t00aizbkvRpDUaX6mKZMInTbDgrOLTTPgOmYbE96Nlt2IwGmZKSpQ0BAAsZeGK9wdFlyWz2mdFDfZ3/65ZjurcmrptLNm5mN3f8p0ogsmSV/IVZRQW5a5ssHj+xTkSMSg6MvA28piZAJSLyxSNlSqXrkQU25XOnSMYzHuJNOeei2iMWq3lwa8TdxeqjJRFwcKkY21dentnVTDwl1cueQS/QUd9mUuo25ivPwYY3RX3yAyUj3Q6IaALYsHU/017gPZpDvHJJ7jrgSdN8dzeHLDAOEIF1ci79StKCB8hABC87tDUy+cyHrGjv7ceJbKfgtajeraDLc3Ndv8FX/Azg8HJ4eCu29Y+gxBJROld53yhEmAooyHHkcMEPF/qybgtUUE4DMxUftcYRcEeGtXsupOBa7USG+TC3fPVLShGfKH//XF/H9EyQut9RHKTrnofS6+89GaTLV8VZXwcr3giCPPZtOymEVDquZoAthk6pIbU9bjTY+O+NVm9AJVKtkUh02Is8rj1xlTRevQ65RutmBvIsMFSykgwwkEcthzgnj9RgOcNPV63bOnMwtnA25xGVrA5WPR3Cp/qLwsfk76yDUU1ksxe/AT+BbeZD6tzuifWhovJqdEpfnl+qwU5RSmm+bf9lGWui27urEkLY0SuJudyP3580cJpbEGtHLw85u2ypzgSw/X8ulxaI4uU7M7MexO/4+iia6oyVTAFjLi12SQjOVE1oZb3vERv/YSsBOP45MdZXb1/RCItG0H924+Qvzh1Vy52i1Sl3ULQWHFoPCOzzP1aH2CdIP9hLVSu8Mn+Lr2Nkvn22qA5HyDclu6nN/XmuJp8Db7aXm0uYp3KSexdu9rcZZXaHIfHx8uTmLfbItKhf4aZ9tE3BLeXbMw96xmty3GWK/t8PSkFbQ/9hSRqTERLd8b2BR80bZBN1959YJRJtZlSAh0Y0/QrOBfhDaTInzNg0xDUbatfDR7qLZN0mJVepe+fnfUZ28WcGm4uYWqtTKkUJDehVf83cvmy378c6CmWwb5IDXbc+7Aan1RcYx3TJKFZjmGkdXraLXrijm0ttXHNVWyEAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKnVgl9CjQpAihYbPBN/CahLRcSHNFl1MS9n9YRISJ2GJAYWBAwTERcBAxYEAhQVFwEDFgQKFBUXAQMWBAYOEBcBAxYGCRcMAgoGAQcWDwQNAwYBDAsIBQcJDxIAGAkR+PwcVAIAAAA=",
{
"encoding": "base64",
"skipPreflight": true,
"preflightCommitment": "processed"
}
]`,
exampleResponse: {
jsonrpc: '2.0',
result: '5WUPdF1zGiCbMX4dAGRrVJBvZuRjQatzsDJf8rcmLH8q67m8AoupcFsVNSo1CsPhLat4B3C2yZAtGp34yVgmcKNk'
}
},
{
name: 'getSignatureStatuses',
value: 'getSignatureStatuses',
parentGroup: 'Reading & Writing Transactions',
description: 'Returns the statuses of a list of signatures.',
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getSignatureStatuses',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">array of base-58 encoded string</code> - An array of transaction signatures to confirm</li>
<li><code class="inline">object</code> - (optional) Config object:</li>
<ul>
<li><code class="inline">searchTransactionHistory</code>: <code class="inline">bool</code> - if true, a Solana node will search its ledger cache for any signatures not found in the recent status cache</li>
</ul>
</ul>`,
exampleParameters: `[
[
"28P1gdVq52uEbCHns4EL5DCMjU5PtcBo5M3Gju4FX8DLwjLPDchudttnQapAxYy5dkdVZ6sqa6pvtgC5mbKLqfQA"
],
{
"searchTransactionHistory": true
}
]`,
exampleResponse: {
jsonrpc: '2.0',
result: {
context: {
slot: 137569378
},
value: [
{
confirmationStatus: 'finalized',
confirmations: null,
err: null,
slot: 137529522,
status: {
Ok: null
}
}
]
}
}
},
{
name: 'getSignaturesForAddress',
value: 'getSignaturesForAddress',
parentGroup: 'Reading & Writing Transactions',
description:
'Returns signatures for confirmed transactions that include the given address in their accountKeys list. Returns signatures backwards in time from the provided signature or most recent confirmed block.',
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getSignaturesForAddress',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">base-58 encoded string</code> - account address</li>
<li><code class="inline">object</code> - (optional) Config object:</li>
<ul>
<li><code class="inline">limit</code>: <code class="inline">number</code> - (optional) maximum transaction signatures to return (between 1 and 1,000, default: 1,000).</li>
<li><code class="inline">before</code>: <code class="inline">string</code> - (optional) start searching backwards from this transaction signature. If not provided the search starts from the top of the highest max confirmed block.</li>
<li><code class="inline">until</code>: <code class="inline">string</code> - (optional) search until this transaction signature, if found before limit reached.</li>
<li><code class="inline">minContextSlot</code>: <code class="inline">number</code> - (optional) set the minimum slot that the request can be evaluated at.</li>
<li><code class="inline">commitment</code> - (optional) Configures the commitment level of the blocks queried. Accepts one of the following strings:</li>
<ul>
<li><code class="inline">finalized</code> - the node will query the most recent block confirmed by supermajority of the cluster as having reached maximum lockout, meaning the cluster has recognized this block as finalized.</li>
<li><code class="inline">confirmed</code> - the node will query the most recent block that has been voted on by supermajority of the cluster.</li>
<li><code class="inline">processed</code> - the node will query its most recent block. Note that the block may not be complete.</li>
</ul>
</ul>
</ul>`,
exampleParameters: `[
"Vote111111111111111111111111111111111111111",
{
"limit": 1
}
]`,
exampleResponse: {
jsonrpc: '2.0',
result: [
{
blockTime: 1654173549,
confirmationStatus: 'finalized',
err: null,
memo: null,
signature: '67iWWgeXYSXxKmxMjAahr9ATXvv1SJoHedXYZxicFQtF4eFxCWJxUwEYczNbrua8pQAshmkf73gfAX5itutWTA7m',
slot: 136105283
}
],
id: 1
}
},
{
name: 'simulateTransaction',
value: 'simulateTransaction',
parentGroup: 'Reading & Writing Transactions',
description: 'Simulate sending a transaction.',
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'simulateTransaction',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">string</code> - Transaction, as an encoded string. The transaction must have a valid blockhash, but is not required to be signed.</li>
<li><code class="inline">object</code> - (optional) Configuration object containing the following optional fields:</li>
<ul>
<li><code class="inline">sigVerify</code> - if true the transaction signatures will be verified (default: false, conflicts with replaceRecentBlockhash).</li>
<li><code class="inline">commitment</code>: <code class="inline">string</code> - (optional) Configures the commitment level of the blocks queried. Accepts one of the following strings:</li>
<ul>
<li><code class="inline">finalized</code> - the node will query the most recent block confirmed by supermajority of the cluster as having reached maximum lockout, meaning the cluster has recognized this block as finalized.</li>
<li><code class="inline">confirmed</code> - the node will query the most recent block that has been voted on by supermajority of the cluster.</li>
<li><code class="inline">processed</code> - the node will query its most recent block. Note that the block may not be complete.</li>
</ul>
<li><code class="inline">encoding</code> - (optional) Encoding used for the transaction data. Accepts one of the following strings: ["base64" (default), "base64+zstd" or "jsonParsed"]</li>
<li><code class="inline">replaceRecentBlockhash</code> - (optional) if true the transaction recent blockhash will be replaced with the most recent blockhash. (default: false, conflicts with sigVerify).</li>
<li><code class="inline">accounts </code>: <code class="inline">object</code> - (optional) Accounts configuration object containing the following fields:</li>
<ul>
<li><code class="inline">encoding</code> - (optional) encoding for returned Account data, either "base64" (default), "base64+zstd" or "jsonParsed". "jsonParsed" encoding attempts to use program-specific state parsers to return more human-readable and explicit account state data. If "jsonParsed" is requested but a parser cannot be found, the field falls back to binary encoding, detectable when the data field is type string.</li>
<li><code class="inline">addresses</code> - An array of accounts to return, as base-58 encoded strings.</li>
</ul>
<li><code class="inline">minContextSlot</code>: <code class="inline">number</code> - (optional) set the minimum slot that the request can be evaluated at.</li>
</ul>
</ul>`,
exampleParameters: `[
"AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCAgiFt0xk+FyHf76k7/dkz9vjFqSY8vhrizSEx2GWidkQ5ewAKY7OUUt6ZEIryxOHEx1w1mGioe0SGujvGtbbPvaSDCG6EGTb0+Q1B98oAxfD0GiOZwOLQW1IkeOC71yX0NQm+LOK6+h53IwvrgMD9JNZme6u7PeARqlqZzOD4iRLRnyGE+3cPqKW5IiU66yIZZOgOtO4B9TYReBdaWsp+Dx5lyxj0FXRm/6oiIDpU9abZ6qIYeIKRR96fuhXeHpmjwUMJxNk9vhCZs3zhxL/0CZLdm0EbWEwrD4A7KBrPOYP2gbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCph9Yfdu8NCN6d9KtOQeMPovh7jKgKo56yxXQO8eTA6XUBBgcAAgEDBQQH4gMobmZ0X2FjY291bnQ6ICI5enlMTjVDUXd4V3JFUGl0MXNGeTVEWjV4TXFKZk5RVExpcUJWU2Z2UHZXWSIsCiAgICBkYXRhX2FjY291bnQ6ICIzZDhTcG5abnRtR0t0dlVtaHVhazdLU3U2WFQ3QVVNaW51VURtYTVobWlCWCIsCiAgICBjb2luX3NyY19hY2N0OiAiQkI3cGN0UGVWQ1FQalhNR2RrRFg5QURUOTk1Z1hDVkx5SEpVeWdwSlBOMngiLAogICAgY29pbl9kZXN0X2FjY3Q6ICI5UDY4a2J2VzlLelBIc1pURnE0eVFyUlZrWXNmNUNRRmc5aFZoeUJaZHBQMiIsCiAgICB0cmFuc2Zlcl9hdXRob3JpdHk6ICJwTWludFRaNUNFa0hVaGdydXJQZ29pTW50b0xnRndic0tkYnFOclhzcmR5IiwKICAgIGFjdGl2aXR5OiAxLCAKICAgIHBheV9wZXJpb2Q6IDYwNDgwMC4wMDAwMDAsIAogICAgcGF5X3JhdGU6IDguMDAwMDAwLAogICAgdGltZXN0YW1wOiAxNjU1MTg0ODYwLAogICAgbXVsdGlwbGllcjogMS4wLAogICAgbWF4X3BheW91dDogMTYuMDAwMDAwKQ==",
{
"encoding": "base64",
"commitment": "recent",
"sigVerify": false,
"accounts": {
"addresses": [
"9zyLN5CQwxWrEPit1sFy5DZ5xMqJfNQTLiqBVSfvPvWY",
"GtFMtrW31RdCeSdW4ot3jNVuoLtFywJGGTiF1Q8Uopky",
"pMintTZ5CEkHUhgrurPgoiMntoLgFwbsKdbqNrXsrdy",
"3d8SpnZntmGKtvUmhuak7KSu6XT7AUMinuUDma5hmiBX",
"9P68kbvW9KzPHsZTFq4yQrRVkYsf5CQFg9hVhyBZdpP2",
"BB7pctPeVCQPjXMGdkDX9ADT995gXCVLyHJUygpJPN2x",
"pSTAkE7Z2guBmSheg6tHdHk3rT1wmF1Mfuf52tnWeAd",
"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
]
}
}
]`,
exampleResponse: {
jsonrpc: '2.0',
result: {
context: {
slot: 137569919
},
value: {
accounts: [null, null, null, null, null, null, null, null],
err: 'BlockhashNotFound',
logs: [],
unitsConsumed: 0
}
},
id: 1
}
},
{
name: 'getBlockProduction',
value: 'getBlockProduction',
parentGroup: 'Getting Blocks',
description: 'Returns recent block production information from the current or previous epoch.',
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getBlockProduction',
params: [],
id: 1
}
},
{
name: 'getBlock',
value: 'getBlock',
parentGroup: 'Getting Blocks',
description: 'Returns identity and transaction information about a confirmed block in the ledger.',
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getBlock',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">u64</code> - a slot integer denoting the target block number.</li>
<li><code class="inline">object</code> - (optional) Configuration object containing the following optional fields:</li>
<ul>
<li><code class="inline">transactionDetails</code>: <code class="inline">string</code> - (optional) level of transaction detail to return. Accepts one of the following strings: ["full" (Default), "signatures", or "none"]</li>
<li><code class="inline">commitment</code>: <code class="inline">string</code> - (optional) Configures the commitment level of the blocks queried. Accepts one of the following strings:</li>
<ul>
<li><code class="inline">finalized</code> - the node will query the most recent block confirmed by supermajority of the cluster as having reached maximum lockout, meaning the cluster has recognized this block as finalized.</li>
<li><code class="inline">confirmed</code> - the node will query the most recent block that has been voted on by supermajority of the cluster.</li>
<li><code class="inline">processed</code> - the node will query its most recent block. Note that the block may not be complete.</li>
</ul>
<li><code class="inline">encoding</code>: <code class="inline">string</code> - (optional) data encoding for each returned transaction. Accepts one of the following strings: ["json" (Default), "jsonParsed", "base58" (slow), "base64"]</li>
<li><code class="inline">rewards</code>: <code class="inline">bool</code> - (optional) whether to populate the rewards array. true m(Default)</li>
<li><code class="inline">maxSupportedTransactionVersion</code>: <code class="inline">number</code> - (optional) sets the maximum transaction version.</li>
</ul>
</ul>`,
exampleParameters: `[
430,
{
"encoding": "json",
"transactionDetails":"full",
"rewards":false
}
]`,
exampleResponse: {
jsonrpc: '2.0',
result: {
blockHeight: 428,
blockTime: null,
blockhash: '3Eq21vXNB5s86c62bVuUfTeaMif1N2kUqRPBmGRJhyTA',
parentSlot: 429,
previousBlockhash: 'mfcyqEXB3DnHXki6KjjmZck6YjmZLvpAByy2fj4nh6B',
transactions: [
{
meta: {
err: null,
fee: 5000,
innerInstructions: [],
logMessages: [],
postBalances: [499998932500, 26858640, 1, 1, 1],
postTokenBalances: [],
preBalances: [499998937500, 26858640, 1, 1, 1],
preTokenBalances: [],
status: {
Ok: null
}
},
transaction: {
message: {
accountKeys: [
'3UVYmECPPMZSCqWKfENfuoTv51fTDTWicX9xmBD2euKe',
'AjozzgE83A3x1sHNUR64hfH7zaEBWeMaFuAN9kQgujrc',
'SysvarS1otHashes111111111111111111111111111',
'SysvarC1ock11111111111111111111111111111111',
'Vote111111111111111111111111111111111111111'
],
header: {
numReadonlySignedAccounts: 0,
numReadonlyUnsignedAccounts: 3,
numRequiredSignatures: 1
},
instructions: [
{
accounts: [1, 2, 3, 0],
data: '37u9WtQpcm6ULa3WRQHmj49EPs4if7o9f1jSRVZpm2dvihR9C8jY4NqEwXUbLwx15HBSNcP1',
programIdIndex: 4
}
],
recentBlockhash: 'mfcyqEXB3DnHXki6KjjmZck6YjmZLvpAByy2fj4nh6B'
},
signatures: ['2nBhEBYYvfaAe16UMNqRHre4YNSskvuYgx3M6E4JP1oDYvZEJHvoPzyUidNgNX5r9sTyN1J9UxtbCXy2rqYcuyuv']
}
}
]
},
id: 1
}
},
{
name: 'getBlocks',
value: 'getBlocks',
parentGroup: 'Getting Blocks',
description: 'Returns a list of confirmed blocks between two slots.',
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getBlocks',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">u64</code> - starting slot integer</li>
<li><code class="inline">u64</code> - (optional) ending slot integer</li>
<li><code class="inline">commitment</code>: <code class="inline">string</code> - (optional) Configures the commitment level of the blocks queried. Accepts one of the following strings:</li>
<ul>
<li><code class="inline">finalized</code> - the node will query the most recent block confirmed by supermajority of the cluster as having reached maximum lockout, meaning the cluster has recognized this block as finalized.</li>
<li><code class="inline">confirmed</code> - the node will query the most recent block that has been voted on by supermajority of the cluster.</li>
<li><code class="inline">processed</code> - the node will query its most recent block. Note that the block may not be complete.</li>
</ul>
</ul>`,
exampleParameters: `[5, 10]`,
exampleResponse: {
jsonrpc: '2.0',
result: [5, 6, 7, 8, 9, 10],
id: 1
}
},
{
name: 'getBlocksWithLimit',
value: 'getBlocksWithLimit',
parentGroup: 'Getting Blocks',
description: 'Returns a list of confirmed blocks starting at the given slot.',
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getBlocksWithLimit',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">u64</code> - starting slot integer</li>
<li><code class="inline">u64</code> - (optional) ending slot integer</li>
<li><code class="inline">commitment</code>: <code class="inline">string</code> - (optional) Configures the commitment level of the blocks queried. Accepts one of the following strings:</li>
<ul>
<li><code class="inline">finalized</code> - the node will query the most recent block confirmed by supermajority of the cluster as having reached maximum lockout, meaning the cluster has recognized this block as finalized.</li>
<li><code class="inline">confirmed</code> - the node will query the most recent block that has been voted on by supermajority of the cluster.</li>
<li><code class="inline">processed</code> - the node will query its most recent block. Note that the block may not be complete.</li>
</ul>
</ul>`,
exampleParameters: `[5, 3]`,
exampleResponse: {
jsonrpc: '2.0',
result: [5, 6, 7],
id: 1
}
},
{
name: 'getBlockHeight',
value: 'getBlockHeight',
parentGroup: 'Getting Blocks',
description: 'Returns the current block height of the node.',
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getBlockHeight',
params: [],
id: 1
}
},
{
name: 'isBlockhashValid',
value: 'isBlockhashValid',
parentGroup: 'Getting Blocks',
description: 'Returns whether a blockhash is still valid or not.',
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'isBlockhashValid',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">blockhash</code>: <code class="inline">base-58 encoded string</code> - the blockhash of this block</li>
<li><code class="inline">object</code> - (optional) Configuration object containing the following optional fields:</li>
<ul>
<li><code class="inline">commitment</code>: <code class="inline">string</code> - (optional) Configures the commitment level of the blocks queried. Accepts one of the following strings:</li>
<ul>
<li><code class="inline">finalized</code> - the node will query the most recent block confirmed by supermajority of the cluster as having reached maximum lockout, meaning the cluster has recognized this block as finalized.</li>
<li><code class="inline">confirmed</code> - the node will query the most recent block that has been voted on by supermajority of the cluster.</li>
<li><code class="inline">processed</code> - the node will query its most recent block. Note that the block may not be complete.</li>
</ul>
<li><code class="inline">minContextSlot</code>: <code class="inline">number</code> - (optional) set the minimum slot that the request can be evaluated at</li>
</ul>
</ul>`,
exampleParameters: `[
"J7rBdM6AecPDEZp8aPq5iPSNKVkU5Q76F3oAV4eW5wsW",
{
"commitment": "processed"
}
]`,
exampleResponse: {
jsonrpc: '2.0',
result: {
context: {
slot: 136103237
},
value: false
},
id: 1
}
},
{
name: 'getTokenAccountsByOwner',
value: 'getTokenAccountsByOwner',
parentGroup: 'Token Information',
description: 'Returns all SPL Token accounts by token owner.',
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getTokenAccountsByOwner',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">base-58 encoded string</code> - Pubkey of queried SPL token account owner</li>
<li><code class="inline">object</code> - Either:</li>
<ul>
<li><code class="inline">mint</code> - Pubkey of the specific token Mint to limit accounts to, as base-58 encoded string.</li>
<li><code class="inline">programId</code> - Pubkey of the Token program ID that owns the accounts, as base-58 encoded string.</li>
</ul>
<li><code class="inline">object</code> - (optional) Configuration object containing the following optional fields:</li>
<ul>
<li><code class="inline">commitment</code>: <code class="inline">string</code> - (optional) Configures the commitment level of the blocks queried. Accepts one of the following strings:</li>
<ul>
<li><code class="inline">finalized</code> - the node will query the most recent block confirmed by supermajority of the cluster as having reached maximum lockout, meaning the cluster has recognized this block as finalized.</li>
<li><code class="inline">confirmed</code> - the node will query the most recent block that has been voted on by supermajority of the cluster.</li>
<li><code class="inline">processed</code> - the node will query its most recent block. Note that the block may not be complete.</li>
</ul>
<li><code class="inline">encoding</code>: <code class="inline">string</code> - (optional) data encoding for each returned transaction. Accepts one of the following strings: ["json" (Default), "jsonParsed", "base58" (slow), "base64"]</li>
<li><code class="inline">minContextSlot</code>: <code class="inline">number</code> - (optional) set the minimum slot that the request can be evaluated at</li>
<li><code class="inline">dataSlice</code>: <code class="inline">object</code> - (optional) limits the returned account data using the provided <code class="inline">offset: usize</code> and <code class="inline">length: usize</code> fields; only available for "base58", "base64" or "base64+zstd" encodings.</li>
</ul>
</ul>`,
exampleParameters: `[
"J27ma1MPBRvmPJxLqBqQGNECMXDm9L6abFa4duKiPosa",
{
"mint": "2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk"
},
{
"encoding": "jsonParsed"
}
]`,
exampleResponse: {
jsonrpc: '2.0',
result: {
context: {
slot: 137568828
},
value: [
{
account: {
data: {
parsed: {
info: {
isNative: false,
mint: '2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk',
owner: 'J27ma1MPBRvmPJxLqBqQGNECMXDm9L6abFa4duKiPosa',
state: 'initialized',
tokenAmount: {
amount: '821',
decimals: 6,
uiAmount: 8.21e-4,
uiAmountString: '0.000821'
}
},
type: 'account'
},
program: 'spl-token',
space: 165
},
executable: false,
lamports: 2039280,
owner: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
rentEpoch: 318
},
pubkey: 'Exo9AH6fNchE43GaJB85FT7ToYiuKnKzYDyW5mFeTXRR'
}
]
},
id: 1
}
},
{
name: 'getTokenAccountBalance',
value: 'getTokenAccountBalance',
parentGroup: 'Token Information',
description: 'Returns the token balance of an SPL Token account.',
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getTokenAccountBalance',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">base-58 encoded string</code> - Pubkey of queried token account</li>
<li><code class="inline">object</code> - (optional) Configuration object containing the following optional fields:</li>
<ul>
<li><code class="inline">commitment</code>: <code class="inline">string</code> - (optional) Configures the commitment level of the blocks queried. Accepts one of the following strings:</li>
<ul>
<li><code class="inline">finalized</code> - the node will query the most recent block confirmed by supermajority of the cluster as having reached maximum lockout, meaning the cluster has recognized this block as finalized.</li>
<li><code class="inline">confirmed</code> - the node will query the most recent block that has been voted on by supermajority of the cluster.</li>
<li><code class="inline">processed</code> - the node will query its most recent block. Note that the block may not be complete.</li>
</ul>
</ul>
</ul>`,
exampleParameters: `[
"3Lz6rCrXdLybFiuJGJnEjv6Z2XtCh5n4proPGP2aBkA1"
]`,
exampleResponse: {
jsonrpc: '2.0',
result: {
context: {
slot: 137567036
},
value: {
amount: '301922375078',
decimals: 6,
uiAmount: 301922.375078,
uiAmountString: '301922.375078'
}
},
id: 1
}
},
{
name: 'getTokenSupply',
value: 'getTokenSupply',
parentGroup: 'Token Information',
description: 'Returns the total supply of an SPL Token type.',
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getTokenSupply',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">base-58 encoded string</code> - Pubkey of token Mint to query</li>
<li><code class="inline">object</code> - (optional) Configuration object containing the following optional fields:</li>
<ul>
<li><code class="inline">commitment</code>: <code class="inline">string</code> - (optional) Configures the commitment level of the blocks queried. Accepts one of the following strings:</li>
<ul>
<li><code class="inline">finalized</code> - the node will query the most recent block confirmed by supermajority of the cluster as having reached maximum lockout, meaning the cluster has recognized this block as finalized.</li>
<li><code class="inline">confirmed</code> - the node will query the most recent block that has been voted on by supermajority of the cluster.</li>
<li><code class="inline">processed</code> - the node will query its most recent block. Note that the block may not be complete.</li>
</ul>
</ul>
</ul>`,
exampleParameters: `[
"HfYFjMKNZygfMC8LsQ8LtpPsPxEJoXJx4M6tqi75Hajo"
]`,
exampleResponse: {
jsonrpc: '2.0',
result: {
context: {
slot: 137571639
},
value: {
amount: '999999999997060679',
decimals: 9,
uiAmount: 9.999999999970608e8,
uiAmountString: '999999999.997060679'
}
},
id: 1
}
},
{
name: 'getEpochSchedule',
value: 'getEpochSchedule',
parentGroup: 'Network Information',
description: `Returns epoch schedule information from this cluster's genesis config.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getEpochSchedule',
params: [],
id: 1
}
},
{
name: 'getEpochInfo',
value: 'getEpochInfo',
parentGroup: 'Network Information',
description: `Returns information about the current epoch.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getEpochInfo',
params: [],
id: 1
}
},
{
name: 'getFeeForMessage',
value: 'getFeeForMessage',
parentGroup: 'Network Information',
description: `Get the fee the network will charge for a particular message.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getFeeForMessage',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">base-58 encoded string</code> - encoded Message</li>
<li><code class="inline">object</code> - (optional) Configuration object containing the following optional fields:</li>
<ul>
<li><code class="inline">commitment</code>: <code class="inline">string</code> - (optional) Configures the commitment level of the blocks queried. Accepts one of the following strings:</li>
<ul>
<li><code class="inline">finalized</code> - the node will query the most recent block confirmed by supermajority of the cluster as having reached maximum lockout, meaning the cluster has recognized this block as finalized.</li>
<li><code class="inline">confirmed</code> - the node will query the most recent block that has been voted on by supermajority of the cluster.</li>
<li><code class="inline">processed</code> - the node will query its most recent block. Note that the block may not be complete.</li>
</ul>
</ul>
</ul>`,
exampleParameters: `["AQABAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQAA"]`,
exampleResponse: {
jsonrpc: '2.0',
result: {
context: {
slot: 135143215
},
value: null
},
id: 1
}
},
{
name: 'getHighestSnapshotSlot',
value: 'getHighestSnapshotSlot',
parentGroup: 'Network Information',
description: `Returns the highest slot information that the node has snapshots for.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getHighestSnapshotSlot',
params: [],
id: 1
}
},
{
name: 'getGenesisHash',
value: 'getGenesisHash',
parentGroup: 'Network Information',
description: `Returns the genesis hash.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getGenesisHash',
params: [],
id: 1
}
},
{
name: 'getRecentPerformanceSamples',
value: 'getRecentPerformanceSamples',
parentGroup: 'Network Information',
description: `Returns a list of recent performance samples, in reverse slot order. Performance samples are taken every 60 seconds and include the number of transactions and slots that occur in a given time window.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getRecentPerformanceSamples',
params: [],
id: 1
}
},
{
name: 'getFirstAvailableBlock',
value: 'getFirstAvailableBlock',
parentGroup: 'Network Information',
description: `Get the fee the network will charge for a particular message.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getFirstAvailableBlock',
params: [],
id: 1
}
},
{
name: 'getMinimumBalanceForRentExemption',
value: 'getMinimumBalanceForRentExemption',
parentGroup: 'Network Information',
description: `Returns minimum balance required to make account rent exempt.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getMinimumBalanceForRentExemption',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">usize</code> - account data length</li>
<li><code class="inline">object</code> - (optional) Configuration object containing the following optional fields:</li>
<ul>
<li><code class="inline">commitment</code>: <code class="inline">string</code> - (optional) Configures the commitment level of the blocks queried. Accepts one of the following strings:</li>
<ul>
<li><code class="inline">finalized</code> - the node will query the most recent block confirmed by supermajority of the cluster as having reached maximum lockout, meaning the cluster has recognized this block as finalized.</li>
<li><code class="inline">confirmed</code> - the node will query the most recent block that has been voted on by supermajority of the cluster.</li>
<li><code class="inline">processed</code> - the node will query its most recent block. Note that the block may not be complete.</li>
</ul>
</ul>
</ul>`,
exampleParameters: `[
50
]`,
exampleResponse: {
jsonrpc: '2.0',
result: 1238880,
id: 1
}
},
{
name: 'getClusterNodes',
value: 'getClusterNodes',
parentGroup: 'Node Information',
description: `Returns information about all the nodes participating in the cluster.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getClusterNodes',
params: [],
id: 1
}
},
{
name: 'getHealth',
value: 'getHealth',
parentGroup: 'Node Information',
description: `Returns the current health of the node.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getHealth',
params: [],
id: 1
}
},
{
name: 'getVersion',
value: 'getVersion',
parentGroup: 'Node Information',
description: `Returns the current solana versions running on the node.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getVersion',
params: [],
id: 1
}
},
{
name: 'getIdentity',
value: 'getIdentity',
parentGroup: 'Node Information',
description: `Returns the identity pubkey for the current node.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getIdentity',
params: [],
id: 1
}
},
{
name: 'getInflationGovernor',
value: 'getInflationGovernor',
parentGroup: 'Network Inflation',
description: `Returns the current inflation governor.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getInflationGovernor',
params: [],
id: 1
}
},
{
name: 'getInflationReward',
value: 'getInflationReward',
parentGroup: 'Network Inflation',
description: `Returns the inflation / staking reward for a list of addresses for an epoch.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getInflationReward',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">array of base-58 encoded strings</code> - An array of addresses to query</li>
<li><code class="inline">object</code> - (optional) Configuration object containing the following optional fields:</li>
<ul>
<li><code class="inline">commitment</code>: <code class="inline">string</code> - (optional) Configures the commitment level of the blocks queried. Accepts one of the following strings:</li>
<ul>
<li><code class="inline">finalized</code> - the node will query the most recent block confirmed by supermajority of the cluster as having reached maximum lockout, meaning the cluster has recognized this block as finalized.</li>
<li><code class="inline">confirmed</code> - the node will query the most recent block that has been voted on by supermajority of the cluster.</li>
<li><code class="inline">processed</code> - the node will query its most recent block. Note that the block may not be complete.</li>
</ul>
<li><code class="inline">epoch</code>: <code class="inline">u64</code> - (optional) An epoch for which the reward occurs. If omitted, the previous epoch will be used</li>
<li><code class="inline">minContextSlot</code>: <code class="inline">number</code> - (optional) set the minimum slot that the request can be evaluated at</li>
</ul>
</ul>`,
exampleParameters: `[
["9zyLN5CQwxWrEPit1sFy5DZ5xMqJfNQTLiqBVSfvPvWY"],
{
"commitment": "confirmed"
}
]`,
exampleResponse: {
jsonrpc: '2.0',
result: 1238880,
id: 1
}
},
{
name: 'getInflationRate',
value: 'getInflationRate',
parentGroup: 'Network Inflation',
description: `Returns the specific inflation values for the current epoch.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getInflationRate',
params: [],
id: 1
}
},
{
name: 'getSupply',
value: 'getSupply',
parentGroup: 'Network Inflation',
description: `Returns information about the current supply.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getSupply',
params: [],
id: 1
}
},
{
name: 'getBalance',
value: 'getBalance',
parentGroup: 'Account Information',
description: `Returns the balance of the account of provided Pubkey.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getBalance',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">base-58 encoded string</code> - Pubkey of account to query</li>
<li><code class="inline">object</code> - (optional) Configuration object containing the following optional fields:</li>
<ul>
<li><code class="inline">commitment</code>: <code class="inline">string</code> - (optional) Configures the commitment level of the blocks queried. Accepts one of the following strings:</li>
<ul>
<li><code class="inline">finalized</code> - the node will query the most recent block confirmed by supermajority of the cluster as having reached maximum lockout, meaning the cluster has recognized this block as finalized.</li>
<li><code class="inline">confirmed</code> - the node will query the most recent block that has been voted on by supermajority of the cluster.</li>
<li><code class="inline">processed</code> - the node will query its most recent block. Note that the block may not be complete.</li>
</ul>
<li><code class="inline">minContextSlot</code>: <code class="inline">number</code> - (optional) set the minimum slot that the request can be evaluated at</li>
</ul>
</ul>`,
exampleParameters: `[
"83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri"
]`,
exampleResponse: {
jsonrpc: '2.0',
result: { context: { slot: 1 }, value: 0 },
id: 1
}
},
{
name: 'getLargestAccounts',
value: 'getLargestAccounts',
parentGroup: 'Account Information',
description: `Returns the 20 largest accounts, by lamport balance (results may be cached up to two hours).`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getLargestAccounts',
params: [],
id: 1
}
},
{
name: 'getAccountInfo',
value: 'getAccountInfo',
parentGroup: 'Account Information',
description: `Returns all information associated with the account of provided Pubkey.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getAccountInfo',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">base-58 encoded string</code> - Pubkey of account to query</li>
<li><code class="inline">object</code> - (optional) Configuration object containing the following optional fields:</li>
<ul>
<li><code class="inline">encoding</code>: <code class="inline">string</code> - (optional) data encoding for each returned transaction. Accepts one of the following strings: ["json" (Default), "jsonParsed", "base58" (slow), "base64"]</li>
<li><code class="inline">dataSlice</code>: <code class="inline">object</code> - (optional) limits the returned account data using the provided <code class="inline">offset: usize</code> and <code class="inline">length: usize</code> fields; only available for "base58", "base64" or "base64+zstd" encodings.</li>
</ul>
</ul>`,
exampleParameters: `[
"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg",
{
"encoding": "base58"
}
]`,
exampleResponse: {
jsonrpc: '2.0',
result: {
context: {
slot: 134461197
},
value: {
data: ['', 'base58'],
executable: false,
lamports: 410431055,
owner: '11111111111111111111111111111111',
rentEpoch: 311
}
},
id: 1
}
},
{
name: 'getVoteAccounts',
value: 'getVoteAccounts',
parentGroup: 'Account Information',
description: `Returns the account info and associated stake for all the voting accounts in the current bank.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getVoteAccounts',
params: [],
id: 1
}
},
{
name: 'getMultipleAccounts',
value: 'getMultipleAccounts',
parentGroup: 'Account Information',
description: `Returns the account information for a list of Pubkeys.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getMultipleAccounts',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">array of base-58 encoded strings</code> - An array of addresses to query</li>
<li><code class="inline">object</code> - (optional) Configuration object containing the following optional fields:</li>
<ul>
<li><code class="inline">encoding</code>: <code class="inline">string</code> - (optional) data encoding for each returned transaction. Accepts one of the following strings: ["json" (Default), "jsonParsed", "base58" (slow), "base64"]</li>
<li><code class="inline">dataSlice</code>: <code class="inline">object</code> - (optional) limits the returned account data using the provided <code class="inline">offset: usize</code> and <code class="inline">length: usize</code> fields; only available for "base58", "base64" or "base64+zstd" encodings.</li>
<li><code class="inline">minContextSlot</code>: <code class="inline">number</code> - (optional) set the minimum slot that the request can be evaluated at</li>
</ul>
</ul>`,
exampleParameters: `[
[
"vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg",
"4fYNw3dojWmQ4dXtSGE9epjRGy9pFSx62YypT7avPYvA"
],
{
"dataSlice": {
"offset": 0,
"length": 0
}
}
]`,
exampleResponse: {
jsonrpc: '2.0',
result: {
context: {
slot: 136100846
},
value: [
{
data: ['', 'base64'],
executable: false,
lamports: 410426055,
owner: '11111111111111111111111111111111',
rentEpoch: 314
},
{
data: ['', 'base64'],
executable: false,
lamports: 2000000,
owner: '11111111111111111111111111111111',
rentEpoch: 314
}
]
},
id: 1
}
},
{
name: 'getProgramAccounts',
value: 'getProgramAccounts',
parentGroup: 'Account Information',
description: `Returns all accounts owned by the provided program Pubkey.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getProgramAccounts',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">base-58 encoded string</code> - Pubkey of program</li>
<li><code class="inline">object</code> - (optional) Configuration object containing the following optional fields:</li>
<ul>
<li><code class="inline">encoding</code>: <code class="inline">string</code> - (optional) data encoding for each returned transaction. Accepts one of the following strings: ["json" (Default), "jsonParsed", "base58" (slow), "base64"]</li>
<li><code class="inline">dataSlice</code>: <code class="inline">object</code> - (optional) limits the returned account data using the provided <code class="inline">offset: usize</code> and <code class="inline">length: usize</code> fields; only available for "base58", "base64" or "base64+zstd" encodings.</li>
<li><code class="inline">minContextSlot</code>: <code class="inline">number</code> - (optional) set the minimum slot that the request can be evaluated at</li>
<li><code class="inline">withContext</code>: <code class="inline">bool</code> - (optional) wrap the result in an RpcResponse JSON object.</li>
<li><code class="inline">filters</code>: <code class="inline">array</code> - (optional) filter results using various filter objects; account must meet all filter criteria to be included in results</li>
<ul>
<li><code class="inline">memcmp</code>: <code class="inline">object</code> - (optional) compares a provided series of bytes with program account data at a particular offset. Fields:</li>
<ul>
<li><code class="inline">offset</code>: <code class="inline">usize</code> - (optional) offset into program account data to start comparison</li>
<li><code class="inline">bytes</code>: <code class="inline">string</code> - (optional) data to match, as base-58 encoded string and limited to less than 129 bytes</li>
</ul>
<li><code class="inline">dataSize</code>: <code class="inline">u64</code> - (optional) compares the program account data length with the provided data size</li>
</ul>
</ul>
</ul>`,
exampleParameters: `[
"Stake11111111111111111111111111111111111111",
{
"encoding": "jsonParsed",
"commitment": "recent",
"filters": [
{
"memcmp": {
"offset": 44,
"bytes": "65qFmhCmDgXjg1duFdcpYyPheWyWGyusZhy3Y8khMoYm"
}
}
]
}
]`,
exampleResponse: {
jsonrpc: '2.0',
result: [
{
account: {
data: '2R9jLfiAQ9bgdcw6h8s44439',
executable: false,
lamports: 15298080,
owner: '4Nd1mBQtrMJVYVfKf2PJy9NZUZdTAsp7D4xWLs4gDB4T',
rentEpoch: 28
},
pubkey: 'CxELquR1gPP8wHe33gZ4QxqGB3sZ9RSwsJ2KshVewkFY'
}
],
id: 1
}
},
{
name: 'minimumLedgerSlot',
value: 'minimumLedgerSlot',
parentGroup: 'Slot Information',
description: `Returns the lowest slot that the node has information about in its ledger. This value may increase over time if the node is configured to purge older ledger data.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'minimumLedgerSlot',
params: [],
id: 1
}
},
{
name: 'getMaxShredInsertSlot',
value: 'getMaxShredInsertSlot',
parentGroup: 'Slot Information',
description: `Get the max slot seen from after shred insert`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getMaxShredInsertSlot',
params: [],
id: 1
}
},
{
name: 'getSlotLeader',
value: 'getSlotLeader',
parentGroup: 'Slot Information',
description: `Returns the current slot leader.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getSlotLeader',
params: [],
id: 1
}
},
{
name: 'getSlotLeaders',
value: 'getSlotLeaders',
parentGroup: 'Slot Information',
description: `Returns the slot leaders for a given slot range.`,
providerNetworks: {
[NETWORK_PROVIDER.ALCHEMY]: solanaOperationsNetworks
},
method: 'POST',
body: {
jsonrpc: '2.0',
method: 'getSlotLeader',
params: [],
id: 1
},
inputParameters: `
<ul>
<li><code class="inline">array</code> - array with first item as start slot, second item as limit:</li>
<ul>
<li><code class="inline">u64</code> - Star
gitextract_dr2lrn6b/ ├── .dockerignore ├── .eslintrc.js ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ └── workflows/ │ └── main.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .prettierignore ├── .prettierrc.js ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE.md ├── README.md ├── babel.config.js ├── docker/ │ ├── Dockerfile │ └── docker-compose.yml ├── package.json ├── packages/ │ ├── components/ │ │ ├── README.md │ │ ├── credentials/ │ │ │ ├── Alchemy/ │ │ │ │ └── AlchemyApi.ts │ │ │ ├── Arbiscan/ │ │ │ │ └── ArbiscanApi.ts │ │ │ ├── Binance/ │ │ │ │ └── BinanceApi.ts │ │ │ ├── Bscscan/ │ │ │ │ └── BscscanApi.ts │ │ │ ├── Celoscan/ │ │ │ │ └── CeloscanApi.ts │ │ │ ├── Cronosscan/ │ │ │ │ └── CronosscanApi.ts │ │ │ ├── EmailSend/ │ │ │ │ └── EmailSendSmtp.ts │ │ │ ├── Etherscan/ │ │ │ │ └── EtherscanApi.ts │ │ │ ├── Fantomscan/ │ │ │ │ └── FantomscanApi.ts │ │ │ ├── FootprintAnalytics/ │ │ │ │ └── FootprintAnalyticsApi.ts │ │ │ ├── GitHub/ │ │ │ │ └── GitHubApi.ts │ │ │ ├── Gnosisscan/ │ │ │ │ └── GnosisscanApi.ts │ │ │ ├── GoogleDocs/ │ │ │ │ └── GoogleDocsOAuth2.ts │ │ │ ├── GoogleSheet/ │ │ │ │ └── GoogleSheetOAuth2.ts │ │ │ ├── HTTP/ │ │ │ │ ├── HTTPBasicAuth.ts │ │ │ │ └── HTTPBearerTokenAuth.ts │ │ │ ├── Helio/ │ │ │ │ └── HelioApi.ts │ │ │ ├── Helius/ │ │ │ │ └── HeliusApi.ts │ │ │ ├── Hubspot/ │ │ │ │ └── HubspotApi.ts │ │ │ ├── HuggingFace/ │ │ │ │ └── HuggingFaceAccessToken.ts │ │ │ ├── Imap/ │ │ │ │ └── Imap.ts │ │ │ ├── Infura/ │ │ │ │ └── InfuraApi.ts │ │ │ ├── Mailchimp/ │ │ │ │ └── MailchimpApi.ts │ │ │ ├── MoonBeamScan/ │ │ │ │ └── MoonBeamScanApi.ts │ │ │ ├── MoonRiverScan/ │ │ │ │ └── MoonRiverScanApi.ts │ │ │ ├── Moralis/ │ │ │ │ └── MoralisApi.ts │ │ │ ├── Notion/ │ │ │ │ └── NotionApi.ts │ │ │ ├── OpenAI/ │ │ │ │ └── OpenAIApi.ts │ │ │ ├── Opensea/ │ │ │ │ └── OpenseaApi.ts │ │ │ ├── OptimisticEtherscan/ │ │ │ │ └── OptimisticEtherscanApi.ts │ │ │ ├── Pinata/ │ │ │ │ └── PinataApi.ts │ │ │ ├── Polygonscan/ │ │ │ │ └── PolygonscanApi.ts │ │ │ ├── QuickNode/ │ │ │ │ └── QuickNodeEndpoints.ts │ │ │ ├── RequestFinanceApi/ │ │ │ │ └── RequestFinanceApi.ts │ │ │ ├── SnowTrace/ │ │ │ │ └── SnowTraceApi.ts │ │ │ ├── Telegram/ │ │ │ │ └── TelegramApi.ts │ │ │ ├── Twitter/ │ │ │ │ └── TwitterApi.ts │ │ │ ├── Typeform/ │ │ │ │ └── TypeformApi.ts │ │ │ ├── TypeformWebhook/ │ │ │ │ └── TypeformApi.ts │ │ │ └── Xero/ │ │ │ └── XeroOAuth2.ts │ │ ├── gulpfile.ts │ │ ├── nodes/ │ │ │ ├── Alchemy/ │ │ │ │ ├── Alchemy.ts │ │ │ │ ├── AlchemyTrigger.ts │ │ │ │ ├── AlchemyWebhook.ts │ │ │ │ ├── extendedOperation.ts │ │ │ │ ├── solanaOperation.ts │ │ │ │ ├── subscribeOperation.ts │ │ │ │ └── supportedNetwork.ts │ │ │ ├── Arbiscan/ │ │ │ │ ├── Arbiscan.ts │ │ │ │ └── constants.ts │ │ │ ├── BEP20Function/ │ │ │ │ ├── BEP20Function.ts │ │ │ │ └── helperFunctions.ts │ │ │ ├── BEP20Transfer/ │ │ │ │ └── BEP20Transfer.ts │ │ │ ├── BEP20TransferTrigger/ │ │ │ │ └── BEP20TransferTrigger.ts │ │ │ ├── BNBBalanceTrigger/ │ │ │ │ └── BNBBalanceTrigger.ts │ │ │ ├── BNBTransfer/ │ │ │ │ └── BNBTransfer.ts │ │ │ ├── Binance/ │ │ │ │ ├── BinancePrivate.ts │ │ │ │ └── BinancePublic.ts │ │ │ ├── BlockchainEvent/ │ │ │ │ └── BlockchainEvent.ts │ │ │ ├── BscScan/ │ │ │ │ ├── Bscscan.ts │ │ │ │ └── constants.ts │ │ │ ├── ChainLink/ │ │ │ │ ├── ChainLink.ts │ │ │ │ ├── ChainLinkFunctionWebhook.ts │ │ │ │ └── supportedNetwork.ts │ │ │ ├── ContractEventTrigger/ │ │ │ │ └── ContractEventTrigger.ts │ │ │ ├── ContractFunctionTrigger/ │ │ │ │ └── ContractFunctionTrigger.ts │ │ │ ├── CreateERC20Token/ │ │ │ │ └── CreateERC20Token.ts │ │ │ ├── CreateNFT/ │ │ │ │ └── CreateNFT.ts │ │ │ ├── Discord/ │ │ │ │ └── Discord.ts │ │ │ ├── ERC20Function/ │ │ │ │ ├── ERC20Function.ts │ │ │ │ └── helperFunctions.ts │ │ │ ├── ERC20Transfer/ │ │ │ │ └── ERC20Transfer.ts │ │ │ ├── ERC20TransferTrigger/ │ │ │ │ └── ERC20TransferTrigger.ts │ │ │ ├── ETHBalanceTrigger/ │ │ │ │ └── ETHBalanceTrigger.ts │ │ │ ├── ETHTransfer/ │ │ │ │ └── ETHTransfer.ts │ │ │ ├── EmailSend/ │ │ │ │ └── EmailSend.ts │ │ │ ├── EmailTrigger/ │ │ │ │ └── EmailTrigger.ts │ │ │ ├── Etherscan/ │ │ │ │ ├── Etherscan.ts │ │ │ │ └── constants.ts │ │ │ ├── ExecuteContractFunction/ │ │ │ │ └── ExecuteContractFunction.ts │ │ │ ├── FlowBalanceTrigger/ │ │ │ │ └── FlowBalanceTrigger.ts │ │ │ ├── FootprintAnalytics/ │ │ │ │ ├── FootprintAnalytics.ts │ │ │ │ └── constants.ts │ │ │ ├── GitHub/ │ │ │ │ ├── GitHub.ts │ │ │ │ └── GitHubWebhook.ts │ │ │ ├── GoogleDocs/ │ │ │ │ └── GoogleDocs.ts │ │ │ ├── GoogleSheet/ │ │ │ │ └── GoogleSheet.ts │ │ │ ├── GraphQL/ │ │ │ │ └── GraphQL.ts │ │ │ ├── HTTP/ │ │ │ │ └── HTTP.ts │ │ │ ├── Helio/ │ │ │ │ ├── Helio.ts │ │ │ │ └── HelioWebhook.ts │ │ │ ├── Helius/ │ │ │ │ └── Helius.ts │ │ │ ├── Hubspot/ │ │ │ │ └── Hubspot.ts │ │ │ ├── HuggingFace/ │ │ │ │ └── HuggingFace.ts │ │ │ ├── IfElse/ │ │ │ │ └── IfElse.ts │ │ │ ├── ImageEditor/ │ │ │ │ └── ImageEditor.ts │ │ │ ├── Infura/ │ │ │ │ ├── Infura.ts │ │ │ │ ├── InfuraTrigger.ts │ │ │ │ ├── extendedOperation.ts │ │ │ │ └── subscribeOperation.ts │ │ │ ├── MATICBalanceTrigger/ │ │ │ │ └── MATICBalanceTrigger.ts │ │ │ ├── MATICTransfer/ │ │ │ │ └── MATICTransfer.ts │ │ │ ├── Mailchimp/ │ │ │ │ └── Mailchimp.ts │ │ │ ├── Moralis/ │ │ │ │ ├── Moralis.ts │ │ │ │ ├── extendedDeFiOperation.ts │ │ │ │ ├── extendedEVMOperation.ts │ │ │ │ ├── extendedNFTOperation.ts │ │ │ │ └── supportedNetwork.ts │ │ │ ├── NFTMintTrigger/ │ │ │ │ └── NFTMintTrigger.ts │ │ │ ├── NFTTransferTrigger/ │ │ │ │ └── NFTTransferTrigger.ts │ │ │ ├── NodeJS/ │ │ │ │ └── NodeJS.ts │ │ │ ├── Notion/ │ │ │ │ └── Notion.ts │ │ │ ├── OpenAI/ │ │ │ │ └── OpenAI.ts │ │ │ ├── Opensea/ │ │ │ │ ├── Opensea.ts │ │ │ │ ├── OpenseaEventTrigger.ts │ │ │ │ └── extendedParameters.ts │ │ │ ├── OptimismScan/ │ │ │ │ ├── OptimismScan.ts │ │ │ │ └── constants.ts │ │ │ ├── PancakeSwap/ │ │ │ │ ├── PancakeSwap.ts │ │ │ │ ├── abis/ │ │ │ │ │ └── WBNB.json │ │ │ │ └── extendedTokens.ts │ │ │ ├── Pinata/ │ │ │ │ └── Pinata.ts │ │ │ ├── PolygonScan/ │ │ │ │ ├── PolygonScan.ts │ │ │ │ └── constants.ts │ │ │ ├── QuickNode/ │ │ │ │ ├── QuickNode.ts │ │ │ │ ├── QuickNodeTrigger.ts │ │ │ │ ├── extendedOperation.ts │ │ │ │ ├── solanaOperation.ts │ │ │ │ ├── subscribeOperation.ts │ │ │ │ └── supportedNetwork.ts │ │ │ ├── RequestFinance/ │ │ │ │ ├── RequestFinance.ts │ │ │ │ ├── RequestFinanceTrigger.ts │ │ │ │ └── constants.ts │ │ │ ├── Scheduler/ │ │ │ │ └── Scheduler.ts │ │ │ ├── Slack/ │ │ │ │ └── Slack.ts │ │ │ ├── SnowTrace/ │ │ │ │ └── SnowTrace.ts │ │ │ ├── Solidity/ │ │ │ │ └── Solidity.ts │ │ │ ├── Solscan/ │ │ │ │ ├── Solscan.ts │ │ │ │ └── constants.ts │ │ │ ├── Teams/ │ │ │ │ └── Teams.ts │ │ │ ├── Telegram/ │ │ │ │ └── Telegram.ts │ │ │ ├── ThirdWeb/ │ │ │ │ ├── ThirdWeb.ts │ │ │ │ ├── ThirdWebTrigger.ts │ │ │ │ ├── constants.ts │ │ │ │ └── supportedNetwork.ts │ │ │ ├── Twitter/ │ │ │ │ └── Twitter.ts │ │ │ ├── Typeform/ │ │ │ │ └── Typeform.ts │ │ │ ├── TypeformWebhook/ │ │ │ │ └── TypeformWebhook.ts │ │ │ ├── Uniswap/ │ │ │ │ ├── Uniswap.ts │ │ │ │ └── nativeTokens.ts │ │ │ ├── Wait/ │ │ │ │ └── Wait.ts │ │ │ ├── Webhook/ │ │ │ │ └── Webhook.ts │ │ │ └── Xero/ │ │ │ └── xero.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ChainNetwork.ts │ │ │ ├── ETHOperations.ts │ │ │ ├── Interface.ts │ │ │ ├── abis/ │ │ │ │ ├── WBNB.json │ │ │ │ └── WETH.json │ │ │ ├── index.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── server/ │ │ ├── README.md │ │ ├── babel.config.js │ │ ├── bin/ │ │ │ ├── dev │ │ │ ├── dev.cmd │ │ │ ├── run │ │ │ └── run.cmd │ │ ├── nodemon.json │ │ ├── oauth2.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── ActiveTestTriggerPool.ts │ │ │ ├── ActiveTestWebhookPool.ts │ │ │ ├── ChildProcess.ts │ │ │ ├── CredentialsPool.ts │ │ │ ├── DataSource.ts │ │ │ ├── DeployedWorkflowPool.ts │ │ │ ├── Interface.ts │ │ │ ├── NodesPool.ts │ │ │ ├── commands/ │ │ │ │ └── start.ts │ │ │ ├── entity/ │ │ │ │ ├── Contract.ts │ │ │ │ ├── Credential.ts │ │ │ │ ├── Execution.ts │ │ │ │ ├── Wallet.ts │ │ │ │ ├── Webhook.ts │ │ │ │ └── Workflow.ts │ │ │ ├── index.ts │ │ │ └── utils/ │ │ │ └── index.ts │ │ └── tsconfig.json │ └── ui/ │ ├── .npmignore │ ├── README.md │ ├── jsconfig.json │ ├── package.json │ ├── public/ │ │ └── index.html │ └── src/ │ ├── App.js │ ├── api/ │ │ ├── apikey.js │ │ ├── client.js │ │ ├── contracts.js │ │ ├── credential.js │ │ ├── executions.js │ │ ├── nodes.js │ │ ├── oauth2.js │ │ ├── wallets.js │ │ ├── webhooks.js │ │ └── workflows.js │ ├── assets/ │ │ └── scss/ │ │ ├── _themes-vars.module.scss │ │ └── style.scss │ ├── config.js │ ├── hooks/ │ │ ├── useApi.js │ │ ├── useConfirm.js │ │ └── useScriptRef.js │ ├── index.js │ ├── layout/ │ │ ├── MainLayout/ │ │ │ ├── Header/ │ │ │ │ └── index.js │ │ │ ├── LogoSection/ │ │ │ │ └── index.js │ │ │ ├── Sidebar/ │ │ │ │ ├── MenuList/ │ │ │ │ │ ├── NavCollapse/ │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── NavGroup/ │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── NavItem/ │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ └── index.js │ │ │ └── index.js │ │ ├── MinimalLayout/ │ │ │ └── index.js │ │ ├── NavMotion.js │ │ └── NavigationScroll.js │ ├── menu-items/ │ │ ├── dashboard.js │ │ ├── index.js │ │ └── settings.js │ ├── routes/ │ │ ├── CanvasRoutes.js │ │ ├── MainRoutes.js │ │ └── index.js │ ├── serviceWorker.js │ ├── store/ │ │ ├── actions.js │ │ ├── constant.js │ │ ├── context/ │ │ │ ├── ConfirmContext.js │ │ │ └── ConfirmContextProvider.js │ │ ├── index.js │ │ ├── reducer.js │ │ └── reducers/ │ │ ├── canvasReducer.js │ │ ├── customizationReducer.js │ │ ├── dialogReducer.js │ │ └── notifierReducer.js │ ├── themes/ │ │ ├── compStyleOverride.js │ │ ├── index.js │ │ ├── palette.js │ │ └── typography.js │ ├── ui-component/ │ │ ├── Loadable.js │ │ ├── Loader.js │ │ ├── Logo.js │ │ ├── StyledButton.js │ │ ├── StyledFab.js │ │ ├── TooltipWithParser.js │ │ ├── cards/ │ │ │ ├── ItemCard.js │ │ │ ├── MainCard.js │ │ │ └── Skeleton/ │ │ │ └── WorkflowCard.js │ │ ├── dialog/ │ │ │ ├── AttachmentDialog.js │ │ │ ├── ConfirmDialog.js │ │ │ ├── EditVariableDialog.css │ │ │ ├── EditVariableDialog.js │ │ │ ├── ExpandDataDialog.js │ │ │ ├── HTMLDialog.js │ │ │ ├── SaveWorkflowDialog.js │ │ │ └── TestWorkflowDialog.js │ │ ├── editor/ │ │ │ ├── DarkCodeEditor.js │ │ │ ├── LightCodeEditor.js │ │ │ ├── prism-dark.css │ │ │ └── prism-light.css │ │ └── extended/ │ │ ├── AnimateButton.js │ │ ├── Avatar.js │ │ ├── Breadcrumbs.js │ │ └── Transitions.js │ ├── utils/ │ │ ├── genericHelper.js │ │ ├── useNotifier.js │ │ └── usePrompt.js │ └── views/ │ ├── apikey/ │ │ ├── APIKeyDialog.js │ │ └── index.js │ ├── canvas/ │ │ ├── AddNodes.js │ │ ├── ButtonEdge.js │ │ ├── CanvasHeader.js │ │ ├── CanvasNode.js │ │ ├── EditNodes.js │ │ ├── VariableSelector.js │ │ ├── index.css │ │ └── index.js │ ├── contracts/ │ │ ├── ContractDialog.js │ │ └── index.js │ ├── executions/ │ │ └── index.js │ ├── inputs/ │ │ ├── ArrayInputParameters.js │ │ ├── AsyncSelectWrapper.js │ │ ├── CredentialInput.js │ │ ├── InputParameters.css │ │ ├── InputParameters.js │ │ ├── OptionParamsResponse.css │ │ └── OptionParamsResponse.js │ ├── output/ │ │ └── OutputResponses.js │ ├── settings/ │ │ └── index.js │ ├── wallets/ │ │ ├── WalletDialog.js │ │ └── index.js │ └── workflows/ │ └── index.js └── turbo.json
SYMBOL INDEX (763 symbols across 169 files)
FILE: packages/components/credentials/Alchemy/AlchemyApi.ts
class AlchemyApi (line 3) | class AlchemyApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Arbiscan/ArbiscanApi.ts
class ArbiscanApi (line 3) | class ArbiscanApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Binance/BinanceApi.ts
class BinanceApi (line 3) | class BinanceApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Bscscan/BscscanApi.ts
class BscscanApi (line 3) | class BscscanApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Celoscan/CeloscanApi.ts
class CeloscanApi (line 3) | class CeloscanApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Cronosscan/CronosscanApi.ts
class CronosscanApi (line 3) | class CronosscanApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/EmailSend/EmailSendSmtp.ts
class EmailSendSmtp (line 3) | class EmailSendSmtp implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Etherscan/EtherscanApi.ts
class EtherscanApi (line 3) | class EtherscanApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Fantomscan/FantomscanApi.ts
class FantomscanApi (line 3) | class FantomscanApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/FootprintAnalytics/FootprintAnalyticsApi.ts
class FootprintAnalyticsApi (line 3) | class FootprintAnalyticsApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/GitHub/GitHubApi.ts
class GitHubApi (line 3) | class GitHubApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Gnosisscan/GnosisscanApi.ts
class GnosisscanApi (line 3) | class GnosisscanApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/GoogleDocs/GoogleDocsOAuth2.ts
class GoogleDocsOAuth2 (line 3) | class GoogleDocsOAuth2 implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/GoogleSheet/GoogleSheetOAuth2.ts
class GoogleSheetOAuth2 (line 3) | class GoogleSheetOAuth2 implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/HTTP/HTTPBasicAuth.ts
class HTTPBasicAuth (line 3) | class HTTPBasicAuth implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/HTTP/HTTPBearerTokenAuth.ts
class HTTPBearerTokenAuth (line 3) | class HTTPBearerTokenAuth implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Helio/HelioApi.ts
class HelioApi (line 3) | class HelioApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Helius/HeliusApi.ts
class HeliusApi (line 3) | class HeliusApi implements INodeCredential {
method constructor (line 7) | constructor() {
FILE: packages/components/credentials/Hubspot/HubspotApi.ts
class HubspotApi (line 3) | class HubspotApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/HuggingFace/HuggingFaceAccessToken.ts
class HuggingFaceAccessToken (line 3) | class HuggingFaceAccessToken implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Imap/Imap.ts
class Imap (line 3) | class Imap implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Infura/InfuraApi.ts
class InfuraApi (line 3) | class InfuraApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Mailchimp/MailchimpApi.ts
class MailchimpApi (line 2) | class MailchimpApi implements INodeCredential {
method constructor (line 6) | constructor() {
FILE: packages/components/credentials/MoonBeamScan/MoonBeamScanApi.ts
class MoonBeamScanApi (line 3) | class MoonBeamScanApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/MoonRiverScan/MoonRiverScanApi.ts
class MoonRiverScanApi (line 3) | class MoonRiverScanApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Moralis/MoralisApi.ts
class MoralisApi (line 3) | class MoralisApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Notion/NotionApi.ts
class NotionApi (line 3) | class NotionApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/OpenAI/OpenAIApi.ts
class OpenAIApi (line 3) | class OpenAIApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Opensea/OpenseaApi.ts
class OpenseaApi (line 3) | class OpenseaApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/OptimisticEtherscan/OptimisticEtherscanApi.ts
class OptimisticEtherscanApi (line 3) | class OptimisticEtherscanApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Pinata/PinataApi.ts
class PinataApi (line 3) | class PinataApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Polygonscan/PolygonscanApi.ts
class PolygonscanApi (line 3) | class PolygonscanApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/QuickNode/QuickNodeEndpoints.ts
class QuickNodeEndpoints (line 3) | class QuickNodeEndpoints implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/RequestFinanceApi/RequestFinanceApi.ts
class RequestFinanceApi (line 3) | class RequestFinanceApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/SnowTrace/SnowTraceApi.ts
class SnowTraceApi (line 3) | class SnowTraceApi implements INodeCredential {
method constructor (line 7) | constructor() {
FILE: packages/components/credentials/Telegram/TelegramApi.ts
class TelegramApi (line 3) | class TelegramApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Twitter/TwitterApi.ts
class TwitterApi (line 3) | class TwitterApi implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/credentials/Typeform/TypeformApi.ts
class TypeformApi (line 2) | class TypeformApi implements INodeCredential {
method constructor (line 6) | constructor() {
FILE: packages/components/credentials/TypeformWebhook/TypeformApi.ts
class TypeformApi (line 2) | class TypeformApi implements INodeCredential {
method constructor (line 6) | constructor() {
FILE: packages/components/credentials/Xero/XeroOAuth2.ts
class XeroOAuth2 (line 3) | class XeroOAuth2 implements INodeCredential {
method constructor (line 8) | constructor() {
FILE: packages/components/gulpfile.ts
function copyIcons (line 5) | function copyIcons() {
FILE: packages/components/nodes/Alchemy/Alchemy.ts
class Alchemy (line 28) | class Alchemy implements INode {
method constructor (line 42) | constructor() {
method getOperations (line 260) | async getOperations(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method run (line 309) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Alchemy/AlchemyTrigger.ts
class AlchemyTrigger (line 17) | class AlchemyTrigger extends EventEmitter implements INode {
method constructor (line 32) | constructor() {
method getSubscribeOperations (line 94) | async getSubscribeOperations(nodeData: INodeData): Promise<INodeOption...
method getUnsubscribeOperations (line 124) | async getUnsubscribeOperations(nodeData: INodeData): Promise<INodeOpti...
method runTrigger (line 155) | async runTrigger(nodeData: INodeData): Promise<void> {
method removeTrigger (line 219) | async removeTrigger(nodeData: INodeData): Promise<void> {
FILE: packages/components/nodes/Alchemy/AlchemyWebhook.ts
class AlchemyWebhook (line 6) | class AlchemyWebhook implements INode {
method constructor (line 21) | constructor() {
method createWebhook (line 139) | async createWebhook(nodeData: INodeData, webhookFullUrl: string): Prom...
method deleteWebhook (line 218) | async deleteWebhook(nodeData: INodeData, webhookId: string): Promise<b...
method runWebhook (line 242) | async runWebhook(nodeData: INodeData): Promise<IWebhookNodeExecutionDa...
FILE: packages/components/nodes/Arbiscan/Arbiscan.ts
class Arbiscan (line 23) | class Arbiscan implements INode {
method constructor (line 38) | constructor() {
method getNetwork (line 269) | getNetwork(network: NETWORK): string {
method getBaseParams (line 273) | getBaseParams(api: string) {
method getISODate (line 278) | getISODate(date: Date) {
method run (line 282) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Arbiscan/constants.ts
constant GET_ETHER_BALANCE (line 2) | const GET_ETHER_BALANCE = {
constant GET_MULTI_ETHER_BALANCE (line 8) | const GET_MULTI_ETHER_BALANCE = {
constant GET_NORMAL_TRANSACTIONS (line 14) | const GET_NORMAL_TRANSACTIONS = {
constant GET_INTERNAL_TRANSACTIONS (line 20) | const GET_INTERNAL_TRANSACTIONS = {
constant GET_INTERNAL_TRANSACTIONS_BY_HASH (line 26) | const GET_INTERNAL_TRANSACTIONS_BY_HASH = {
constant GET_INTERNAL_TRANSACTIONS_BY_BLOCK (line 32) | const GET_INTERNAL_TRANSACTIONS_BY_BLOCK = {
constant GET_ABI (line 39) | const GET_ABI = {
constant GET_CONTRACT_SOURCE_CODE (line 45) | const GET_CONTRACT_SOURCE_CODE = {
constant CHECK_CONTRACT_EXECUTION_STATUS (line 52) | const CHECK_CONTRACT_EXECUTION_STATUS = {
constant CHECK_TRANSACTION_RECEIPT_STATUS (line 58) | const CHECK_TRANSACTION_RECEIPT_STATUS = {
constant GET_ERC20_TOKEN_SUPPLY (line 65) | const GET_ERC20_TOKEN_SUPPLY = {
constant GET_ERC20_TOKEN_BALANCE (line 71) | const GET_ERC20_TOKEN_BALANCE = {
constant GET_ETHER_PRICE (line 78) | const GET_ETHER_PRICE = {
constant GET_ETHER_SUPPLY (line 83) | const GET_ETHER_SUPPLY = {
constant OPERATIONS (line 89) | const OPERATIONS = [
constant SORT_BY (line 110) | const SORT_BY = [
FILE: packages/components/nodes/BEP20Function/BEP20Function.ts
class BEP20Function (line 38) | class BEP20Function implements INode {
method constructor (line 53) | constructor() {
method getWallets (line 166) | async getWallets(nodeData: INodeData, dbCollection?: IDbCollection): P...
method getNetworkProviders (line 192) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method getTokens (line 202) | async getTokens(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method run (line 244) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/BEP20Transfer/BEP20Transfer.ts
class BEP20Transfer (line 19) | class BEP20Transfer implements INode {
method constructor (line 33) | constructor() {
method getWallets (line 144) | async getWallets(nodeData: INodeData, dbCollection?: IDbCollection): P...
method getNetworkProviders (line 170) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method getTokens (line 180) | async getTokens(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method run (line 222) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/BEP20TransferTrigger/BEP20TransferTrigger.ts
class BEP20TransferTrigger (line 19) | class BEP20TransferTrigger extends EventEmitter implements INode {
method constructor (line 34) | constructor() {
method getTokens (line 144) | async getTokens(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method runTrigger (line 193) | async runTrigger(nodeData: INodeData): Promise<void> {
method removeTrigger (line 270) | async removeTrigger(nodeData: INodeData): Promise<void> {
FILE: packages/components/nodes/BNBBalanceTrigger/BNBBalanceTrigger.ts
class BNBBalanceTrigger (line 16) | class BNBBalanceTrigger extends EventEmitter implements INode {
method constructor (line 31) | constructor() {
method runTrigger (line 132) | async runTrigger(nodeData: INodeData): Promise<void> {
method removeTrigger (line 222) | async removeTrigger(nodeData: INodeData): Promise<void> {
FILE: packages/components/nodes/BNBTransfer/BNBTransfer.ts
class BNBTransfer (line 14) | class BNBTransfer implements INode {
method constructor (line 28) | constructor() {
method getWallets (line 123) | async getWallets(nodeData: INodeData, dbCollection?: IDbCollection): P...
method getNetworkProviders (line 149) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method run (line 160) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Binance/BinancePrivate.ts
class BinancePrivate (line 7) | class BinancePrivate implements INode {
method constructor (line 21) | constructor() {
method getSupportedSymbols (line 418) | async getSupportedSymbols(nodeData: INodeData): Promise<INodeOptionsVa...
method run (line 451) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Binance/BinancePublic.ts
class BinancePublic (line 5) | class BinancePublic implements INode {
method constructor (line 18) | constructor() {
method getSupportedSymbols (line 239) | async getSupportedSymbols(nodeData: INodeData): Promise<INodeOptionsVa...
method run (line 272) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/BlockchainEvent/BlockchainEvent.ts
class BlockchainEvent (line 28) | class BlockchainEvent extends EventEmitter implements INode {
method constructor (line 43) | constructor() {
method getNetworkProviders (line 139) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method runTrigger (line 162) | async runTrigger(nodeData: INodeData): Promise<void> {
method removeTrigger (line 201) | async removeTrigger(nodeData: INodeData): Promise<void> {
FILE: packages/components/nodes/BscScan/Bscscan.ts
class Bscscan (line 28) | class Bscscan implements INode {
method constructor (line 43) | constructor() {
method getNetwork (line 359) | getNetwork(network: NETWORK): string {
method getBaseParams (line 363) | getBaseParams(api: string) {
method getISODate (line 368) | getISODate(date: Date) {
method run (line 372) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/BscScan/constants.ts
constant GET_BNB_BALANCE (line 2) | const GET_BNB_BALANCE = {
constant GET_MULTI_BNB_BALANCE (line 8) | const GET_MULTI_BNB_BALANCE = {
constant GET_HISTORICAL_BNB_BALANCE (line 14) | const GET_HISTORICAL_BNB_BALANCE = {
constant GET_NORMAL_TRANSACTIONS (line 20) | const GET_NORMAL_TRANSACTIONS = {
constant GET_INTERNAL_TRANSACTIONS (line 26) | const GET_INTERNAL_TRANSACTIONS = {
constant GET_INTERNAL_TRANSACTIONS_BY_HASH (line 32) | const GET_INTERNAL_TRANSACTIONS_BY_HASH = {
constant GET_INTERNAL_TRANSACTIONS_BY_BLOCK (line 38) | const GET_INTERNAL_TRANSACTIONS_BY_BLOCK = {
constant GET_BLOCKS_VALIDATED (line 44) | const GET_BLOCKS_VALIDATED = {
constant GET_ABI (line 51) | const GET_ABI = {
constant GET_CONTRACT_SOURCE_CODE (line 57) | const GET_CONTRACT_SOURCE_CODE = {
constant GET_CONTRACT_CREATION (line 62) | const GET_CONTRACT_CREATION = {
constant CHECK_TRANSACTION_RECEIPT_STATUS (line 69) | const CHECK_TRANSACTION_RECEIPT_STATUS = {
constant GET_BEP20_CIRCULATION_TOKEN_SUPPLY (line 76) | const GET_BEP20_CIRCULATION_TOKEN_SUPPLY = {
constant GET_BEP20_TOKEN_SUPPLY (line 81) | const GET_BEP20_TOKEN_SUPPLY = {
constant GET_BEP20_TOKEN_BALANCE (line 87) | const GET_BEP20_TOKEN_BALANCE = {
constant GET_HISTORICAL_BEP20_TOKEN_SUPPLY (line 93) | const GET_HISTORICAL_BEP20_TOKEN_SUPPLY = {
constant GET_HISTORICAL_BEP20_TOKEN_BALANCE (line 99) | const GET_HISTORICAL_BEP20_TOKEN_BALANCE = {
constant GET_TOKEN_INFO (line 105) | const GET_TOKEN_INFO = {
constant GET_BNB_SUPPLY (line 112) | const GET_BNB_SUPPLY = {
constant GET_BNB_PRICE (line 118) | const GET_BNB_PRICE = {
constant GET_HISTORICAL_BNB_PRICE (line 124) | const GET_HISTORICAL_BNB_PRICE = {
constant OPERATIONS (line 130) | const OPERATIONS = [
constant SORT_BY (line 154) | const SORT_BY = [
FILE: packages/components/nodes/ChainLink/ChainLink.ts
class ChainLink (line 8) | class ChainLink implements INode {
method constructor (line 23) | constructor() {
method getNetworkProviders (line 123) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method getPairAddress (line 133) | async getPairAddress(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method getNftCollection (line 142) | async getNftCollection(nodeData: INodeData): Promise<INodeOptionsValue...
method getReserveAddress (line 151) | async getReserveAddress(nodeData: INodeData): Promise<INodeOptionsValu...
method run (line 161) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/ChainLink/ChainLinkFunctionWebhook.ts
class ChainLinkFunctionWebhook (line 13) | class ChainLinkFunctionWebhook implements INode {
method constructor (line 25) | constructor() {
method getAPIKeys (line 86) | async getAPIKeys(nodeData: INodeData, dbCollection?: IDbCollection, ap...
method runWebhook (line 104) | async runWebhook(nodeData: INodeData): Promise<IWebhookNodeExecutionDa...
FILE: packages/components/nodes/ChainLink/supportedNetwork.ts
type IChainLinkNetworkMapping (line 4) | type IChainLinkNetworkMapping = {
FILE: packages/components/nodes/ContractEventTrigger/ContractEventTrigger.ts
class ContractEventTrigger (line 14) | class ContractEventTrigger extends EventEmitter implements INode {
method constructor (line 29) | constructor() {
method getContracts (line 86) | async getContracts(nodeData: INodeData, dbCollection?: IDbCollection):...
method getEvents (line 108) | async getEvents(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method getNetworkProviders (line 157) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method runTrigger (line 181) | async runTrigger(nodeData: INodeData): Promise<void> {
method removeTrigger (line 233) | async removeTrigger(nodeData: INodeData): Promise<void> {
FILE: packages/components/nodes/ContractFunctionTrigger/ContractFunctionTrigger.ts
class ContractFunctionTrigger (line 8) | class ContractFunctionTrigger extends EventEmitter implements INode {
method constructor (line 23) | constructor() {
method getContracts (line 116) | async getContracts(nodeData: INodeData, dbCollection?: IDbCollection):...
method getViewFunctions (line 138) | async getViewFunctions(nodeData: INodeData): Promise<INodeOptionsValue...
method getNetworkProviders (line 191) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method runTrigger (line 215) | async runTrigger(nodeData: INodeData): Promise<void> {
method removeTrigger (line 307) | async removeTrigger(nodeData: INodeData): Promise<void> {
FILE: packages/components/nodes/CreateERC20Token/CreateERC20Token.ts
function findImports (line 32) | function findImports(_path: string) {
class CreateERC20Token (line 38) | class CreateERC20Token implements INode {
method constructor (line 53) | constructor() {
method getWallets (line 164) | async getWallets(nodeData: INodeData, dbCollection?: IDbCollection): P...
method getNetworkProviders (line 195) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method run (line 206) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/CreateNFT/CreateNFT.ts
function findImports (line 33) | function findImports(_path: string) {
class CreateNFT (line 39) | class CreateNFT implements INode {
method constructor (line 54) | constructor() {
method getWallets (line 199) | async getWallets(nodeData: INodeData, dbCollection?: IDbCollection): P...
method getNetworkProviders (line 230) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method run (line 241) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Discord/Discord.ts
type IDiscordWebhook (line 5) | interface IDiscordWebhook {
class Discord (line 12) | class Discord implements INode {
method constructor (line 24) | constructor() {
method run (line 76) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/ERC20Function/ERC20Function.ts
class ERC20Function (line 41) | class ERC20Function implements INode {
method constructor (line 56) | constructor() {
method getWallets (line 169) | async getWallets(nodeData: INodeData, dbCollection?: IDbCollection): P...
method getNetworkProviders (line 195) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method getTokens (line 205) | async getTokens(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method run (line 247) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/ERC20Transfer/ERC20Transfer.ts
class ERC20Transfer (line 22) | class ERC20Transfer implements INode {
method constructor (line 36) | constructor() {
method getWallets (line 147) | async getWallets(nodeData: INodeData, dbCollection?: IDbCollection): P...
method getNetworkProviders (line 173) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method getTokens (line 183) | async getTokens(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method run (line 225) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/ERC20TransferTrigger/ERC20TransferTrigger.ts
class ERC20TransferTrigger (line 23) | class ERC20TransferTrigger extends EventEmitter implements INode {
method constructor (line 38) | constructor() {
method getNetworkProviders (line 147) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method getTokens (line 157) | async getTokens(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method runTrigger (line 206) | async runTrigger(nodeData: INodeData): Promise<void> {
method removeTrigger (line 280) | async removeTrigger(nodeData: INodeData): Promise<void> {
FILE: packages/components/nodes/ETHBalanceTrigger/ETHBalanceTrigger.ts
class ETHBalanceTrigger (line 18) | class ETHBalanceTrigger extends EventEmitter implements INode {
method constructor (line 33) | constructor() {
method getNetworkProviders (line 134) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method runTrigger (line 145) | async runTrigger(nodeData: INodeData): Promise<void> {
method removeTrigger (line 234) | async removeTrigger(nodeData: INodeData): Promise<void> {
FILE: packages/components/nodes/ETHTransfer/ETHTransfer.ts
class ETHTransfer (line 16) | class ETHTransfer implements INode {
method constructor (line 30) | constructor() {
method getWallets (line 125) | async getWallets(nodeData: INodeData, dbCollection?: IDbCollection): P...
method getNetworkProviders (line 151) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method run (line 162) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/EmailSend/EmailSend.ts
class EmailSend (line 6) | class EmailSend implements INode {
method constructor (line 19) | constructor() {
method run (line 103) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/EmailTrigger/EmailTrigger.ts
class EmailTrigger (line 8) | class EmailTrigger extends EventEmitter implements INode {
method constructor (line 21) | constructor() {
method runTrigger (line 49) | async runTrigger(nodeData: INodeData): Promise<void> {
method removeTrigger (line 147) | async removeTrigger(nodeData: INodeData): Promise<void> {
FILE: packages/components/nodes/Etherscan/Etherscan.ts
class Etherscan (line 27) | class Etherscan implements INode {
method constructor (line 42) | constructor() {
method getNetwork (line 351) | getNetwork(network: NETWORK): string {
method getBaseParams (line 355) | getBaseParams(api: string) {
method getISODate (line 360) | getISODate(date: Date) {
method run (line 364) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Etherscan/constants.ts
constant GET_ETHER_BALANCE (line 2) | const GET_ETHER_BALANCE = {
constant GET_MULTI_ETHER_BALANCE (line 8) | const GET_MULTI_ETHER_BALANCE = {
constant GET_HISTORICAL_ETHER_BALANCE (line 14) | const GET_HISTORICAL_ETHER_BALANCE = {
constant GET_NORMAL_TRANSACTIONS (line 20) | const GET_NORMAL_TRANSACTIONS = {
constant GET_INTERNAL_TRANSACTIONS (line 26) | const GET_INTERNAL_TRANSACTIONS = {
constant GET_INTERNAL_TRANSACTIONS_BY_HASH (line 32) | const GET_INTERNAL_TRANSACTIONS_BY_HASH = {
constant GET_INTERNAL_TRANSACTIONS_BY_BLOCK (line 38) | const GET_INTERNAL_TRANSACTIONS_BY_BLOCK = {
constant GET_BLOCKS_VALIDATED (line 44) | const GET_BLOCKS_VALIDATED = {
constant GET_ABI (line 51) | const GET_ABI = {
constant GET_CONTRACT_SOURCE_CODE (line 57) | const GET_CONTRACT_SOURCE_CODE = {
constant CHECK_TRANSACTION_RECEIPT_STATUS (line 64) | const CHECK_TRANSACTION_RECEIPT_STATUS = {
constant GET_ERC20_TOKEN_SUPPLY (line 71) | const GET_ERC20_TOKEN_SUPPLY = {
constant GET_ERC20_TOKEN_BALANCE (line 77) | const GET_ERC20_TOKEN_BALANCE = {
constant GET_HISTORICAL_ERC20_TOKEN_SUPPLY (line 83) | const GET_HISTORICAL_ERC20_TOKEN_SUPPLY = {
constant GET_HISTORICAL_ERC20_TOKEN_BALANCE (line 89) | const GET_HISTORICAL_ERC20_TOKEN_BALANCE = {
constant GET_TOKEN_INFO (line 95) | const GET_TOKEN_INFO = {
constant GET_ETHER_PRICE (line 102) | const GET_ETHER_PRICE = {
constant GET_HISTORICAL_ETHER_PRICE (line 108) | const GET_HISTORICAL_ETHER_PRICE = {
constant OPERATIONS (line 114) | const OPERATIONS = [
constant SORT_BY (line 135) | const SORT_BY = [
FILE: packages/components/nodes/ExecuteContractFunction/ExecuteContractFunction.ts
class ExecuteContractFunction (line 23) | class ExecuteContractFunction implements INode {
method constructor (line 38) | constructor() {
method getContracts (line 141) | async getContracts(nodeData: INodeData, dbCollection?: IDbCollection):...
method getFunctions (line 163) | async getFunctions(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method getWallets (line 216) | async getWallets(nodeData: INodeData, dbCollection?: IDbCollection): P...
method getNetworkProviders (line 254) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method run (line 278) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/FlowBalanceTrigger/FlowBalanceTrigger.ts
class FlowBalanceTrigger (line 10) | class FlowBalanceTrigger extends EventEmitter implements INode {
method constructor (line 25) | constructor() {
method getNetworkProviders (line 101) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method runTrigger (line 112) | async runTrigger(nodeData: INodeData): Promise<void> {
method removeTrigger (line 197) | async removeTrigger(nodeData: INodeData): Promise<void> {
method formatFlow (line 209) | formatFlow(balance: BigNumberish): string {
method parseFlow (line 213) | parseFlow(flow: string): BigNumber {
FILE: packages/components/nodes/FootprintAnalytics/FootprintAnalytics.ts
class FootprintAnalytics (line 21) | class FootprintAnalytics implements INode {
method constructor (line 39) | constructor() {
method getFormattedDate (line 150) | getFormattedDate(date: Date, operation: string) {
method getOperations (line 160) | async getOperations(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method run (line 198) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/FootprintAnalytics/constants.ts
constant NFT_OPERATIONS (line 369) | const NFT_OPERATIONS = [
constant TOKEN_OPERATIONS (line 440) | const TOKEN_OPERATIONS = [
constant GAMEFI_OPERATIONS (line 461) | const GAMEFI_OPERATIONS = [
constant CHAIN_OPERATIONS (line 488) | const CHAIN_OPERATIONS = [
constant ALL_OPERATIONS (line 503) | const ALL_OPERATIONS = [...NFT_OPERATIONS, ...TOKEN_OPERATIONS, ...GAMEF...
FILE: packages/components/nodes/GitHub/GitHub.ts
class GitHub (line 5) | class GitHub implements INode {
method constructor (line 19) | constructor() {
method run (line 296) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/GitHub/GitHubWebhook.ts
class GitHubWebhook (line 5) | class GitHubWebhook implements INode {
method constructor (line 19) | constructor() {
method createWebhook (line 361) | async createWebhook(nodeData: INodeData, webhookFullUrl: string): Prom...
method deleteWebhook (line 437) | async deleteWebhook(nodeData: INodeData, webhookId: string): Promise<b...
method runWebhook (line 472) | async runWebhook(nodeData: INodeData): Promise<IWebhookNodeExecutionDa...
FILE: packages/components/nodes/GoogleDocs/GoogleDocs.ts
class GoogleDocs (line 5) | class GoogleDocs implements INode {
method constructor (line 19) | constructor() {
method getAllDocsFromDrive (line 128) | async getAllDocsFromDrive(nodeData: INodeData): Promise<INodeOptionsVa...
method run (line 178) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/GoogleSheet/GoogleSheet.ts
class GoogleSheet (line 5) | class GoogleSheet implements INode {
method constructor (line 19) | constructor() {
method getAllSheetsFromDrive (line 243) | async getAllSheetsFromDrive(nodeData: INodeData): Promise<INodeOptions...
method getSheets (line 292) | async getSheets(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method run (line 348) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/GraphQL/GraphQL.ts
class GraphQL (line 6) | class GraphQL implements INode {
method constructor (line 19) | constructor() {
method run (line 101) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/HTTP/HTTP.ts
class HTTP (line 6) | class HTTP implements INode {
method constructor (line 20) | constructor() {
method run (line 196) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Helio/Helio.ts
class Helio (line 5) | class Helio implements INode {
method constructor (line 23) | constructor() {
method run (line 89) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Helio/HelioWebhook.ts
class HelioWebhook (line 5) | class HelioWebhook implements INode {
method constructor (line 20) | constructor() {
method createWebhook (line 114) | async createWebhook(nodeData: INodeData, webhookFullUrl: string): Prom...
method deleteWebhook (line 198) | async deleteWebhook(nodeData: INodeData, webhookId: string): Promise<b...
method runWebhook (line 235) | async runWebhook(nodeData: INodeData): Promise<IWebhookNodeExecutionDa...
FILE: packages/components/nodes/Helius/Helius.ts
class Helius (line 5) | class Helius implements INode {
method constructor (line 23) | constructor() {
method run (line 91) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Hubspot/Hubspot.ts
class Hubspot (line 5) | class Hubspot implements INode {
method constructor (line 20) | constructor() {
method getContacts (line 123) | async getContacts(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method run (line 156) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/HuggingFace/HuggingFace.ts
class HuggingFace (line 6) | class HuggingFace implements INode {
method constructor (line 20) | constructor() {
method listModels (line 102) | async listModels(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method run (line 138) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/IfElse/IfElse.ts
type ICondition (line 4) | interface ICondition {
class IfElse (line 11) | class IfElse implements INode {
method constructor (line 23) | constructor() {
method run (line 265) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/ImageEditor/ImageEditor.ts
class ImageEditor (line 6) | class ImageEditor implements INode {
method constructor (line 19) | constructor() {
method run (line 201) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Infura/Infura.ts
class Infura (line 26) | class Infura implements INode {
method constructor (line 41) | constructor() {
method getOperations (line 177) | async getOperations(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method run (line 228) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Infura/InfuraTrigger.ts
class InfuraTrigger (line 17) | class InfuraTrigger extends EventEmitter implements INode {
method constructor (line 32) | constructor() {
method getSubscribeOperations (line 94) | async getSubscribeOperations(nodeData: INodeData): Promise<INodeOption...
method getUnsubscribeOperations (line 124) | async getUnsubscribeOperations(nodeData: INodeData): Promise<INodeOpti...
method runTrigger (line 155) | async runTrigger(nodeData: INodeData): Promise<void> {
method removeTrigger (line 219) | async removeTrigger(nodeData: INodeData): Promise<void> {
FILE: packages/components/nodes/MATICBalanceTrigger/MATICBalanceTrigger.ts
class MATICBalanceTrigger (line 16) | class MATICBalanceTrigger extends EventEmitter implements INode {
method constructor (line 31) | constructor() {
method runTrigger (line 132) | async runTrigger(nodeData: INodeData): Promise<void> {
method removeTrigger (line 221) | async removeTrigger(nodeData: INodeData): Promise<void> {
FILE: packages/components/nodes/MATICTransfer/MATICTransfer.ts
class MATICTransfer (line 14) | class MATICTransfer implements INode {
method constructor (line 28) | constructor() {
method getWallets (line 123) | async getWallets(nodeData: INodeData, dbCollection?: IDbCollection): P...
method getNetworkProviders (line 149) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method run (line 160) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Mailchimp/Mailchimp.ts
type Auth (line 5) | interface Auth {
class Mailchimp (line 10) | class Mailchimp implements INode {
method constructor (line 25) | constructor() {
method getCampaigns (line 121) | async getCampaigns(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method getLists (line 156) | async getLists(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method run (line 193) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Moralis/Moralis.ts
class Moralis (line 31) | class Moralis implements INode {
method constructor (line 46) | constructor() {
method getOperations (line 163) | async getOperations(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method run (line 192) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/NFTMintTrigger/NFTMintTrigger.ts
class NFTMintTrigger (line 20) | class NFTMintTrigger extends EventEmitter implements INode {
method constructor (line 35) | constructor() {
method getNetworkProviders (line 111) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method runTrigger (line 122) | async runTrigger(nodeData: INodeData): Promise<void> {
method removeTrigger (line 195) | async removeTrigger(nodeData: INodeData): Promise<void> {
FILE: packages/components/nodes/NFTTransferTrigger/NFTTransferTrigger.ts
class NFTTransferTrigger (line 22) | class NFTTransferTrigger extends EventEmitter implements INode {
method constructor (line 37) | constructor() {
method getNetworkProviders (line 171) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method runTrigger (line 182) | async runTrigger(nodeData: INodeData): Promise<void> {
method removeTrigger (line 265) | async removeTrigger(nodeData: INodeData): Promise<void> {
FILE: packages/components/nodes/NodeJS/NodeJS.ts
class NodeJS (line 5) | class NodeJS implements INode {
method constructor (line 17) | constructor() {
method run (line 46) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Notion/Notion.ts
class Notion (line 5) | class Notion implements INode {
method constructor (line 19) | constructor() {
method run (line 276) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/OpenAI/OpenAI.ts
class OpenAI (line 5) | class OpenAI implements INode {
method constructor (line 19) | constructor() {
method listModels (line 191) | async listModels(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method run (line 225) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Opensea/Opensea.ts
class OpenSea (line 14) | class OpenSea implements INode {
method constructor (line 28) | constructor() {
method run (line 209) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Opensea/OpenseaEventTrigger.ts
class OpenSeaEventTrigger (line 8) | class OpenSeaEventTrigger extends EventEmitter implements INode {
method constructor (line 23) | constructor() {
method runTrigger (line 172) | async runTrigger(nodeData: INodeData): Promise<void> {
method removeTrigger (line 321) | async removeTrigger(nodeData: INodeData): Promise<void> {
FILE: packages/components/nodes/OptimismScan/OptimismScan.ts
class OptimismScan (line 19) | class OptimismScan implements INode {
method constructor (line 37) | constructor() {
method getBaseParams (line 253) | getBaseParams(api: string) {
method run (line 258) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/OptimismScan/constants.ts
constant GET_ETH_BALANCE (line 2) | const GET_ETH_BALANCE = {
constant GET_ETH_BALANCE_MULTI (line 8) | const GET_ETH_BALANCE_MULTI = {
constant GET_NORMAL_TRANSACTIONS (line 14) | const GET_NORMAL_TRANSACTIONS = {
constant GET_ERC20_TOKEN_TRANSFER (line 20) | const GET_ERC20_TOKEN_TRANSFER = {
constant GET_DEPOSIT (line 26) | const GET_DEPOSIT = {
constant GET_WITHDRAWAL (line 32) | const GET_WITHDRAWAL = {
constant GET_CONTRACT_ABI (line 39) | const GET_CONTRACT_ABI = {
constant GET_CONTRACT_SOURCE_CODE (line 45) | const GET_CONTRACT_SOURCE_CODE = {
constant GET_ERC20_TOKEN_SUPPLY (line 52) | const GET_ERC20_TOKEN_SUPPLY = {
constant GET_ERC20_TOKEN_ACCOUNT_BALANCE (line 58) | const GET_ERC20_TOKEN_ACCOUNT_BALANCE = {
constant OPERATIONS (line 64) | const OPERATIONS = [
constant SORT_BY (line 77) | const SORT_BY = [
FILE: packages/components/nodes/PancakeSwap/PancakeSwap.ts
class PancakeSwap (line 20) | class PancakeSwap implements INode {
method constructor (line 35) | constructor() {
method getTokens (line 289) | async getTokens(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method getWallets (line 330) | async getWallets(nodeData: INodeData, dbCollection?: IDbCollection): P...
method run (line 362) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/PancakeSwap/extendedTokens.ts
type INativeTokens (line 3) | interface INativeTokens {
type IToken (line 7) | interface IToken {
FILE: packages/components/nodes/Pinata/Pinata.ts
class Pinata (line 6) | class Pinata implements INode {
method constructor (line 20) | constructor() {
method run (line 312) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/PolygonScan/PolygonScan.ts
class PolygonScan (line 26) | class PolygonScan implements INode {
method constructor (line 44) | constructor() {
method getNetwork (line 359) | getNetwork(network: string): string {
method getBaseParams (line 369) | getBaseParams(api: string) {
method getISODate (line 374) | getISODate(date: Date) {
method run (line 378) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/PolygonScan/constants.ts
constant GET_MATIC_BALANCE (line 2) | const GET_MATIC_BALANCE = {
constant GET_HISTORICAL_MATIC_BALANCE (line 8) | const GET_HISTORICAL_MATIC_BALANCE = {
constant GET_NORMAL_TRANSACTIONS (line 14) | const GET_NORMAL_TRANSACTIONS = {
constant GET_INTERNAL_TRANSACTIONS (line 20) | const GET_INTERNAL_TRANSACTIONS = {
constant GET_INTERNAL_TRANSACTIONS_BY_HASH (line 26) | const GET_INTERNAL_TRANSACTIONS_BY_HASH = {
constant GET_INTERNAL_TRANSACTIONS_BY_BLOCK (line 32) | const GET_INTERNAL_TRANSACTIONS_BY_BLOCK = {
constant GET_BLOCKS_VALIDATED (line 38) | const GET_BLOCKS_VALIDATED = {
constant GET_ABI (line 45) | const GET_ABI = {
constant GET_CONTRACT_SOURCE_CODE (line 51) | const GET_CONTRACT_SOURCE_CODE = {
constant CHECK_TRANSACTION_RECEIPT_STATUS (line 58) | const CHECK_TRANSACTION_RECEIPT_STATUS = {
constant GET_ERC20_TOKEN_SUPPLY (line 65) | const GET_ERC20_TOKEN_SUPPLY = {
constant GET_ERC20_TOKEN_BALANCE (line 71) | const GET_ERC20_TOKEN_BALANCE = {
constant GET_HISTORICAL_ERC20_TOKEN_SUPPLY (line 77) | const GET_HISTORICAL_ERC20_TOKEN_SUPPLY = {
constant GET_HISTORICAL_ERC20_TOKEN_BALANCE (line 83) | const GET_HISTORICAL_ERC20_TOKEN_BALANCE = {
constant GET_TOKEN_INFO (line 89) | const GET_TOKEN_INFO = {
constant GET_MATIC_PRICE (line 96) | const GET_MATIC_PRICE = {
constant GET_HISTORICAL_MATIC_PRICE (line 102) | const GET_HISTORICAL_MATIC_PRICE = {
constant OPERATIONS (line 108) | const OPERATIONS = [
constant SORT_BY (line 128) | const SORT_BY = [
FILE: packages/components/nodes/QuickNode/QuickNode.ts
class QuickNode (line 25) | class QuickNode implements INode {
method constructor (line 39) | constructor() {
method getOperations (line 307) | async getOperations(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method run (line 348) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/QuickNode/QuickNodeTrigger.ts
class QuickNodeTrigger (line 10) | class QuickNodeTrigger extends EventEmitter implements INode {
method constructor (line 25) | constructor() {
method getSubscribeOperations (line 87) | async getSubscribeOperations(nodeData: INodeData): Promise<INodeOption...
method getUnsubscribeOperations (line 118) | async getUnsubscribeOperations(nodeData: INodeData): Promise<INodeOpti...
method runTrigger (line 150) | async runTrigger(nodeData: INodeData): Promise<void> {
method removeTrigger (line 210) | async removeTrigger(nodeData: INodeData): Promise<void> {
FILE: packages/components/nodes/RequestFinance/RequestFinance.ts
type IInvoiceItems (line 7) | interface IInvoiceItems {
class RequestFinance (line 15) | class RequestFinance implements INode {
method constructor (line 29) | constructor() {
method getInvoiceCurrency (line 95) | async getInvoiceCurrency(): Promise<INodeOptionsValue[]> {
method getPaymentCurrency (line 126) | async getPaymentCurrency(): Promise<INodeOptionsValue[]> {
method getCountry (line 157) | async getCountry(): Promise<INodeOptionsValue[]> {
method getClients (line 183) | async getClients(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method getEmployees (line 221) | async getEmployees(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method getInvoices (line 259) | async getInvoices(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method run (line 298) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/RequestFinance/RequestFinanceTrigger.ts
class RequestFinanceTrigger (line 8) | class RequestFinanceTrigger extends EventEmitter implements INode {
method constructor (line 23) | constructor() {
method getInvoices (line 169) | async getInvoices(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method runTrigger (line 208) | async runTrigger(nodeData: INodeData): Promise<void> {
method removeTrigger (line 324) | async removeTrigger(nodeData: INodeData): Promise<void> {
FILE: packages/components/nodes/Scheduler/Scheduler.ts
type IScheduleTimes (line 6) | interface IScheduleTimes {
class Scheduler (line 18) | class Scheduler extends EventEmitter implements INode {
method constructor (line 31) | constructor() {
method runTrigger (line 225) | async runTrigger(nodeData: INodeData): Promise<void> {
method removeTrigger (line 313) | async removeTrigger(nodeData: INodeData): Promise<void> {
FILE: packages/components/nodes/Slack/Slack.ts
type ISlackWebhook (line 5) | interface ISlackWebhook {
class Slack (line 10) | class Slack implements INode {
method constructor (line 22) | constructor() {
method run (line 50) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/SnowTrace/SnowTrace.ts
class SnowTrace (line 6) | class SnowTrace implements INode {
method constructor (line 22) | constructor() {
method fetch (line 188) | async fetch(url: string, queryParameters: any) {
method getQueryParameters (line 204) | getQueryParameters(api: string, value: any) {
method run (line 275) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Solidity/Solidity.ts
function findImports (line 32) | function findImports(_path: string) {
class Solidity (line 42) | class Solidity implements INode {
method constructor (line 57) | constructor() {
method getWallets (line 144) | async getWallets(nodeData: INodeData, dbCollection?: IDbCollection): P...
method getNetworkProviders (line 175) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method run (line 186) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Solscan/Solscan.ts
class Solscan (line 6) | class Solscan implements INode {
method constructor (line 24) | constructor() {
method getEndpoint (line 199) | getEndpoint(operation: string, options?: { address?: string; signature...
method run (line 245) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Solscan/constants.ts
constant OPERATION (line 1) | const OPERATION = {
constant SORT_BY (line 26) | const SORT_BY = [
constant SORT_DIRECTION (line 40) | const SORT_DIRECTION = [
FILE: packages/components/nodes/Teams/Teams.ts
type ITeamsWebhook (line 5) | interface ITeamsWebhook {
class Teams (line 9) | class Teams implements INode {
method constructor (line 21) | constructor() {
method run (line 50) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Telegram/Telegram.ts
class Telegram (line 5) | class Telegram implements INode {
method constructor (line 18) | constructor() {
method run (line 64) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/ThirdWeb/ThirdWeb.ts
class ThirdWeb (line 35) | class ThirdWeb implements INode {
method constructor (line 49) | constructor() {
method getWallets (line 151) | async getWallets(nodeData: INodeData, dbCollection?: IDbCollection): P...
method run (line 183) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/ThirdWeb/ThirdWebTrigger.ts
class ThirdWebEventTrigger (line 23) | class ThirdWebEventTrigger extends EventEmitter implements INode {
method constructor (line 38) | constructor() {
method getEvents (line 85) | async getEvents(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method runTrigger (line 128) | async runTrigger(nodeData: INodeData): Promise<void> {
method removeTrigger (line 211) | async removeTrigger(nodeData: INodeData): Promise<void> {
FILE: packages/components/nodes/ThirdWeb/supportedNetwork.ts
type prebuiltType (line 4) | type prebuiltType =
type IThirdWebNetwork (line 154) | interface IThirdWebNetwork {
FILE: packages/components/nodes/Twitter/Twitter.ts
class Twitter (line 5) | class Twitter implements INode {
method constructor (line 18) | constructor() {
method run (line 73) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Typeform/Typeform.ts
class Typeform (line 5) | class Typeform implements INode {
method constructor (line 20) | constructor() {
method run (line 94) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/TypeformWebhook/TypeformWebhook.ts
class TypeformWebhook (line 5) | class TypeformWebhook implements INode {
method constructor (line 19) | constructor() {
method createWebhook (line 83) | async createWebhook(nodeData: INodeData, webhookFullUrl: string): Prom...
method deleteWebhook (line 139) | async deleteWebhook(nodeData: INodeData): Promise<boolean> {
method runWebhook (line 168) | async runWebhook(nodeData: INodeData): Promise<IWebhookNodeExecutionDa...
FILE: packages/components/nodes/Uniswap/Uniswap.ts
class Uniswap (line 30) | class Uniswap implements INode {
method constructor (line 45) | constructor() {
method getTokens (line 256) | async getTokens(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method getWallets (line 298) | async getWallets(nodeData: INodeData, dbCollection?: IDbCollection): P...
method getNetworkProviders (line 329) | async getNetworkProviders(nodeData: INodeData): Promise<INodeOptionsVa...
method run (line 340) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Uniswap/nativeTokens.ts
type INativeTokens (line 3) | interface INativeTokens {
type IToken (line 7) | interface IToken {
FILE: packages/components/nodes/Wait/Wait.ts
class Wait (line 4) | class Wait implements INode {
method constructor (line 16) | constructor() {
method run (line 62) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/nodes/Webhook/Webhook.ts
class Webhook (line 13) | class Webhook implements INode {
method constructor (line 25) | constructor() {
method getAPIKeys (line 124) | async getAPIKeys(nodeData: INodeData, dbCollection?: IDbCollection, ap...
method runWebhook (line 142) | async runWebhook(nodeData: INodeData): Promise<IWebhookNodeExecutionDa...
FILE: packages/components/nodes/Xero/xero.ts
class Xero (line 5) | class Xero implements INode {
method constructor (line 20) | constructor() {
method getTenants (line 147) | async getTenants(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method getInvoices (line 193) | async getInvoices(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method getContacts (line 250) | async getContacts(nodeData: INodeData): Promise<INodeOptionsValue[]> {
method run (line 306) | async run(nodeData: INodeData): Promise<INodeExecutionData[] | null> {
FILE: packages/components/src/ChainNetwork.ts
type NETWORK (line 7) | enum NETWORK {
type NETWORK_LABEL (line 40) | enum NETWORK_LABEL {
type NETWORK_PROVIDER (line 73) | enum NETWORK_PROVIDER {
type CHAIN_ID (line 96) | enum CHAIN_ID {
type DOMAIN_ID (line 123) | enum DOMAIN_ID {
function getCustomRPCProvider (line 516) | function getCustomRPCProvider(jsonRPC: string) {
function getCustomWebsocketProvider (line 520) | function getCustomWebsocketProvider(websocketRPC: string) {
function getBscMainnetProvider (line 524) | async function getBscMainnetProvider() {
function getBscTestnetProvider (line 528) | async function getBscTestnetProvider() {
function getPolygonMainnetProvider (line 532) | async function getPolygonMainnetProvider() {
function getPolygonTestnetProvider (line 536) | async function getPolygonTestnetProvider() {
function getAvalancheTestnetProvider (line 540) | async function getAvalancheTestnetProvider() {
function getAvalancheMainnetProvider (line 544) | async function getAvalancheMainnetProvider() {
function getGnosisMainnetProvider (line 548) | async function getGnosisMainnetProvider() {
function getHecoMainnetProvider (line 552) | async function getHecoMainnetProvider() {
function getFantomMainnetProvider (line 556) | async function getFantomMainnetProvider() {
function getFantomTestnetProvider (line 560) | async function getFantomTestnetProvider() {
function getHarmonyMainnetProvider (line 564) | async function getHarmonyMainnetProvider() {
function getMoonriverMainnetProvider (line 568) | async function getMoonriverMainnetProvider() {
function getMoonbeamMainnetProvider (line 572) | async function getMoonbeamMainnetProvider() {
function getMetisMainnetProvider (line 576) | async function getMetisMainnetProvider() {
function getKlaytnTestnetProvider (line 580) | async function getKlaytnTestnetProvider() {
function getFallbackProvider (line 584) | async function getFallbackProvider(rpcs: string[], network: string, chai...
function getNetworkProvider (line 604) | async function getNetworkProvider(
function getNetworkProvidersList (line 678) | function getNetworkProvidersList(network: NETWORK): INodeOptionsValue[] {
FILE: packages/components/src/ETHOperations.ts
type IETHOperation (line 4) | interface IETHOperation {
FILE: packages/components/src/Interface.ts
type IWorkflow (line 9) | interface IWorkflow {
type IExecution (line 19) | interface IExecution {
type ICredential (line 29) | interface ICredential {
type IWebhook (line 38) | interface IWebhook {
type IContract (line 49) | interface IContract {
type IWallet (line 60) | interface IWallet {
type ExecutionState (line 74) | type ExecutionState = 'INPROGRESS' | 'FINISHED' | 'ERROR' | 'TERMINATED'...
type WebhookMethod (line 76) | type WebhookMethod = 'GET' | 'POST'
type NodeType (line 78) | type NodeType = 'action' | 'webhook' | 'trigger'
type NodeParamsType (line 80) | type NodeParamsType =
type DbCollectionName (line 94) | type DbCollectionName = 'Contract' | 'Webhook' | 'Workflow' | 'Credentia...
type CommonType (line 96) | type CommonType = string | number | boolean | undefined | null
type IDbCollection (line 101) | type IDbCollection = {
type ICommonObject (line 105) | interface ICommonObject {
type INetworkMapping (line 109) | type INetworkMapping = {
type IAttachment (line 113) | interface IAttachment {
type INodeOptionsValue (line 120) | interface INodeOptionsValue {
type INodeParams (line 138) | interface INodeParams {
type INodeExecutionData (line 155) | interface INodeExecutionData {
type IWebhookNodeExecutionData (line 159) | interface IWebhookNodeExecutionData {
type INodeDisplay (line 164) | interface INodeDisplay {
type INodeProperties (line 168) | interface INodeProperties {
type INode (line 180) | interface INode extends INodeProperties {
type INodeData (line 198) | interface INodeData extends INodeProperties {
type INodeCredential (line 214) | interface INodeCredential {
type ICronJobs (line 221) | interface ICronJobs {
type IProviders (line 225) | interface IProviders {
type IOAuth2RefreshResponse (line 232) | interface IOAuth2RefreshResponse {
FILE: packages/components/src/utils.ts
constant OAUTH2_REFRESHED (line 9) | const OAUTH2_REFRESHED = 'oAuth2RefreshedData'
function returnNodeExecutionData (line 20) | function returnNodeExecutionData(responseData: ICommonObject | ICommonOb...
function returnWebhookNodeExecutionData (line 53) | function returnWebhookNodeExecutionData(
function serializeQueryParams (line 84) | function serializeQueryParams(params: any, skipIndex?: boolean): string {
function handleErrorMessage (line 121) | function handleErrorMessage(error: any): string {
function refreshOAuth2Token (line 148) | async function refreshOAuth2Token(credentials: ICommonObject) {
FILE: packages/server/src/ActiveTestTriggerPool.ts
class ActiveTestTriggerPool (line 8) | class ActiveTestTriggerPool {
method add (line 16) | add(nodeName: string, nodeData: INodeData) {
method removeAll (line 24) | async removeAll(componentNodes: IComponentNodesPool) {
method remove (line 42) | async remove(nodeName: string, componentNodes: IComponentNodesPool) {
FILE: packages/server/src/ActiveTestWebhookPool.ts
class ActiveTestWebhookPool (line 8) | class ActiveTestWebhookPool {
method add (line 22) | add(
method removeAll (line 49) | async removeAll(componentNodes: IComponentNodesPool) {
method remove (line 74) | async remove(testWebhookKey: string, componentNodes: IComponentNodesPo...
FILE: packages/server/src/ChildProcess.ts
class ChildProcess (line 20) | class ChildProcess {
method stopChildProcess (line 24) | static async stopChildProcess() {
method runWorkflow (line 35) | async runWorkflow(messageValue: IRunWorkflowMessageValue): Promise<voi...
function initDB (line 152) | async function initDB() {
function getVariableValue (line 174) | function getVariableValue(paramValue: string, workflowExecutedData: IWor...
function resolveVariables (line 279) | function resolveVariables(reactFlowNodeData: INodeData, workflowExecuted...
function sendToParentProcess (line 355) | async function sendToParentProcess(key: string, value: any): Promise<voi...
FILE: packages/server/src/CredentialsPool.ts
class CredentialsPool (line 10) | class CredentialsPool {
method initialize (line 16) | async initialize() {
method getFiles (line 36) | async getFiles(dir: string): Promise<string[]> {
FILE: packages/server/src/DataSource.ts
function init (line 12) | async function init(): Promise<void> {
function getDataSource (line 26) | function getDataSource(): DataSource {
FILE: packages/server/src/DeployedWorkflowPool.ts
class DeployedWorkflowPool (line 31) | class DeployedWorkflowPool {
method initialize (line 39) | async initialize(AppDataSource: DataSource, componentNodes: IComponent...
method add (line 87) | async add(
method startWorkflow (line 207) | async startWorkflow(
method remove (line 305) | async remove(
method removeAll (line 372) | async removeAll(componentNodes: IComponentNodesPool) {
method prepareDataForChildProcess (line 400) | async prepareDataForChildProcess(workflowShortId: string) {
method addExecution (line 423) | async addExecution(workflowShortId: string, workflowExecutedData: IWor...
method updateExecution (line 450) | async updateExecution(
method terminateExecutions (line 488) | async terminateExecutions(workflowShortId: string) {
method terminateSpecificExecutionAfterTimeout (line 512) | async terminateSpecificExecutionAfterTimeout(newExecutionShortId: stri...
FILE: packages/server/src/Interface.ts
type IWorkflow (line 15) | interface IWorkflow {
type IExecution (line 25) | interface IExecution {
type ICredential (line 35) | interface ICredential {
type IWebhook (line 44) | interface IWebhook {
type IContract (line 55) | interface IContract {
type IWallet (line 66) | interface IWallet {
type ExecutionState (line 80) | type ExecutionState = 'INPROGRESS' | 'FINISHED' | 'ERROR' | 'TERMINATED'...
type WebhookMethod (line 82) | type WebhookMethod = 'GET' | 'POST'
type IWorkflowResponse (line 87) | interface IWorkflowResponse extends IWorkflow {
type INode (line 92) | interface INode extends INodeComponent {
type ITriggerNode (line 96) | interface ITriggerNode extends EventEmitter, INodeComponent {
type IWebhookNode (line 100) | interface IWebhookNode extends INodeComponent {
type IComponentNodesPool (line 104) | interface IComponentNodesPool {
type IActiveTestTriggerPool (line 108) | interface IActiveTestTriggerPool {
type IActiveTestWebhookPool (line 112) | interface IActiveTestWebhookPool {
type ICredentialBody (line 124) | interface ICredentialBody {
type ICredentialResponse (line 130) | interface ICredentialResponse {
type ICredentialDataDecrypted (line 139) | type ICredentialDataDecrypted = ICommonObject
type IComponentCredentialsPool (line 141) | interface IComponentCredentialsPool {
type IWalletResponse (line 145) | interface IWalletResponse extends IWallet {
type IVariableDict (line 149) | interface IVariableDict {
type INodeDependencies (line 153) | interface INodeDependencies {
type INodeDirectedGraph (line 157) | interface INodeDirectedGraph {
type IWorkflowExecutedData (line 161) | interface IWorkflowExecutedData {
type ITestNodeBody (line 168) | interface ITestNodeBody {
type IDeployedWorkflowsPool (line 175) | interface IDeployedWorkflowsPool {
type IChildProcessMessage (line 183) | interface IChildProcessMessage {
type IReactFlowNode (line 188) | interface IReactFlowNode {
type IReactFlowEdge (line 211) | interface IReactFlowEdge {
type IReactFlowObject (line 223) | interface IReactFlowObject {
type IRunWorkflowMessageValue (line 233) | interface IRunWorkflowMessageValue {
type IContractRequestBody (line 242) | interface IContractRequestBody {
type IWalletRequestBody (line 248) | interface IWalletRequestBody {
type IOAuth2Response (line 255) | interface IOAuth2Response {
type IExploredNode (line 262) | interface IExploredNode {
type INodeQueue (line 269) | interface INodeQueue {
type ITestWorkflowBody (line 274) | type ITestWorkflowBody = ITestNodeBody
FILE: packages/server/src/NodesPool.ts
class NodesPool (line 8) | class NodesPool {
method initialize (line 14) | async initialize() {
method getFiles (line 52) | async getFiles(dir: string): Promise<string[]> {
FILE: packages/server/src/commands/start.ts
type EXIT_CODE (line 9) | enum EXIT_CODE {
class Start (line 15) | class Start extends Command {
method stopProcess (line 22) | async stopProcess() {
method run (line 40) | async run(): Promise<void> {
FILE: packages/server/src/entity/Contract.ts
class Contract (line 7) | class Contract implements IContract {
FILE: packages/server/src/entity/Credential.ts
class Credential (line 7) | class Credential implements ICredential {
FILE: packages/server/src/entity/Execution.ts
class Execution (line 8) | class Execution implements IExecution {
method beforeInsert (line 17) | beforeInsert() {
FILE: packages/server/src/entity/Wallet.ts
class Wallet (line 7) | class Wallet implements IWallet {
FILE: packages/server/src/entity/Webhook.ts
class Webhook (line 7) | class Webhook implements IWebhook {
FILE: packages/server/src/entity/Workflow.ts
class Workflow (line 8) | class Workflow implements IWorkflow {
method beforeInsert (line 17) | beforeInsert() {
FILE: packages/server/src/index.ts
class App (line 77) | class App {
method constructor (line 86) | constructor() {
method initDatabase (line 90) | async initDatabase() {
method config (line 149) | async config(io: Server) {
method stopApp (line 1440) | async stopApp() {
function start (line 1462) | async function start(): Promise<void> {
function getInstance (line 1489) | function getInstance(): App | undefined {
FILE: packages/server/src/utils/index.ts
type ShortIdConstants (line 34) | enum ShortIdConstants {
constant RANDOM_LENGTH (line 39) | const RANDOM_LENGTH = 8
constant DICTIONARY_1 (line 40) | const DICTIONARY_1 = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ'
constant DICTIONARY_3 (line 41) | const DICTIONARY_3 = 'abcdefghijklmnopqrstuvwxyz0123456789'
FILE: packages/ui/src/routes/index.js
function ThemeRoutes (line 10) | function ThemeRoutes() {
FILE: packages/ui/src/serviceWorker.js
function registerValidSW (line 21) | function registerValidSW(swUrl, config) {
function checkValidServiceWorker (line 64) | function checkValidServiceWorker(swUrl, config) {
function register (line 89) | function register(config) {
function unregister (line 122) | function unregister() {
FILE: packages/ui/src/store/actions.js
constant SET_MENU (line 2) | const SET_MENU = '@customization/SET_MENU'
constant MENU_TOGGLE (line 3) | const MENU_TOGGLE = '@customization/MENU_TOGGLE'
constant MENU_OPEN (line 4) | const MENU_OPEN = '@customization/MENU_OPEN'
constant SET_FONT_FAMILY (line 5) | const SET_FONT_FAMILY = '@customization/SET_FONT_FAMILY'
constant SET_BORDER_RADIUS (line 6) | const SET_BORDER_RADIUS = '@customization/SET_BORDER_RADIUS'
constant SET_LAYOUT (line 7) | const SET_LAYOUT = '@customization/SET_LAYOUT '
constant SET_DARKMODE (line 8) | const SET_DARKMODE = '@customization/SET_DARKMODE'
constant REMOVE_EDGE (line 11) | const REMOVE_EDGE = '@canvas/REMOVE_EDGE'
constant SET_DIRTY (line 12) | const SET_DIRTY = '@canvas/SET_DIRTY'
constant REMOVE_DIRTY (line 13) | const REMOVE_DIRTY = '@canvas/REMOVE_DIRTY'
constant SET_WORKFLOW (line 14) | const SET_WORKFLOW = '@canvas/SET_WORKFLOW'
constant ENQUEUE_SNACKBAR (line 17) | const ENQUEUE_SNACKBAR = 'ENQUEUE_SNACKBAR'
constant CLOSE_SNACKBAR (line 18) | const CLOSE_SNACKBAR = 'CLOSE_SNACKBAR'
constant REMOVE_SNACKBAR (line 19) | const REMOVE_SNACKBAR = 'REMOVE_SNACKBAR'
constant SHOW_CONFIRM (line 22) | const SHOW_CONFIRM = 'SHOW_CONFIRM'
constant HIDE_CONFIRM (line 23) | const HIDE_CONFIRM = 'HIDE_CONFIRM'
FILE: packages/ui/src/store/constant.js
constant NETWORK (line 6) | const NETWORK = {
constant NETWORK_LABEL (line 29) | const NETWORK_LABEL = {
FILE: packages/ui/src/themes/compStyleOverride.js
function componentStyleOverrides (line 1) | function componentStyleOverrides(theme) {
FILE: packages/ui/src/themes/palette.js
function themePalette (line 6) | function themePalette(theme) {
FILE: packages/ui/src/themes/typography.js
function themeTypography (line 6) | function themeTypography(theme) {
FILE: packages/ui/src/ui-component/dialog/AttachmentDialog.js
function TabPanel (line 7) | function TabPanel(props) {
function a11yProps (line 28) | function a11yProps(index) {
FILE: packages/ui/src/ui-component/dialog/HTMLDialog.js
function TabPanel (line 7) | function TabPanel(props) {
function a11yProps (line 28) | function a11yProps(index) {
FILE: packages/ui/src/utils/usePrompt.js
function useBlocker (line 6) | function useBlocker(blocker, when = true) {
function usePrompt (line 28) | function usePrompt(message, when = true) {
FILE: packages/ui/src/views/canvas/AddNodes.js
function TabPanel (line 45) | function TabPanel(props) {
function a11yProps (line 66) | function a11yProps(index) {
FILE: packages/ui/src/views/canvas/index.js
function handlePaste (line 715) | function handlePaste(e) {
FILE: packages/ui/src/views/inputs/ArrayInputParameters.js
function readFile (line 137) | function readFile(fileIndex, base64Array) {
FILE: packages/ui/src/views/inputs/CredentialInput.js
constant ADD_NEW_CREDENTIAL (line 50) | const ADD_NEW_CREDENTIAL = '+ Add New Credential'
FILE: packages/ui/src/views/inputs/InputParameters.js
function readFile (line 137) | function readFile(fileIndex, base64Array) {
Condensed preview — 317 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,479K chars).
[
{
"path": ".dockerignore",
"chars": 58,
"preview": "node_modules\ndist\nbuild\n\n**/node_modules\n**/build\n**/dist\n"
},
{
"path": ".eslintrc.js",
"chars": 1016,
"preview": "module.exports = {\n extends: [\n 'eslint:recommended',\n 'plugin:markdown/recommended',\n 'plugin:r"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 618,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: \"[BUG]\"\nlabels: ''\nassignees: ''\n\n---\n\n**Describe "
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 321,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: \"[FEATURE]\"\nlabels: ''\nassignees: ''\n\n---\n\n**De"
},
{
"path": ".github/workflows/main.yml",
"chars": 718,
"preview": "name: Node CI\n\non:\n push:\n branches:\n - master\n\n pull_request:\n branches:\n - '"
},
{
"path": ".gitignore",
"chars": 358,
"preview": "# editor\n.idea\n.vscode\n\n# dependencies\n**/node_modules\n**/package-lock.json\n**/yarn.lock\n\n## logs\n**/*.log\n\n## build\n**/"
},
{
"path": ".husky/pre-commit",
"chars": 194,
"preview": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n\nyarn quick # prettify\nyarn lint-staged # eslint lint(also include prettify but"
},
{
"path": ".prettierignore",
"chars": 32,
"preview": "**/node_modules\n**/dist\n**/build"
},
{
"path": ".prettierrc.js",
"chars": 174,
"preview": "module.exports = {\n printWidth: 140,\n singleQuote: true,\n jsxSingleQuote: true,\n trailingComma: 'none',\n "
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 3227,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
},
{
"path": "CONTRIBUTING.md",
"chars": 4310,
"preview": "<!-- markdownlint-disable MD030 -->\n\n# Contributing to Outerbridge\n\nAs the old chinese saying goes: 礼轻情意重 (It's the thou"
},
{
"path": "Dockerfile",
"chars": 623,
"preview": "# Build local monorepo image\n# docker build --no-cache -t outerbridge .\n# Run image\n# docker run -d -p 3000:3000 outerb"
},
{
"path": "LICENSE.md",
"chars": 10172,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "README.md",
"chars": 3866,
"preview": "<!-- markdownlint-disable MD030 -->\n\n# Outerbridge - Automate Web3 and Web2 applications\n\nOuterbridge is a low code/no c"
},
{
"path": "babel.config.js",
"chars": 240,
"preview": "module.exports = {\n presets: [\n '@babel/preset-typescript',\n [\n '@babel/preset-env',\n "
},
{
"path": "docker/Dockerfile",
"chars": 190,
"preview": "FROM node:14.20.0-alpine\n\nUSER root\n\nRUN apk add --no-cache git\n\n# You can install a specific version like: outerbridge@"
},
{
"path": "docker/docker-compose.yml",
"chars": 552,
"preview": "version: '3.1'\n\nservices:\n\n mongo:\n image: mongo\n ports:\n - \"27017:27017\"\n restart: always\n environmen"
},
{
"path": "package.json",
"chars": 1798,
"preview": "{\n \"name\": \"outerbridge\",\n \"version\": \"1.0.20\",\n \"private\": true,\n \"homepage\": \"https://outerbridge.io\",\n "
},
{
"path": "packages/components/README.md",
"chars": 464,
"preview": "<!-- markdownlint-disable MD030 -->\n\n# Outerbridge Components\n\nApps integration for Outerbridge. Contain Nodes and Crede"
},
{
"path": "packages/components/credentials/Alchemy/AlchemyApi.ts",
"chars": 1074,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass AlchemyApi implements INodeCredential {\n na"
},
{
"path": "packages/components/credentials/Arbiscan/ArbiscanApi.ts",
"chars": 511,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass ArbiscanApi implements INodeCredential {\n n"
},
{
"path": "packages/components/credentials/Binance/BinanceApi.ts",
"chars": 671,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass BinanceApi implements INodeCredential {\n na"
},
{
"path": "packages/components/credentials/Bscscan/BscscanApi.ts",
"chars": 508,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass BscscanApi implements INodeCredential {\n na"
},
{
"path": "packages/components/credentials/Celoscan/CeloscanApi.ts",
"chars": 511,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass CeloscanApi implements INodeCredential {\n n"
},
{
"path": "packages/components/credentials/Cronosscan/CronosscanApi.ts",
"chars": 517,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass CronosscanApi implements INodeCredential {\n "
},
{
"path": "packages/components/credentials/EmailSend/EmailSendSmtp.ts",
"chars": 1131,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass EmailSendSmtp implements INodeCredential {\n "
},
{
"path": "packages/components/credentials/Etherscan/EtherscanApi.ts",
"chars": 514,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass EtherscanApi implements INodeCredential {\n "
},
{
"path": "packages/components/credentials/Fantomscan/FantomscanApi.ts",
"chars": 517,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass FantomscanApi implements INodeCredential {\n "
},
{
"path": "packages/components/credentials/FootprintAnalytics/FootprintAnalyticsApi.ts",
"chars": 541,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass FootprintAnalyticsApi implements INodeCredenti"
},
{
"path": "packages/components/credentials/GitHub/GitHubApi.ts",
"chars": 656,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass GitHubApi implements INodeCredential {\n nam"
},
{
"path": "packages/components/credentials/Gnosisscan/GnosisscanApi.ts",
"chars": 517,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass GnosisscanApi implements INodeCredential {\n "
},
{
"path": "packages/components/credentials/GoogleDocs/GoogleDocsOAuth2.ts",
"chars": 1818,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass GoogleDocsOAuth2 implements INodeCredential {\n"
},
{
"path": "packages/components/credentials/GoogleSheet/GoogleSheetOAuth2.ts",
"chars": 1825,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass GoogleSheetOAuth2 implements INodeCredential {"
},
{
"path": "packages/components/credentials/HTTP/HTTPBasicAuth.ts",
"chars": 680,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass HTTPBasicAuth implements INodeCredential {\n "
},
{
"path": "packages/components/credentials/HTTP/HTTPBearerTokenAuth.ts",
"chars": 532,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass HTTPBearerTokenAuth implements INodeCredential"
},
{
"path": "packages/components/credentials/Helio/HelioApi.ts",
"chars": 665,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass HelioApi implements INodeCredential {\n name"
},
{
"path": "packages/components/credentials/Helius/HeliusApi.ts",
"chars": 503,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass HeliusApi implements INodeCredential {\n nam"
},
{
"path": "packages/components/credentials/Hubspot/HubspotApi.ts",
"chars": 777,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass HubspotApi implements INodeCredential {\n na"
},
{
"path": "packages/components/credentials/HuggingFace/HuggingFaceAccessToken.ts",
"chars": 729,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass HuggingFaceAccessToken implements INodeCredent"
},
{
"path": "packages/components/credentials/Imap/Imap.ts",
"chars": 1115,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass Imap implements INodeCredential {\n name: st"
},
{
"path": "packages/components/credentials/Infura/InfuraApi.ts",
"chars": 668,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass InfuraApi implements INodeCredential {\n nam"
},
{
"path": "packages/components/credentials/Mailchimp/MailchimpApi.ts",
"chars": 528,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\nclass MailchimpApi implements INodeCredential {\n n"
},
{
"path": "packages/components/credentials/MoonBeamScan/MoonBeamScanApi.ts",
"chars": 523,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass MoonBeamScanApi implements INodeCredential {\n "
},
{
"path": "packages/components/credentials/MoonRiverScan/MoonRiverScanApi.ts",
"chars": 526,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass MoonRiverScanApi implements INodeCredential {\n"
},
{
"path": "packages/components/credentials/Moralis/MoralisApi.ts",
"chars": 614,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass MoralisApi implements INodeCredential {\n na"
},
{
"path": "packages/components/credentials/Notion/NotionApi.ts",
"chars": 709,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass NotionApi implements INodeCredential {\n nam"
},
{
"path": "packages/components/credentials/OpenAI/OpenAIApi.ts",
"chars": 681,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass OpenAIApi implements INodeCredential {\n nam"
},
{
"path": "packages/components/credentials/Opensea/OpenseaApi.ts",
"chars": 508,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass OpenseaApi implements INodeCredential {\n na"
},
{
"path": "packages/components/credentials/OptimisticEtherscan/OptimisticEtherscanApi.ts",
"chars": 544,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass OptimisticEtherscanApi implements INodeCredent"
},
{
"path": "packages/components/credentials/Pinata/PinataApi.ts",
"chars": 668,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass PinataApi implements INodeCredential {\n nam"
},
{
"path": "packages/components/credentials/Polygonscan/PolygonscanApi.ts",
"chars": 520,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass PolygonscanApi implements INodeCredential {\n "
},
{
"path": "packages/components/credentials/QuickNode/QuickNodeEndpoints.ts",
"chars": 955,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass QuickNodeEndpoints implements INodeCredential "
},
{
"path": "packages/components/credentials/RequestFinanceApi/RequestFinanceApi.ts",
"chars": 529,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass RequestFinanceApi implements INodeCredential {"
},
{
"path": "packages/components/credentials/SnowTrace/SnowTraceApi.ts",
"chars": 512,
"preview": "import { INodeCredential, INodeParams } from '../../src/Interface'\n\nclass SnowTraceApi implements INodeCredential {\n "
},
{
"path": "packages/components/credentials/Telegram/TelegramApi.ts",
"chars": 764,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass TelegramApi implements INodeCredential {\n n"
},
{
"path": "packages/components/credentials/Twitter/TwitterApi.ts",
"chars": 750,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass TwitterApi implements INodeCredential {\n na"
},
{
"path": "packages/components/credentials/Typeform/TypeformApi.ts",
"chars": 508,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\nclass TypeformApi implements INodeCredential {\n na"
},
{
"path": "packages/components/credentials/TypeformWebhook/TypeformApi.ts",
"chars": 611,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\nclass TypeformApi implements INodeCredential {\n na"
},
{
"path": "packages/components/credentials/Xero/XeroOAuth2.ts",
"chars": 2179,
"preview": "import { INodeParams, INodeCredential } from '../../src/Interface'\n\nclass XeroOAuth2 implements INodeCredential {\n na"
},
{
"path": "packages/components/gulpfile.ts",
"chars": 177,
"preview": "import gulp from 'gulp'\n\nconst { src, dest } = gulp\n\nfunction copyIcons() {\n return src(['nodes/**/*.{jpg,png,svg}'])"
},
{
"path": "packages/components/nodes/Alchemy/Alchemy.ts",
"chars": 22697,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, NodeType } from '../../src"
},
{
"path": "packages/components/nodes/Alchemy/AlchemyTrigger.ts",
"chars": 8389,
"preview": "import { INode, INodeData, INodeOptionsValue, INodeParams, IProviders, NodeType } from '../../src/Interface'\nimport { ha"
},
{
"path": "packages/components/nodes/Alchemy/AlchemyWebhook.ts",
"chars": 10047,
"preview": "import { ICommonObject, INode, INodeData, INodeParams, IWebhookNodeExecutionData, NodeType } from '../../src/Interface'\n"
},
{
"path": "packages/components/nodes/Alchemy/extendedOperation.ts",
"chars": 26220,
"preview": "import { INodeOptionsValue, INodeParams, NETWORK } from '../../src'\nimport { IETHOperation } from '../../src/ETHOperatio"
},
{
"path": "packages/components/nodes/Alchemy/solanaOperation.ts",
"chars": 65260,
"preview": "import { NETWORK, NETWORK_PROVIDER } from '../../src/ChainNetwork'\nimport { IETHOperation } from '../../src/ETHOperation"
},
{
"path": "packages/components/nodes/Alchemy/subscribeOperation.ts",
"chars": 8670,
"preview": "import { NETWORK, NETWORK_PROVIDER } from '../../src/ChainNetwork'\nimport { alchemySupportedNetworks, IETHOperation } fr"
},
{
"path": "packages/components/nodes/Alchemy/supportedNetwork.ts",
"chars": 1035,
"preview": "import { INodeOptionsValue } from '../../src'\nimport { NETWORK, NETWORK_LABEL } from '../../src/ChainNetwork'\n\nexport co"
},
{
"path": "packages/components/nodes/Arbiscan/Arbiscan.ts",
"chars": 14315,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/Arbiscan/constants.ts",
"chars": 2390,
"preview": "// Account\nexport const GET_ETHER_BALANCE = {\n name: 'getEtherBalance',\n module: 'account',\n action: 'balance'\n"
},
{
"path": "packages/components/nodes/BEP20Function/BEP20Function.ts",
"chars": 16560,
"preview": "import {\n ICommonObject,\n IDbCollection,\n INode,\n INodeData,\n INodeExecutionData,\n INodeOptionsValue,\n"
},
{
"path": "packages/components/nodes/BEP20Function/helperFunctions.ts",
"chars": 5222,
"preview": "import { INodeOptionsValue, INodeParams } from '../../src'\n\nexport const BEP20Functions = [\n {\n name: 'deposit"
},
{
"path": "packages/components/nodes/BEP20Transfer/BEP20Transfer.ts",
"chars": 11147,
"preview": "import { IDbCollection, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, IWallet, NodeType } from '"
},
{
"path": "packages/components/nodes/BEP20TransferTrigger/BEP20TransferTrigger.ts",
"chars": 10194,
"preview": "import { ethers, utils } from 'ethers'\nimport { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams, IProvid"
},
{
"path": "packages/components/nodes/BNBBalanceTrigger/BNBBalanceTrigger.ts",
"chars": 8590,
"preview": "import { CronJob } from 'cron'\nimport { BigNumber, utils } from 'ethers'\nimport { ICronJobs, INode, INodeData, INodePara"
},
{
"path": "packages/components/nodes/BNBTransfer/BNBTransfer.ts",
"chars": 8077,
"preview": "import { IDbCollection, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, IWallet, NodeType } from '"
},
{
"path": "packages/components/nodes/Binance/BinancePrivate.ts",
"chars": 25482,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, NodeType } from '../../src"
},
{
"path": "packages/components/nodes/Binance/BinancePublic.ts",
"chars": 14822,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, NodeType } from '../../src"
},
{
"path": "packages/components/nodes/BlockchainEvent/BlockchainEvent.ts",
"chars": 7854,
"preview": "import { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams, IProviders, NodeType } from '../../src/Interfa"
},
{
"path": "packages/components/nodes/BscScan/Bscscan.ts",
"chars": 18389,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/BscScan/constants.ts",
"chars": 3527,
"preview": "// Account\nexport const GET_BNB_BALANCE = {\n name: 'getBnbBalance',\n module: 'account',\n action: 'balance'\n}\n\ne"
},
{
"path": "packages/components/nodes/ChainLink/ChainLink.ts",
"chars": 11230,
"preview": "import { ethers } from 'ethers'\nimport { ICommonObject, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodePa"
},
{
"path": "packages/components/nodes/ChainLink/ChainLinkFunctionWebhook.ts",
"chars": 4667,
"preview": "import {\n ICommonObject,\n IDbCollection,\n INode,\n INodeData,\n INodeOptionsValue,\n INodeParams,\n IWe"
},
{
"path": "packages/components/nodes/ChainLink/supportedNetwork.ts",
"chars": 6317,
"preview": "import { INodeOptionsValue } from '../../src'\nimport { NETWORK, NETWORK_LABEL } from '../../src/ChainNetwork'\n\nexport ty"
},
{
"path": "packages/components/nodes/ContractEventTrigger/ContractEventTrigger.ts",
"chars": 8503,
"preview": "import { ethers, utils } from 'ethers'\nimport { IContract, IDbCollection, INode, INodeData, INodeOptionsValue, INodePara"
},
{
"path": "packages/components/nodes/ContractFunctionTrigger/ContractFunctionTrigger.ts",
"chars": 11703,
"preview": "import { CronJob } from 'cron'\nimport { ethers } from 'ethers'\nimport { IContract, ICronJobs, IDbCollection, INode, INod"
},
{
"path": "packages/components/nodes/CreateERC20Token/CreateERC20Token.ts",
"chars": 9718,
"preview": "import {\n ICommonObject,\n IDbCollection,\n INode,\n INodeData,\n INodeExecutionData,\n INodeOptionsValue,\n"
},
{
"path": "packages/components/nodes/CreateNFT/CreateNFT.ts",
"chars": 14382,
"preview": "import {\n ICommonObject,\n IDbCollection,\n INode,\n INodeData,\n INodeExecutionData,\n INodeOptionsValue,\n"
},
{
"path": "packages/components/nodes/Discord/Discord.ts",
"chars": 4612,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/ERC20Function/ERC20Function.ts",
"chars": 16607,
"preview": "import {\n ICommonObject,\n IDbCollection,\n INode,\n INodeData,\n INodeExecutionData,\n INodeOptionsValue,\n"
},
{
"path": "packages/components/nodes/ERC20Function/helperFunctions.ts",
"chars": 5222,
"preview": "import { INodeOptionsValue, INodeParams } from '../../src'\n\nexport const ERC20Functions = [\n {\n name: 'deposit"
},
{
"path": "packages/components/nodes/ERC20Transfer/ERC20Transfer.ts",
"chars": 11240,
"preview": "import { IDbCollection, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, IWallet, NodeType } from '"
},
{
"path": "packages/components/nodes/ERC20TransferTrigger/ERC20TransferTrigger.ts",
"chars": 10622,
"preview": "import { BigNumber, ethers, utils } from 'ethers'\nimport { ICommonObject, INode, INodeData, INodeOptionsValue, INodePara"
},
{
"path": "packages/components/nodes/ETHBalanceTrigger/ETHBalanceTrigger.ts",
"chars": 9082,
"preview": "import { CronJob } from 'cron'\nimport { BigNumber, utils } from 'ethers'\nimport { ICronJobs, INode, INodeData, INodeOpti"
},
{
"path": "packages/components/nodes/ETHTransfer/ETHTransfer.ts",
"chars": 8202,
"preview": "import { IDbCollection, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, IWallet, NodeType } from '"
},
{
"path": "packages/components/nodes/EmailSend/EmailSend.ts",
"chars": 5264,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/EmailTrigger/EmailTrigger.ts",
"chars": 6232,
"preview": "import { INode, INodeData, INodeParams, IProviders, NodeType } from '../../src/Interface'\nimport { handleErrorMessage, r"
},
{
"path": "packages/components/nodes/Etherscan/Etherscan.ts",
"chars": 17900,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/Etherscan/constants.ts",
"chars": 3077,
"preview": "// Account\nexport const GET_ETHER_BALANCE = {\n name: 'getEtherBalance',\n module: 'account',\n action: 'balance'\n"
},
{
"path": "packages/components/nodes/ExecuteContractFunction/ExecuteContractFunction.ts",
"chars": 14028,
"preview": "import { ethers } from 'ethers'\nimport {\n IContract,\n IDbCollection,\n INode,\n INodeData,\n INodeExecutionD"
},
{
"path": "packages/components/nodes/FlowBalanceTrigger/FlowBalanceTrigger.ts",
"chars": 8339,
"preview": "import { CronJob } from 'cron'\nimport { BigNumber, BigNumberish } from 'ethers'\nimport { ICronJobs, INode, INodeData, IN"
},
{
"path": "packages/components/nodes/FootprintAnalytics/FootprintAnalytics.ts",
"chars": 13176,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, NodeType } from '../../src"
},
{
"path": "packages/components/nodes/FootprintAnalytics/constants.ts",
"chars": 28058,
"preview": "import { INodeParams } from '../../src'\n\nexport const chainInputParameters = [\n {\n label: 'Chain',\n nam"
},
{
"path": "packages/components/nodes/GitHub/GitHub.ts",
"chars": 15970,
"preview": "import axios, { AxiosRequestConfig, AxiosRequestHeaders, Method } from 'axios'\nimport { ICommonObject, INode, INodeData,"
},
{
"path": "packages/components/nodes/GitHub/GitHubWebhook.ts",
"chars": 20790,
"preview": "import axios, { AxiosRequestConfig, AxiosRequestHeaders, Method } from 'axios'\nimport { ICommonObject, INode, INodeData,"
},
{
"path": "packages/components/nodes/GoogleDocs/GoogleDocs.ts",
"chars": 9749,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, NodeType } from '../../src"
},
{
"path": "packages/components/nodes/GoogleSheet/GoogleSheet.ts",
"chars": 19131,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, NodeType } from '../../src"
},
{
"path": "packages/components/nodes/GraphQL/GraphQL.ts",
"chars": 5708,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/HTTP/HTTP.ts",
"chars": 10017,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/Helio/Helio.ts",
"chars": 4135,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/Helio/HelioWebhook.ts",
"chars": 9993,
"preview": "import { ICommonObject, INode, INodeData, INodeParams, IWebhookNodeExecutionData, NodeType } from '../../src/Interface'\n"
},
{
"path": "packages/components/nodes/Helius/Helius.ts",
"chars": 4312,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/Hubspot/Hubspot.ts",
"chars": 8705,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, NodeType } from '../../src"
},
{
"path": "packages/components/nodes/HuggingFace/HuggingFace.ts",
"chars": 7395,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, NodeType } from '../../src"
},
{
"path": "packages/components/nodes/IfElse/IfElse.ts",
"chars": 13249,
"preview": "import { CommonType, ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interf"
},
{
"path": "packages/components/nodes/ImageEditor/ImageEditor.ts",
"chars": 10202,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/Infura/Infura.ts",
"chars": 22570,
"preview": "import {\n IAttachment,\n ICommonObject,\n INode,\n INodeData,\n INodeExecutionData,\n INodeOptionsValue,\n "
},
{
"path": "packages/components/nodes/Infura/InfuraTrigger.ts",
"chars": 8381,
"preview": "import { INode, INodeData, INodeOptionsValue, INodeParams, IProviders, NodeType } from '../../src/Interface'\nimport { ha"
},
{
"path": "packages/components/nodes/Infura/extendedOperation.ts",
"chars": 9240,
"preview": "import { INodeOptionsValue, INodeParams } from '../../src'\n\nexport const IPFSOperationsOptions = [\n {\n label: "
},
{
"path": "packages/components/nodes/Infura/subscribeOperation.ts",
"chars": 3660,
"preview": "import { NETWORK_PROVIDER } from '../../src/ChainNetwork'\nimport { IETHOperation, infuraSupportedNetworks } from '../../"
},
{
"path": "packages/components/nodes/MATICBalanceTrigger/MATICBalanceTrigger.ts",
"chars": 8655,
"preview": "import { CronJob } from 'cron'\nimport { BigNumber, utils } from 'ethers'\nimport { ICronJobs, INode, INodeData, INodePara"
},
{
"path": "packages/components/nodes/MATICTransfer/MATICTransfer.ts",
"chars": 8105,
"preview": "import { IDbCollection, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, IWallet, NodeType } from '"
},
{
"path": "packages/components/nodes/Mailchimp/Mailchimp.ts",
"chars": 10765,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, NodeType } from '../../src"
},
{
"path": "packages/components/nodes/Moralis/Moralis.ts",
"chars": 26480,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, NodeType } from '../../src"
},
{
"path": "packages/components/nodes/Moralis/extendedDeFiOperation.ts",
"chars": 3307,
"preview": "import { INodeOptionsValue, INodeParams } from '../../src'\n\nexport const defiOperation = [\n {\n label: 'Get Pai"
},
{
"path": "packages/components/nodes/Moralis/extendedEVMOperation.ts",
"chars": 9397,
"preview": "import { INodeOptionsValue, INodeParams } from '../../src'\n\nexport const nativeEvmOperation = [\n {\n label: 'Ge"
},
{
"path": "packages/components/nodes/Moralis/extendedNFTOperation.ts",
"chars": 14964,
"preview": "import { INodeOptionsValue, INodeParams } from '../../src'\n\nexport const nftOperation = [\n {\n label: 'Get Wall"
},
{
"path": "packages/components/nodes/Moralis/supportedNetwork.ts",
"chars": 982,
"preview": "import { INodeOptionsValue, NETWORK_LABEL } from '../../src'\n\nexport const MoralisSupportedNetworks = [\n {\n la"
},
{
"path": "packages/components/nodes/NFTMintTrigger/NFTMintTrigger.ts",
"chars": 7188,
"preview": "import { ethers, utils } from 'ethers'\nimport { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams, IProvid"
},
{
"path": "packages/components/nodes/NFTTransferTrigger/NFTTransferTrigger.ts",
"chars": 9933,
"preview": "import { ethers, utils } from 'ethers'\nimport { ICommonObject, INode, INodeData, INodeOptionsValue, INodeParams, IProvid"
},
{
"path": "packages/components/nodes/NodeJS/NodeJS.ts",
"chars": 3005,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/Notion/Notion.ts",
"chars": 21056,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/OpenAI/OpenAI.ts",
"chars": 10485,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, NodeType } from '../../src"
},
{
"path": "packages/components/nodes/Opensea/Opensea.ts",
"chars": 16558,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/Opensea/OpenseaEventTrigger.ts",
"chars": 12039,
"preview": "import { CronJob } from 'cron'\nimport { ICommonObject, ICronJobs, INode, INodeData, INodeParams, NodeType } from '../../"
},
{
"path": "packages/components/nodes/Opensea/extendedParameters.ts",
"chars": 13034,
"preview": "import { INodeParams } from '../../src'\n\nexport const retrieveAssets = [\n {\n label: 'Owner',\n name: 'ow"
},
{
"path": "packages/components/nodes/OptimismScan/OptimismScan.ts",
"chars": 11844,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/OptimismScan/constants.ts",
"chars": 1643,
"preview": "// Account\nexport const GET_ETH_BALANCE = {\n name: 'getEthBalance',\n module: 'account',\n action: 'balance'\n}\n\ne"
},
{
"path": "packages/components/nodes/PancakeSwap/PancakeSwap.ts",
"chars": 21734,
"preview": "import { ethers } from 'ethers'\nimport {\n ICommonObject,\n IDbCollection,\n INode,\n INodeData,\n INodeExecut"
},
{
"path": "packages/components/nodes/PancakeSwap/abis/WBNB.json",
"chars": 6056,
"preview": "[\n {\n \"constant\": true,\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n "
},
{
"path": "packages/components/nodes/PancakeSwap/extendedTokens.ts",
"chars": 695,
"preview": "import { CHAIN_ID, NETWORK } from '../../src'\n\nexport interface INativeTokens {\n [key: string]: IToken\n}\n\nexport inte"
},
{
"path": "packages/components/nodes/Pinata/Pinata.ts",
"chars": 26135,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/PolygonScan/PolygonScan.ts",
"chars": 17871,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/PolygonScan/constants.ts",
"chars": 2922,
"preview": "// Account\nexport const GET_MATIC_BALANCE = {\n name: 'getMaticBalance',\n module: 'account',\n action: 'balance'\n"
},
{
"path": "packages/components/nodes/QuickNode/QuickNode.ts",
"chars": 17146,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, NodeType } from '../../src"
},
{
"path": "packages/components/nodes/QuickNode/QuickNodeTrigger.ts",
"chars": 8203,
"preview": "import { INode, INodeData, INodeOptionsValue, INodeParams, IProviders, NodeType } from '../../src/Interface'\nimport { ha"
},
{
"path": "packages/components/nodes/QuickNode/extendedOperation.ts",
"chars": 93437,
"preview": "import { NETWORK, NETWORK_PROVIDER } from '../../src/ChainNetwork'\nimport { IETHOperation, infuraSupportedNetworks } fro"
},
{
"path": "packages/components/nodes/QuickNode/solanaOperation.ts",
"chars": 89583,
"preview": "import { NETWORK, NETWORK_PROVIDER } from '../../src/ChainNetwork'\nimport { IETHOperation } from '../../src/ETHOperation"
},
{
"path": "packages/components/nodes/QuickNode/subscribeOperation.ts",
"chars": 15119,
"preview": "import { NETWORK, NETWORK_PROVIDER } from '../../src/ChainNetwork'\nimport { IETHOperation, infuraSupportedNetworks } fro"
},
{
"path": "packages/components/nodes/QuickNode/supportedNetwork.ts",
"chars": 1846,
"preview": "import { INodeOptionsValue } from '../../src'\nimport { NETWORK, NETWORK_LABEL } from '../../src/ChainNetwork'\n\nexport co"
},
{
"path": "packages/components/nodes/RequestFinance/RequestFinance.ts",
"chars": 23335,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, NodeType } from '../../src"
},
{
"path": "packages/components/nodes/RequestFinance/RequestFinanceTrigger.ts",
"chars": 12148,
"preview": "import { CronJob } from 'cron'\nimport { ICronJobs, INode, INodeData, INodeOptionsValue, INodeParams, NodeType } from '.."
},
{
"path": "packages/components/nodes/RequestFinance/constants.ts",
"chars": 13148,
"preview": "import { INodeParams } from '../../src'\n\nexport const salaryParameters = [\n {\n label: 'Salary Currency',\n "
},
{
"path": "packages/components/nodes/Scheduler/Scheduler.ts",
"chars": 12861,
"preview": "import { ICommonObject, ICronJobs, INode, INodeData, INodeParams, NodeType } from '../../src/Interface'\nimport { CronJob"
},
{
"path": "packages/components/nodes/Slack/Slack.ts",
"chars": 3424,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/SnowTrace/SnowTrace.ts",
"chars": 12587,
"preview": "import axios, { AxiosRequestConfig, Method } from 'axios'\nimport { etherscanAPIs, NETWORK } from '../../src'\nimport { IC"
},
{
"path": "packages/components/nodes/Solidity/Solidity.ts",
"chars": 8922,
"preview": "import {\n ICommonObject,\n IDbCollection,\n INode,\n INodeData,\n INodeExecutionData,\n INodeOptionsValue,\n"
},
{
"path": "packages/components/nodes/Solscan/Solscan.ts",
"chars": 10752,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/Solscan/constants.ts",
"chars": 1422,
"preview": "export const OPERATION = {\n // Account\n GET_TOKEN_BALANCES: 'getTokenBalances',\n GET_TRANSACTIONS: 'getTransact"
},
{
"path": "packages/components/nodes/Teams/Teams.ts",
"chars": 3493,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/Telegram/Telegram.ts",
"chars": 2948,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/ThirdWeb/ThirdWeb.ts",
"chars": 21340,
"preview": "import {\n ICommonObject,\n IDbCollection,\n INode,\n INodeData,\n INodeExecutionData,\n INodeOptionsValue,\n"
},
{
"path": "packages/components/nodes/ThirdWeb/ThirdWebTrigger.ts",
"chars": 8147,
"preview": "import { INode, INodeData, INodeOptionsValue, INodeParams, IProviders, NodeType } from '../../src/Interface'\nimport { re"
},
{
"path": "packages/components/nodes/ThirdWeb/constants.ts",
"chars": 25927,
"preview": "import { notEmptyRegex } from '../../src'\nimport { INodeParams } from '../../src/Interface'\n\nexport const nftDropParamet"
},
{
"path": "packages/components/nodes/ThirdWeb/supportedNetwork.ts",
"chars": 18429,
"preview": "import { INodeOptionsValue } from '../../src'\nimport { NETWORK, NETWORK_LABEL } from '../../src/ChainNetwork'\n\nexport ty"
},
{
"path": "packages/components/nodes/Twitter/Twitter.ts",
"chars": 4045,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/Typeform/Typeform.ts",
"chars": 6762,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/TypeformWebhook/TypeformWebhook.ts",
"chars": 7158,
"preview": "import { ICommonObject, INode, INodeData, INodeParams, IWebhookNodeExecutionData, NodeType } from '../../src/Interface'\n"
},
{
"path": "packages/components/nodes/Uniswap/Uniswap.ts",
"chars": 18876,
"preview": "import { ContractInterface, ethers } from 'ethers'\nimport {\n ICommonObject,\n IDbCollection,\n INode,\n INodeDa"
},
{
"path": "packages/components/nodes/Uniswap/nativeTokens.ts",
"chars": 620,
"preview": "import { ETH, ChainId } from 'simple-uniswap-sdk'\n\nexport interface INativeTokens {\n [key: string]: IToken\n}\n\nexport "
},
{
"path": "packages/components/nodes/Wait/Wait.ts",
"chars": 2994,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeParams, NodeType } from '../../src/Interface'\nimport "
},
{
"path": "packages/components/nodes/Webhook/Webhook.ts",
"chars": 6282,
"preview": "import {\n ICommonObject,\n IDbCollection,\n INode,\n INodeData,\n INodeOptionsValue,\n INodeParams,\n IWe"
},
{
"path": "packages/components/nodes/Xero/xero.ts",
"chars": 15542,
"preview": "import { ICommonObject, INode, INodeData, INodeExecutionData, INodeOptionsValue, INodeParams, NodeType } from '../../src"
},
{
"path": "packages/components/package.json",
"chars": 1394,
"preview": "{\n \"name\": \"outerbridge-components\",\n \"version\": \"1.0.12\",\n \"description\": \"Outerbridge Components\",\n \"main\""
},
{
"path": "packages/components/src/ChainNetwork.ts",
"chars": 31807,
"preview": "import { ICommonObject, INetworkMapping, INodeOptionsValue } from '.'\nimport { ethers } from 'ethers'\n\n/**\n * ENUMS\n */\n"
},
{
"path": "packages/components/src/ETHOperations.ts",
"chars": 82150,
"preview": "import { ICommonObject } from '.'\nimport { NETWORK, NETWORK_PROVIDER } from './ChainNetwork'\n\nexport interface IETHOpera"
},
{
"path": "packages/components/src/Interface.ts",
"chars": 5440,
"preview": "import { Request } from 'express'\nimport { CronJob } from 'cron'\nimport { ObjectId } from 'mongodb'\nimport { CHAIN_ID, D"
},
{
"path": "packages/components/src/abis/WBNB.json",
"chars": 6056,
"preview": "[\n {\n \"constant\": true,\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n "
},
{
"path": "packages/components/src/abis/WETH.json",
"chars": 6780,
"preview": "[\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n "
},
{
"path": "packages/components/src/index.ts",
"chars": 115,
"preview": "export * from './Interface'\nexport * from './ETHOperations'\nexport * from './ChainNetwork'\nexport * from './utils'\n"
},
{
"path": "packages/components/src/utils.ts",
"chars": 9325,
"preview": "import axios, { AxiosRequestConfig } from 'axios'\nimport ClientOAuth2 from 'client-oauth2'\nimport FormData from 'form-da"
},
{
"path": "packages/components/tsconfig.json",
"chars": 1181,
"preview": "{\n \"compilerOptions\": {\n \"lib\": [\"es2017\"],\n \"target\": \"es2017\" /* Set the JavaScript language version "
},
{
"path": "packages/server/README.md",
"chars": 2105,
"preview": "<!-- markdownlint-disable MD030 -->\n\n# Outerbridge - Automate Web3 and Web2 applications\n\nOuterbridge is a low code/no c"
},
{
"path": "packages/server/babel.config.js",
"chars": 58,
"preview": "module.exports = {\n extends: '../../babel.config.js'\n}\n"
},
{
"path": "packages/server/bin/dev",
"chars": 419,
"preview": "#!/usr/bin/env node\n\nconst oclif = require('@oclif/core')\n\nconst path = require('path')\nconst project = path.join(__dirn"
},
{
"path": "packages/server/bin/dev.cmd",
"chars": 30,
"preview": "@echo off\n\nnode \"%~dp0\\dev\" %*"
},
{
"path": "packages/server/bin/run",
"chars": 143,
"preview": "#!/usr/bin/env node\n\nconst oclif = require('@oclif/core')\n\noclif.run().then(require('@oclif/core/flush')).catch(require("
},
{
"path": "packages/server/bin/run.cmd",
"chars": 30,
"preview": "@echo off\n\nnode \"%~dp0\\run\" %*"
},
{
"path": "packages/server/nodemon.json",
"chars": 152,
"preview": "{\n \"ignore\": [\"**/*.spec.ts\", \".git\", \"node_modules\"],\n \"watch\": [\"commands\", \"index.ts\", \"src\"],\n \"exec\": \"yar"
},
{
"path": "packages/server/oauth2.html",
"chars": 168,
"preview": "<html>\n\t<script>\n\t\t(function messageToUI() {\n\t\t\twindow.opener.postMessage('success', '*');\n\t\t}());\n\t</script>\n\tAccount c"
},
{
"path": "packages/server/package.json",
"chars": 2330,
"preview": "{\n \"name\": \"outerbridge\",\n \"version\": \"1.0.20\",\n \"description\": \"Outerbridge Server\",\n \"main\": \"dist/index\","
},
{
"path": "packages/server/src/ActiveTestTriggerPool.ts",
"chars": 1750,
"preview": "import { INodeData } from 'outerbridge-components'\nimport { IActiveTestTriggerPool, IComponentNodesPool } from './Interf"
},
{
"path": "packages/server/src/ActiveTestWebhookPool.ts",
"chars": 2857,
"preview": "import { INodeData } from 'outerbridge-components'\nimport { IActiveTestWebhookPool, IComponentNodesPool, IReactFlowEdge,"
},
{
"path": "packages/server/src/ChildProcess.ts",
"chars": 15216,
"preview": "import { ICommonObject, INodeData, INodeExecutionData } from 'outerbridge-components'\nimport {\n IChildProcessMessage,"
},
{
"path": "packages/server/src/CredentialsPool.ts",
"chars": 1574,
"preview": "import { INodeCredential } from 'outerbridge-components'\n\nimport { IComponentCredentialsPool } from './Interface'\n\nimpor"
},
{
"path": "packages/server/src/DataSource.ts",
"chars": 968,
"preview": "import 'reflect-metadata'\nimport { DataSource } from 'typeorm'\nimport { Workflow } from './entity/Workflow'\nimport { Exe"
},
{
"path": "packages/server/src/DeployedWorkflowPool.ts",
"chars": 23094,
"preview": "import { INodeData, INodeExecutionData, IWebhookNodeExecutionData } from 'outerbridge-components'\nimport {\n IDeployed"
},
{
"path": "packages/server/src/Interface.ts",
"chars": 5374,
"preview": "import { ObjectId } from 'mongodb'\nimport {\n ICommonObject,\n INode as INodeComponent,\n INodeCredential,\n INo"
},
{
"path": "packages/server/src/NodesPool.ts",
"chars": 2385,
"preview": "import { IComponentNodesPool } from './Interface'\n\nimport path from 'path'\nimport { Dirent } from 'fs'\nimport { getNodeM"
},
{
"path": "packages/server/src/commands/start.ts",
"chars": 2051,
"preview": "import { Command, Flags } from '@oclif/core'\nimport path from 'path'\nimport * as Server from '../index'\nimport * as Data"
},
{
"path": "packages/server/src/entity/Contract.ts",
"chars": 587,
"preview": "/* eslint-disable */\nimport { Entity, Column, ObjectIdColumn, CreateDateColumn, UpdateDateColumn } from 'typeorm'\nimport"
}
]
// ... and 117 more files (download for full content)
About this extraction
This page contains the full source code of the Outerbridgeio/Outerbridge GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 317 files (2.3 MB), approximately 614.0k tokens, and a symbol index with 763 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.