diff --git a/package-lock.json b/package-lock.json index 03af6841..37f48c2f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6637,6 +6637,11 @@ "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "dev": true }, + "lzma": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/lzma/-/lzma-2.3.2.tgz", + "integrity": "sha1-N4OySFi5wOdHoN88vx+1/KqSxEE=" + }, "macos-release": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.4.1.tgz", diff --git a/package.json b/package.json index 97b2c8f7..87afdf82 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "@oceanprotocol/contracts": "^0.4.4", "decimal.js": "^10.2.0", "fs": "0.0.1-security", + "lzma": "^2.3.2", "node-fetch": "^2.6.1", "save-file": "^2.3.1", "uuid": "^8.3.0", diff --git a/src/metadatastore/OnChainMetaData.ts b/src/metadatastore/OnChainMetaData.ts index 6011dedf..91b69bce 100644 --- a/src/metadatastore/OnChainMetaData.ts +++ b/src/metadatastore/OnChainMetaData.ts @@ -6,6 +6,7 @@ import Web3 from 'web3' import defaultDDOContractABI from '@oceanprotocol/contracts/artifacts/Metadata.json' import { didZeroX } from '../utils' import { Compressor } from 'xz' +import { LZMA } from 'lzma' /** * Provides an interface with Metadata Store. @@ -37,12 +38,21 @@ export class OnChainMetadataStore { /** * Compress DDO using xz/lzma2 */ + public async compressDDO(ddo: DDO): Promise { const data = DDO.serialize(ddo) - const buffer = Buffer.from(data) + const buffer = Buffer.from(data, 'utf-8') const compression = new Compressor({ preset: 9 }) - const compressed = await compression.updatePromise(buffer) - return this.getHex(compressed.toString()) + await compression.updatePromise(buffer) + const compressed = await compression.finalPromise() + // const lzma = new LZMA() + // lzma.disableEndMark = true + // const compressedLzma = lzma.compress(data, 9) + const compressedXz = compressed.toJSON().data + console.log(compressedXz) + // console.log(compressedLzma) + const final = this.getHex(compressedXz) + return final } /**