@steemit/steem-js 0.7.10 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/README.md +22 -3
  2. package/circle.yml +1 -1
  3. package/config.json +1 -1
  4. package/dist/steem-tests.min.js +4097 -23
  5. package/dist/steem.min.js +2089 -18
  6. package/docker-webpack.config.js +44 -0
  7. package/lib/api/index.js +305 -412
  8. package/lib/api/methods.js +16 -1
  9. package/lib/api/rpc-auth.js +135 -0
  10. package/lib/api/transports/base.js +25 -66
  11. package/lib/api/transports/http.js +114 -129
  12. package/lib/api/transports/index.js +8 -15
  13. package/lib/api/transports/ws.js +107 -207
  14. package/lib/auth/ecc/index.js +9 -9
  15. package/lib/auth/ecc/src/address.js +48 -78
  16. package/lib/auth/ecc/src/aes.js +93 -129
  17. package/lib/auth/ecc/src/brain_key.js +7 -7
  18. package/lib/auth/ecc/src/ecdsa.js +7 -33
  19. package/lib/auth/ecc/src/ecsignature.js +4 -30
  20. package/lib/auth/ecc/src/enforce_types.js +1 -8
  21. package/lib/auth/ecc/src/hash.js +16 -25
  22. package/lib/auth/ecc/src/key_private.js +146 -199
  23. package/lib/auth/ecc/src/key_public.js +130 -202
  24. package/lib/auth/ecc/src/key_utils.js +64 -106
  25. package/lib/auth/ecc/src/signature.js +125 -177
  26. package/lib/auth/index.js +84 -97
  27. package/lib/auth/memo.js +90 -118
  28. package/lib/auth/serializer/index.js +12 -18
  29. package/lib/auth/serializer/src/ChainTypes.js +0 -3
  30. package/lib/auth/serializer/src/convert.js +29 -32
  31. package/lib/auth/serializer/src/error_with_cause.js +22 -37
  32. package/lib/auth/serializer/src/fast_parser.js +54 -74
  33. package/lib/auth/serializer/src/number_utils.js +30 -54
  34. package/lib/auth/serializer/src/object_id.js +37 -62
  35. package/lib/auth/serializer/src/operations.js +597 -689
  36. package/lib/auth/serializer/src/precision.js +55 -73
  37. package/lib/auth/serializer/src/serializer.js +158 -204
  38. package/lib/auth/serializer/src/template.js +13 -8
  39. package/lib/auth/serializer/src/types.js +949 -1110
  40. package/lib/auth/serializer/src/validation.js +268 -328
  41. package/lib/broadcast/helpers.js +61 -98
  42. package/lib/broadcast/index.js +61 -82
  43. package/lib/browser.js +15 -19
  44. package/lib/config.js +16 -38
  45. package/lib/formatter.js +89 -115
  46. package/lib/index.js +19 -17
  47. package/lib/utils.js +4 -9
  48. package/node-18.dockerfile +28 -0
  49. package/package.json +62 -38
  50. package/test/Crypto.js +16 -16
  51. package/test/KeyFormats.js +1 -1
  52. package/test/api.test.js +37 -0
  53. package/test/broadcast.test.js +14 -8
  54. package/test/comment.test.js +17 -3
  55. package/test/operations_test.js +1 -1
  56. package/test/promise-broadcast.test.js +86 -0
  57. package/test/reputation.test.js +68 -0
  58. package/test/smt.test.js +11 -11
  59. package/test-github-workflow.bat +19 -0
  60. package/test-github-workflow.sh +15 -0
  61. package/webpack/makeConfig.js +25 -17
  62. package/.circleci/config.yml +0 -23
  63. package/dist/statistics.html +0 -208
  64. package/dist/steem-tests.min.js.gz +0 -0
  65. package/dist/steem-tests.min.js.map +0 -1
  66. package/dist/steem.min.js.gz +0 -0
  67. package/dist/steem.min.js.map +0 -1
  68. package/lib/auth/ecc/README.md +0 -20
  69. package/lib/auth/ecc/package.json +0 -36
  70. package/lib/auth/serializer/README.md +0 -13
  71. package/lib/auth/serializer/package.json +0 -32
  72. package/node-4.dockerfile +0 -6
  73. package/node-6.dockerfile +0 -6
  74. package/yarn.lock +0 -3336
