@@ -4,23 +4,29 @@ import { UnknownShardKindError } from './errors'
44import { EventEmitter } from 'events'
55import { Stack } from './stack'
66import { InvalidShardPathError } from '.'
7+ import all from 'it-all'
78
89export enum ShardKind {
910 // eslint-disable-next-line no-unused-vars
1011 Binary = 'binary' ,
1112 // eslint-disable-next-line no-unused-vars
12- Object = 'object'
13+ Object = 'object' ,
1314}
1415
1516export class Shard < TData = Buffer | Record < string , any > > {
1617 private events = new EventEmitter ( )
1718
18- private constructor ( public stack : Stack , public cid : CID , public kind : ShardKind , public data : TData ) { }
19+ private constructor (
20+ public stack : Stack ,
21+ public cid : CID ,
22+ public kind : ShardKind ,
23+ public data : TData
24+ ) { }
1925
2026 public async put ( data : TData ) : Promise < void > {
2127 switch ( this . kind ) {
2228 case ShardKind . Binary :
23- this . cid = await this . stack . ipfs . block . put ( new Uint8Array ( data as unknown as Buffer ) )
29+ this . cid = ( await this . stack . ipfs . add ( data as any as Uint8Array ) ) . cid
2430 break
2531 case ShardKind . Object :
2632 this . cid = await this . stack . ipfs . dag . put ( data )
@@ -36,7 +42,11 @@ export class Shard<TData = Buffer | Record<string, any>> {
3642 this . events . on ( event , listener )
3743 }
3844
39- public static async new < TData = unknown > ( stack : Stack , kind : ShardKind , data : TData ) : Promise < Shard < TData > > {
45+ public static async new < TData = unknown > (
46+ stack : Stack ,
47+ kind : ShardKind ,
48+ data : TData
49+ ) : Promise < Shard < TData > > {
4050 const cid : CID = await stack . ipfs . dag . put ( { empty : true } )
4151
4252 const shard = new Shard < TData > ( stack , cid , kind , data )
@@ -45,12 +55,16 @@ export class Shard<TData = Buffer | Record<string, any>> {
4555 return shard
4656 }
4757
48- public static async create < TData = Buffer | Record < string , any > > ( stack : Stack , cid : CID , kind : ShardKind ) : Promise < Shard < TData > > {
58+ public static async create < TData = Buffer | Record < string , any > > (
59+ stack : Stack ,
60+ cid : CID ,
61+ kind : ShardKind
62+ ) : Promise < Shard < TData > > {
4963 let data
5064
5165 switch ( kind ) {
5266 case ShardKind . Binary :
53- data = Buffer . from ( await stack . ipfs . block . get ( cid ) )
67+ data = Buffer . from ( await all ( stack . ipfs . cat ( cid ) ) )
5468 break
5569 case ShardKind . Object :
5670 data = ( await stack . ipfs . dag . get ( cid ) ) . value
@@ -62,7 +76,10 @@ export class Shard<TData = Buffer | Record<string, any>> {
6276 return new Shard ( stack , cid , kind , data )
6377 }
6478
65- public static from < TData = Buffer | Record < string , any > > ( stack : Stack , path : string ) : Promise < Shard < TData > > {
79+ public static from < TData = Buffer | Record < string , any > > (
80+ stack : Stack ,
81+ path : string
82+ ) : Promise < Shard < TData > > {
6683 // eslint-disable-next-line no-unused-vars
6784 const [ _ , shard , cid , kind ] = path . split ( '/' )
6885
0 commit comments