@ipld/block
Advanced tools
Comparing version 1.0.1 to 2.0.0
43
index.js
@@ -52,49 +52,16 @@ 'use strict' | ||
} | ||
async encode () { | ||
return this.encodeMaybeSync() | ||
} | ||
encodeMaybeSync () { | ||
encode () { | ||
if (this.opts.data) return this.opts.data | ||
let codec = module.exports.getCodec(this.codec) | ||
if (codec.then) { | ||
return codec.then(codec => { | ||
return this._encodeData(codec) | ||
}) | ||
} else { | ||
return this._encodeData(codec) | ||
} | ||
} | ||
_encodeData (codec) { | ||
let data = codec.encode(this.opts.source) | ||
if (data.then) { | ||
data.then(data => { | ||
this.opts.data = data | ||
return data | ||
}) | ||
} | ||
this.opts.data = data | ||
return data | ||
} | ||
async decode () { | ||
return this.decodeMaybeSync() | ||
} | ||
decodeMaybeSync () { | ||
decode () { | ||
let codec = module.exports.getCodec(this.codec) | ||
if (codec.then) { | ||
return codec.then(codec => this._decodeData(codec)) | ||
} else { | ||
return this._decodeData(codec) | ||
} | ||
} | ||
_decodeData (codec) { | ||
if (!this.opts.data) { | ||
let encoded = this._encodeData(codec) | ||
if (encoded.then) { | ||
return encoded.then(() => codec.decode(this.opts.data)) | ||
} | ||
} | ||
if (!this.opts.data) this.encode() | ||
return codec.decode(this.opts.data) | ||
} | ||
async reader () { | ||
let codec = await module.exports.getCodec(this.codec) | ||
reader () { | ||
let codec = module.exports.getCodec(this.codec) | ||
return codec.reader(this) | ||
@@ -101,0 +68,0 @@ } |
{ | ||
"name": "@ipld/block", | ||
"version": "1.0.1", | ||
"version": "2.0.0", | ||
"main": "index.js", | ||
@@ -22,3 +22,3 @@ "directories": { | ||
"dependencies": { | ||
"@ipld/get-codec": "^1.0.3", | ||
"@ipld/get-codec": "^2.0.0", | ||
"cids": "~0.7.1", | ||
@@ -25,0 +25,0 @@ "class-is": "^1.1.0" |
@@ -72,15 +72,2 @@ # Block API | ||
## Hot path methods | ||
We expose a few extra APIs you can use if you find IPLD in the hot paths of your own code. | ||
Since *some* codecs require async work and some do not, it's a good idea to try and factor | ||
our unnecesary async operations when you can if you can in hot paths. | ||
## `block.encodeMaybeSync` | ||
Just like `block.encode` but returns *either* a promise or the encoded value synchronously. | ||
## `block.decodeMaybeSync` | ||
Just like `block.decode` but returns *either* a proimse or the decoded value synchronously. |
@@ -13,5 +13,5 @@ 'use strict' | ||
let block = Block.encoder({ hello: 'world' }, 'dag-json') | ||
let encoded = await block.encode() | ||
let encoded = block.encode() | ||
assert.ok(Buffer.isBuffer(encoded)) | ||
same(encoded, await dagjson.encode({ hello: 'world' })) | ||
same(encoded, dagjson.encode({ hello: 'world' })) | ||
}) | ||
@@ -21,17 +21,17 @@ | ||
let block = Block.encoder({ hello: 'world' }, 'dag-cbor') | ||
let encoded = await block.encode() | ||
let encoded = block.encode() | ||
encoded.test = true | ||
assert.ok((await block.encode()).test) | ||
assert.ok((block.encode()).test) | ||
}) | ||
test('Block decode', async () => { | ||
let data = await dagjson.encode({ hello: 'world' }) | ||
let data = dagjson.encode({ hello: 'world' }) | ||
let block = Block.decoder(data, 'dag-json') | ||
let decoded = await block.decode() | ||
let decoded = block.decode() | ||
same(decoded, { hello: 'world' }) | ||
block = Block.encoder({ hello: 'world' }, 'dag-json') | ||
decoded = await block.decode() | ||
decoded = block.decode() | ||
same(decoded, { hello: 'world' }) | ||
// test data caching | ||
decoded = await block.decode() | ||
decoded = block.decode() | ||
same(decoded, { hello: 'world' }) | ||
@@ -59,38 +59,14 @@ same(await block.validate(), true) | ||
const testRaw = async () => { | ||
test('raw codec', async () => { | ||
let block = Block.encoder(Buffer.from('asdf'), 'raw') | ||
let data = await block.encode() | ||
let data = block.encode() | ||
same(data, Buffer.from('asdf')) | ||
block = Block.decoder(Buffer.from('asdf'), 'raw') | ||
data = await block.decode() | ||
data = block.decode() | ||
same(data, Buffer.from('asdf')) | ||
block = Block.encoder(Buffer.from('asdf'), 'raw') | ||
data = await block.decode() | ||
data = block.decode() | ||
same(data, Buffer.from('asdf')) | ||
} | ||
test('raw codec', async () => { | ||
await testRaw() | ||
}) | ||
test('async codec', async () => { | ||
const asyncRaw = { | ||
encode: async x => x, | ||
decode: async x => x, | ||
codec: 'raw' | ||
} | ||
let asyncModule = new Promise(resolve => resolve(asyncRaw)) | ||
asyncModule.codec = 'raw' | ||
Block.getCodec.setCodec(asyncModule) | ||
await testRaw() | ||
Block.getCodec.setCodec(asyncRaw) | ||
await testRaw() | ||
let asyncRawModule = new Promise(resolve => resolve(asyncRaw)) | ||
asyncRawModule.codec = 'raw' | ||
Block.getCodec.setCodec(asyncRawModule) | ||
await testRaw() | ||
}) | ||
test('source', async () => { | ||
@@ -102,3 +78,3 @@ let encoder = Block.encoder({ hello: 'world' }, 'dag-json') | ||
encoder = Block.encoder({}, 'dag-json') | ||
await encoder.encode() | ||
encoder.encode() | ||
same(encoder.source(), null) | ||
@@ -105,0 +81,0 @@ let block = Block.decoder(Buffer.from('asd'), 'dag-json') |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
0
10272
189
73
+ Added@ipld/get-codec@2.0.7(transitive)
+ Addedasn1.js@4.10.1(transitive)
+ Addedbrowserify-cipher@1.0.1(transitive)
+ Addedbrowserify-des@1.0.2(transitive)
+ Addedbrowserify-rsa@4.1.1(transitive)
+ Addedbrowserify-sign@4.2.3(transitive)
+ Addedcids@0.8.3(transitive)
+ Addedcreate-ecdh@4.0.4(transitive)
+ Addedcrypto-browserify@3.12.1(transitive)
+ Addeddes.js@1.1.0(transitive)
+ Addeddetect-node@2.1.0(transitive)
+ Addeddiffie-hellman@5.0.3(transitive)
+ Addederr-code@2.0.3(transitive)
+ Addedethereumjs-account@3.0.0(transitive)
+ Addedhash-base@3.0.5(transitive)
+ Addedipld-bitcoin@0.3.2(transitive)
+ Addedipld-dag-cbor@0.15.3(transitive)
+ Addedipld-dag-pb@0.18.5(transitive)
+ Addedipld-ethereum@4.0.2(transitive)
+ Addedipld-git@0.5.3(transitive)
+ Addedipld-zcash@0.4.3(transitive)
+ Addedmiller-rabin@4.0.1(transitive)
+ Addedmultibase@1.0.1(transitive)
+ Addedmultihashes@1.0.1(transitive)
+ Addedmultihashing@0.3.4(transitive)
+ Addedmultihashing-async@0.8.21.0.0(transitive)
+ Addedparse-asn1@5.1.7(transitive)
+ Addedpublic-encrypt@4.0.3(transitive)
+ Addedrandomfill@1.0.4(transitive)
+ Addedwebcrypto@0.1.1(transitive)
+ Addedzcash-block@2.0.0(transitive)
- Removed@ipld/get-codec@1.0.4(transitive)
- Removedcids@0.5.80.6.0(transitive)
- Removederr-code@1.1.2(transitive)
- Removedethereum-common@0.0.18(transitive)
- Removedethereumjs-account@2.0.5(transitive)
- Removedethereumjs-tx@1.3.7(transitive)
- Removedipld-bitcoin@0.2.0(transitive)
- Removedipld-dag-cbor@0.14.0(transitive)
- Removedipld-dag-pb@0.16.0(transitive)
- Removedipld-ethereum@3.0.0(transitive)
- Removedipld-git@0.4.0(transitive)
- Removedipld-zcash@0.2.0(transitive)
- Removedmulticodec@0.5.7(transitive)
- Removedmultihashing-async@0.7.0(transitive)
- Removedzcash-bitcore-lib@0.13.20-rc3(transitive)
Updated@ipld/get-codec@^2.0.0