@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
@@ -1,228 +1,128 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
- 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; }; }();
8
-
9
- var _bluebird = require('bluebird');
10
-
11
- var _bluebird2 = _interopRequireDefault(_bluebird);
12
-
13
- var _detectNode = require('detect-node');
14
-
15
- var _detectNode2 = _interopRequireDefault(_detectNode);
16
-
17
- var _debug = require('debug');
18
-
19
- var _debug2 = _interopRequireDefault(_debug);
20
-
21
- var _base = require('./base');
22
-
23
- var _base2 = _interopRequireDefault(_base);
24
-
25
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
-
27
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
28
-
29
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
30
-
31
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
32
-
33
- var WebSocket = void 0;
34
- if (_detectNode2.default) {
6
+ exports.default = void 0;
7
+ var _bluebird = _interopRequireDefault(require("bluebird"));
8
+ var _detectNode = _interopRequireDefault(require("detect-node"));
9
+ var _debug = _interopRequireDefault(require("debug"));
10
+ var _base = _interopRequireDefault(require("./base"));
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ let WebSocket;
13
+ if (_detectNode.default) {
35
14
  WebSocket = require('ws'); // eslint-disable-line global-require
36
15
  } else if (typeof window !== 'undefined') {
37
16
  WebSocket = window.WebSocket;
38
17
  } else {
39
18
  throw new Error("Couldn't decide on a `WebSocket` class");
40
19
  }
41
-
42
- var debug = (0, _debug2.default)('steem:ws');
43
-
44
- var WsTransport = function (_Transport) {
45
- _inherits(WsTransport, _Transport);
46
-
47
- function WsTransport() {
48
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
49
-
50
- _classCallCheck(this, WsTransport);
51
-
52
- var _this = _possibleConstructorReturn(this, (WsTransport.__proto__ || Object.getPrototypeOf(WsTransport)).call(this, Object.assign({ id: 0 }, options)));
53
-
54
- _this._requests = new Map();
55
- _this.inFlight = 0;
56
- _this.isOpen = false;
57
- return _this;
20
+ const debug = (0, _debug.default)('steem:ws');
21
+ class WsTransport extends _base.default {
22
+ constructor(options = {}) {
23
+ super(Object.assign({
24
+ id: 0
25
+ }, options));
26
+ this._requests = new Map();
27
+ this.inFlight = 0;
28
+ this.isOpen = false;
58
29
  }
59
-
60
- _createClass(WsTransport, [{
61
- key: 'start',
62
- value: function start() {
63
- var _this2 = this;
64
-
65
- if (this.startPromise) {
66
- return this.startPromise;
67
- }
68
-
69
- this.startPromise = new _bluebird2.default(function (resolve, reject) {
70
- _this2.ws = new WebSocket(_this2.options.websocket);
71
- _this2.ws.onerror = function (err) {
72
- _this2.startPromise = null;
73
- reject(err);
74
- };
75
- _this2.ws.onopen = function () {
76
- _this2.isOpen = true;
77
- _this2.ws.onerror = _this2.onError.bind(_this2);
78
- _this2.ws.onmessage = _this2.onMessage.bind(_this2);
79
- _this2.ws.onclose = _this2.onClose.bind(_this2);
80
- resolve();
81
- };
82
- });
30
+ start() {
31
+ if (this.startPromise) {
83
32
  return this.startPromise;
84
33
  }
85
- }, {
86
- key: 'stop',
87
- value: function stop() {
88
- debug('Stopping...');
89
-
90
- this.startPromise = null;
91
- this.isOpen = false;
92
- this._requests.clear();
93
-
94
- if (this.ws) {
95
- this.ws.onerror = this.ws.onmessage = this.ws.onclose = null;
96
- this.ws.close();
97
- this.ws = null;
98
- }
34
+ this.startPromise = new _bluebird.default((resolve, reject) => {
35
+ this.ws = new WebSocket(this.options.websocket);
36
+ this.ws.onerror = err => {
37
+ this.startPromise = null;
38
+ reject(err);
39
+ };
40
+ this.ws.onopen = () => {
41
+ this.isOpen = true;
42
+ this.ws.onerror = this.onError.bind(this);
43
+ this.ws.onmessage = this.onMessage.bind(this);
44
+ this.ws.onclose = this.onClose.bind(this);
45
+ resolve();
46
+ };
47
+ });
48
+ return this.startPromise;
49
+ }
50
+ stop() {
51
+ debug('Stopping...');
52
+ this.startPromise = null;
53
+ this.isOpen = false;
54
+ this._requests.clear();
55
+ if (this.ws) {
56
+ this.ws.onerror = this.ws.onmessage = this.ws.onclose = null;
57
+ this.ws.close();
58
+ this.ws = null;
99
59
  }
100
- }, {
101
- key: 'send',
102
- value: function send(api, data, callback) {
103
- var _this3 = this;
104
-
105
- debug('Steem::send', api, data);
106
- return this.start().then(function () {
107
- var deferral = {};
108
- new _bluebird2.default(function (resolve, reject) {
109
- deferral.resolve = function (val) {
110
- resolve(val);
111
- callback(null, val);
112
- };
113
- deferral.reject = function (val) {
114
- reject(val);
115
- callback(val);
116
- };
117
- });
118
-
119
- if (_this3.options.useAppbaseApi) {
120
- api = 'condenser_api';
121
- }
122
-
123
- var _request = {
124
- deferral: deferral,
125
- startedAt: Date.now(),
126
- message: {
127
- id: data.id || _this3.id++,
128
- method: 'call',
129
- jsonrpc: '2.0',
130
- params: [api, data.method, data.params]
131
- }
60
+ }
61
+ send(api, data, callback) {
62
+ debug('Steem::send', api, data);
63
+ return this.start().then(() => {
64
+ const deferral = {};
65
+ new _bluebird.default((resolve, reject) => {
66
+ deferral.resolve = val => {
67
+ resolve(val);
68
+ callback(null, val);
69
+ };
70
+ deferral.reject = val => {
71
+ reject(val);
72
+ callback(val);
132
73
  };
133
- _this3.inFlight++;
134
- _this3._requests.set(_request.message.id, _request);
135
- _this3.ws.send(JSON.stringify(_request.message));
136
- return deferral;
137
74
  });
138
- }
139
- }, {
140
- key: 'onError',
141
- value: function onError(error) {
142
- var _iteratorNormalCompletion = true;
143
- var _didIteratorError = false;
144
- var _iteratorError = undefined;
145
-
146
- try {
147
- for (var _iterator = this._requests[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
148
- var _request = _step.value;
149
-
150
- _request.deferral.reject(error);
151
- }
152
- } catch (err) {
153
- _didIteratorError = true;
154
- _iteratorError = err;
155
- } finally {
156
- try {
157
- if (!_iteratorNormalCompletion && _iterator.return) {
158
- _iterator.return();
159
- }
160
- } finally {
161
- if (_didIteratorError) {
162
- throw _iteratorError;
163
- }
164
- }
75
+ if (this.options.useAppbaseApi) {
76
+ api = 'condenser_api';
165
77
  }
166
-
167
- this.stop();
168
- }
169
- }, {
170
- key: 'onClose',
171
- value: function onClose() {
172
- var error = new Error('Connection was closed');
173
- var _iteratorNormalCompletion2 = true;
174
- var _didIteratorError2 = false;
175
- var _iteratorError2 = undefined;
176
-
177
- try {
178
- for (var _iterator2 = this._requests[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
179
- var _request = _step2.value;
180
-
181
- _request.deferral.reject(error);
78
+ const _request = {
79
+ deferral,
80
+ startedAt: Date.now(),
81
+ message: {
82
+ id: data.id || this.id++,
83
+ method: 'call',
84
+ jsonrpc: '2.0',
85
+ params: [api, data.method, data.params]
182
86
  }
183
- } catch (err) {
184
- _didIteratorError2 = true;
185
- _iteratorError2 = err;
186
- } finally {
187
- try {
188
- if (!_iteratorNormalCompletion2 && _iterator2.return) {
189
- _iterator2.return();
190
- }
191
- } finally {
192
- if (_didIteratorError2) {
193
- throw _iteratorError2;
194
- }
195
- }
196
- }
197
-
198
- this._requests.clear();
87
+ };
88
+ this.inFlight++;
89
+ this._requests.set(_request.message.id, _request);
90
+ this.ws.send(JSON.stringify(_request.message));
91
+ return deferral;
92
+ });
93
+ }
94
+ onError(error) {
95
+ for (let _request of this._requests) {
96
+ _request.deferral.reject(error);
199
97
  }
200
- }, {
201
- key: 'onMessage',
202
- value: function onMessage(websocketMessage) {
203
- var message = JSON.parse(websocketMessage.data);
204
- debug('-- Steem.onMessage -->', message.id);
205
- if (!this._requests.has(message.id)) {
206
- throw new Error('Panic: no request in queue for message id ' + message.id);
207
- }
208
- var _request = this._requests.get(message.id);
209
- this._requests.delete(message.id);
210
-
211
- var errorCause = message.error;
212
- if (errorCause) {
213
- var err = new Error(
214
- // eslint-disable-next-line prefer-template
215
- (errorCause.message || 'Failed to complete operation') + ' (see err.payload for the full error payload)');
216
- err.payload = message;
217
- _request.deferral.reject(err);
218
- } else {
219
- this.emit('track-performance', _request.message.method, Date.now() - _request.startedAt);
220
- _request.deferral.resolve(message.result);
221
- }
98
+ this.stop();
99
+ }
100
+ onClose() {
101
+ const error = new Error('Connection was closed');
102
+ for (let _request of this._requests) {
103
+ _request.deferral.reject(error);
222
104
  }
223
- }]);
224
-
225
- return WsTransport;
226
- }(_base2.default);
227
-
105
+ this._requests.clear();
106
+ }
107
+ onMessage(websocketMessage) {
108
+ const message = JSON.parse(websocketMessage.data);
109
+ debug('-- Steem.onMessage -->', message.id);
110
+ if (!this._requests.has(message.id)) {
111
+ throw new Error(`Panic: no request in queue for message id ${message.id}`);
112
+ }
113
+ const _request = this._requests.get(message.id);
114
+ this._requests.delete(message.id);
115
+ const errorCause = message.error;
116
+ if (errorCause) {
117
+ const err = new Error(
118
+ // eslint-disable-next-line prefer-template
119
+ (errorCause.message || 'Failed to complete operation') + ' (see err.payload for the full error payload)');
120
+ err.payload = message;
121
+ _request.deferral.reject(err);
122
+ } else {
123
+ this.emit('track-performance', _request.message.method, Date.now() - _request.startedAt);
124
+ _request.deferral.resolve(message.result);
125
+ }
126
+ }
127
+ }
228
128
  exports.default = WsTransport;
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
3
  module.exports = {
4
- Address: require("./src/address"),
5
- Aes: require("./src/aes"),
6
- PrivateKey: require("./src/key_private"),
7
- PublicKey: require("./src/key_public"),
8
- Signature: require("./src/signature"),
9
- brainKey: require("./src/brain_key"),
10
- key_utils: require("./src/key_utils"),
11
- hash: require("./src/hash"),
12
- ecc_config: require("../../config")
4
+ Address: require("./src/address"),
5
+ Aes: require("./src/aes"),
6
+ PrivateKey: require("./src/key_private"),
7
+ PublicKey: require("./src/key_public"),
8
+ Signature: require("./src/signature"),
9
+ brainKey: require("./src/brain_key"),
10
+ key_utils: require("./src/key_utils"),
11
+ hash: require("./src/hash"),
12
+ ecc_config: require("../../config")
13
13
  };
@@ -1,84 +1,54 @@
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
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6
-
7
- var assert = require('assert');
8
- var config = require('../../../config');
9
- var hash = require('./hash');
10
- var base58 = require('bs58');
3
+ const assert = require('assert');
4
+ const config = require('../../../config');
5
+ const hash = require('./hash');
6
+ const base58 = require('bs58');
11
7
 
12
8
  /** Addresses are shortened non-reversable hashes of a public key. The full PublicKey is preferred.
13
9
  @deprecated
14
10
  */
15
-
16
- var Address = function () {
17
- function Address(addy) {
18
- _classCallCheck(this, Address);
19
-
20
- this.addy = addy;
21
- }
22
-
23
- _createClass(Address, [{
24
- key: 'toBuffer',
25
- value: function toBuffer() {
26
- return this.addy;
27
- }
28
- }, {
29
- key: 'toString',
30
- value: function toString() {
31
- var address_prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : config.get('address_prefix');
32
-
33
- var checksum = hash.ripemd160(this.addy);
34
- var addy = Buffer.concat([this.addy, checksum.slice(0, 4)]);
35
- return address_prefix + base58.encode(addy);
36
- }
37
- }], [{
38
- key: 'fromBuffer',
39
- value: function fromBuffer(buffer) {
40
- var _hash = hash.sha512(buffer);
41
- var addy = hash.ripemd160(_hash);
42
- return new Address(addy);
43
- }
44
- }, {
45
- key: 'fromString',
46
- value: function fromString(string) {
47
- var address_prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : config.get('address_prefix');
48
-
49
- var prefix = string.slice(0, address_prefix.length);
50
- assert.equal(address_prefix, prefix, 'Expecting key to begin with ' + address_prefix + ', instead got ' + prefix);
51
- var addy = string.slice(address_prefix.length);
52
- addy = new Buffer(base58.decode(addy), 'binary');
53
- var checksum = addy.slice(-4);
54
- addy = addy.slice(0, -4);
55
- var new_checksum = hash.ripemd160(addy);
56
- new_checksum = new_checksum.slice(0, 4);
57
- assert.deepEqual(checksum, new_checksum, 'Checksum did not match');
58
- return new Address(addy);
59
- }
60
-
61
- /** @return Address - Compressed PTS format (by default) */
62
-
63
- }, {
64
- key: 'fromPublic',
65
- value: function fromPublic(public_key) {
66
- var compressed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
67
- var version = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 56;
68
-
69
- var sha2 = hash.sha256(public_key.toBuffer(compressed));
70
- var rep = hash.ripemd160(sha2);
71
- var versionBuffer = new Buffer(1);
72
- versionBuffer.writeUInt8(0xFF & version, 0);
73
- var addr = Buffer.concat([versionBuffer, rep]);
74
- var check = hash.sha256(addr);
75
- check = hash.sha256(check);
76
- var buffer = Buffer.concat([addr, check.slice(0, 4)]);
77
- return new Address(hash.ripemd160(buffer));
78
- }
79
- }]);
80
-
81
- return Address;
82
- }();
83
-
11
+ class Address {
12
+ constructor(addy) {
13
+ this.addy = addy;
14
+ }
15
+ static fromBuffer(buffer) {
16
+ const _hash = hash.sha512(buffer);
17
+ const addy = hash.ripemd160(_hash);
18
+ return new Address(addy);
19
+ }
20
+ static fromString(string, address_prefix = config.get('address_prefix')) {
21
+ const prefix = string.slice(0, address_prefix.length);
22
+ assert.equal(address_prefix, prefix, `Expecting key to begin with ${address_prefix}, instead got ${prefix}`);
23
+ let addy = string.slice(address_prefix.length);
24
+ addy = new Buffer.from(base58.decode(addy), 'binary');
25
+ const checksum = addy.slice(-4);
26
+ addy = addy.slice(0, -4);
27
+ let new_checksum = hash.ripemd160(addy);
28
+ new_checksum = new_checksum.slice(0, 4);
29
+ assert.deepEqual(checksum, new_checksum, 'Checksum did not match');
30
+ return new Address(addy);
31
+ }
32
+
33
+ /** @return Address - Compressed PTS format (by default) */
34
+ static fromPublic(public_key, compressed = true, version = 56) {
35
+ const sha2 = hash.sha256(public_key.toBuffer(compressed));
36
+ const rep = hash.ripemd160(sha2);
37
+ const versionBuffer = new Buffer.alloc(1);
38
+ versionBuffer.writeUInt8(0xFF & version, 0);
39
+ const addr = Buffer.concat([versionBuffer, rep]);
40
+ let check = hash.sha256(addr);
41
+ check = hash.sha256(check);
42
+ const buffer = Buffer.concat([addr, check.slice(0, 4)]);
43
+ return new Address(hash.ripemd160(buffer));
44
+ }
45
+ toBuffer() {
46
+ return this.addy;
47
+ }
48
+ toString(address_prefix = config.get('address_prefix')) {
49
+ const checksum = hash.ripemd160(this.addy);
50
+ const addy = Buffer.concat([this.addy, checksum.slice(0, 4)]);
51
+ return address_prefix + base58.encode(addy);
52
+ }
53
+ }
84
54
  module.exports = Address;