UNPKG

1.54 kBJavaScriptView Raw
1'use strict';
2
3var _ = require('lodash');
4var bs58 = require('bs58');
5var buffer = require('buffer');
6
7var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'.split('');
8
9var Base58 = function Base58(obj) {
10 /* jshint maxcomplexity: 8 */
11 if (!(this instanceof Base58)) {
12 return new Base58(obj);
13 }
14 if (Buffer.isBuffer(obj)) {
15 var buf = obj;
16 this.fromBuffer(buf);
17 } else if (typeof obj === 'string') {
18 var str = obj;
19 this.fromString(str);
20 } else if (obj) {
21 this.set(obj);
22 }
23};
24
25Base58.validCharacters = function validCharacters(chars) {
26 if (buffer.Buffer.isBuffer(chars)) {
27 chars = chars.toString();
28 }
29 return _.every(_.map(chars, function(char) { return _.includes(ALPHABET, char); }));
30};
31
32Base58.prototype.set = function(obj) {
33 this.buf = obj.buf || this.buf || undefined;
34 return this;
35};
36
37Base58.encode = function(buf) {
38 if (!buffer.Buffer.isBuffer(buf)) {
39 throw new Error('Input should be a buffer');
40 }
41 return bs58.encode(buf);
42};
43
44Base58.decode = function(str) {
45 if (typeof str !== 'string') {
46 throw new Error('Input should be a string');
47 }
48 return Buffer.from(bs58.decode(str));
49};
50
51Base58.prototype.fromBuffer = function(buf) {
52 this.buf = buf;
53 return this;
54};
55
56Base58.prototype.fromString = function(str) {
57 var buf = Base58.decode(str);
58 this.buf = buf;
59 return this;
60};
61
62Base58.prototype.toBuffer = function() {
63 return this.buf;
64};
65
66Base58.prototype.toString = function() {
67 return Base58.encode(this.buf);
68};
69
70module.exports = Base58;