package/lib/auth/memo.js CHANGED
@@ -1,33 +1,15 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
8
-
9
- exports.decode = decode;
10
- exports.encode = encode;
11
-
12
- var _bytebuffer = require('bytebuffer');
13
-
14
- var _bytebuffer2 = _interopRequireDefault(_bytebuffer);
15
-
16
- var _assert = require('assert');
17
-
18
- var _assert2 = _interopRequireDefault(_assert);
19
-
20
- var _bs = require('bs58');
21
-
22
- var _bs2 = _interopRequireDefault(_bs);
23
-
24
- var _ecc = require('./ecc');
25
-
26
- var _serializer = require('./serializer');
27
-
28
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
-
30
- var encMemo = _serializer.ops.encrypted_memo;
1
+ "use strict";
2
+
3
+ const ByteBuffer = require('bytebuffer');
4
+ const assert = require('assert');
5
+ const base58 = require('bs58');
6
+ const ecc = require('./ecc');
7
+ const Aes = ecc.Aes;
8
+ const PrivateKey = ecc.PrivateKey;
9
+ const PublicKey = ecc.PublicKey;
10
+ const serializer = require('./serializer');
11
+ const ops = serializer.ops;
12
+ const encMemo = ops.encrypted_memo;
31
13
 
32
14
  /**
33
15
  Some fields are only required if the memo is marked for decryption (starts with a hash).
@@ -36,41 +18,37 @@ var encMemo = _serializer.ops.encrypted_memo;
36
18
  @return {string} - utf8 decoded string (hash prefix)
37
19
  */
