Observed since 20 Oct, 17:52 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
0xppl-solana-portfolio
[](https://www.npmjs.com/package/@sonarwatch/portfolio-core) [
To add data to the Cache, you will mainly use the following methods on the cache object :
cache.setTokenPriceSource()cache.setItem()Warning If your Job is adding prices for tokens, make sure to verify those prices by :
wallet-tokens-<networkId>, this will fetch all tokens within the wallet and get the prices from the Cache (local + distant). (see below for commands)You can create as many Jobs as needed by plugins.
A Fetcher is were the logic stand, it usually (not necessarily) recover some data from the Cache, then use it to compute the value of the assets deposited by a user on a protocol.
Some examples of Fetchers :
You can create as many Fetchers as needed by plugins, each Fetcher being entitled to a Networkd (Solana, Sui, Aptos etc..).
You always need to provide a user address to run a fetcher.
npm install
.env file by running :cp .env.example .env
npx nx generate @sonarwatch/portfolio-plugins:plugin my-super-protocol
Job or a Fetcher (see commands below)Once you're down writing the logic on your Job or Fetcher :
Job(s) and Fetcher(s) to your index.ts file in your plugin folderFetchers and Jobs to the packages\plugins\src\index.ts fileBefore anything, you need to run the Cache on your local network, simply run :
npx nx run plugins:serve-cache
If you are adding a liquidity protocol
You're now ready to try your Fetcher or Job by running the following commands :
npx nx run plugins:run-job jobId
Example :
# Run the job mango-banks
npx nx run plugins:run-job mango-banks
npx nx run plugins:run-fetcher fetcherId userAddress
Example :
# Run the fetcher mango-collateral on the address Demo...tKG
npx nx run plugins:run-fetcher mango-collateral DemoSX9F2zXfQLtBr56Yr5he15P7viZWsYJpSDAX3tKG
If you need the price of a token but don't find it in the Cache, please submit a PR to our token list repository
Here is a list of useful command that can help you during your integration.
# Getting started
npm install
cp .env.example .env
# Set your RPCs
# Generate a plugin
npx nx generate @sonarwatch/portfolio-plugins:plugin my-super-protocol
# Generator a job
npx nx generate @sonarwatch/portfolio-plugins:job --jobName=myJob --pluginId=my-super-protocol
# Generator a fetcher
npx nx generate @sonarwatch/portfolio-plugins:fetcher --fetcherName=myFetcher --pluginId=my-super-protocol
# Serve cache in background
npx nx run plugins:serve-cache
# Run a job
npx nx run plugins:run-job mango-banks
npx nx run plugins:run-job wallet-tokens-aptos
# Run a fetcher
npx nx run plugins:run-fetcher mango-collateral DemoSX9F2zXfQLtBr56Yr5he15P7viZWsYJpSDAX3tKG
npx nx run plugins:run-fetcher marinade-tickets DemoSX9F2zXfQLtBr56Yr5he15P7viZWsYJpSDAX3tKG
npx nx run plugins:run-fetcher wallet-tokens-aptos \"0xaa3fca2b46efb0c9b63e9c92ee31a28b9f22ca52a36967151416706f2ca138c6\"
npx nx run plugins:run-fetcher wallet-tokens-aptos aa3fca2b46efb0c9b63e9c92ee31a28b9f22ca52a36967151416706f2ca138c6
npx nx run plugins:run-fetcher wallet-tokens-ethereum-top \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\"
npx nx run plugins:run-fetcher wallet-tokens-ethereum-top d8dA6BF26964aF9D7eEd9e03E53415D37aA96045
# Run a airdrop fetcher
npx nx run plugins:run-airdrop-fetcher drift-airdrop-1 DemoSX9F2zXfQLtBr56Yr5he15P7viZWsYJpSDAX3tKG
npx nx run core:build
npx nx run plugins:build
npx nx run core:version --releaseAs=patch
npx nx run plugins:version --releaseAs=patch
npx nx run core:version --releaseAs=minor
npx nx run plugins:version --releaseAs=minor
npm run nx:version
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
@aave/contract-helpersEnvironment{
"local_name": "@aave/contract-helpers",
"alias": false,
"peer_metadata": null
} | ^1.28.2 | runtime |
@aave/math-utilsEnvironment{
"local_name": "@aave/math-utils",
"alias": false,
"peer_metadata": null
} | ^1.28.2 | runtime |
@aptos-labs/ts-sdkEnvironment{
"local_name": "@aptos-labs/ts-sdk",
"alias": false,
"peer_metadata": null
} | ^1.19.0 | runtime |
@bonfida/spl-name-serviceEnvironment{
"local_name": "@bonfida/spl-name-service",
"alias": false,
"peer_metadata": null
} | ^1.0.10 | runtime |
@cosmjs/cosmwasm-stargateEnvironment{
"local_name": "@cosmjs/cosmwasm-stargate",
"alias": false,
"peer_metadata": null
} | ^0.31.1 | runtime |
@ethersproject/addressEnvironment{
"local_name": "@ethersproject/address",
"alias": false,
"peer_metadata": null
} | ^5.7.0 | runtime |
@ethersproject/bignumberEnvironment{
"local_name": "@ethersproject/bignumber",
"alias": false,
"peer_metadata": null
} | ^5.7.0 | runtime |
@ethersproject/bytesEnvironment{
"local_name": "@ethersproject/bytes",
"alias": false,
"peer_metadata": null
} | ^5.7.0 | runtime |
@ethersproject/constantsEnvironment{
"local_name": "@ethersproject/constants",
"alias": false,
"peer_metadata": null
} | ^5.7.0 | runtime |
@ethersproject/providersEnvironment{
"local_name": "@ethersproject/providers",
"alias": false,
"peer_metadata": null
} | ^5.7.2 | runtime |
@ethersproject/unitsEnvironment{
"local_name": "@ethersproject/units",
"alias": false,
"peer_metadata": null
} | ^5.7.0 | runtime |
@metaplex-foundation/beetEnvironment{
"local_name": "@metaplex-foundation/beet",
"alias": false,
"peer_metadata": null
} | ^0.7.1 | runtime |
@metaplex-foundation/beet-solanaEnvironment{
"local_name": "@metaplex-foundation/beet-solana",
"alias": false,
"peer_metadata": null
} | ^0.4.0 | runtime |
@metaplex-foundation/umi-serializers-encodingsEnvironment{
"local_name": "@metaplex-foundation/umi-serializers-encodings",
"alias": false,
"peer_metadata": null
} | ^0.8.9 | runtime |
@mysten/bcsEnvironment{
"local_name": "@mysten/bcs",
"alias": false,
"peer_metadata": null
} | ^0.11.1 | runtime |
@mysten/suiEnvironment{
"local_name": "@mysten/sui",
"alias": false,
"peer_metadata": null
} | ^1.12.0 | runtime |
@onsol/tldparserEnvironment{
"local_name": "@onsol/tldparser",
"alias": false,
"peer_metadata": null
} | ^0.6.1 | runtime |
@sei-js/coreEnvironment{
"local_name": "@sei-js/core",
"alias": false,
"peer_metadata": null
} | ^3.0.1 | runtime |
@sei-js/protoEnvironment{
"local_name": "@sei-js/proto",
"alias": false,
"peer_metadata": null
} | ^3.0.1 | runtime |
@solana/web3.jsEnvironment{
"local_name": "@solana/web3.js",
"alias": false,
"peer_metadata": null
} | ^1.91.8 | runtime |
@solanafm/explorer-kitEnvironment{
"local_name": "@solanafm/explorer-kit",
"alias": false,
"peer_metadata": null
} | ^1.1.3 | runtime |
@solanafm/explorer-kit-idlsEnvironment{
"local_name": "@solanafm/explorer-kit-idls",
"alias": false,
"peer_metadata": null
} | ^1.1.3 | runtime |
axiosEnvironment{
"local_name": "axios",
"alias": false,
"peer_metadata": null
} | ^1.7.7 | runtime |
bignumber.jsEnvironment{
"local_name": "bignumber.js",
"alias": false,
"peer_metadata": null
} | ^9.1.2 | runtime |
bitcoin-address-validationEnvironment{
"local_name": "bitcoin-address-validation",
"alias": false,
"peer_metadata": null
} | ^2.2.1 | runtime |
bn.jsEnvironment{
"local_name": "bn.js",
"alias": false,
"peer_metadata": null
} | ^5.2.1 | runtime |
decimal.jsEnvironment{
"local_name": "decimal.js",
"alias": false,
"peer_metadata": null
} | ^10.4.3 | runtime |
dsa-connectEnvironment{
"local_name": "dsa-connect",
"alias": false,
"peer_metadata": null
} | ^0.6.47 | runtime |
ethersEnvironment{
"local_name": "ethers",
"alias": false,
"peer_metadata": null
} | ^5.7.2 | runtime |
graphqlEnvironment{
"local_name": "graphql",
"alias": false,
"peer_metadata": null
} | ^16.8.1 | runtime |
graphql-requestEnvironment{
"local_name": "graphql-request",
"alias": false,
"peer_metadata": null
} | ^6.1.0 | runtime |
ioredisEnvironment{
"local_name": "ioredis",
"alias": false,
"peer_metadata": null
} | ^5.4.1 | runtime |
js-sha256Environment{
"local_name": "js-sha256",
"alias": false,
"peer_metadata": null
} | ^0.11.0 | runtime |
longEnvironment{
"local_name": "long",
"alias": false,
"peer_metadata": null
} | ^5.2.3 | runtime |
osmojsEnvironment{
"local_name": "osmojs",
"alias": false,
"peer_metadata": null
} | ^16.5.1 | runtime |
reflect-metadataEnvironment{
"local_name": "reflect-metadata",
"alias": false,
"peer_metadata": null
} | ^0.1.13 | runtime |
tslibEnvironment{
"local_name": "tslib",
"alias": false,
"peer_metadata": null
} | ^2.3.0 | runtime |
unstorageEnvironment{
"local_name": "unstorage",
"alias": false,
"peer_metadata": null
} | ^1.10.2 | runtime |
viemEnvironment{
"local_name": "viem",
"alias": false,
"peer_metadata": null
} | ^1.16.5 | runtime |
web3Environment{
"local_name": "web3-v1",
"alias": true,
"peer_metadata": null
} | npm:web3@^1.5.0 | runtime |
web3Environment{
"local_name": "web3-v4",
"alias": true,
"peer_metadata": null
} | npm:web3@^4.0.3 | runtime |
@jscutlery/semverEnvironment{
"local_name": "@jscutlery/semver",
"alias": false,
"peer_metadata": null
} | 3.4.1 | development |
@nx/devkitEnvironment{
"local_name": "@nx/devkit",
"alias": false,
"peer_metadata": null
} | 16.8.1 | development |
@nx/esbuildEnvironment{
"local_name": "@nx/esbuild",
"alias": false,
"peer_metadata": null
} | 16.8.1 | development |
@nx/eslint-pluginEnvironment{
"local_name": "@nx/eslint-plugin",
"alias": false,
"peer_metadata": null
} | 16.8.1 | development |
@nx/jestEnvironment{
"local_name": "@nx/jest",
"alias": false,
"peer_metadata": null
} | 16.8.1 | development |
@nx/jsEnvironment{
"local_name": "@nx/js",
"alias": false,
"peer_metadata": null
} | 16.8.1 | development |
@nx/linterEnvironment{
"local_name": "@nx/linter",
"alias": false,
"peer_metadata": null
} | 16.8.1 | development |
@nx/nodeEnvironment{
"local_name": "@nx/node",
"alias": false,
"peer_metadata": null
} | 16.8.1 | development |
@nx/pluginEnvironment{
"local_name": "@nx/plugin",
"alias": false,
"peer_metadata": null
} | 16.8.1 | development |
@types/bn.jsEnvironment{
"local_name": "@types/bn.js",
"alias": false,
"peer_metadata": null
} | ^5.1.1 | development |
@types/jestEnvironment{
"local_name": "@types/jest",
"alias": false,
"peer_metadata": null
} | ^29.4.0 | development |
@types/nodeEnvironment{
"local_name": "@types/node",
"alias": false,
"peer_metadata": null
} | 20.10.3 | development |
@typescript-eslint/eslint-pluginEnvironment{
"local_name": "@typescript-eslint/eslint-plugin",
"alias": false,
"peer_metadata": null
} | 5.62.0 | development |
@typescript-eslint/parserEnvironment{
"local_name": "@typescript-eslint/parser",
"alias": false,
"peer_metadata": null
} | 5.62.0 | development |
esbuildEnvironment{
"local_name": "esbuild",
"alias": false,
"peer_metadata": null
} | 0.19.9 | development |
eslintEnvironment{
"local_name": "eslint",
"alias": false,
"peer_metadata": null
} | 8.46.0 | development |
eslint-config-airbnb-baseEnvironment{
"local_name": "eslint-config-airbnb-base",
"alias": false,
"peer_metadata": null
} | ^15.0.0 | development |
eslint-config-airbnb-typescriptEnvironment{
"local_name": "eslint-config-airbnb-typescript",
"alias": false,
"peer_metadata": null
} | ^17.0.0 | development |
eslint-config-prettierEnvironment{
"local_name": "eslint-config-prettier",
"alias": false,
"peer_metadata": null
} | 8.1.0 | development |
jestEnvironment{
"local_name": "jest",
"alias": false,
"peer_metadata": null
} | ^29.4.1 | development |
jest-environment-nodeEnvironment{
"local_name": "jest-environment-node",
"alias": false,
"peer_metadata": null
} | ^29.4.1 | development |
listhenEnvironment{
"local_name": "listhen",
"alias": false,
"peer_metadata": null
} | ^1.5.5 | development |
ngx-deploy-npmEnvironment{
"local_name": "ngx-deploy-npm",
"alias": false,
"peer_metadata": null
} | ^6.0.0 | development |
npm-run-allEnvironment{
"local_name": "npm-run-all",
"alias": false,
"peer_metadata": null
} | ^4.1.5 | development |
nxEnvironment{
"local_name": "nx",
"alias": false,
"peer_metadata": null
} | 16.8.1 | development |
prettierEnvironment{
"local_name": "prettier",
"alias": false,
"peer_metadata": null
} | ^2.6.2 | development |
ts-jestEnvironment{
"local_name": "ts-jest",
"alias": false,
"peer_metadata": null
} | ^29.1.0 | development |
ts-nodeEnvironment{
"local_name": "ts-node",
"alias": false,
"peer_metadata": null
} | ^10.9.1 | development |
tsconfig-pathsEnvironment{
"local_name": "tsconfig-paths",
"alias": false,
"peer_metadata": null
} | ^4.2.0 | development |
typedocEnvironment{
"local_name": "typedoc",
"alias": false,
"peer_metadata": null
} | ^0.25.4 | development |
typescriptEnvironment{
"local_name": "typescript",
"alias": false,
"peer_metadata": null
} | ~5.3.2 | development |
verdaccioEnvironment{
"local_name": "verdaccio",
"alias": false,
"peer_metadata": null
} | ^5.0.4 | development |
Source distribution
{
"integrity": "sha512-dV5U4EL5+QtIikKBSpiTdHNJqyhgEKruxZvtmsqfrrH0By35RQJS2XL4cE/6PAze8RDcpxizhhbYHIpJeqaLWQ==",
"shasum": "950b9817662ad38ea43b8061de923e5860cfc094",
"tarball": "https://registry.npmjs.org/0xppl-solana-portfolio/-/0xppl-solana-portfolio-1.0.0.tgz",
"fileCount": 1383,
"unpackedSize": 3483073,
"signatures": [
{
"keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA",
"sig": "MEUCIDH9h/P5XWzTMij7vocQ/s3XjaA4RjA9AUGjUigRxdlIAiEAytszwrm97zBbiIhmue+Bn4GNP+50BG6eO81uRub7c4w="
}
]
}Observed since 20 Oct, 17:52 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:a57db85b05e517ba2af4f06e8a6091765660d9dc8135e00237cd51fdbad42bbb