1
1
'use strict'
2
2
3
- const { Buffer } = require ( 'buffer' )
4
3
const convert = require ( './convert' )
5
4
const protocols = require ( './protocols-table' )
6
5
const varint = require ( 'varint' )
6
+ const uint8ArrayConcat = require ( 'uint8arrays/concat' )
7
+ const uint8ArrayToString = require ( 'uint8arrays/to-string' )
7
8
8
9
// export codec
9
10
module . exports = {
@@ -13,16 +14,16 @@ module.exports = {
13
14
tuplesToStringTuples,
14
15
stringTuplesToTuples,
15
16
16
- bufferToTuples ,
17
- tuplesToBuffer ,
17
+ bytesToTuples ,
18
+ tuplesToBytes ,
18
19
19
- bufferToString ,
20
- stringToBuffer ,
20
+ bytesToString ,
21
+ stringToBytes ,
21
22
22
23
fromString,
23
- fromBuffer ,
24
- validateBuffer ,
25
- isValidBuffer ,
24
+ fromBytes ,
25
+ validateBytes ,
26
+ isValidBytes ,
26
27
cleanPath,
27
28
28
29
ParseError,
@@ -85,21 +86,21 @@ function stringTuplesToString (tuples) {
85
86
return cleanPath ( parts . join ( '/' ) )
86
87
}
87
88
88
- // [[str name, str addr]... ] -> [[int code, Buffer ]... ]
89
+ // [[str name, str addr]... ] -> [[int code, Uint8Array ]... ]
89
90
function stringTuplesToTuples ( tuples ) {
90
91
return tuples . map ( tup => {
91
92
if ( ! Array . isArray ( tup ) ) {
92
93
tup = [ tup ]
93
94
}
94
95
const proto = protoFromTuple ( tup )
95
96
if ( tup . length > 1 ) {
96
- return [ proto . code , convert . toBuffer ( proto . code , tup [ 1 ] ) ]
97
+ return [ proto . code , convert . toBytes ( proto . code , tup [ 1 ] ) ]
97
98
}
98
99
return [ proto . code ]
99
100
} )
100
101
}
101
102
102
- // [[int code, Buffer ]... ] -> [[str name, str addr]... ]
103
+ // [[int code, Uint8Array ]... ] -> [[str name, str addr]... ]
103
104
function tuplesToStringTuples ( tuples ) {
104
105
return tuples . map ( tup => {
105
106
const proto = protoFromTuple ( tup )
@@ -110,14 +111,14 @@ function tuplesToStringTuples (tuples) {
110
111
} )
111
112
}
112
113
113
- // [[int code, Buffer ]... ] -> Buffer
114
- function tuplesToBuffer ( tuples ) {
115
- return fromBuffer ( Buffer . concat ( tuples . map ( tup => {
114
+ // [[int code, Uint8Array ]... ] -> Uint8Array
115
+ function tuplesToBytes ( tuples ) {
116
+ return fromBytes ( uint8ArrayConcat ( tuples . map ( tup => {
116
117
const proto = protoFromTuple ( tup )
117
- let buf = Buffer . from ( varint . encode ( proto . code ) )
118
+ let buf = Uint8Array . from ( varint . encode ( proto . code ) )
118
119
119
120
if ( tup . length > 1 ) {
120
- buf = Buffer . concat ( [ buf , tup [ 1 ] ] ) // add address buffer
121
+ buf = uint8ArrayConcat ( [ buf , tup [ 1 ] ] ) // add address buffer
121
122
}
122
123
123
124
return buf
@@ -135,8 +136,8 @@ function sizeForAddr (p, addr) {
135
136
}
136
137
}
137
138
138
- // Buffer -> [[int code, Buffer ]... ]
139
- function bufferToTuples ( buf ) {
139
+ // Uint8Array -> [[int code, Uint8Array ]... ]
140
+ function bytesToTuples ( buf ) {
140
141
const tuples = [ ]
141
142
let i = 0
142
143
while ( i < buf . length ) {
@@ -158,7 +159,7 @@ function bufferToTuples (buf) {
158
159
i += ( size + n )
159
160
160
161
if ( i > buf . length ) { // did not end _exactly_ at buffer.length
161
- throw ParseError ( 'Invalid address buffer : ' + buf . toString ( 'hex ') )
162
+ throw ParseError ( 'Invalid address Uint8Array : ' + uint8ArrayToString ( buf , 'base16 ') )
162
163
}
163
164
164
165
// ok, tuple seems good.
@@ -168,44 +169,44 @@ function bufferToTuples (buf) {
168
169
return tuples
169
170
}
170
171
171
- // Buffer -> String
172
- function bufferToString ( buf ) {
173
- const a = bufferToTuples ( buf )
172
+ // Uint8Array -> String
173
+ function bytesToString ( buf ) {
174
+ const a = bytesToTuples ( buf )
174
175
const b = tuplesToStringTuples ( a )
175
176
return stringTuplesToString ( b )
176
177
}
177
178
178
- // String -> Buffer
179
- function stringToBuffer ( str ) {
179
+ // String -> Uint8Array
180
+ function stringToBytes ( str ) {
180
181
str = cleanPath ( str )
181
182
const a = stringToStringTuples ( str )
182
183
const b = stringTuplesToTuples ( a )
183
184
184
- return tuplesToBuffer ( b )
185
+ return tuplesToBytes ( b )
185
186
}
186
187
187
- // String -> Buffer
188
+ // String -> Uint8Array
188
189
function fromString ( str ) {
189
- return stringToBuffer ( str )
190
+ return stringToBytes ( str )
190
191
}
191
192
192
- // Buffer -> Buffer
193
- function fromBuffer ( buf ) {
194
- const err = validateBuffer ( buf )
193
+ // Uint8Array -> Uint8Array
194
+ function fromBytes ( buf ) {
195
+ const err = validateBytes ( buf )
195
196
if ( err ) throw err
196
- return Buffer . from ( buf ) // copy
197
+ return Uint8Array . from ( buf ) // copy
197
198
}
198
199
199
- function validateBuffer ( buf ) {
200
+ function validateBytes ( buf ) {
200
201
try {
201
- bufferToTuples ( buf ) // try to parse. will throw if breaks
202
+ bytesToTuples ( buf ) // try to parse. will throw if breaks
202
203
} catch ( err ) {
203
204
return err
204
205
}
205
206
}
206
207
207
- function isValidBuffer ( buf ) {
208
- return validateBuffer ( buf ) === undefined
208
+ function isValidBytes ( buf ) {
209
+ return validateBytes ( buf ) === undefined
209
210
}
210
211
211
212
function cleanPath ( str ) {
0 commit comments