npm.io
1.9.6 • Published 2 years ago

@cere-ddc-sdk/content-addressable-storage

Licence
Apache-2.0
Version
1.9.6
Deps
7
Size
1.8 MB
Vulns
1
Weekly
0
Stars
4

@cere-ddc-sdk/content-addressable-storage

Basic package for working with data in DDC.

Support commands:

  • store - store data in DDC
  • storeEncrypted - store encrypted data in DDC
  • read - download piece with data from DDC
  • readDecrypted - download and decrypt piece with data from DDC
  • search - search pieces by tags and download from DDC

Example

Setup

Initialize client by cluster id and secret phrase.

import {ContentAddressableStorage} from '@cere-ddc-sdk/content-addressable-storage';

const signatureAlgorithm = 'ed25519';
const secretPhrase = '0x9gh7...';
const cdnClusterId = 2n;

const storage = await ContentAddressableStorage.build(
    {
        clusterAddress: cdnClusterId,
        scheme: signatureAlgorithm,
    },
    secretPhrase,
);
Store

Store piece with data in DDC.

import {Piece, PieceUri, Tag} from '@cere-ddc-sdk/content-addressable-storage';

const data = new Uint8Array([1, 2, 3, 4]); // data for storing
const bucketId = 1n;
const tags = [new Tag('key', 'test')]; // tag for search
const piece = new Piece(data, tags);

const pieceUri: PieceUri = await storage.store(bucketId, piece);
Store Encrypted

Store encrypted data in DDC.

import {Piece} from '@cere-ddc-sdk/content-addressable-storage';

const data = new Uint8Array([1, 2, 3, 4]); // data for storing
const bucketId = 1n;
const tags = [new Tag('key', 'test')]; // tag for search
const piece = new Piece(data, tags);

const encryptionOptions = {dekPath: '/data/secret', dek: dekBytes};

const pieceUri = await storage.storeEncrypted(bucketId, piece, encryptionOptions);
Read

Download piece from DDC.

import {Piece} from '@cere-ddc-sdk/content-addressable-storage';

const bucketId = 1n;
const cid = 'b89mndf...'; // CID can get from pieceUri (pieceUri.cid)

const piece: Piece = await storage.read(bucketId, cid);
Read Decrypted

Read and decrypt piece from DDC.

import {Piece} from '@cere-ddc-sdk/content-addressable-storage';

const bucketId = 1n;
const cid = 'b89mndf...'; // CID can get from pieceUri (pieceUri.cid)

const piece: Piece = await storage.readDecrypted(bucketId, cid, dekBytes);
Search data

Search by tags pieces and download.

import {Piece, Query, SearchResult, Tag} from '@cere-ddc-sdk/content-addressable-storage';

const bucketId = 1n;
const tags = [new Tag('key', 'test')];
const skipData = false; // download pieces with data or metadata only
const query = new Query(bucketId, tags, skipData);

const searchResult: SearchResult = await storage.search(query);
const pieces: Array<Piece> = searchResult.pieces;