diff --git a/CHANGELOG.md b/CHANGELOG.md index fdcaba0..4a800ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,95 @@ + +# [0.4.0](https://github.com/multiformats/js-multicodec/compare/v0.3.0...v0.4.0) (2019-01-08) + + +* Revert "feat: make adding a custom codec possible" ([9e251ce](https://github.com/multiformats/js-multicodec/commit/9e251ce)) + + +### Chores + +* fully automatic table generation ([f3d8c0d](https://github.com/multiformats/js-multicodec/commit/f3d8c0d)) + + +### BREAKING CHANGES + +* multibase is not part of this package anymore + +As multibase works differently from multicodec, those codecs +were [removed from the multicodec table], hence those are also +removed from this implementation as we have automatic +conversion from the upstream table. + +[removed from the multicodec table]: +https://github.com/multiformats/multicodec/commit/1ec0e971d589d2fd5d5418b212846301909525bd +* the `addCodec()` function is removed + +The `addCodec()` function is removed as it doesn't work as expected. +Things break as soon as the module is loaded several times, which +can happen if dependencies require a different version. + +Steps to reproduce this problem: + +```console +$ mkdir addcodecbug +$ cd addcodecbug +$ npm install cids@0.5.7 multicodec@0.3.0 +npm WARN saveError ENOENT: no such file or directory, open '/tmp/addcodecbug/package.json' +npm notice created a lockfile as package-lock.json. You should commit this file. +npm WARN enoent ENOENT: no such file or directory, open '/tmp/addcodecbug/package.json' +npm WARN addcodecbug No description +npm WARN addcodecbug No repository field. +npm WARN addcodecbug No README data +npm WARN addcodecbug No license field. + ++ multicodec@0.3.0 ++ cids@0.5.7 +added 10 packages from 35 contributors and audited 14 packages in 1.363s +found 0 vulnerabilities +$ cat > index.js <<'EOF' +// Uses multicodec v0.2.7 +const CID = require('cids') +// Imports multicodec v0.3.0 +const multicodec = require('multicodec') + +multicodec.addCodec('my-codec', Buffer.from('5566', 'hex')) +// Works, the codec was added +console.log(multicodec.getCodeVarint('my-codec')) + +const multihash = Buffer.from( + '1220b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9', + 'hex') +const cid = new CID(1, 'my-codec', multihash) +console.log(cid) +// Fails as `my-codec` was only added to the multicodec module loaded by this +// file, and not the one loaded by `cids`. +console.log(cid.toBaseEncodedString()) +EOF +$ node index.js + +CID { + codec: 'my-codec', + version: 1, + multihash: + } +/tmp/addcodecbug/node_modules/cids/node_modules/multicodec/src/index.js:76 + throw new Error('Codec `' + codecName + '` not found') + ^ + +Error: Codec `my-codec` not found + at Object.exports.getCodeVarint (/tmp/addcodecbug/node_modules/cids/node_modules/multicodec/src/index.js:76:11) + at ClassIsWrapper.get buffer [as buffer] (/tmp/addcodecbug/node_modules/cids/src/index.js:131:22) + at ClassIsWrapper.toBaseEncodedString (/tmp/addcodecbug/node_modules/cids/src/index.js:202:44) + at Object. (/tmp/addcodecbug/index.js:17:17) + at Module._compile (internal/modules/cjs/loader.js:702:30) + at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10) + at Module.load (internal/modules/cjs/loader.js:612:32) + at tryModuleLoad (internal/modules/cjs/loader.js:551:12) + at Function.Module._load (internal/modules/cjs/loader.js:543:3) + at Function.Module.runMain (internal/modules/cjs/loader.js:744:10) +``` + + + # [0.3.0](https://github.com/multiformats/js-multicodec/compare/v0.2.7...v0.3.0) (2018-12-18)