Package Exports
- @simplepg/common
- @simplepg/common/src/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@simplepg/common) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@simplepg/common
Common utilities for SimplePage packages, providing shared functionality for ENS resolution, IPLD operations, and contract interactions.
Installation
npm install @simplepg/common
Exports
contracts
Contract ABIs and deployment addresses for the SimplePage ecosystem.
import { contracts } from '@simplepg/common'
// Access contract deployments by chain ID
const mainnetDeployments = contracts.deployments["1"]
const sepoliaDeployments = contracts.deployments["11155111"]
// Access contract ABIs
const simplePageAbi = contracts.abis.SimplePage
const simplePageManagerAbi = contracts.abis.SimplePageManager
const tokenRendererAbi = contracts.abis.TokenRenderer
const ensResolverAbi = contracts.abis.EnsResolver
// Access Universal Resolver addresses
const mainnetResolver = contracts.universalResolver["1"]
const sepoliaResolver = contracts.universalResolver["11155111"]
ENS Utilities
ensContentHashToCID(contentHash)
Converts an ENS contenthash to a CID (Content Identifier).
import { ensContentHashToCID } from '@simplepg/common'
const contentHash = '0xe30101701220bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqnbk6key6wmqkhq6m'
const cid = ensContentHashToCID(contentHash)
console.log(cid.toString()) // bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqnbk6key6wmqkhq6m
cidToENSContentHash(cid)
Converts a CID to an ENS contenthash format.
import { cidToENSContentHash } from '@simplepg/common'
import { CID } from 'multiformats/cid'
const cid = CID.parse('bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqnbk6key6wmqkhq6m')
const contentHash = cidToENSContentHash(cid)
console.log(contentHash) // 0xe30101701220bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqnbk6key6wmqkhq6m
resolveEnsDomain(viemClient, ensName, universalResolver)
Resolves an ENS domain to get its contenthash and resolver address.
import { resolveEnsDomain } from '@simplepg/common'
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'
const client = createPublicClient({
chain: mainnet,
transport: http()
})
const result = await resolveEnsDomain(
client,
'example.eth',
'0xaBd80E8a13596fEeA40Fd26fD6a24c3fe76F05fB'
)
console.log(result)
// {
// cid: CID('bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqnbk6key6wmqkhq6m'),
// resolverAddress: '0x1234...'
// }
IPLD Utilities
emptyUnixfs()
Creates an empty UnixFS filesystem with a memory blockstore. Use this for server-side operations or tests.
import { emptyUnixfs } from '@simplepg/common'
const { fs, blockstore } = emptyUnixfs()
browserUnixfs(storage)
Creates a UnixFS filesystem with a hybrid blockstore that combines memory, IndexedDB storage and localStorage for WAL. Use this for browser applications.
import { browserUnixfs } from '@simplepg/common'
const { fs, blockstore } = browserUnixfs(localStorage)
emptyCar()
Creates an empty CAR (Content Addressable aRchive).
import { emptyCar } from '@simplepg/common'
const car = emptyCar()
walkDag(blockstore, cid, seen)
Walks through a DAG (Directed Acyclic Graph) starting from a given CID and returns an array of blocks, which can be added to a CAR-file.
import { walkDag } from '@simplepg/common'
const blocks = await walkDag(blockstore, cid)
// Returns array of CarBlock objects representing the DAG
DService
DService
A service for interacting with decentralized service endpoints. Fetches endpoints from ENS 'dservice' text record.
import { DService } from '@simplepg/common'
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'
const client = createPublicClient({
chain: mainnet,
transport: http()
})
const dservice = new DService('example.eth')
// Initialize with viem client
await dservice.init(client)
// Fetch data from dservice endpoints
const response = await dservice.fetch('/api/data', {
method: 'GET'
})
Development
# Install dependencies
pnpm install
# Run tests
pnpm test
# Lint code
pnpm run lint
License
GPL-3.0-only