Skip to content
This repository was archived by the owner on Nov 23, 2022. It is now read-only.

Commit 6a60f07

Browse files
committed
fix(lib): fix put binary shard
1 parent 99a6dfa commit 6a60f07

1 file changed

Lines changed: 24 additions & 7 deletions

File tree

packages/lib/src/shard.ts

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,29 @@ import { UnknownShardKindError } from './errors'
44
import { EventEmitter } from 'events'
55
import { Stack } from './stack'
66
import { InvalidShardPathError } from '.'
7+
import all from 'it-all'
78

89
export 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

1516
export 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

Comments
 (0)