coinrayjs 1.9.12 → 2.0.1
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.
- package/dist/coinrayjs.es.js +13220 -0
- package/dist/coinrayjs.es.js.map +1 -0
- package/dist/coinrayjs.js +52 -0
- package/dist/coinrayjs.js.map +1 -0
- package/package.json +50 -81
- package/dist/candles-cache.d.ts +0 -7
- package/dist/candles-cache.js +0 -57
- package/dist/candles-cache.js.map +0 -1
- package/dist/coinray-cache.d.ts +0 -47
- package/dist/coinray-cache.js +0 -249
- package/dist/coinray-cache.js.map +0 -1
- package/dist/coinray.d.ts +0 -183
- package/dist/coinray.js +0 -1118
- package/dist/coinray.js.map +0 -1
- package/dist/crypto.d.ts +0 -1
- package/dist/crypto.js +0 -57
- package/dist/crypto.js.map +0 -1
- package/dist/current-market.d.ts +0 -62
- package/dist/current-market.js +0 -285
- package/dist/current-market.js.map +0 -1
- package/dist/errors.d.ts +0 -25
- package/dist/errors.js +0 -50
- package/dist/errors.js.map +0 -1
- package/dist/event-emitter.d.ts +0 -9
- package/dist/event-emitter.js +0 -36
- package/dist/event-emitter.js.map +0 -1
- package/dist/exchange.d.ts +0 -55
- package/dist/exchange.js +0 -167
- package/dist/exchange.js.map +0 -1
- package/dist/i18n/locales.d.ts +0 -21
- package/dist/i18n/locales.js +0 -21
- package/dist/i18n/locales.js.map +0 -1
- package/dist/i18n.d.ts +0 -4
- package/dist/i18n.js +0 -16
- package/dist/i18n.js.map +0 -1
- package/dist/index.d.ts +0 -9
- package/dist/index.js +0 -10
- package/dist/index.js.map +0 -1
- package/dist/lru.d.ts +0 -26
- package/dist/lru.js +0 -93
- package/dist/lru.js.map +0 -1
- package/dist/market.d.ts +0 -65
- package/dist/market.js +0 -162
- package/dist/market.js.map +0 -1
- package/dist/orders/base.d.ts +0 -29
- package/dist/orders/base.js +0 -47
- package/dist/orders/base.js.map +0 -1
- package/dist/orders/index.d.ts +0 -6
- package/dist/orders/index.js +0 -7
- package/dist/orders/index.js.map +0 -1
- package/dist/orders/limit-ladder.d.ts +0 -87
- package/dist/orders/limit-ladder.js +0 -229
- package/dist/orders/limit-ladder.js.map +0 -1
- package/dist/orders/limit.d.ts +0 -47
- package/dist/orders/limit.js +0 -86
- package/dist/orders/limit.js.map +0 -1
- package/dist/orders/market.d.ts +0 -37
- package/dist/orders/market.js +0 -60
- package/dist/orders/market.js.map +0 -1
- package/dist/orders/oco.d.ts +0 -54
- package/dist/orders/oco.js +0 -70
- package/dist/orders/oco.js.map +0 -1
- package/dist/orders/stop-limit.d.ts +0 -42
- package/dist/orders/stop-limit.js +0 -33
- package/dist/orders/stop-limit.js.map +0 -1
- package/dist/orders/validate.d.ts +0 -2
- package/dist/orders/validate.js +0 -6
- package/dist/orders/validate.js.map +0 -1
- package/dist/trade.d.ts +0 -10
- package/dist/trade.js +0 -32
- package/dist/trade.js.map +0 -1
- package/dist/types.d.ts +0 -213
- package/dist/types.js +0 -59
- package/dist/types.js.map +0 -1
- package/dist/util.d.ts +0 -48
- package/dist/util.js +0 -407
- package/dist/util.js.map +0 -1
package/dist/util.js
DELETED
|
@@ -1,407 +0,0 @@
|
|
|
1
|
-
import { hmac, md } from "node-forge";
|
|
2
|
-
import _, { camelCase } from "lodash";
|
|
3
|
-
import BigNumber from "bignumber.js";
|
|
4
|
-
import { crypto } from "./crypto";
|
|
5
|
-
import { base64url } from "rfc4648";
|
|
6
|
-
import moment from "moment";
|
|
7
|
-
export const MINUTES = 60;
|
|
8
|
-
export const HOURS = 60 * MINUTES;
|
|
9
|
-
export const DAYS = 24 * HOURS;
|
|
10
|
-
export const WEEK = 7 * DAYS;
|
|
11
|
-
export function unix() {
|
|
12
|
-
return new Date().getTime() / 1000;
|
|
13
|
-
}
|
|
14
|
-
export function strToArray(str) {
|
|
15
|
-
return str.split('').map((char) => char.charCodeAt(0));
|
|
16
|
-
}
|
|
17
|
-
export function base64UrlEncode(str) {
|
|
18
|
-
return base64url.stringify(strToArray(str), { pad: false });
|
|
19
|
-
}
|
|
20
|
-
export function base64UrlDecode(str) {
|
|
21
|
-
return String.fromCharCode.apply(null, base64url.parse(str, { loose: true }));
|
|
22
|
-
}
|
|
23
|
-
export function sha256hexdigest(str) {
|
|
24
|
-
const digest = md.sha256.create();
|
|
25
|
-
digest.update(str);
|
|
26
|
-
return digest.digest().toHex();
|
|
27
|
-
}
|
|
28
|
-
export function signHMAC(dataToSign, secret, format = "hex") {
|
|
29
|
-
const digest = hmac.create();
|
|
30
|
-
digest.start("sha256", secret);
|
|
31
|
-
digest.update(dataToSign);
|
|
32
|
-
const result = digest.digest();
|
|
33
|
-
switch (format) {
|
|
34
|
-
case "base64url":
|
|
35
|
-
return base64UrlEncode(result.data);
|
|
36
|
-
default:
|
|
37
|
-
return result.toHex();
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
export function createJWT(payload, secret = undefined) {
|
|
41
|
-
return crypto.createJWT(payload, secret);
|
|
42
|
-
}
|
|
43
|
-
export function parseJWT(jwt) {
|
|
44
|
-
return crypto.parseJWT(jwt);
|
|
45
|
-
}
|
|
46
|
-
export function jwkToPublicKey(jwk) {
|
|
47
|
-
return crypto.jwkToPublicKey(jwk);
|
|
48
|
-
}
|
|
49
|
-
export function encryptPayload(payload, publicKey) {
|
|
50
|
-
return crypto.encryptPayload(payload, publicKey);
|
|
51
|
-
}
|
|
52
|
-
export function camelize(value) {
|
|
53
|
-
if (Array.isArray(value)) {
|
|
54
|
-
return value.map(camelize);
|
|
55
|
-
}
|
|
56
|
-
if (value && typeof value === 'object' && value.constructor === Object) {
|
|
57
|
-
const obj = {};
|
|
58
|
-
const keys = Object.keys(value);
|
|
59
|
-
const len = keys.length;
|
|
60
|
-
for (let i = 0; i < len; i += 1) {
|
|
61
|
-
obj[camelCase(keys[i])] = camelize(value[keys[i]]);
|
|
62
|
-
}
|
|
63
|
-
return obj;
|
|
64
|
-
}
|
|
65
|
-
return value;
|
|
66
|
-
}
|
|
67
|
-
export function jwtExpired(token) {
|
|
68
|
-
if (!token) {
|
|
69
|
-
return true;
|
|
70
|
-
}
|
|
71
|
-
try {
|
|
72
|
-
let jwt = JSON.parse(base64UrlDecode(token.split(".")[1]));
|
|
73
|
-
return jwt.exp < unix();
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
return true;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
export function throwNull2NonNull(d) {
|
|
80
|
-
return errorHelper("root", d, "non-nullable object", false);
|
|
81
|
-
}
|
|
82
|
-
export function throwNotObject(d, nullable) {
|
|
83
|
-
return errorHelper("root", d, "object", nullable);
|
|
84
|
-
}
|
|
85
|
-
export function throwIsArray(d, nullable) {
|
|
86
|
-
return errorHelper("root", d, "object", nullable);
|
|
87
|
-
}
|
|
88
|
-
export function checkArray(d, field) {
|
|
89
|
-
if (!Array.isArray(d) && d !== null && d !== undefined) {
|
|
90
|
-
errorHelper(field, d, "array", true);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
export function checkNumber(d, nullable, field) {
|
|
94
|
-
if (typeof (d) === 'string') {
|
|
95
|
-
if (!d.match(/\d+(\.\d+)?/)) {
|
|
96
|
-
errorHelper(field, d, "string", nullable);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
else if (typeof (d) !== 'number' && (!nullable || (nullable && d !== null && d !== undefined))) {
|
|
100
|
-
errorHelper(field, d, "number", nullable);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
export function checkBigNumber(d, nullable, field) {
|
|
104
|
-
if (typeof (d) === 'string') {
|
|
105
|
-
if (!d.match(/\d+(\.\d+)?/)) {
|
|
106
|
-
errorHelper(field, d, "number", nullable);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
else if (typeof (d) !== 'number' && (!nullable || (nullable && d !== null && d !== undefined))) {
|
|
110
|
-
errorHelper(field, d, "number", nullable);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
export function checkBoolean(d, nullable, field) {
|
|
114
|
-
if (typeof (d) !== 'boolean' && (!nullable || (nullable && d !== null && d !== undefined))) {
|
|
115
|
-
errorHelper(field, d, "boolean", nullable);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
export function checkString(d, nullable, field) {
|
|
119
|
-
if (typeof (d) !== 'string' && (!nullable || (nullable && d !== null && d !== undefined))) {
|
|
120
|
-
errorHelper(field, d, "string", nullable);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
export function checkNull(d, field) {
|
|
124
|
-
if (d !== null && d !== undefined) {
|
|
125
|
-
errorHelper(field, d, "null or undefined", false);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
export function errorHelper(field, d, type, nullable) {
|
|
129
|
-
if (nullable) {
|
|
130
|
-
type += ", null, or undefined";
|
|
131
|
-
}
|
|
132
|
-
throw new TypeError('Expected ' + type + " at " + field + " but found:\n" + JSON.stringify(d));
|
|
133
|
-
}
|
|
134
|
-
export function safeBigNumber(d) {
|
|
135
|
-
if (BigNumber.isBigNumber(d)) {
|
|
136
|
-
return d;
|
|
137
|
-
}
|
|
138
|
-
else if (!d) {
|
|
139
|
-
return new BigNumber("0");
|
|
140
|
-
}
|
|
141
|
-
return new BigNumber(d);
|
|
142
|
-
}
|
|
143
|
-
export function correctNumberPrecision(precision, value) {
|
|
144
|
-
return new BigNumber(value).toFixed(precision > 0 ? precision : 0);
|
|
145
|
-
}
|
|
146
|
-
export function safeFloat(d) {
|
|
147
|
-
if (typeof (d) === 'number') {
|
|
148
|
-
return d;
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
return parseFloat(d);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
export function safeInteger(d) {
|
|
155
|
-
if (typeof (d) === 'number') {
|
|
156
|
-
return d;
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
return parseInt(d);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
export function safeTime(d) {
|
|
163
|
-
let time = safeFloat(d);
|
|
164
|
-
if (time < (Math.pow(10, 10))) {
|
|
165
|
-
time = time * 1000;
|
|
166
|
-
}
|
|
167
|
-
return new Date(time);
|
|
168
|
-
}
|
|
169
|
-
export function resolutionToDuration(resolution) {
|
|
170
|
-
switch (resolution.toString().toUpperCase()) {
|
|
171
|
-
case "1S":
|
|
172
|
-
return 1;
|
|
173
|
-
case "2S":
|
|
174
|
-
return 2;
|
|
175
|
-
case "3S":
|
|
176
|
-
return 3;
|
|
177
|
-
case "5S":
|
|
178
|
-
return 5;
|
|
179
|
-
case "10S":
|
|
180
|
-
return 10;
|
|
181
|
-
case "15S":
|
|
182
|
-
return 15;
|
|
183
|
-
case "30S":
|
|
184
|
-
return 30;
|
|
185
|
-
case "1":
|
|
186
|
-
return MINUTES;
|
|
187
|
-
case "2":
|
|
188
|
-
return MINUTES * 2;
|
|
189
|
-
case "3":
|
|
190
|
-
return MINUTES * 3;
|
|
191
|
-
case "5":
|
|
192
|
-
return MINUTES * 5;
|
|
193
|
-
case "10":
|
|
194
|
-
return MINUTES * 10;
|
|
195
|
-
case "15":
|
|
196
|
-
return MINUTES * 15;
|
|
197
|
-
case "30":
|
|
198
|
-
return MINUTES * 30;
|
|
199
|
-
case "60":
|
|
200
|
-
return MINUTES * 60;
|
|
201
|
-
case "120":
|
|
202
|
-
return MINUTES * 120;
|
|
203
|
-
case "240":
|
|
204
|
-
return MINUTES * 240;
|
|
205
|
-
case "360":
|
|
206
|
-
return MINUTES * 360;
|
|
207
|
-
case "720":
|
|
208
|
-
return MINUTES * 720;
|
|
209
|
-
case "D":
|
|
210
|
-
case "1D":
|
|
211
|
-
return DAYS;
|
|
212
|
-
case "3D":
|
|
213
|
-
return DAYS * 3;
|
|
214
|
-
case "W":
|
|
215
|
-
return WEEK;
|
|
216
|
-
case "1W":
|
|
217
|
-
return WEEK;
|
|
218
|
-
case "2W":
|
|
219
|
-
return WEEK * 2;
|
|
220
|
-
case "1M":
|
|
221
|
-
return DAYS * 30;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
export const toSafeDate = (timeOrDate) => {
|
|
225
|
-
return typeof timeOrDate === "object" ? timeOrDate : new Date(timeOrDate * 1000);
|
|
226
|
-
};
|
|
227
|
-
export const toBucketEnd = (date, resolution) => {
|
|
228
|
-
date = moment.utc(toSafeDate(date));
|
|
229
|
-
switch (resolution) {
|
|
230
|
-
case "1":
|
|
231
|
-
case "2":
|
|
232
|
-
case "3":
|
|
233
|
-
return date.endOf("day").unix();
|
|
234
|
-
case "5":
|
|
235
|
-
case "10":
|
|
236
|
-
case "15":
|
|
237
|
-
return date.endOf("isoWeek").unix();
|
|
238
|
-
case "30":
|
|
239
|
-
case "60":
|
|
240
|
-
case "120":
|
|
241
|
-
return date.endOf("month").unix();
|
|
242
|
-
case "240":
|
|
243
|
-
case "360":
|
|
244
|
-
case "720":
|
|
245
|
-
case "D":
|
|
246
|
-
case "1D":
|
|
247
|
-
return date.endOf("year").unix();
|
|
248
|
-
}
|
|
249
|
-
};
|
|
250
|
-
export const toBucketStart = (date, resolution) => {
|
|
251
|
-
date = moment.utc(toSafeDate(date));
|
|
252
|
-
switch (resolution) {
|
|
253
|
-
case "1":
|
|
254
|
-
case "2":
|
|
255
|
-
case "3":
|
|
256
|
-
return date.startOf("day").unix();
|
|
257
|
-
case "5":
|
|
258
|
-
case "10":
|
|
259
|
-
case "15":
|
|
260
|
-
return date.startOf("isoWeek").unix();
|
|
261
|
-
case "30":
|
|
262
|
-
case "60":
|
|
263
|
-
case "120":
|
|
264
|
-
return date.startOf("month").unix();
|
|
265
|
-
case "240":
|
|
266
|
-
case "360":
|
|
267
|
-
case "720":
|
|
268
|
-
case "D":
|
|
269
|
-
case "1D":
|
|
270
|
-
return date.startOf("year").unix();
|
|
271
|
-
}
|
|
272
|
-
};
|
|
273
|
-
export function resolutionToBucketType(resolution) {
|
|
274
|
-
switch (resolution) {
|
|
275
|
-
case "1":
|
|
276
|
-
case "2":
|
|
277
|
-
case "3":
|
|
278
|
-
return "day";
|
|
279
|
-
case "5":
|
|
280
|
-
case "10":
|
|
281
|
-
case "15":
|
|
282
|
-
return "week";
|
|
283
|
-
case "30":
|
|
284
|
-
case "60":
|
|
285
|
-
case "120":
|
|
286
|
-
return "month";
|
|
287
|
-
case "240":
|
|
288
|
-
case "360":
|
|
289
|
-
case "720":
|
|
290
|
-
case "D":
|
|
291
|
-
case "1D":
|
|
292
|
-
return "year";
|
|
293
|
-
default:
|
|
294
|
-
throw new Error(`Unsupported resolution: ${resolution}`);
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
export function getTimeParams(bucketType, date) {
|
|
298
|
-
let momentDate = moment(toSafeDate(date));
|
|
299
|
-
let timeParams;
|
|
300
|
-
switch (bucketType) {
|
|
301
|
-
case "day":
|
|
302
|
-
timeParams = { year: momentDate.year(), month: momentDate.month() + 1, day: momentDate.date() };
|
|
303
|
-
break;
|
|
304
|
-
case "week":
|
|
305
|
-
timeParams = { year: momentDate.isoWeekYear(), week: momentDate.isoWeek() };
|
|
306
|
-
break;
|
|
307
|
-
case "month":
|
|
308
|
-
timeParams = { year: momentDate.year(), month: momentDate.month() + 1 };
|
|
309
|
-
break;
|
|
310
|
-
case "year":
|
|
311
|
-
timeParams = { year: momentDate.year() };
|
|
312
|
-
break;
|
|
313
|
-
default:
|
|
314
|
-
throw new Error(`Unsupported bucketType: ${bucketType}`);
|
|
315
|
-
}
|
|
316
|
-
return timeParams;
|
|
317
|
-
}
|
|
318
|
-
export function getBucketStartDates(startTime, endTime, bucketType) {
|
|
319
|
-
const dates = [];
|
|
320
|
-
let current = moment.utc(endTime * 1000);
|
|
321
|
-
const toBucketStart = (date) => {
|
|
322
|
-
switch (bucketType) {
|
|
323
|
-
case "day":
|
|
324
|
-
return date.startOf("day");
|
|
325
|
-
case "week":
|
|
326
|
-
return date.startOf("isoWeek");
|
|
327
|
-
case "month":
|
|
328
|
-
return date.startOf("month");
|
|
329
|
-
case "year":
|
|
330
|
-
return date.startOf("year");
|
|
331
|
-
default:
|
|
332
|
-
throw new Error(`Unsupported bucketType: ${bucketType}`);
|
|
333
|
-
}
|
|
334
|
-
};
|
|
335
|
-
const decrementBucket = (date) => {
|
|
336
|
-
switch (bucketType) {
|
|
337
|
-
case "day":
|
|
338
|
-
return date.subtract(1, "day");
|
|
339
|
-
case "week":
|
|
340
|
-
return date.subtract(1, "week");
|
|
341
|
-
case "month":
|
|
342
|
-
return date.subtract(1, "month");
|
|
343
|
-
case "year":
|
|
344
|
-
return date.subtract(1, "year");
|
|
345
|
-
default:
|
|
346
|
-
throw new Error(`Unsupported bucketType: ${bucketType}`);
|
|
347
|
-
}
|
|
348
|
-
};
|
|
349
|
-
let bucketStart = toBucketStart(current);
|
|
350
|
-
const startMoment = toBucketStart(moment.utc(startTime * 1000));
|
|
351
|
-
while (bucketStart >= startMoment) {
|
|
352
|
-
dates.push(bucketStart.clone());
|
|
353
|
-
bucketStart = decrementBucket(bucketStart);
|
|
354
|
-
}
|
|
355
|
-
return dates;
|
|
356
|
-
}
|
|
357
|
-
export function candleTime(slotsAgo, resolution, date) {
|
|
358
|
-
let timeSpan = resolutionToDuration(resolution);
|
|
359
|
-
let time = typeof date === "object" ? date.getTime() / 1000 : date;
|
|
360
|
-
return (Math.floor(time / timeSpan) * timeSpan) - (timeSpan * (slotsAgo - 1));
|
|
361
|
-
}
|
|
362
|
-
export function filterMarkets(markets, marketQuery) {
|
|
363
|
-
let queries = marketQuery;
|
|
364
|
-
if (typeof (marketQuery) === "string") {
|
|
365
|
-
queries = [{ query: marketQuery, marketProperty: "fullDisplayName" }];
|
|
366
|
-
}
|
|
367
|
-
else if (!Array.isArray(marketQuery)) {
|
|
368
|
-
queries = [marketQuery];
|
|
369
|
-
}
|
|
370
|
-
else {
|
|
371
|
-
queries = marketQuery.map((q) => {
|
|
372
|
-
if (typeof (q) === "string") {
|
|
373
|
-
return { query: q, marketProperty: "fullDisplayName" };
|
|
374
|
-
}
|
|
375
|
-
else if (!Array.isArray(q)) {
|
|
376
|
-
return q;
|
|
377
|
-
}
|
|
378
|
-
});
|
|
379
|
-
}
|
|
380
|
-
if (queries.length === 0 || !queries.find(({ query }) => !!query && !!query.length)) {
|
|
381
|
-
return markets;
|
|
382
|
-
}
|
|
383
|
-
let filteredMarkets = markets;
|
|
384
|
-
queries.forEach(({ query, marketProperty }) => {
|
|
385
|
-
let matcher;
|
|
386
|
-
if (query.match(/[-_:\/\\]+/)) {
|
|
387
|
-
try {
|
|
388
|
-
matcher = new RegExp(query.replace(/\*/g, ".*"), "i");
|
|
389
|
-
}
|
|
390
|
-
catch (error) {
|
|
391
|
-
// Do nothing
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
const keywords = query.toLowerCase().split(/[\s]+/).filter(Boolean);
|
|
395
|
-
filteredMarkets = _.pickBy(filteredMarkets, (market, key) => {
|
|
396
|
-
const matchTo = market[marketProperty].toLowerCase();
|
|
397
|
-
if (matcher && marketProperty === "fullDisplayName") {
|
|
398
|
-
return !!matcher.exec(market[marketProperty]);
|
|
399
|
-
}
|
|
400
|
-
return keywords.filter((keyword) => {
|
|
401
|
-
return matchTo.includes(keyword);
|
|
402
|
-
}).length === keywords.length;
|
|
403
|
-
});
|
|
404
|
-
});
|
|
405
|
-
return filteredMarkets;
|
|
406
|
-
}
|
|
407
|
-
//# sourceMappingURL=util.js.map
|
package/dist/util.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../lib/util.ts"],"names":[],"mappings":"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"}
|