Skip to content

Commit da101fb

Browse files
authored
Merge pull request #64 from cryptocoinjs/fixArrayLike
Allow Array and Uint8Array like 3.0.4
2 parents e1ba49f + ac81ec5 commit da101fb

File tree

4 files changed

+13
-3
lines changed

4 files changed

+13
-3
lines changed

src/index.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ declare function base(ALPHABET: string): base.BaseConverter;
33
export = base;
44
declare namespace base {
55
interface BaseConverter {
6-
encode(buffer: Buffer): string;
6+
encode(buffer: Buffer | number[] | Uint8Array): string;
77
decodeUnsafe(string: string): Buffer | undefined;
88
decode(string: string): Buffer;
99
}

src/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ function base (ALPHABET) {
2323
var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up
2424
var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up
2525
function encode (source) {
26+
if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }
2627
if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }
2728
if (source.length === 0) { return '' }
2829
// Skip & count leading zeroes.

test/index.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,11 @@ tape.test('encode throws on string', function (t) {
5555
base.encode('a')
5656
}, new RegExp('^TypeError: Expected Buffer$'))
5757
})
58+
59+
tape.test('encode not throw on Array or Uint8Array', function (t) {
60+
var base = bases.base58
61+
62+
t.plan(2)
63+
t.same(base.encode([42, 12, 34]), 'F89f')
64+
t.same(base.encode(new Uint8Array([42, 12, 34])), 'F89f')
65+
})

ts_src/index.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ function base (ALPHABET: string): base.BaseConverter {
2828
const FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up
2929
const iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up
3030

31-
function encode (source: Buffer): string {
31+
function encode (source: Buffer | number[] | Uint8Array): string {
32+
if (Array.isArray(source) || source instanceof Uint8Array) source = _Buffer.from(source)
3233
if (!_Buffer.isBuffer(source)) throw new TypeError('Expected Buffer')
3334
if (source.length === 0) return ''
3435

@@ -156,7 +157,7 @@ export = base;
156157

157158
declare namespace base {
158159
interface BaseConverter {
159-
encode(buffer: Buffer): string;
160+
encode(buffer: Buffer | number[] | Uint8Array): string;
160161
decodeUnsafe(string: string): Buffer | undefined;
161162
decode(string: string): Buffer;
162163
}

0 commit comments

Comments
 (0)