@kyve/core-beta
Version:
🚀 The base KYVE node implementation.
47 lines (40 loc) • 1.31 kB
text/typescript
import { Node } from "../..";
import { DataItem } from "../../types";
import { bytesToBundle, standardizeJSON } from "../../utils";
/**
* saveBundleDecompress decompresses a bundle with the specified compression.
* It never throws an error and returns no data if one occurs.
*
* @method saveBundleDecompress
* @param {Node} this
* @param {Buffer} rawStorageData
* @return {Promise<DataItem[]>}
*/
export async function saveBundleDecompress(
this: Node,
rawStorageData: Buffer
): Promise<DataItem[]> {
try {
// get compression the proposed bundle was compressed with
this.logger.debug(
`compressionFactory(${this.pool.bundle_proposal?.compression_id ?? 0})`
);
const compression = this.compressionFactory(
this.pool.bundle_proposal?.compression_id ?? 0
);
this.logger.debug(`this.compression.decompress($RAW_STORAGE_DATA)`);
const storageBundle = bytesToBundle(
await compression.decompress(rawStorageData)
);
this.logger.info(
`Successfully decompressed bundle with Compression:${compression.name}`
);
return standardizeJSON(storageBundle);
} catch (err) {
this.logger.error(
`Could not decompress bundle with Compression. Continuing ...`
);
this.logger.error(standardizeJSON(err));
return [];
}
}