Added slice and missing Math libraries for limited environments.
This commit is contained in:
parent
b4bc01f2c3
commit
04f0a33489
@ -31,6 +31,15 @@ function getChecksumAddress(address) {
|
|||||||
return '0x' + address.join('');
|
return '0x' + address.join('');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Shims for environments that are missing some required constants and functions
|
||||||
|
var MAX_SAFE_INTEGER = 0x1fffffffffffff;
|
||||||
|
|
||||||
|
function log10(x) {
|
||||||
|
if (Math.log10) { return Math.log10(x); }
|
||||||
|
return Math.log(x) / Math.LN10;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number
|
// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number
|
||||||
var ibanChecksum = (function() {
|
var ibanChecksum = (function() {
|
||||||
|
|
||||||
@ -40,7 +49,7 @@ var ibanChecksum = (function() {
|
|||||||
for (var i = 0; i < 26; i++) { ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); }
|
for (var i = 0; i < 26; i++) { ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); }
|
||||||
|
|
||||||
// How many decimal digits can we process? (for 64-bit float, this is 15)
|
// How many decimal digits can we process? (for 64-bit float, this is 15)
|
||||||
var safeDigits = Math.floor(Math.log10(Number.MAX_SAFE_INTEGER));
|
var safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));
|
||||||
|
|
||||||
return function(address) {
|
return function(address) {
|
||||||
address = address.toUpperCase();
|
address = address.toUpperCase();
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var defineProperty = require('./properties.js').defineProperty;
|
var convert = require('./convert');
|
||||||
|
var defineProperty = require('./properties').defineProperty;
|
||||||
|
|
||||||
var crypto = global.crypto || global.msCrypto;
|
var crypto = global.crypto || global.msCrypto;
|
||||||
if (!crypto || !crypto.getRandomValues) {
|
if (!crypto || !crypto.getRandomValues) {
|
||||||
@ -32,7 +33,7 @@ function randomBytes(length) {
|
|||||||
|
|
||||||
var result = new Uint8Array(length);
|
var result = new Uint8Array(length);
|
||||||
crypto.getRandomValues(result);
|
crypto.getRandomValues(result);
|
||||||
return result;
|
return convert.arrayify(result);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (crypto._weakCrypto === true) {
|
if (crypto._weakCrypto === true) {
|
||||||
|
@ -6,6 +6,17 @@
|
|||||||
var defineProperty = require('./properties.js').defineProperty;
|
var defineProperty = require('./properties.js').defineProperty;
|
||||||
var throwError = require('./throw-error');
|
var throwError = require('./throw-error');
|
||||||
|
|
||||||
|
function addSlice(array) {
|
||||||
|
if (array.slice) { return array; }
|
||||||
|
|
||||||
|
array.slice = function() {
|
||||||
|
var args = Array.prototype.slice.call(arguments);
|
||||||
|
return new Uint8Array(Array.prototype.slice.apply(array, args));
|
||||||
|
}
|
||||||
|
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
|
||||||
function isArrayish(value) {
|
function isArrayish(value) {
|
||||||
if (!value || parseInt(value.length) != value.length || typeof(value) === 'string') {
|
if (!value || parseInt(value.length) != value.length || typeof(value) === 'string') {
|
||||||
return false;
|
return false;
|
||||||
@ -36,11 +47,11 @@ function arrayify(value, name) {
|
|||||||
result.push(parseInt(value.substr(i, 2), 16));
|
result.push(parseInt(value.substr(i, 2), 16));
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Uint8Array(result);
|
return addSlice(new Uint8Array(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isArrayish(value)) {
|
if (isArrayish(value)) {
|
||||||
return new Uint8Array(value);
|
return addSlice(new Uint8Array(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
throwError('invalid arrayify value', { name: name, input: value });
|
throwError('invalid arrayify value', { name: name, input: value });
|
||||||
@ -62,7 +73,7 @@ function concat(objects) {
|
|||||||
offset += arrays[i].length;
|
offset += arrays[i].length;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return addSlice(result);
|
||||||
}
|
}
|
||||||
function stripZeros(value) {
|
function stripZeros(value) {
|
||||||
value = arrayify(value);
|
value = arrayify(value);
|
||||||
@ -88,7 +99,7 @@ function padZeros(value, length) {
|
|||||||
|
|
||||||
var result = new Uint8Array(length);
|
var result = new Uint8Array(length);
|
||||||
result.set(value, length - value.length);
|
result.set(value, length - value.length);
|
||||||
return result;
|
return addSlice(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ethers-utils",
|
"name": "ethers-utils",
|
||||||
"version": "2.1.4",
|
"version": "2.1.5",
|
||||||
"description": "Utilities for the Ethers Ethereum library.",
|
"description": "Utilities for the Ethers Ethereum library.",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "http://github.com/ethers-io/ethers.js/issues",
|
"url": "http://github.com/ethers-io/ethers.js/issues",
|
||||||
|
@ -39,7 +39,7 @@ function pbkdf2(password, salt, iterations, keylen, createHmac) {
|
|||||||
var destPos = (i - 1) * hLen
|
var destPos = (i - 1) * hLen
|
||||||
var len = (i === l ? r : hLen)
|
var len = (i === l ? r : hLen)
|
||||||
//T.copy(DK, destPos, 0, len)
|
//T.copy(DK, destPos, 0, len)
|
||||||
DK.set(T.slice(0, len), destPos);
|
DK.set(Array.prototype.slice.call(T, 0, len), destPos);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user