| 15 | } |
| 16 | |
| 17 | function _encode(object: Array<any> | string | Uint8Array): Array<number> { |
| 18 | if (Array.isArray(object)) { |
| 19 | let payload: Array<number> = []; |
| 20 | object.forEach(function(child) { |
| 21 | payload = payload.concat(_encode(child)); |
| 22 | }); |
| 23 | |
| 24 | if (payload.length <= 55) { |
| 25 | payload.unshift(0xc0 + payload.length) |
| 26 | return payload; |
| 27 | } |
| 28 | |
| 29 | const length = arrayifyInteger(payload.length); |
| 30 | length.unshift(0xf7 + length.length); |
| 31 | |
| 32 | return length.concat(payload); |
| 33 | |
| 34 | } |
| 35 | |
| 36 | const data: Array<number> = Array.prototype.slice.call(getBytes(object, "object")); |
| 37 | |
| 38 | if (data.length === 1 && data[0] <= 0x7f) { |
| 39 | return data; |
| 40 | |
| 41 | } else if (data.length <= 55) { |
| 42 | data.unshift(0x80 + data.length); |
| 43 | return data; |
| 44 | } |
| 45 | |
| 46 | const length = arrayifyInteger(data.length); |
| 47 | length.unshift(0xb7 + length.length); |
| 48 | |
| 49 | return length.concat(data); |
| 50 | } |
| 51 | |
| 52 | const nibbles = "0123456789abcdef"; |
| 53 | |