|
| 1 | +--- |
| 2 | +"@evolution-sdk/devnet": minor |
| 3 | +--- |
| 4 | + |
| 5 | +**Restructured module exports** for better modularity and clarity: |
| 6 | +- Replaced monolithic `Devnet` and `DevnetDefault` exports with granular named exports: `Cluster`, `Config`, `Container`, `Genesis`, and `Images` |
| 7 | +- Renamed types: `DevNetCluster` → `Cluster.Cluster`, `DevNetContainer` → `Container.Container` |
| 8 | +- Moved `DEFAULT_SHELLEY_GENESIS` from `DevnetDefault` to `Config` module |
| 9 | + |
| 10 | +**New Features:** |
| 11 | + |
| 12 | +- **Genesis module** - Calculate and query genesis UTxOs with Cardano's `initialFundsPseudoTxIn` algorithm: |
| 13 | + - `calculateUtxosFromConfig()` - Deterministically compute genesis UTxOs from Shelley genesis configuration using blake2b-256 hashing |
| 14 | + - `queryUtxos()` - Query actual genesis UTxOs from running node via cardano-cli |
| 15 | + - Provides predictable UTxO structure for testing without node interaction |
| 16 | + |
| 17 | +- **Images module** - Docker image management utilities: |
| 18 | + - `isAvailable()` - Check if Docker image exists locally |
| 19 | + - `pull()` - Pull Docker images with progress logging |
| 20 | + - `ensureAvailable()` - Conditionally pull images only when needed |
| 21 | + |
| 22 | +**Improvements:** |
| 23 | + |
| 24 | +- Enhanced error handling with specific error reasons (`address_conversion_failed`, `utxo_query_failed`, `utxo_parse_failed`, `image_inspection_failed`, `image_pull_failed`) |
| 25 | +- All operations provide both Effect-based and Promise-based APIs for flexibility |
| 26 | +- Improved test coverage with descriptive cluster names for easier debugging |
| 27 | +- Full Effect error channel integration throughout the package |
| 28 | + |
| 29 | +**Breaking Changes:** |
| 30 | + |
| 31 | +Migration required for existing devnet users: |
| 32 | + |
| 33 | +```typescript |
| 34 | +// Before |
| 35 | +import { Devnet, DevnetDefault } from "@evolution-sdk/devnet" |
| 36 | + |
| 37 | +const cluster = await Devnet.Cluster.make() |
| 38 | +const config = DevnetDefault.DEFAULT_SHELLEY_GENESIS |
| 39 | + |
| 40 | +// After |
| 41 | +import { Cluster, Config } from "@evolution-sdk/devnet" |
| 42 | + |
| 43 | +const cluster = await Cluster.make() |
| 44 | +const config = Config.DEFAULT_SHELLEY_GENESIS |
| 45 | +``` |
| 46 | + |
| 47 | +All module functionality remains the same, only import syntax has changed to use destructured named exports from the main package. |
0 commit comments