Monorepo workspace for the did:ethr ecosystem libraries, managed with pnpm workspaces
and released with changesets.
| Package | Description |
|---|---|
ethr-did-resolver |
Resolve DID documents for Ethereum addresses and public keys |
ethr-did-registry |
Ethereum contract for a registry of DIDs — the ERC-1056 contract anchoring did:ethr |
ethr-7702 |
EIP-7702 PoC: EOA → ERC-1056 (did:ethr) interactions enabled by Pectra hardfork |
Requires Node.js ≥ 20 and pnpm (see packageManager in the root package.json; enable
Corepack or install with npm i -g pnpm@11.20.0).
pnpm install # install all workspace dependencies
pnpm build # build every package (CJS + ESM)
pnpm test # run every package's test suite
pnpm lint # lint every package
pnpm format # format every packageIndividual packages can be targeted with pnpm --filter <name> <script>:
pnpm --filter ethr-did-resolver test -- --watchpackages/
ethr-did-resolver/ # DID resolver library
src/
lib.commonjs/ # build output (CJS, generated)
lib.esm/ # build output (ESM, generated)
ethr-did-registry/ # ERC-1056 registry contract
contracts/
src/
artifacts/
examples/
ethr-7702/ # EIP-7702 PoC example (not published)
contracts/
webapp/
.changeset/ # changesets (release management)
Releases are driven by changesets — see
.changeset/README.md for the full flow. In short:
- Run
pnpm changesetin the package(s) you changed and commit the generated file. - The Changesets GitHub Action opens a
chore(release): version packagesPR onmaster. - Merging it bumps versions, updates
CHANGELOG.mdfiles, publishes the packages to npm and creates GitHub releases.
Each package is versioned and tagged independently (tags look like ethr-did-resolver@14.2.0).
The release pipeline needs no repository secrets:
- npm publishing uses OIDC trusted publishing
(
id-token: write), which also attaches provenance automatically for public packages in this public repository. The npm-side publisher (package settings → Access → Trusted Publisher) must point at this repository with the workflow file namerelease.yml. - All GitHub-side work (version PR, tags, releases) uses the built-in
github.token— the Changesets Action'sgithub-tokeninput already defaults to it, so no token needs to be passed.
Apache-2.0 — see LICENSE.