38
20
  function decode(private_key, memo) {
39
- (0, _assert2.default)(memo, 'memo is required');
40
- _assert2.default.equal(typeof memo === 'undefined' ? 'undefined' : _typeof(memo), 'string', 'memo');
41
- if (!/^#/.test(memo)) return memo;
42
- memo = memo.substring(1);
43
-
44
- (0, _assert2.default)(private_key, 'private_key is required');
45
- checkEncryption();
46
-
47
- private_key = toPrivateObj(private_key);
48
-
49
- memo = _bs2.default.decode(memo);
50
- memo = encMemo.fromBuffer(new Buffer(memo, 'binary'));
51
-
52
- var _memo = memo,
53
- from = _memo.from,
54
- to = _memo.to,
55
- nonce = _memo.nonce,
56
- check = _memo.check,
57
- encrypted = _memo.encrypted;
58
-
59
- var pubkey = private_key.toPublicKey().toString();
60
- var otherpub = pubkey === from.toString() ? to.toString() : from.toString();
61
- memo = _ecc.Aes.decrypt(private_key, otherpub, nonce, encrypted, check);
62
-
63
- // remove varint length prefix
64
- var mbuf = _bytebuffer2.default.fromBinary(memo.toString('binary'), _bytebuffer2.default.DEFAULT_CAPACITY, _bytebuffer2.default.LITTLE_ENDIAN);
65
- try {
66
- mbuf.mark();
67
- return '#' + mbuf.readVString();
68
- } catch (e) {
69
- mbuf.reset();
70
- // Sender did not length-prefix the memo
71
- memo = new Buffer(mbuf.toString('binary'), 'binary').toString('utf-8');
72
- return '#' + memo;
73
- }
21
+ assert(memo, 'memo is required');
22
+ assert.equal(typeof memo, 'string', 'memo');
23
+ if (!/^#/.test(memo)) return memo;
24
+ memo = memo.substring(1);
25
+ assert(private_key, 'private_key is required');
26
+ checkEncryption();
27
+ private_key = toPrivateObj(private_key);
28
+ memo = base58.decode(memo);
29
+ memo = encMemo.fromBuffer(new Buffer.from(memo, 'binary'));
30
+ const {
31
+ from,
32
+ to,
33
+ nonce,
34
+ check,
35
+ encrypted
36
+ } = memo;
37
+ const pubkey = private_key.toPublicKey().toString();
38
+ const otherpub = pubkey === from.toString() ? to.toString() : from.toString();
39
+ memo = Aes.decrypt(private_key, otherpub, nonce, encrypted, check);
40
+
41
+ // remove varint length prefix
42
+ const mbuf = ByteBuffer.fromBinary(memo.toString('binary'), ByteBuffer.DEFAULT_CAPACITY, ByteBuffer.LITTLE_ENDIAN);
43
+ try {
44
+ mbuf.mark();
45
+ return '#' + mbuf.readVString();
46
+ } catch (e) {
47
+ mbuf.reset();
48
+ // Sender did not length-prefix the memo
49
+ memo = new Buffer.from(mbuf.toString('binary'), 'binary').toString('utf-8');
50
+ return '#' + memo;
51
+ }
74
52
  }
75
53
 
76
54
  /**
@@ -82,66 +60,60 @@ function decode(private_key, memo) {
82
60
  @return {string} - base64 decoded string (or plain text)
83
61
  */
84
62
  function encode(private_key, public_key, memo, testNonce) {
85
- (0, _assert2.default)(memo, 'memo is required');
86
- _assert2.default.equal(typeof memo === 'undefined' ? 'undefined' : _typeof(memo), 'string', 'memo');
87
- if (!/^#/.test(memo)) return memo;
88
- memo = memo.substring(1);
89
-
90
- (0, _assert2.default)(private_key, 'private_key is required');
91
- (0, _assert2.default)(public_key, 'public_key is required');
92
- checkEncryption();
93
-
94
- private_key = toPrivateObj(private_key);
95
- public_key = toPublicObj(public_key);
96
-
97
- var mbuf = new _bytebuffer2.default(_bytebuffer2.default.DEFAULT_CAPACITY, _bytebuffer2.default.LITTLE_ENDIAN);
98
- mbuf.writeVString(memo);
99
- memo = new Buffer(mbuf.copy(0, mbuf.offset).toBinary(), 'binary');
100
-
101
- var _Aes$encrypt = _ecc.Aes.encrypt(private_key, public_key, memo, testNonce),
102
- nonce = _Aes$encrypt.nonce,
103
- message = _Aes$encrypt.message,
104
- checksum = _Aes$encrypt.checksum;
105
-
106
- memo = encMemo.fromObject({
107
- from: private_key.toPublicKey(),
108
- to: public_key,
109
- nonce: nonce,
110
- check: checksum,
111
- encrypted: message
112
- });
113
- // serialize
114
- memo = encMemo.toBuffer(memo);
115
- return '#' + _bs2.default.encode(new Buffer(memo, 'binary'));
63
+ assert(memo, 'memo is required');
64
+ assert.equal(typeof memo, 'string', 'memo');
65
+ if (!/^#/.test(memo)) return memo;
66
+ memo = memo.substring(1);
67
+ assert(private_key, 'private_key is required');
68
+ assert(public_key, 'public_key is required');
69
+ checkEncryption();
70
+ private_key = toPrivateObj(private_key);
71
+ public_key = toPublicObj(public_key);
72
+ const mbuf = new ByteBuffer(ByteBuffer.DEFAULT_CAPACITY, ByteBuffer.LITTLE_ENDIAN);
73
+ mbuf.writeVString(memo);
74
+ memo = new Buffer.from(mbuf.copy(0, mbuf.offset).toBinary(), 'binary');
75
+ const {
76
+ nonce,
77
+ message,
78
+ checksum
79
+ } = Aes.encrypt(private_key, public_key, memo, testNonce);
80
+ memo = encMemo.fromObject({
81
+ from: private_key.toPublicKey(),
82
+ to: public_key,
83
+ nonce,
84
+ check: checksum,
85
+ encrypted: message
86
+ });
87
+ // serialize
88
+ memo = encMemo.toBuffer(memo);
89
+ return '#' + base58.encode(new Buffer.from(memo, 'binary'));
116
90
  }
117
-
118
- var encodeTest = undefined;
91
+ let encodeTest = undefined;
119
92
 
120
93
  /**
121
94
  Memo encryption has failed in the browser before. An Error will be thrown
122
95
  if a memo can't be encrypted and decrypted.
123
96
  */
124
97
  function checkEncryption() {
125
- if (encodeTest === undefined) {
126
- var plaintext = void 0;
127
- encodeTest = true; // prevent infinate looping
128
- try {
129
- var wif = '5JdeC9P7Pbd1uGdFVEsJ41EkEnADbbHGq6p1BwFxm6txNBsQnsw';
130
- var pubkey = 'STM8m5UgaFAAYQRuaNejYdS8FVLVp9Ss3K1qAVk5de6F8s3HnVbvA';
131
- var cyphertext = encode(wif, pubkey, '#memo爱');
132
- plaintext = decode(wif, cyphertext);
133
- } catch (e) {
134
- console.error(e);
135
- } finally {
136
- encodeTest = plaintext === '#memo爱';
137
- }
98
+ if (encodeTest === undefined) {
99
+ let plaintext;
100
+ encodeTest = true; // prevent infinate looping
101
+ try {
102
+ const wif = '5JdeC9P7Pbd1uGdFVEsJ41EkEnADbbHGq6p1BwFxm6txNBsQnsw';
103
+ const pubkey = 'STM8m5UgaFAAYQRuaNejYdS8FVLVp9Ss3K1qAVk5de6F8s3HnVbvA';
104
+ const cyphertext = encode(wif, pubkey, '#memo爱');
105
+ plaintext = decode(wif, cyphertext);
106
+ } catch (e) {
107
+ console.error(e);
108
+ } finally {
109
+ encodeTest = plaintext === '#memo爱';
138
110
  }
139
- if (encodeTest === false) throw new Error('This environment does not support encryption.');
111
+ }
112
+ if (encodeTest === false) throw new Error('This environment does not support encryption.');
140
113
  }
141
-
142
- var toPrivateObj = function toPrivateObj(o) {
143
- return o ? o.d ? o : _ecc.PrivateKey.fromWif(o) : o /*null or undefined*/;
144
- };
145
- var toPublicObj = function toPublicObj(o) {
146
- return o ? o.Q ? o : _ecc.PublicKey.fromString(o) : o /*null or undefined*/;
114
+ const toPrivateObj = o => o ? o.d ? o : PrivateKey.fromWif(o) : o /*null or undefined*/;
115
+ const toPublicObj = o => o ? o.Q ? o : PublicKey.fromString(o) : o /*null or undefined*/;
116
+ module.exports = {
117
+ decode,
118
+ encode
147
119
  };
@@ -1,21 +1,15 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  module.exports = {
4
-
5
- // Primary class for creating operations
6
- Serializer: require('./src/serializer'),
7
-
8
- // helper functions for creating operations
9
- fp: require('./src/fast_parser'),
10
-
11
- // Low level types
12
- types: require('./src/types'),
13
-
14
- // Higher level operations (made out of generic types)
15
- ops: require('./src/operations'),
16
-
17
- // Utility that generates JSON examples
18
- template: require('./src/template'),
19
-
20
- number_utils: require('./src/number_utils')
4
+ // Primary class for creating operations
5
+ Serializer: require('./src/serializer'),
6
+ // helper functions for creating operations
7
+ fp: require('./src/fast_parser'),
8
+ // Low level types
9
+ types: require('./src/types'),
10
+ // Higher level operations (made out of generic types)
11
+ ops: require('./src/operations'),
12
+ // Utility that generates JSON examples
13
+ template: require('./src/template'),
14
+ number_utils: require('./src/number_utils')
21
15
  };
@@ -1,15 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  var ChainTypes;
4
-
5
4
  module.exports = ChainTypes = {};
6
-
7
5
  ChainTypes.reserved_spaces = {
8
6
  relative_protocol_ids: 0,
9
7
  protocol_ids: 1,
10
8
  implementation_ids: 2
11
9
  };
12
-
13
10
  ChainTypes.operations = {
14
11
  vote: 0,
15
12
  comment: 1,
@@ -1,37 +1,34 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  var ByteBuffer = require('bytebuffer');
4
-
5
4
  module.exports = function (type) {
6
-
7
- return {
8
- fromHex: function fromHex(hex) {
9
- var b = ByteBuffer.fromHex(hex, ByteBuffer.LITTLE_ENDIAN);
10
- return type.fromByteBuffer(b);
11
- },
12
- toHex: function toHex(object) {
13
- var b = toByteBuffer(type, object);
14
- return b.toHex();
15
- },
16
- fromBuffer: function fromBuffer(buffer) {
17
- var b = ByteBuffer.fromBinary(buffer.toString(), ByteBuffer.LITTLE_ENDIAN);
18
- return type.fromByteBuffer(b);
19
- },
20
- toBuffer: function toBuffer(object) {
21
- return new Buffer(toByteBuffer(type, object).toBinary(), 'binary');
22
- },
23
- fromBinary: function fromBinary(string) {
24
- var b = ByteBuffer.fromBinary(string, ByteBuffer.LITTLE_ENDIAN);
25
- return type.fromByteBuffer(b);
26
- },
27
- toBinary: function toBinary(object) {
28
- return toByteBuffer(type, object).toBinary();
29
- }
30
- };
5
+ return {
6
+ fromHex(hex) {
7
+ var b = ByteBuffer.fromHex(hex, ByteBuffer.LITTLE_ENDIAN);
8
+ return type.fromByteBuffer(b);
9
+ },
10
+ toHex(object) {
11
+ var b = toByteBuffer(type, object);
12
+ return b.toHex();
13
+ },
14
+ fromBuffer(buffer) {
15
+ var b = ByteBuffer.fromBinary(buffer.toString(), ByteBuffer.LITTLE_ENDIAN);
16
+ return type.fromByteBuffer(b);
17
+ },
18
+ toBuffer(object) {
19
+ return new Buffer(toByteBuffer(type, object).toBinary(), 'binary');
20
+ },
21
+ fromBinary(string) {
22
+ var b = ByteBuffer.fromBinary(string, ByteBuffer.LITTLE_ENDIAN);
23
+ return type.fromByteBuffer(b);
24
+ },
25
+ toBinary(object) {
26
+ return toByteBuffer(type, object).toBinary();
27
+ }
28
+ };
31
29
  };
32
-
33
- var toByteBuffer = function toByteBuffer(type, object) {
34
- var b = new ByteBuffer(ByteBuffer.DEFAULT_CAPACITY, ByteBuffer.LITTLE_ENDIAN);
35
- type.appendByteBuffer(b, object);
36
- return b.copy(0, b.offset);
30
+ var toByteBuffer = function (type, object) {
31
+ var b = new ByteBuffer(ByteBuffer.DEFAULT_CAPACITY, ByteBuffer.LITTLE_ENDIAN);
32
+ type.appendByteBuffer(b, object);
33
+ return b.copy(0, b.offset);
37
34
  };
@@ -1,42 +1,27 @@
1
1
  "use strict";
2
2
 
3
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
4
-
5
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6
-
7
3
  /** Exception nesting. */
8
- var ErrorWithCause = function () {
9
- function ErrorWithCause(message, cause) {
10
- _classCallCheck(this, ErrorWithCause);
11
-
12
- this.message = message;
13
- if (typeof cause !== "undefined" && cause !== null ? cause.message : undefined) {
14
- this.message = "cause\t" + cause.message + "\t" + this.message;
15
- }
16
-
17
- var stack = ""; //(new Error).stack
18
- if (typeof cause !== "undefined" && cause !== null ? cause.stack : undefined) {
19
- stack = "caused by\n\t" + cause.stack + "\t" + stack;
20
- }
21
-
22
- this.stack = this.message + "\n" + stack;
4
+ class ErrorWithCause {
5
+ constructor(message, cause) {
6
+ this.message = message;
7
+ if (typeof cause !== "undefined" && cause !== null ? cause.message : undefined) {
8
+ this.message = `cause\t${cause.message}\t` + this.message;
23
9
  }
24
-
25
- _createClass(ErrorWithCause, null, [{
26
- key: "throw",
27
- value: function _throw(message, cause) {
28
- var msg = message;
29
- if (typeof cause !== "undefined" && cause !== null ? cause.message : undefined) {
30
- msg += "\t cause: " + cause.message + " ";
31
- }
32
- if (typeof cause !== "undefined" && cause !== null ? cause.stack : undefined) {
33
- msg += "\n stack: " + cause.stack + " ";
34
- }
35
- throw new Error(msg);
36
- }
37
- }]);
38
-
39
- return ErrorWithCause;
40
- }();
41
-
10
+ var stack = ""; //(new Error).stack
11
+ if (typeof cause !== "undefined" && cause !== null ? cause.stack : undefined) {
12
+ stack = `caused by\n\t${cause.stack}\t` + stack;
13
+ }
14
+ this.stack = this.message + "\n" + stack;
15
+ }
16
+ static throw(message, cause) {
17
+ var msg = message;
18
+ if (typeof cause !== "undefined" && cause !== null ? cause.message : undefined) {
19
+ msg += `\t cause: ${cause.message} `;
20
+ }
21
+ if (typeof cause !== "undefined" && cause !== null ? cause.stack : undefined) {
22
+ msg += `\n stack: ${cause.stack} `;
23
+ }
24
+ throw new Error(msg);
25
+ }
26
+ }
42
27
  module.exports = ErrorWithCause;
@@ -1,77 +1,57 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
4
-
5
- var _ecc = require('../../ecc');
6
-
7
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8
-
9
- var FastParser = function () {
10
- function FastParser() {
11
- _classCallCheck(this, FastParser);
3
+ const ecc = require("../../ecc");
4
+ const PublicKey = ecc.PublicKey;
5
+ class FastParser {
6
+ static fixed_data(b, len, buffer) {
7
+ if (!b) {
8
+ return;
12
9
  }
13
-
14
- _createClass(FastParser, null, [{
15
- key: 'fixed_data',
16
- value: function fixed_data(b, len, buffer) {
17
- if (!b) {
18
- return;
19
- }
20
- if (buffer) {
21
- var data = buffer.slice(0, len).toString('binary');
22
- b.append(data, 'binary');
23
- while (len-- > data.length) {
24
- b.writeUint8(0);
25
- }
26
- } else {
27
- var b_copy = b.copy(b.offset, b.offset + len);
28
- b.skip(len);
29
- return new Buffer(b_copy.toBinary(), 'binary');
30
- }
31
- }
32
- }, {
33
- key: 'public_key',
34
- value: function public_key(b, _public_key) {
35
- if (!b) {
36
- return;
37
- }
38
- if (_public_key) {
39
- var buffer = _public_key.toBuffer();
40
- b.append(buffer.toString('binary'), 'binary');
41
- return;
42
- } else {
43
- buffer = FastParser.fixed_data(b, 33);
44
- return _ecc.PublicKey.fromBuffer(buffer);
45
- }
46
- }
47
- }, {
48
- key: 'ripemd160',
49
- value: function ripemd160(b, _ripemd) {
50
- if (!b) {
51
- return;
52
- }
53
- if (_ripemd) {
54
- FastParser.fixed_data(b, 20, _ripemd);
55
- return;
56
- } else {
57
- return FastParser.fixed_data(b, 20);
58
- }
59
- }
60
- }, {
61
- key: 'time_point_sec',
62
- value: function time_point_sec(b, epoch) {
63
- if (epoch) {
64
- epoch = Math.ceil(epoch / 1000);
65
- b.writeInt32(epoch);
66
- return;
67
- } else {
68
- epoch = b.readInt32(); // fc::time_point_sec
69
- return new Date(epoch * 1000);
70
- }
71
- }
72
- }]);
73
-
74
- return FastParser;
75
- }();
76
-
10
+ if (buffer) {
11
+ let data = buffer.slice(0, len).toString('binary');
12
+ b.append(data, 'binary');
13
+ while (len-- > data.length) {
14
+ b.writeUint8(0);
15
+ }
16
+ } else {
17
+ let b_copy = b.copy(b.offset, b.offset + len);
18
+ b.skip(len);
19
+ return new Buffer.from(b_copy.toBinary(), 'binary');
20
+ }
21
+ }
22
+ static public_key(b, public_key) {
23
+ if (!b) {
24
+ return;
25
+ }
26
+ if (public_key) {
27
+ var buffer = public_key.toBuffer();
28
+ b.append(buffer.toString('binary'), 'binary');
29
+ return;
30
+ } else {
31
+ buffer = FastParser.fixed_data(b, 33);
32
+ return PublicKey.fromBuffer(buffer);
33
+ }
34
+ }
35
+ static ripemd160(b, ripemd160) {
36
+ if (!b) {
37
+ return;
38
+ }
39
+ if (ripemd160) {
40
+ FastParser.fixed_data(b, 20, ripemd160);
41
+ return;
42
+ } else {
43
+ return FastParser.fixed_data(b, 20);
44
+ }
45
+ }
46
+ static time_point_sec(b, epoch) {
47
+ if (epoch) {
48
+ epoch = Math.ceil(epoch / 1000);
49
+ b.writeInt32(epoch);
50
+ return;
51
+ } else {
52
+ epoch = b.readInt32(); // fc::time_point_sec
53
+ return new Date(epoch * 1000);
54
+ }
55
+ }
56
+ }
77
57
  module.exports = FastParser;
@@ -1,21 +1,6 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
8
-
9
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
10
-
11
- exports.toImpliedDecimal = toImpliedDecimal;
12
- exports.fromImpliedDecimal = fromImpliedDecimal;
13
-
14
- var _assert = require("assert");
15
-
16
- var _assert2 = _interopRequireDefault(_assert);
17
-
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3
+ const assert = require("assert");
19
4
 
20
5
  /**
21
6
  Convert 12.34 with a precision of 3 into 12340
@@ -25,43 +10,34 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
25
10
  @return {string} -
26
11
  */
27
12
  function toImpliedDecimal(number, precision) {
28
-
29
- if (typeof number === "number") {
30
- (0, _assert2.default)(number <= 9007199254740991, "overflow");
31
- number = "" + number;
32
- } else if (number.toString) number = number.toString();
33
-
34
- (0, _assert2.default)(typeof number === "string", "number should be an actual number or string: " + (typeof number === "undefined" ? "undefined" : _typeof(number)));
35
- number = number.trim();
36
- (0, _assert2.default)(/^[0-9]*\.?[0-9]*$/.test(number), "Invalid decimal number " + number);
37
-
38
- var _number$split = number.split("."),
39
- _number$split2 = _slicedToArray(_number$split, 2),
40
- _number$split2$ = _number$split2[0],
41
- whole = _number$split2$ === undefined ? "" : _number$split2$,
42
- _number$split2$2 = _number$split2[1],
43
- decimal = _number$split2$2 === undefined ? "" : _number$split2$2;
44
-
45
- var padding = precision - decimal.length;
46
- (0, _assert2.default)(padding >= 0, "Too many decimal digits in " + number + " to create an implied decimal of " + precision);
47
-
48
- for (var i = 0; i < padding; i++) {
49
- decimal += "0";
50
- }while (whole.charAt(0) === "0") {
51
- whole = whole.substring(1);
52
- }return whole + decimal;
13
+ if (typeof number === "number") {
14
+ assert(number <= 9007199254740991, "overflow");
15
+ number = "" + number;
16
+ } else if (number.toString) number = number.toString();
17
+ assert(typeof number === "string", "number should be an actual number or string: " + typeof number);
18
+ number = number.trim();
19
+ assert(/^[0-9]*\.?[0-9]*$/.test(number), "Invalid decimal number " + number);
20
+ let [whole = "", decimal = ""] = number.split(".");
21
+ let padding = precision - decimal.length;
22
+ assert(padding >= 0, "Too many decimal digits in " + number + " to create an implied decimal of " + precision);
23
+ for (let i = 0; i < padding; i++) decimal += "0";
24
+ while (whole.charAt(0) === "0") whole = whole.substring(1);
25
+ return whole + decimal;
53
26
  }
54
-
55
27
  function fromImpliedDecimal(number, precision) {
56
- if (typeof number === "number") {
57
- (0, _assert2.default)(number <= 9007199254740991, "overflow");
58
- number = "" + number;
59
- } else if (number.toString) number = number.toString();
60
-
61
- while (number.length < precision + 1) {
62
- // 0.123
63
- number = "0" + number;
64
- } // 44000 => 44.000
65
- var dec_string = number.substring(number.length - precision);
66
- return number.substring(0, number.length - precision) + (dec_string ? "." + dec_string : "");
67
- }
28
+ if (typeof number === "number") {
29
+ assert(number <= 9007199254740991, "overflow");
30
+ number = "" + number;
31
+ } else if (number.toString) number = number.toString();
32
+ while (number.length < precision + 1)
33
+ // 0.123
34
+ number = "0" + number;
35
+
36
+ // 44000 => 44.000
37
+ let dec_string = number.substring(number.length - precision);
38
+ return number.substring(0, number.length - precision) + (dec_string ? "." + dec_string : "");
39
+ }
40
+ module.exports = {
41
+ toImpliedDecimal,
42
+ fromImpliedDecimal
43
+ };