Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,6 @@
"multiformats": "^13.1.0"
},
"devDependencies": {
"aegir": "^46.0.0"
"aegir": "^47.0.6"
}
}
4 changes: 3 additions & 1 deletion src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,9 @@ export function decode (bytes) {
const link = {}
try {
link.Hash = CID.decode(l.Hash)
} catch (e) {}
} catch {
// ignore parse fail
}
if (!link.Hash) {
throw new Error('Invalid Hash field found in link, expected CID')
}
Expand Down
4 changes: 3 additions & 1 deletion src/util.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { CID } from 'multiformats/cid'

/* eslint-disable complexity, no-nested-ternary */

/**
* @typedef {import('./interface.js').PBLink} PBLink
* @typedef {import('./interface.js').PBNode} PBNode
Expand Down Expand Up @@ -225,7 +227,7 @@ export function validate (node) {

/**
* @param {Uint8Array} data
* @param {PBLink[]} [links=[]]
* @param {PBLink[]} [links]
* @returns {PBNode}
*/
export function createNode (data, links = []) {
Expand Down
3 changes: 3 additions & 0 deletions test/test-edges.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ describe('Edge cases', () => {
// @ts-ignore RawPBLink needs Name but we don't have one
encodeNode(form))
, expected)
// @ts-expect-error
assert.deepEqual(decodeNode(bytes.fromHex(expected)), form)

form = { Links: [{ Hash: acidBytes, Tsize: Number.MAX_SAFE_INTEGER }] }
Expand All @@ -27,6 +28,7 @@ describe('Edge cases', () => {
// @ts-ignore RawPBLink needs Name but we don't have one
encodeNode(form))
, expected)
// @ts-expect-error
assert.deepEqual(decodeNode(bytes.fromHex(expected)), form)

// too big, we can decode but not encode, it's a tiny bit too hard to bother
Expand All @@ -36,6 +38,7 @@ describe('Edge cases', () => {
// @ts-ignore RawPBLink needs Name but we don't have one
encodeNode(form)
}, /too large/)
// @ts-expect-error
assert.deepEqual(decodeNode(bytes.fromHex(expected)), form)
})

Expand Down
17 changes: 9 additions & 8 deletions test/ts-use/src/main.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
import { deepStrictEqual } from 'assert'
/* eslint-disable no-console */

import type { BlockEncoder, BlockDecoder, BlockCodec } from 'multiformats/codecs/interface'
import { deepStrictEqual } from 'assert'
import * as dagPB from '@ipld/dag-pb'
import type { PBNode } from '@ipld/dag-pb'
import type { BlockEncoder, BlockDecoder, BlockCodec } from 'multiformats/codecs/interface'

const exampleNode:PBNode = { Data: Uint8Array.from([0, 1, 2, 3, 4]), Links: [] }
const exampleBytes = [0x0a, 5, 0, 1, 2, 3, 4]

const main = () => {
const main = (): void => {
// make sure we have a full codec
useCodec(dagPB)
}

function useCodec (codec: BlockCodec<0x70, any>) {
function useCodec (codec: BlockCodec<0x70, any>): void {
// use only as a BlockEncoder
useEncoder(codec)

Expand All @@ -26,26 +27,26 @@ function useCodec (codec: BlockCodec<0x70, any>) {
useBlockCodec(codec)
}

function useEncoder<Codec extends number> (encoder: BlockEncoder<Codec, PBNode>) {
function useEncoder<Codec extends number> (encoder: BlockEncoder<Codec, PBNode>): void {
deepStrictEqual(encoder.code, 0x70)
deepStrictEqual(encoder.name, 'dag-pb')
deepStrictEqual(Array.from(encoder.encode(exampleNode)), exampleBytes)
console.log('[TS] ✓ { encoder: BlockEncoder }')
}

function useDecoder<Codec extends number> (decoder: BlockDecoder<Codec, Uint8Array>) {
function useDecoder<Codec extends number> (decoder: BlockDecoder<Codec, Uint8Array>): void {
deepStrictEqual(decoder.code, 0x70)
deepStrictEqual(decoder.decode(Uint8Array.from(exampleBytes)), exampleNode)
console.log('[TS] ✓ { decoder: BlockDecoder }')
}

function useDecoderWithArrayBuffer<Codec extends number> (decoder: BlockDecoder<Codec, Uint8Array>) {
function useDecoderWithArrayBuffer<Codec extends number> (decoder: BlockDecoder<Codec, Uint8Array>): void {
deepStrictEqual(decoder.code, 0x70)
deepStrictEqual(decoder.decode(Uint8Array.from(exampleBytes).buffer), exampleNode)
console.log('[TS] ✓ { decoder: BlockDecoder }')
}

function useBlockCodec<Codec extends number> (blockCodec: BlockCodec<Codec, PBNode>) {
function useBlockCodec<Codec extends number> (blockCodec: BlockCodec<Codec, PBNode>): void {
deepStrictEqual(blockCodec.code, 0x70)
deepStrictEqual(blockCodec.name, 'dag-pb')
deepStrictEqual(Array.from(blockCodec.encode(exampleNode)), exampleBytes)
Expand Down