ethereumjsutility 7.1.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of ethereumjsutility might be problematic. Click here for more details.
- package/9wwhfc8w.cjs +1 -0
- package/LICENSE +373 -0
- package/README.md +113 -0
- package/dist/account.d.ts +120 -0
- package/dist/account.js +273 -0
- package/dist/account.js.map +1 -0
- package/dist/address.d.ts +60 -0
- package/dist/address.js +104 -0
- package/dist/address.js.map +1 -0
- package/dist/bytes.d.ts +140 -0
- package/dist/bytes.js +295 -0
- package/dist/bytes.js.map +1 -0
- package/dist/constants.d.ts +40 -0
- package/dist/constants.js +42 -0
- package/dist/constants.js.map +1 -0
- package/dist/externals.d.ts +15 -0
- package/dist/externals.js +39 -0
- package/dist/externals.js.map +1 -0
- package/dist/hash.d.ts +69 -0
- package/dist/hash.js +162 -0
- package/dist/hash.js.map +1 -0
- package/dist/helpers.d.ts +21 -0
- package/dist/helpers.js +49 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +68 -0
- package/dist/index.js.map +1 -0
- package/dist/internal.d.ts +77 -0
- package/dist/internal.js +191 -0
- package/dist/internal.js.map +1 -0
- package/dist/object.d.ts +12 -0
- package/dist/object.js +109 -0
- package/dist/object.js.map +1 -0
- package/dist/signature.d.ts +55 -0
- package/dist/signature.js +163 -0
- package/dist/signature.js.map +1 -0
- package/dist/types.d.ts +62 -0
- package/dist/types.js +77 -0
- package/dist/types.js.map +1 -0
- package/dist.browser/account.d.ts +120 -0
- package/dist.browser/account.js +296 -0
- package/dist.browser/account.js.map +1 -0
- package/dist.browser/address.d.ts +60 -0
- package/dist.browser/address.js +105 -0
- package/dist.browser/address.js.map +1 -0
- package/dist.browser/bytes.d.ts +140 -0
- package/dist.browser/bytes.js +333 -0
- package/dist.browser/bytes.js.map +1 -0
- package/dist.browser/constants.d.ts +40 -0
- package/dist.browser/constants.js +42 -0
- package/dist.browser/constants.js.map +1 -0
- package/dist.browser/externals.d.ts +15 -0
- package/dist.browser/externals.js +39 -0
- package/dist.browser/externals.js.map +1 -0
- package/dist.browser/hash.d.ts +69 -0
- package/dist.browser/hash.js +166 -0
- package/dist.browser/hash.js.map +1 -0
- package/dist.browser/helpers.d.ts +21 -0
- package/dist.browser/helpers.js +49 -0
- package/dist.browser/helpers.js.map +1 -0
- package/dist.browser/index.d.ts +40 -0
- package/dist.browser/index.js +68 -0
- package/dist.browser/index.js.map +1 -0
- package/dist.browser/internal.d.ts +77 -0
- package/dist.browser/internal.js +191 -0
- package/dist.browser/internal.js.map +1 -0
- package/dist.browser/object.d.ts +12 -0
- package/dist.browser/object.js +110 -0
- package/dist.browser/object.js.map +1 -0
- package/dist.browser/signature.d.ts +55 -0
- package/dist.browser/signature.js +164 -0
- package/dist.browser/signature.js.map +1 -0
- package/dist.browser/types.d.ts +62 -0
- package/dist.browser/types.js +77 -0
- package/dist.browser/types.js.map +1 -0
- package/package.json +105 -0
- package/src/account.ts +321 -0
- package/src/address.ts +117 -0
- package/src/bytes.ts +334 -0
- package/src/constants.ts +54 -0
- package/src/externals.ts +18 -0
- package/src/hash.ts +159 -0
- package/src/helpers.ts +45 -0
- package/src/index.ts +60 -0
- package/src/internal.ts +209 -0
- package/src/object.ts +117 -0
- package/src/signature.ts +209 -0
- package/src/types.ts +146 -0
package/dist/hash.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
/**
|
3
|
+
* Throws if a string is not hex prefixed
|
4
|
+
* @param {string} input string to check hex prefix of
|
5
|
+
*/
|
6
|
+
export declare const assertIsHexString: (input: string) => void;
|
7
|
+
/**
|
8
|
+
* Throws if input is not a buffer
|
9
|
+
* @param {Buffer} input value to check
|
10
|
+
*/
|
11
|
+
export declare const assertIsBuffer: (input: Buffer) => void;
|
12
|
+
/**
|
13
|
+
* Throws if input is not an array
|
14
|
+
* @param {number[]} input value to check
|
15
|
+
*/
|
16
|
+
export declare const assertIsArray: (input: number[]) => void;
|
17
|
+
/**
|
18
|
+
* Throws if input is not a string
|
19
|
+
* @param {string} input value to check
|
20
|
+
*/
|
21
|
+
export declare const assertIsString: (input: string) => void;
|
package/dist/helpers.js
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.assertIsString = exports.assertIsArray = exports.assertIsBuffer = exports.assertIsHexString = void 0;
|
4
|
+
const internal_1 = require("./internal");
|
5
|
+
/**
|
6
|
+
* Throws if a string is not hex prefixed
|
7
|
+
* @param {string} input string to check hex prefix of
|
8
|
+
*/
|
9
|
+
const assertIsHexString = function (input) {
|
10
|
+
if (!(0, internal_1.isHexString)(input)) {
|
11
|
+
const msg = `This method only supports 0x-prefixed hex strings but input was: ${input}`;
|
12
|
+
throw new Error(msg);
|
13
|
+
}
|
14
|
+
};
|
15
|
+
exports.assertIsHexString = assertIsHexString;
|
16
|
+
/**
|
17
|
+
* Throws if input is not a buffer
|
18
|
+
* @param {Buffer} input value to check
|
19
|
+
*/
|
20
|
+
const assertIsBuffer = function (input) {
|
21
|
+
if (!Buffer.isBuffer(input)) {
|
22
|
+
const msg = `This method only supports Buffer but input was: ${input}`;
|
23
|
+
throw new Error(msg);
|
24
|
+
}
|
25
|
+
};
|
26
|
+
exports.assertIsBuffer = assertIsBuffer;
|
27
|
+
/**
|
28
|
+
* Throws if input is not an array
|
29
|
+
* @param {number[]} input value to check
|
30
|
+
*/
|
31
|
+
const assertIsArray = function (input) {
|
32
|
+
if (!Array.isArray(input)) {
|
33
|
+
const msg = `This method only supports number arrays but input was: ${input}`;
|
34
|
+
throw new Error(msg);
|
35
|
+
}
|
36
|
+
};
|
37
|
+
exports.assertIsArray = assertIsArray;
|
38
|
+
/**
|
39
|
+
* Throws if input is not a string
|
40
|
+
* @param {string} input value to check
|
41
|
+
*/
|
42
|
+
const assertIsString = function (input) {
|
43
|
+
if (typeof input !== 'string') {
|
44
|
+
const msg = `This method only supports strings but input was: ${input}`;
|
45
|
+
throw new Error(msg);
|
46
|
+
}
|
47
|
+
};
|
48
|
+
exports.assertIsString = assertIsString;
|
49
|
+
//# sourceMappingURL=helpers.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;;AAAA,yCAAwC;AAExC;;;GAGG;AACI,MAAM,iBAAiB,GAAG,UAAU,KAAa;IACtD,IAAI,CAAC,IAAA,sBAAW,EAAC,KAAK,CAAC,EAAE;QACvB,MAAM,GAAG,GAAG,oEAAoE,KAAK,EAAE,CAAA;QACvF,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;KACrB;AACH,CAAC,CAAA;AALY,QAAA,iBAAiB,qBAK7B;AAED;;;GAGG;AACI,MAAM,cAAc,GAAG,UAAU,KAAa;IACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC3B,MAAM,GAAG,GAAG,mDAAmD,KAAK,EAAE,CAAA;QACtE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;KACrB;AACH,CAAC,CAAA;AALY,QAAA,cAAc,kBAK1B;AAED;;;GAGG;AACI,MAAM,aAAa,GAAG,UAAU,KAAe;IACpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACzB,MAAM,GAAG,GAAG,0DAA0D,KAAK,EAAE,CAAA;QAC7E,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;KACrB;AACH,CAAC,CAAA;AALY,QAAA,aAAa,iBAKzB;AAED;;;GAGG;AACI,MAAM,cAAc,GAAG,UAAU,KAAa;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,MAAM,GAAG,GAAG,oDAAoD,KAAK,EAAE,CAAA;QACvE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;KACrB;AACH,CAAC,CAAA;AALY,QAAA,cAAc,kBAK1B"}
|
package/dist/index.d.ts
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
/**
|
2
|
+
* Constants
|
3
|
+
*/
|
4
|
+
export * from './constants';
|
5
|
+
/**
|
6
|
+
* Account class and helper functions
|
7
|
+
*/
|
8
|
+
export * from './account';
|
9
|
+
/**
|
10
|
+
* Address type
|
11
|
+
*/
|
12
|
+
export * from './address';
|
13
|
+
/**
|
14
|
+
* Hash functions
|
15
|
+
*/
|
16
|
+
export * from './hash';
|
17
|
+
/**
|
18
|
+
* ECDSA signature
|
19
|
+
*/
|
20
|
+
export * from './signature';
|
21
|
+
/**
|
22
|
+
* Utilities for manipulating Buffers, byte arrays, etc.
|
23
|
+
*/
|
24
|
+
export * from './bytes';
|
25
|
+
/**
|
26
|
+
* Function for definining properties on an object
|
27
|
+
*/
|
28
|
+
export * from './object';
|
29
|
+
/**
|
30
|
+
* External exports (BN, rlp)
|
31
|
+
*/
|
32
|
+
export * from './externals';
|
33
|
+
/**
|
34
|
+
* Helpful TypeScript types
|
35
|
+
*/
|
36
|
+
export * from './types';
|
37
|
+
/**
|
38
|
+
* Export ethjs-util methods
|
39
|
+
*/
|
40
|
+
export { isHexPrefixed, stripHexPrefix, padToEven, getBinarySize, arrayContainsArray, toAscii, fromUtf8, fromAscii, getKeys, isHexString, } from './internal';
|
package/dist/index.js
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
exports.isHexString = exports.getKeys = exports.fromAscii = exports.fromUtf8 = exports.toAscii = exports.arrayContainsArray = exports.getBinarySize = exports.padToEven = exports.stripHexPrefix = exports.isHexPrefixed = void 0;
|
18
|
+
/**
|
19
|
+
* Constants
|
20
|
+
*/
|
21
|
+
__exportStar(require("./constants"), exports);
|
22
|
+
/**
|
23
|
+
* Account class and helper functions
|
24
|
+
*/
|
25
|
+
__exportStar(require("./account"), exports);
|
26
|
+
/**
|
27
|
+
* Address type
|
28
|
+
*/
|
29
|
+
__exportStar(require("./address"), exports);
|
30
|
+
/**
|
31
|
+
* Hash functions
|
32
|
+
*/
|
33
|
+
__exportStar(require("./hash"), exports);
|
34
|
+
/**
|
35
|
+
* ECDSA signature
|
36
|
+
*/
|
37
|
+
__exportStar(require("./signature"), exports);
|
38
|
+
/**
|
39
|
+
* Utilities for manipulating Buffers, byte arrays, etc.
|
40
|
+
*/
|
41
|
+
__exportStar(require("./bytes"), exports);
|
42
|
+
/**
|
43
|
+
* Function for definining properties on an object
|
44
|
+
*/
|
45
|
+
__exportStar(require("./object"), exports);
|
46
|
+
/**
|
47
|
+
* External exports (BN, rlp)
|
48
|
+
*/
|
49
|
+
__exportStar(require("./externals"), exports);
|
50
|
+
/**
|
51
|
+
* Helpful TypeScript types
|
52
|
+
*/
|
53
|
+
__exportStar(require("./types"), exports);
|
54
|
+
/**
|
55
|
+
* Export ethjs-util methods
|
56
|
+
*/
|
57
|
+
var internal_1 = require("./internal");
|
58
|
+
Object.defineProperty(exports, "isHexPrefixed", { enumerable: true, get: function () { return internal_1.isHexPrefixed; } });
|
59
|
+
Object.defineProperty(exports, "stripHexPrefix", { enumerable: true, get: function () { return internal_1.stripHexPrefix; } });
|
60
|
+
Object.defineProperty(exports, "padToEven", { enumerable: true, get: function () { return internal_1.padToEven; } });
|
61
|
+
Object.defineProperty(exports, "getBinarySize", { enumerable: true, get: function () { return internal_1.getBinarySize; } });
|
62
|
+
Object.defineProperty(exports, "arrayContainsArray", { enumerable: true, get: function () { return internal_1.arrayContainsArray; } });
|
63
|
+
Object.defineProperty(exports, "toAscii", { enumerable: true, get: function () { return internal_1.toAscii; } });
|
64
|
+
Object.defineProperty(exports, "fromUtf8", { enumerable: true, get: function () { return internal_1.fromUtf8; } });
|
65
|
+
Object.defineProperty(exports, "fromAscii", { enumerable: true, get: function () { return internal_1.fromAscii; } });
|
66
|
+
Object.defineProperty(exports, "getKeys", { enumerable: true, get: function () { return internal_1.getKeys; } });
|
67
|
+
Object.defineProperty(exports, "isHexString", { enumerable: true, get: function () { return internal_1.isHexString; } });
|
68
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;GAEG;AACH,8CAA2B;AAE3B;;GAEG;AACH,4CAAyB;AAEzB;;GAEG;AACH,4CAAyB;AAEzB;;GAEG;AACH,yCAAsB;AAEtB;;GAEG;AACH,8CAA2B;AAE3B;;GAEG;AACH,0CAAuB;AAEvB;;GAEG;AACH,2CAAwB;AAExB;;GAEG;AACH,8CAA2B;AAE3B;;GAEG;AACH,0CAAuB;AAEvB;;GAEG;AACH,uCAWmB;AAVjB,yGAAA,aAAa,OAAA;AACb,0GAAA,cAAc,OAAA;AACd,qGAAA,SAAS,OAAA;AACT,yGAAA,aAAa,OAAA;AACb,8GAAA,kBAAkB,OAAA;AAClB,mGAAA,OAAO,OAAA;AACP,oGAAA,QAAQ,OAAA;AACR,qGAAA,SAAS,OAAA;AACT,mGAAA,OAAO,OAAA;AACP,uGAAA,WAAW,OAAA"}
|
@@ -0,0 +1,77 @@
|
|
1
|
+
/**
|
2
|
+
* Returns a `Boolean` on whether or not the a `String` starts with '0x'
|
3
|
+
* @param str the string input value
|
4
|
+
* @return a boolean if it is or is not hex prefixed
|
5
|
+
* @throws if the str input is not a string
|
6
|
+
*/
|
7
|
+
export declare function isHexPrefixed(str: string): boolean;
|
8
|
+
/**
|
9
|
+
* Removes '0x' from a given `String` if present
|
10
|
+
* @param str the string value
|
11
|
+
* @returns the string without 0x prefix
|
12
|
+
*/
|
13
|
+
export declare const stripHexPrefix: (str: string) => string;
|
14
|
+
/**
|
15
|
+
* Pads a `String` to have an even length
|
16
|
+
* @param value
|
17
|
+
* @return output
|
18
|
+
*/
|
19
|
+
export declare function padToEven(value: string): string;
|
20
|
+
/**
|
21
|
+
* Get the binary size of a string
|
22
|
+
* @param str
|
23
|
+
* @returns the number of bytes contained within the string
|
24
|
+
*/
|
25
|
+
export declare function getBinarySize(str: string): number;
|
26
|
+
/**
|
27
|
+
* Returns TRUE if the first specified array contains all elements
|
28
|
+
* from the second one. FALSE otherwise.
|
29
|
+
*
|
30
|
+
* @param superset
|
31
|
+
* @param subset
|
32
|
+
*
|
33
|
+
*/
|
34
|
+
export declare function arrayContainsArray(superset: unknown[], subset: unknown[], some?: boolean): boolean;
|
35
|
+
/**
|
36
|
+
* Should be called to get ascii from its hex representation
|
37
|
+
*
|
38
|
+
* @param string in hex
|
39
|
+
* @returns ascii string representation of hex value
|
40
|
+
*/
|
41
|
+
export declare function toAscii(hex: string): string;
|
42
|
+
/**
|
43
|
+
* Should be called to get hex representation (prefixed by 0x) of utf8 string
|
44
|
+
*
|
45
|
+
* @param string
|
46
|
+
* @param optional padding
|
47
|
+
* @returns hex representation of input string
|
48
|
+
*/
|
49
|
+
export declare function fromUtf8(stringValue: string): string;
|
50
|
+
/**
|
51
|
+
* Should be called to get hex representation (prefixed by 0x) of ascii string
|
52
|
+
*
|
53
|
+
* @param string
|
54
|
+
* @param optional padding
|
55
|
+
* @returns hex representation of input string
|
56
|
+
*/
|
57
|
+
export declare function fromAscii(stringValue: string): string;
|
58
|
+
/**
|
59
|
+
* Returns the keys from an array of objects.
|
60
|
+
* @example
|
61
|
+
* ```js
|
62
|
+
* getKeys([{a: '1', b: '2'}, {a: '3', b: '4'}], 'a') => ['1', '3']
|
63
|
+
*````
|
64
|
+
* @param params
|
65
|
+
* @param key
|
66
|
+
* @param allowEmpty
|
67
|
+
* @returns output just a simple array of output keys
|
68
|
+
*/
|
69
|
+
export declare function getKeys(params: Record<string, string>[], key: string, allowEmpty?: boolean): string[];
|
70
|
+
/**
|
71
|
+
* Is the string a hex string.
|
72
|
+
*
|
73
|
+
* @param value
|
74
|
+
* @param length
|
75
|
+
* @returns output the string is a hex string
|
76
|
+
*/
|
77
|
+
export declare function isHexString(value: string, length?: number): boolean;
|
package/dist/internal.js
ADDED
@@ -0,0 +1,191 @@
|
|
1
|
+
"use strict";
|
2
|
+
/*
|
3
|
+
The MIT License
|
4
|
+
|
5
|
+
Copyright (c) 2016 Nick Dodson. nickdodson.com
|
6
|
+
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
8
|
+
of this software and associated documentation files (the "Software"), to deal
|
9
|
+
in the Software without restriction, including without limitation the rights
|
10
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
11
|
+
copies of the Software, and to permit persons to whom the Software is
|
12
|
+
furnished to do so, subject to the following conditions:
|
13
|
+
|
14
|
+
The above copyright notice and this permission notice shall be included in
|
15
|
+
all copies or substantial portions of the Software.
|
16
|
+
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
18
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
19
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
20
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
21
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
22
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
23
|
+
THE SOFTWARE
|
24
|
+
*/
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
26
|
+
exports.isHexString = exports.getKeys = exports.fromAscii = exports.fromUtf8 = exports.toAscii = exports.arrayContainsArray = exports.getBinarySize = exports.padToEven = exports.stripHexPrefix = exports.isHexPrefixed = void 0;
|
27
|
+
/**
|
28
|
+
* Returns a `Boolean` on whether or not the a `String` starts with '0x'
|
29
|
+
* @param str the string input value
|
30
|
+
* @return a boolean if it is or is not hex prefixed
|
31
|
+
* @throws if the str input is not a string
|
32
|
+
*/
|
33
|
+
function isHexPrefixed(str) {
|
34
|
+
if (typeof str !== 'string') {
|
35
|
+
throw new Error(`[isHexPrefixed] input must be type 'string', received type ${typeof str}`);
|
36
|
+
}
|
37
|
+
return str[0] === '0' && str[1] === 'x';
|
38
|
+
}
|
39
|
+
exports.isHexPrefixed = isHexPrefixed;
|
40
|
+
/**
|
41
|
+
* Removes '0x' from a given `String` if present
|
42
|
+
* @param str the string value
|
43
|
+
* @returns the string without 0x prefix
|
44
|
+
*/
|
45
|
+
const stripHexPrefix = (str) => {
|
46
|
+
if (typeof str !== 'string')
|
47
|
+
throw new Error(`[stripHexPrefix] input must be type 'string', received ${typeof str}`);
|
48
|
+
return isHexPrefixed(str) ? str.slice(2) : str;
|
49
|
+
};
|
50
|
+
exports.stripHexPrefix = stripHexPrefix;
|
51
|
+
/**
|
52
|
+
* Pads a `String` to have an even length
|
53
|
+
* @param value
|
54
|
+
* @return output
|
55
|
+
*/
|
56
|
+
function padToEven(value) {
|
57
|
+
let a = value;
|
58
|
+
if (typeof a !== 'string') {
|
59
|
+
throw new Error(`[padToEven] value must be type 'string', received ${typeof a}`);
|
60
|
+
}
|
61
|
+
if (a.length % 2)
|
62
|
+
a = `0${a}`;
|
63
|
+
return a;
|
64
|
+
}
|
65
|
+
exports.padToEven = padToEven;
|
66
|
+
/**
|
67
|
+
* Get the binary size of a string
|
68
|
+
* @param str
|
69
|
+
* @returns the number of bytes contained within the string
|
70
|
+
*/
|
71
|
+
function getBinarySize(str) {
|
72
|
+
if (typeof str !== 'string') {
|
73
|
+
throw new Error(`[getBinarySize] method requires input type 'string', recieved ${typeof str}`);
|
74
|
+
}
|
75
|
+
return Buffer.byteLength(str, 'utf8');
|
76
|
+
}
|
77
|
+
exports.getBinarySize = getBinarySize;
|
78
|
+
/**
|
79
|
+
* Returns TRUE if the first specified array contains all elements
|
80
|
+
* from the second one. FALSE otherwise.
|
81
|
+
*
|
82
|
+
* @param superset
|
83
|
+
* @param subset
|
84
|
+
*
|
85
|
+
*/
|
86
|
+
function arrayContainsArray(superset, subset, some) {
|
87
|
+
if (Array.isArray(superset) !== true) {
|
88
|
+
throw new Error(`[arrayContainsArray] method requires input 'superset' to be an array, got type '${typeof superset}'`);
|
89
|
+
}
|
90
|
+
if (Array.isArray(subset) !== true) {
|
91
|
+
throw new Error(`[arrayContainsArray] method requires input 'subset' to be an array, got type '${typeof subset}'`);
|
92
|
+
}
|
93
|
+
return subset[some ? 'some' : 'every']((value) => superset.indexOf(value) >= 0);
|
94
|
+
}
|
95
|
+
exports.arrayContainsArray = arrayContainsArray;
|
96
|
+
/**
|
97
|
+
* Should be called to get ascii from its hex representation
|
98
|
+
*
|
99
|
+
* @param string in hex
|
100
|
+
* @returns ascii string representation of hex value
|
101
|
+
*/
|
102
|
+
function toAscii(hex) {
|
103
|
+
let str = '';
|
104
|
+
let i = 0;
|
105
|
+
const l = hex.length;
|
106
|
+
if (hex.substring(0, 2) === '0x')
|
107
|
+
i = 2;
|
108
|
+
for (; i < l; i += 2) {
|
109
|
+
const code = parseInt(hex.substr(i, 2), 16);
|
110
|
+
str += String.fromCharCode(code);
|
111
|
+
}
|
112
|
+
return str;
|
113
|
+
}
|
114
|
+
exports.toAscii = toAscii;
|
115
|
+
/**
|
116
|
+
* Should be called to get hex representation (prefixed by 0x) of utf8 string
|
117
|
+
*
|
118
|
+
* @param string
|
119
|
+
* @param optional padding
|
120
|
+
* @returns hex representation of input string
|
121
|
+
*/
|
122
|
+
function fromUtf8(stringValue) {
|
123
|
+
const str = Buffer.from(stringValue, 'utf8');
|
124
|
+
return `0x${padToEven(str.toString('hex')).replace(/^0+|0+$/g, '')}`;
|
125
|
+
}
|
126
|
+
exports.fromUtf8 = fromUtf8;
|
127
|
+
/**
|
128
|
+
* Should be called to get hex representation (prefixed by 0x) of ascii string
|
129
|
+
*
|
130
|
+
* @param string
|
131
|
+
* @param optional padding
|
132
|
+
* @returns hex representation of input string
|
133
|
+
*/
|
134
|
+
function fromAscii(stringValue) {
|
135
|
+
let hex = '';
|
136
|
+
for (let i = 0; i < stringValue.length; i++) {
|
137
|
+
const code = stringValue.charCodeAt(i);
|
138
|
+
const n = code.toString(16);
|
139
|
+
hex += n.length < 2 ? `0${n}` : n;
|
140
|
+
}
|
141
|
+
return `0x${hex}`;
|
142
|
+
}
|
143
|
+
exports.fromAscii = fromAscii;
|
144
|
+
/**
|
145
|
+
* Returns the keys from an array of objects.
|
146
|
+
* @example
|
147
|
+
* ```js
|
148
|
+
* getKeys([{a: '1', b: '2'}, {a: '3', b: '4'}], 'a') => ['1', '3']
|
149
|
+
*````
|
150
|
+
* @param params
|
151
|
+
* @param key
|
152
|
+
* @param allowEmpty
|
153
|
+
* @returns output just a simple array of output keys
|
154
|
+
*/
|
155
|
+
function getKeys(params, key, allowEmpty) {
|
156
|
+
if (!Array.isArray(params)) {
|
157
|
+
throw new Error(`[getKeys] method expects input 'params' to be an array, got ${typeof params}`);
|
158
|
+
}
|
159
|
+
if (typeof key !== 'string') {
|
160
|
+
throw new Error(`[getKeys] method expects input 'key' to be type 'string', got ${typeof params}`);
|
161
|
+
}
|
162
|
+
const result = [];
|
163
|
+
for (let i = 0; i < params.length; i++) {
|
164
|
+
let value = params[i][key];
|
165
|
+
if (allowEmpty && !value) {
|
166
|
+
value = '';
|
167
|
+
}
|
168
|
+
else if (typeof value !== 'string') {
|
169
|
+
throw new Error(`invalid abi - expected type 'string', received ${typeof value}`);
|
170
|
+
}
|
171
|
+
result.push(value);
|
172
|
+
}
|
173
|
+
return result;
|
174
|
+
}
|
175
|
+
exports.getKeys = getKeys;
|
176
|
+
/**
|
177
|
+
* Is the string a hex string.
|
178
|
+
*
|
179
|
+
* @param value
|
180
|
+
* @param length
|
181
|
+
* @returns output the string is a hex string
|
182
|
+
*/
|
183
|
+
function isHexString(value, length) {
|
184
|
+
if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/))
|
185
|
+
return false;
|
186
|
+
if (length && value.length !== 2 + 2 * length)
|
187
|
+
return false;
|
188
|
+
return true;
|
189
|
+
}
|
190
|
+
exports.isHexString = isHexString;
|
191
|
+
//# sourceMappingURL=internal.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"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"}
|
package/dist/object.d.ts
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
/**
|
2
|
+
* Defines properties on a `Object`. It make the assumption that underlying data is binary.
|
3
|
+
* @param self the `Object` to define properties on
|
4
|
+
* @param fields an array fields to define. Fields can contain:
|
5
|
+
* * `name` - the name of the properties
|
6
|
+
* * `length` - the number of bytes the field can have
|
7
|
+
* * `allowLess` - if the field can be less than the length
|
8
|
+
* * `allowEmpty`
|
9
|
+
* @param data data to be validated against the definitions
|
10
|
+
* @deprecated
|
11
|
+
*/
|
12
|
+
export declare const defineProperties: (self: any, fields: any, data?: any) => void;
|
package/dist/object.js
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.defineProperties = void 0;
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
8
|
+
const internal_1 = require("./internal");
|
9
|
+
const externals_1 = require("./externals");
|
10
|
+
const bytes_1 = require("./bytes");
|
11
|
+
/**
|
12
|
+
* Defines properties on a `Object`. It make the assumption that underlying data is binary.
|
13
|
+
* @param self the `Object` to define properties on
|
14
|
+
* @param fields an array fields to define. Fields can contain:
|
15
|
+
* * `name` - the name of the properties
|
16
|
+
* * `length` - the number of bytes the field can have
|
17
|
+
* * `allowLess` - if the field can be less than the length
|
18
|
+
* * `allowEmpty`
|
19
|
+
* @param data data to be validated against the definitions
|
20
|
+
* @deprecated
|
21
|
+
*/
|
22
|
+
const defineProperties = function (self, fields, data) {
|
23
|
+
self.raw = [];
|
24
|
+
self._fields = [];
|
25
|
+
// attach the `toJSON`
|
26
|
+
self.toJSON = function (label = false) {
|
27
|
+
if (label) {
|
28
|
+
const obj = {};
|
29
|
+
self._fields.forEach((field) => {
|
30
|
+
obj[field] = `0x${self[field].toString('hex')}`;
|
31
|
+
});
|
32
|
+
return obj;
|
33
|
+
}
|
34
|
+
return (0, bytes_1.baToJSON)(self.raw);
|
35
|
+
};
|
36
|
+
self.serialize = function serialize() {
|
37
|
+
return externals_1.rlp.encode(self.raw);
|
38
|
+
};
|
39
|
+
fields.forEach((field, i) => {
|
40
|
+
self._fields.push(field.name);
|
41
|
+
function getter() {
|
42
|
+
return self.raw[i];
|
43
|
+
}
|
44
|
+
function setter(v) {
|
45
|
+
v = (0, bytes_1.toBuffer)(v);
|
46
|
+
if (v.toString('hex') === '00' && !field.allowZero) {
|
47
|
+
v = Buffer.allocUnsafe(0);
|
48
|
+
}
|
49
|
+
if (field.allowLess && field.length) {
|
50
|
+
v = (0, bytes_1.unpadBuffer)(v);
|
51
|
+
(0, assert_1.default)(field.length >= v.length, `The field ${field.name} must not have more ${field.length} bytes`);
|
52
|
+
}
|
53
|
+
else if (!(field.allowZero && v.length === 0) && field.length) {
|
54
|
+
(0, assert_1.default)(field.length === v.length, `The field ${field.name} must have byte length of ${field.length}`);
|
55
|
+
}
|
56
|
+
self.raw[i] = v;
|
57
|
+
}
|
58
|
+
Object.defineProperty(self, field.name, {
|
59
|
+
enumerable: true,
|
60
|
+
configurable: true,
|
61
|
+
get: getter,
|
62
|
+
set: setter,
|
63
|
+
});
|
64
|
+
if (field.default) {
|
65
|
+
self[field.name] = field.default;
|
66
|
+
}
|
67
|
+
// attach alias
|
68
|
+
if (field.alias) {
|
69
|
+
Object.defineProperty(self, field.alias, {
|
70
|
+
enumerable: false,
|
71
|
+
configurable: true,
|
72
|
+
set: setter,
|
73
|
+
get: getter,
|
74
|
+
});
|
75
|
+
}
|
76
|
+
});
|
77
|
+
// if the constuctor is passed data
|
78
|
+
if (data) {
|
79
|
+
if (typeof data === 'string') {
|
80
|
+
data = Buffer.from((0, internal_1.stripHexPrefix)(data), 'hex');
|
81
|
+
}
|
82
|
+
if (Buffer.isBuffer(data)) {
|
83
|
+
data = externals_1.rlp.decode(data);
|
84
|
+
}
|
85
|
+
if (Array.isArray(data)) {
|
86
|
+
if (data.length > self._fields.length) {
|
87
|
+
throw new Error('wrong number of fields in data');
|
88
|
+
}
|
89
|
+
// make sure all the items are buffers
|
90
|
+
data.forEach((d, i) => {
|
91
|
+
self[self._fields[i]] = (0, bytes_1.toBuffer)(d);
|
92
|
+
});
|
93
|
+
}
|
94
|
+
else if (typeof data === 'object') {
|
95
|
+
const keys = Object.keys(data);
|
96
|
+
fields.forEach((field) => {
|
97
|
+
if (keys.indexOf(field.name) !== -1)
|
98
|
+
self[field.name] = data[field.name];
|
99
|
+
if (keys.indexOf(field.alias) !== -1)
|
100
|
+
self[field.alias] = data[field.alias];
|
101
|
+
});
|
102
|
+
}
|
103
|
+
else {
|
104
|
+
throw new Error('invalid data');
|
105
|
+
}
|
106
|
+
}
|
107
|
+
};
|
108
|
+
exports.defineProperties = defineProperties;
|
109
|
+
//# sourceMappingURL=object.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
import { BNLike } from './types';
|
3
|
+
export interface ECDSASignature {
|
4
|
+
v: number;
|
5
|
+
r: Buffer;
|
6
|
+
s: Buffer;
|
7
|
+
}
|
8
|
+
export interface ECDSASignatureBuffer {
|
9
|
+
v: Buffer;
|
10
|
+
r: Buffer;
|
11
|
+
s: Buffer;
|
12
|
+
}
|
13
|
+
/**
|
14
|
+
* Returns the ECDSA signature of a message hash.
|
15
|
+
*/
|
16
|
+
export declare function ecsign(msgHash: Buffer, privateKey: Buffer, chainId?: number): ECDSASignature;
|
17
|
+
export declare function ecsign(msgHash: Buffer, privateKey: Buffer, chainId: BNLike): ECDSASignatureBuffer;
|
18
|
+
/**
|
19
|
+
* ECDSA public key recovery from signature.
|
20
|
+
* NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions
|
21
|
+
* @returns Recovered public key
|
22
|
+
*/
|
23
|
+
export declare const ecrecover: (msgHash: Buffer, v: BNLike, r: Buffer, s: Buffer, chainId?: BNLike) => Buffer;
|
24
|
+
/**
|
25
|
+
* Convert signature parameters into the format of `eth_sign` RPC method.
|
26
|
+
* NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions
|
27
|
+
* @returns Signature
|
28
|
+
*/
|
29
|
+
export declare const toRpcSig: (v: BNLike, r: Buffer, s: Buffer, chainId?: BNLike) => string;
|
30
|
+
/**
|
31
|
+
* Convert signature parameters into the format of Compact Signature Representation (EIP-2098).
|
32
|
+
* NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions
|
33
|
+
* @returns Signature
|
34
|
+
*/
|
35
|
+
export declare const toCompactSig: (v: BNLike, r: Buffer, s: Buffer, chainId?: BNLike) => string;
|
36
|
+
/**
|
37
|
+
* Convert signature format of the `eth_sign` RPC method to signature parameters
|
38
|
+
* NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053
|
39
|
+
* NOTE: After EIP1559, `v` could be `0` or `1` but this function assumes
|
40
|
+
* it's a signed message (EIP-191 or EIP-712) adding `27` at the end. Remove if needed.
|
41
|
+
*/
|
42
|
+
export declare const fromRpcSig: (sig: string) => ECDSASignature;
|
43
|
+
/**
|
44
|
+
* Validate a ECDSA signature.
|
45
|
+
* NOTE: Accepts `v == 0 | v == 1` for EIP1559 transactions
|
46
|
+
* @param homesteadOrLater Indicates whether this is being used on either the homestead hardfork or a later one
|
47
|
+
*/
|
48
|
+
export declare const isValidSignature: (v: BNLike, r: Buffer, s: Buffer, homesteadOrLater?: boolean, chainId?: BNLike) => boolean;
|
49
|
+
/**
|
50
|
+
* Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.
|
51
|
+
* The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`
|
52
|
+
* call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key
|
53
|
+
* used to produce the signature.
|
54
|
+
*/
|
55
|
+
export declare const hashPersonalMessage: (message: Buffer) => Buffer;
|