@erikmuir/dol-lib
v8.22.0
Published
Duke of Lizards Library
Downloads
8,485
Readme
@erikmuir/dol-lib
Shared TypeScript library for the Duke of Lizards project - a Phish-themed NFT dApp on Hedera. Wraps the Hedera SDK, DynamoDB access, the phish.net/phish.in/mirror-node API clients, IPFS/Pinata uploads, and NFT metadata/rendering used by both dol-web (the Next.js dApp) and dol-bot (the Discord bot).
Install
npm install @erikmuir/dol-libThis package is ESM-only and ships no CJS build. It also declares @aws-sdk/client-dynamodb, @aws-sdk/lib-dynamodb, and @hashgraph/sdk as peer dependencies rather than bundling its own copies - install them alongside it:
npm install @aws-sdk/client-dynamodb @aws-sdk/lib-dynamodb @hashgraph/sdk(This matters most for @hashgraph/sdk: the mint flow serializes a Hedera transaction server-side and deserializes/signs it client-side, so the version your app installs needs to actually match what this library expects.)
Usage
There is no root @erikmuir/dol-lib import - everything is exported from a subpath, grouped by concern. Import only what you need:
import { EnvKeys, getRequired } from "@erikmuir/dol-lib/env";
import { getPerformance, claimPerformance } from "@erikmuir/dol-lib/server/dynamo";
import { getPerformanceId, sortByShowDate } from "@erikmuir/dol-lib/dapp";
import type { DolPerformance } from "@erikmuir/dol-lib/types";
const tokenId = getRequired(EnvKeys.NEXT_PUBLIC_HFB_COLLECTION_ID);
const performance = await getPerformance("2023-08-04", 1);This library does not load .env files itself - that's the consuming application's job (Next.js does this automatically; a standalone script should import "dotenv/config" before importing from here).
Exported modules
| Subpath | Contents |
|---|---|
| dapp | Client-safe helpers: colors, sorting, NFT attribute mapping, lyrics, setlist formatting |
| env | EnvKeys and typed env accessors (getRequired, getOptional, getBoolean) |
| server/api | phish.net / phish.in API clients |
| server/blockchain | Hedera client, custom fees, IPFS upload/download via Pinata |
| server/dapp | Mint-pipeline orchestration: claimPerformance, NFT image rendering, metadata publish/submit |
| server/dynamo | DynamoDB access for all tables (dol-performances, dol-serials, dol-audit-logs, resources, resources-cache) |
| server/utils | Server-only utilities (base64, command-line prompts, HTML-to-PNG) |
| types | Shared TypeScript types |
| utils | Generic string/array/date/error helpers |
Development
npm test # Jest, TZ=UTC forced
npm run test:watch
npm run build # tsup -> dist/See CHANGELOG.md for release history, and the workspace-root PUNCHLIST.md for the current roadmap and design rationale behind recent changes.
License
UNLICENSED. Published to npm for practical build/CI reasons (see CHANGELOG.md), not as an open-source release - no reuse rights are granted. See LICENSE.
