File tree Expand file tree Collapse file tree 4 files changed +90
-0
lines changed Expand file tree Collapse file tree 4 files changed +90
-0
lines changed Original file line number Diff line number Diff line change
1
+ {
2
+ "name" : " multicodec-packed" ,
3
+ "version" : " 0.0.0" ,
4
+ "description" : " JavaScript implementation of the multicodec-packed specification" ,
5
+ "main" : " src/index.js" ,
6
+ "directories" : {
7
+ "test" : " test"
8
+ },
9
+ "scripts" : {
10
+ "test" : " echo \" Error: no test specified\" && exit 1"
11
+ },
12
+ "repository" : {
13
+ "type" : " git" ,
14
+ "url" : " git+https://github.com/multiformats/js-multicodec-packed.git"
15
+ },
16
+ "keywords" : [
17
+ " IPFS" ,
18
+ " multiformats" ,
19
+ " multicodec" ,
20
+ " binary" ,
21
+ " packed" ,
22
+ " the" ,
23
+ " data!"
24
+ ],
25
+ "author" : " David Dias <daviddias@ipfs.io>" ,
26
+ "license" : " MIT" ,
27
+ "bugs" : {
28
+ "url" : " https://github.com/multiformats/js-multicodec-packed/issues"
29
+ },
30
+ "homepage" : " https://github.com/multiformats/js-multicodec-packed#readme" ,
31
+ "dependencies" : {
32
+ "varint" : " ^4.0.1"
33
+ }
34
+ }
Original file line number Diff line number Diff line change
1
+ const varint = require ( 'varint' )
2
+
3
+ exports = module . exports
4
+
5
+ // Miscellaneous
6
+ exports . raw = varintBuf ( 0 ) // 0x00
7
+
8
+ // Multiformats
9
+ exports . multicodec = varintBuf ( 64 ) // 0x40
10
+ exports . multihash = varintBuf ( 65 ) // 0x41
11
+ exports . multiaddr = varintBuf ( 66 ) // 0x42
12
+
13
+ // Serialization formats
14
+ exports . protobuf = varintBuf ( 80 ) // 0x50
15
+ exports . cbor = varintBuf ( 81 ) // 0x51
16
+ exports . rlp = varintBuf ( 96 ) // 0x60
17
+
18
+ function varintBuf ( n ) {
19
+ return new Buffer ( varint . encode ( n ) )
20
+ }
Original file line number Diff line number Diff line change
1
+ 'use strict'
2
+
3
+ const table = require ( './base-table' )
4
+ const varint = require ( 'varint' )
5
+
6
+ exports = module . exports
7
+
8
+ exports . addPrefix = ( multicodecStrOrCode , data ) => {
9
+ let pfx
10
+
11
+ if ( Buffer . isBuffer ( multicodecStrOrCode ) ) {
12
+ pfx = multicodecStrOrCode
13
+ } else {
14
+ if ( table [ multicodecStrOrCode ] ) {
15
+ pfx = table [ multicodecStrOrCode ]
16
+ } else {
17
+ throw new Error ( 'multicodec not recognized' )
18
+ }
19
+ }
20
+ return Buffer . concat ( [ pfx , data ] )
21
+ }
22
+
23
+ exports . rmPrefix = ( data ) => {
24
+ varint . decode ( data )
25
+ return data . slice ( varint . decode . bytes )
26
+ }
27
+
28
+ exports . getMulticodec = ( prefixedData ) => {
29
+ const code = new Buffer ( varint . decode ( prefixedData ) )
30
+ Object . keys ( table )
31
+ . forEach ( ( multicodec ) => {
32
+ if ( Buffer . isEqual ( code , table [ multicodec ] ) ) {
33
+ return multicodec
34
+ }
35
+ } )
36
+ }
You can’t perform that action at this time.
0 commit comments