@aeternity/aepp-sdk 13.0.1 → 13.1.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.
- package/README.md +4 -2
- package/bin/aesophia_cli +0 -0
- package/dist/aepp-sdk.browser-script.js +1 -1
- package/dist/aepp-sdk.browser-script.js.map +1 -1
- package/dist/aepp-sdk.browser.js +1 -1
- package/dist/aepp-sdk.browser.js.map +1 -1
- package/dist/aepp-sdk.js +26702 -16514
- package/dist/aepp-sdk.js.map +1 -1
- package/es/AeSdkBase.d.ts +11 -3
- package/es/AeSdkBase.mjs +24 -3
- package/es/AeSdkBase.mjs.map +1 -1
- package/es/AeSdkMethods.d.ts +9 -14
- package/es/AeSdkMethods.mjs +20 -49
- package/es/AeSdkMethods.mjs.map +1 -1
- package/es/AeSdkWallet.mjs +28 -5
- package/es/AeSdkWallet.mjs.map +1 -1
- package/es/Middleware.d.ts +38 -0
- package/es/Middleware.mjs +90 -0
- package/es/Middleware.mjs.map +1 -0
- package/es/MiddlewareSubscriber.d.ts +30 -0
- package/es/MiddlewareSubscriber.mjs +198 -0
- package/es/MiddlewareSubscriber.mjs.map +1 -0
- package/es/Node.d.ts +1 -1
- package/es/Node.mjs.map +1 -1
- package/es/account/Base.d.ts +14 -2
- package/es/account/Base.mjs.map +1 -1
- package/es/account/Generalized.d.ts +1 -0
- package/es/account/Generalized.mjs +5 -0
- package/es/account/Generalized.mjs.map +1 -1
- package/es/account/Ledger.d.ts +1 -0
- package/es/account/Ledger.mjs +5 -0
- package/es/account/Ledger.mjs.map +1 -1
- package/es/account/Memory.d.ts +2 -0
- package/es/account/Memory.mjs +18 -0
- package/es/account/Memory.mjs.map +1 -1
- package/es/account/Rpc.d.ts +1 -6
- package/es/account/Rpc.mjs +24 -10
- package/es/account/Rpc.mjs.map +1 -1
- package/es/aens.d.ts +1 -1
- package/es/aens.mjs +1 -1
- package/es/aens.mjs.map +1 -1
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs +5 -2
- package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
- package/es/aepp-wallet-communication/rpc/types.d.ts +10 -0
- package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
- package/es/aepp-wallet-communication/schema.d.ts +1 -8
- package/es/aepp-wallet-communication/schema.mjs +1 -14
- package/es/aepp-wallet-communication/schema.mjs.map +1 -1
- package/es/aepp-wallet-communication/wallet-detector.d.ts +1 -1
- package/es/aepp-wallet-communication/wallet-detector.mjs +0 -3
- package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
- package/es/apis/compiler/compiler.mjs +15 -1
- package/es/apis/compiler/compiler.mjs.map +1 -1
- package/es/apis/compiler/models/index.d.ts +1 -7
- package/es/apis/compiler/models/index.mjs.map +1 -1
- package/es/apis/compiler/models/mappers.d.ts +0 -1
- package/es/apis/compiler/models/mappers.mjs +0 -43
- package/es/apis/compiler/models/mappers.mjs.map +1 -1
- package/es/apis/middleware/index.d.ts +2 -0
- package/es/apis/middleware/index.mjs +3 -0
- package/es/apis/middleware/index.mjs.map +1 -0
- package/es/apis/middleware/middleware.d.ts +309 -0
- package/es/apis/middleware/middleware.mjs +1527 -0
- package/es/apis/middleware/middleware.mjs.map +1 -0
- package/es/apis/middleware/models/index.d.ts +1496 -0
- package/es/apis/middleware/models/index.mjs +364 -0
- package/es/apis/middleware/models/index.mjs.map +1 -0
- package/es/apis/middleware/models/mappers.d.ts +102 -0
- package/es/apis/middleware/models/mappers.mjs +3334 -0
- package/es/apis/middleware/models/mappers.mjs.map +1 -0
- package/es/apis/middleware/models/parameters.d.ts +43 -0
- package/es/apis/middleware/models/parameters.mjs +417 -0
- package/es/apis/middleware/models/parameters.mjs.map +1 -0
- package/es/chain.d.ts +2 -1
- package/es/chain.mjs +4 -2
- package/es/chain.mjs.map +1 -1
- package/es/channel/Base.d.ts +1 -1
- package/es/channel/Base.mjs +1 -4
- package/es/channel/Base.mjs.map +1 -1
- package/es/channel/internal.mjs +2 -0
- package/es/channel/internal.mjs.map +1 -1
- package/es/contract/Contract.mjs +1 -1
- package/es/contract/Contract.mjs.map +1 -1
- package/es/contract/compiler/Base.d.ts +21 -0
- package/es/contract/compiler/Base.mjs.map +1 -1
- package/es/contract/compiler/Cli.d.ts +2 -0
- package/es/contract/compiler/Cli.mjs +24 -3
- package/es/contract/compiler/Cli.mjs.map +1 -1
- package/es/contract/compiler/Http.d.ts +2 -0
- package/es/contract/compiler/Http.mjs +22 -2
- package/es/contract/compiler/Http.mjs.map +1 -1
- package/es/contract/compiler/HttpNode.d.ts +1 -0
- package/es/contract/compiler/HttpNode.mjs +5 -0
- package/es/contract/compiler/HttpNode.mjs.map +1 -1
- package/es/deprecated.d.ts +14 -0
- package/es/deprecated.mjs +22 -0
- package/es/deprecated.mjs.map +1 -0
- package/es/index-browser.d.ts +20 -14
- package/es/index-browser.mjs +19 -15
- package/es/index-browser.mjs.map +1 -1
- package/es/tx/builder/constants.d.ts +0 -1
- package/es/tx/builder/constants.mjs +0 -1
- package/es/tx/builder/constants.mjs.map +1 -1
- package/es/tx/builder/field-types/coin-amount.d.ts +1 -1
- package/es/tx/builder/field-types/coin-amount.mjs +2 -1
- package/es/tx/builder/field-types/coin-amount.mjs.map +1 -1
- package/es/tx/builder/field-types/deposit.d.ts +1 -1
- package/es/tx/builder/field-types/entry.mjs +2 -1
- package/es/tx/builder/field-types/entry.mjs.map +1 -1
- package/es/tx/builder/field-types/index.d.ts +2 -2
- package/es/tx/builder/helpers.d.ts +8 -1
- package/es/tx/builder/helpers.mjs +53 -9
- package/es/tx/builder/helpers.mjs.map +1 -1
- package/es/tx/builder/index.d.ts +4 -2
- package/es/tx/builder/index.mjs +0 -1
- package/es/tx/builder/index.mjs.map +1 -1
- package/es/tx/builder/schema.d.ts +9 -9
- package/es/tx/validator.mjs +6 -3
- package/es/tx/validator.mjs.map +1 -1
- package/es/utils/autorest.mjs +6 -8
- package/es/utils/autorest.mjs.map +1 -1
- package/es/utils/crypto.d.ts +1 -0
- package/es/utils/crypto.mjs +12 -2
- package/es/utils/crypto.mjs.map +1 -1
- package/es/utils/errors.d.ts +2 -2
- package/es/utils/errors.mjs.map +1 -1
- package/es/utils/other.d.ts +1 -0
- package/es/utils/other.mjs +5 -0
- package/es/utils/other.mjs.map +1 -1
- package/es/utils/typed-data.d.ts +45 -0
- package/es/utils/typed-data.mjs +71 -0
- package/es/utils/typed-data.mjs.map +1 -0
- package/package.json +23 -4
- package/src/AeSdkBase.ts +30 -5
- package/src/AeSdkMethods.ts +31 -50
- package/src/AeSdkWallet.ts +27 -5
- package/src/Middleware.ts +141 -0
- package/src/MiddlewareSubscriber.ts +207 -0
- package/src/Node.ts +1 -1
- package/src/account/Base.ts +20 -3
- package/src/account/Generalized.ts +5 -0
- package/src/account/Ledger.ts +5 -0
- package/src/account/Memory.ts +15 -0
- package/src/account/Rpc.ts +19 -7
- package/src/aens.ts +1 -1
- package/src/aepp-wallet-communication/rpc/RpcClient.ts +11 -3
- package/src/aepp-wallet-communication/rpc/types.ts +11 -0
- package/src/aepp-wallet-communication/schema.ts +2 -17
- package/src/aepp-wallet-communication/wallet-detector.ts +1 -2
- package/src/apis/compiler/compiler.ts +8 -1
- package/src/apis/compiler/models/index.ts +1 -8
- package/src/apis/compiler/models/mappers.ts +0 -36
- package/src/apis/middleware/index.ts +2 -0
- package/src/apis/middleware/middleware.ts +1807 -0
- package/src/apis/middleware/models/index.ts +1747 -0
- package/src/apis/middleware/models/mappers.ts +3370 -0
- package/src/apis/middleware/models/parameters.ts +463 -0
- package/src/chain.ts +3 -2
- package/src/channel/Base.ts +5 -5
- package/src/channel/internal.ts +2 -0
- package/src/contract/Contract.ts +1 -0
- package/src/contract/compiler/Base.ts +26 -0
- package/src/contract/compiler/Cli.ts +27 -3
- package/src/contract/compiler/Http.ts +21 -2
- package/src/contract/compiler/HttpNode.ts +6 -0
- package/src/deprecated.ts +23 -0
- package/src/index-browser.ts +77 -15
- package/src/tx/builder/constants.ts +0 -1
- package/src/tx/builder/field-types/coin-amount.ts +2 -1
- package/src/tx/builder/field-types/entry.ts +1 -1
- package/src/tx/builder/helpers.ts +54 -9
- package/src/tx/builder/index.ts +6 -9
- package/src/tx/validator.ts +4 -2
- package/src/utils/autorest.ts +5 -10
- package/src/utils/crypto.ts +12 -2
- package/src/utils/errors.ts +2 -2
- package/src/utils/other.ts +5 -0
- package/src/utils/typed-data.ts +95 -0
- package/types-legacy/ts4.2/AeSdkBase.d.ts +11 -3
- package/types-legacy/ts4.2/AeSdkMethods.d.ts +9 -14
- package/types-legacy/ts4.2/Middleware.d.ts +46 -0
- package/types-legacy/ts4.2/MiddlewareSubscriber.d.ts +30 -0
- package/types-legacy/ts4.2/Node.d.ts +1 -1
- package/types-legacy/ts4.2/account/Base.d.ts +14 -2
- package/types-legacy/ts4.2/account/Generalized.d.ts +1 -0
- package/types-legacy/ts4.2/account/Ledger.d.ts +1 -0
- package/types-legacy/ts4.2/account/Memory.d.ts +2 -0
- package/types-legacy/ts4.2/account/Rpc.d.ts +1 -6
- package/types-legacy/ts4.2/aens.d.ts +1 -1
- package/types-legacy/ts4.2/aepp-wallet-communication/rpc/types.d.ts +10 -0
- package/types-legacy/ts4.2/aepp-wallet-communication/schema.d.ts +1 -8
- package/types-legacy/ts4.2/aepp-wallet-communication/wallet-detector.d.ts +1 -1
- package/types-legacy/ts4.2/apis/compiler/models/index.d.ts +1 -7
- package/types-legacy/ts4.2/apis/compiler/models/mappers.d.ts +0 -1
- package/types-legacy/ts4.2/apis/middleware/index.d.ts +2 -0
- package/types-legacy/ts4.2/apis/middleware/middleware.d.ts +309 -0
- package/types-legacy/ts4.2/apis/middleware/models/index.d.ts +1496 -0
- package/types-legacy/ts4.2/apis/middleware/models/mappers.d.ts +102 -0
- package/types-legacy/ts4.2/apis/middleware/models/parameters.d.ts +43 -0
- package/types-legacy/ts4.2/chain.d.ts +2 -1
- package/types-legacy/ts4.2/channel/Base.d.ts +1 -1
- package/types-legacy/ts4.2/contract/compiler/Base.d.ts +21 -0
- package/types-legacy/ts4.2/contract/compiler/Cli.d.ts +2 -0
- package/types-legacy/ts4.2/contract/compiler/Http.d.ts +2 -0
- package/types-legacy/ts4.2/contract/compiler/HttpNode.d.ts +1 -0
- package/types-legacy/ts4.2/deprecated.d.ts +14 -0
- package/types-legacy/ts4.2/index-browser.d.ts +20 -14
- package/types-legacy/ts4.2/tx/builder/constants.d.ts +0 -1
- package/types-legacy/ts4.2/tx/builder/field-types/coin-amount.d.ts +1 -1
- package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +1 -1
- package/types-legacy/ts4.2/tx/builder/field-types/index.d.ts +2 -2
- package/types-legacy/ts4.2/tx/builder/helpers.d.ts +8 -1
- package/types-legacy/ts4.2/tx/builder/index.d.ts +4 -2
- package/types-legacy/ts4.2/tx/builder/schema.d.ts +9 -9
- package/types-legacy/ts4.2/utils/crypto.d.ts +1 -0
- package/types-legacy/ts4.2/utils/errors.d.ts +2 -2
- package/types-legacy/ts4.2/utils/other.d.ts +1 -0
- package/types-legacy/ts4.2/utils/typed-data.d.ts +60 -0
- package/types-legacy/ts4.5/AeSdkBase.d.ts +11 -3
- package/types-legacy/ts4.5/AeSdkMethods.d.ts +9 -14
- package/types-legacy/ts4.5/Middleware.d.ts +46 -0
- package/types-legacy/ts4.5/MiddlewareSubscriber.d.ts +30 -0
- package/types-legacy/ts4.5/Node.d.ts +1 -1
- package/types-legacy/ts4.5/account/Base.d.ts +14 -2
- package/types-legacy/ts4.5/account/Generalized.d.ts +1 -0
- package/types-legacy/ts4.5/account/Ledger.d.ts +1 -0
- package/types-legacy/ts4.5/account/Memory.d.ts +2 -0
- package/types-legacy/ts4.5/account/Rpc.d.ts +1 -6
- package/types-legacy/ts4.5/aens.d.ts +1 -1
- package/types-legacy/ts4.5/aepp-wallet-communication/rpc/types.d.ts +10 -0
- package/types-legacy/ts4.5/aepp-wallet-communication/schema.d.ts +1 -8
- package/types-legacy/ts4.5/aepp-wallet-communication/wallet-detector.d.ts +1 -1
- package/types-legacy/ts4.5/apis/compiler/models/index.d.ts +1 -7
- package/types-legacy/ts4.5/apis/compiler/models/mappers.d.ts +0 -1
- package/types-legacy/ts4.5/apis/middleware/index.d.ts +2 -0
- package/types-legacy/ts4.5/apis/middleware/middleware.d.ts +309 -0
- package/types-legacy/ts4.5/apis/middleware/models/index.d.ts +1496 -0
- package/types-legacy/ts4.5/apis/middleware/models/mappers.d.ts +102 -0
- package/types-legacy/ts4.5/apis/middleware/models/parameters.d.ts +43 -0
- package/types-legacy/ts4.5/chain.d.ts +2 -1
- package/types-legacy/ts4.5/channel/Base.d.ts +1 -1
- package/types-legacy/ts4.5/contract/compiler/Base.d.ts +21 -0
- package/types-legacy/ts4.5/contract/compiler/Cli.d.ts +2 -0
- package/types-legacy/ts4.5/contract/compiler/Http.d.ts +2 -0
- package/types-legacy/ts4.5/contract/compiler/HttpNode.d.ts +1 -0
- package/types-legacy/ts4.5/deprecated.d.ts +14 -0
- package/types-legacy/ts4.5/index-browser.d.ts +20 -14
- package/types-legacy/ts4.5/tx/builder/constants.d.ts +0 -1
- package/types-legacy/ts4.5/tx/builder/field-types/coin-amount.d.ts +1 -1
- package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +1 -1
- package/types-legacy/ts4.5/tx/builder/field-types/index.d.ts +2 -2
- package/types-legacy/ts4.5/tx/builder/helpers.d.ts +8 -1
- package/types-legacy/ts4.5/tx/builder/index.d.ts +4 -2
- package/types-legacy/ts4.5/tx/builder/schema.d.ts +9 -9
- package/types-legacy/ts4.5/utils/crypto.d.ts +1 -0
- package/types-legacy/ts4.5/utils/errors.d.ts +2 -2
- package/types-legacy/ts4.5/utils/other.d.ts +1 -0
- package/types-legacy/ts4.5/utils/typed-data.d.ts +60 -0
|
@@ -22,6 +22,7 @@ export declare function buildContractId(ownerId: Encoded.AccountAddress, nonce:
|
|
|
22
22
|
* @returns Contract public key
|
|
23
23
|
*/
|
|
24
24
|
export declare function oracleQueryId(senderId: Encoded.AccountAddress, nonce: number | BigNumber | string, oracleId: Encoded.OracleAddress): Encoded.OracleQueryId;
|
|
25
|
+
export declare function nameToPunycode(maybeName: string): AensName;
|
|
25
26
|
/**
|
|
26
27
|
* Encode an AENS name
|
|
27
28
|
* @category AENS
|
|
@@ -45,12 +46,18 @@ export declare function commitmentHash(name: AensName, salt?: number): Encoded.C
|
|
|
45
46
|
* @returns Buffer Buffer from number(BigEndian)
|
|
46
47
|
*/
|
|
47
48
|
export declare function readInt(buf?: Buffer): string;
|
|
49
|
+
/**
|
|
50
|
+
* Ensure that name is valid AENS name, would throw an exception otherwise
|
|
51
|
+
* @category AENS
|
|
52
|
+
* @param name - AENS name
|
|
53
|
+
*/
|
|
54
|
+
export declare function ensureName(maybeName: string): asserts maybeName is AensName;
|
|
48
55
|
/**
|
|
49
56
|
* Is AENS name valid
|
|
50
57
|
* @category AENS
|
|
51
58
|
* @param name - AENS name
|
|
52
59
|
*/
|
|
53
|
-
export declare function isNameValid(
|
|
60
|
+
export declare function isNameValid(maybeName: string): maybeName is AensName;
|
|
54
61
|
declare const encodingToPointerKey: readonly [readonly [Encoded.Encoding.AccountAddress, "account_pubkey"], readonly [Encoded.Encoding.OracleAddress, "oracle_pubkey"], readonly [Encoded.Encoding.ContractAddress, "contract_pubkey"], readonly [Encoded.Encoding.Channel, "channel"]];
|
|
55
62
|
/**
|
|
56
63
|
* @category AENS
|
|
@@ -42,6 +42,37 @@ export function oracleQueryId(senderId, nonce, oracleId) {
|
|
|
42
42
|
const b2bHash = hash(_Buffer.from([...decode(senderId), ..._int32(nonce), ...decode(oracleId)]));
|
|
43
43
|
return encode(b2bHash, Encoding.OracleQueryId);
|
|
44
44
|
}
|
|
45
|
+
const AENS_SUFFIX = '.chain';
|
|
46
|
+
export function nameToPunycode(maybeName) {
|
|
47
|
+
const [name, suffix, ...other] = maybeName.split('.');
|
|
48
|
+
if (other.length !== 0) throw new ArgumentError('aens name', 'including only one dot', maybeName);
|
|
49
|
+
if (suffix !== AENS_SUFFIX.slice(1)) {
|
|
50
|
+
throw new ArgumentError('aens name', `suffixed with ${AENS_SUFFIX}`, maybeName);
|
|
51
|
+
}
|
|
52
|
+
if (/\p{Emoji_Presentation}/u.test(name)) {
|
|
53
|
+
throw new ArgumentError('aens name', 'not containing emoji', maybeName);
|
|
54
|
+
}
|
|
55
|
+
let punycode;
|
|
56
|
+
try {
|
|
57
|
+
const u = new URL(`http://${name}.${suffix}`);
|
|
58
|
+
if (u.username + u.password + u.port + u.search + u.hash !== '' || u.pathname !== '/') {
|
|
59
|
+
throw new ArgumentError('aens name', 'valid', maybeName);
|
|
60
|
+
}
|
|
61
|
+
punycode = u.host;
|
|
62
|
+
} catch (error) {
|
|
63
|
+
if (error instanceof TypeError && error.message.includes('Invalid URL')) {
|
|
64
|
+
throw new ArgumentError('aens name', 'valid', maybeName);
|
|
65
|
+
}
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
if (!/^[a-z0-9.-]+$/i.test(punycode)) {
|
|
69
|
+
throw new ArgumentError('aens name', 'without illegal chars', maybeName);
|
|
70
|
+
}
|
|
71
|
+
if (punycode.length > 63 + AENS_SUFFIX.length) {
|
|
72
|
+
throw new ArgumentError('aens name', 'not too long', maybeName);
|
|
73
|
+
}
|
|
74
|
+
return punycode;
|
|
75
|
+
}
|
|
45
76
|
|
|
46
77
|
/**
|
|
47
78
|
* Encode an AENS name
|
|
@@ -50,7 +81,7 @@ export function oracleQueryId(senderId, nonce, oracleId) {
|
|
|
50
81
|
* @returns `nm_` prefixed encoded AENS name
|
|
51
82
|
*/
|
|
52
83
|
export function produceNameId(name) {
|
|
53
|
-
return encode(hash(name
|
|
84
|
+
return encode(hash(nameToPunycode(name)), Encoding.Name);
|
|
54
85
|
}
|
|
55
86
|
|
|
56
87
|
/**
|
|
@@ -63,7 +94,7 @@ export function produceNameId(name) {
|
|
|
63
94
|
*/
|
|
64
95
|
export function commitmentHash(name) {
|
|
65
96
|
let salt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : genSalt();
|
|
66
|
-
return encode(hash(concatBuffers([_Buffer.from(name
|
|
97
|
+
return encode(hash(concatBuffers([_Buffer.from(nameToPunycode(name)), _Buffer.from(salt.toString(16).padStart(64, '0'), 'hex')])), Encoding.Commitment);
|
|
67
98
|
}
|
|
68
99
|
|
|
69
100
|
/**
|
|
@@ -76,16 +107,29 @@ export function readInt() {
|
|
|
76
107
|
let buf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _Buffer.from([]);
|
|
77
108
|
return new BigNumber(_Buffer.from(buf).toString('hex'), 16).toString(10);
|
|
78
109
|
}
|
|
79
|
-
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Ensure that name is valid AENS name, would throw an exception otherwise
|
|
113
|
+
* @category AENS
|
|
114
|
+
* @param name - AENS name
|
|
115
|
+
*/
|
|
116
|
+
export function ensureName(maybeName) {
|
|
117
|
+
nameToPunycode(maybeName);
|
|
118
|
+
}
|
|
80
119
|
|
|
81
120
|
/**
|
|
82
121
|
* Is AENS name valid
|
|
83
122
|
* @category AENS
|
|
84
123
|
* @param name - AENS name
|
|
85
124
|
*/
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
125
|
+
// TODO: consider renaming to isName
|
|
126
|
+
export function isNameValid(maybeName) {
|
|
127
|
+
try {
|
|
128
|
+
ensureName(maybeName);
|
|
129
|
+
return true;
|
|
130
|
+
} catch (error) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
89
133
|
}
|
|
90
134
|
const encodingToPointerKey = [[Encoding.AccountAddress, 'account_pubkey'], [Encoding.OracleAddress, 'oracle_pubkey'], [Encoding.ContractAddress, 'contract_pubkey'], [Encoding.Channel, 'channel']];
|
|
91
135
|
|
|
@@ -116,7 +160,7 @@ export function getDefaultPointerKey(identifier) {
|
|
|
116
160
|
* @returns the minimum fee for the AENS name auction
|
|
117
161
|
*/
|
|
118
162
|
export function getMinimumNameFee(name) {
|
|
119
|
-
const nameLength = name.length - AENS_SUFFIX.length;
|
|
163
|
+
const nameLength = nameToPunycode(name).length - AENS_SUFFIX.length;
|
|
120
164
|
return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)];
|
|
121
165
|
}
|
|
122
166
|
|
|
@@ -150,7 +194,7 @@ export function computeBidFee(name) {
|
|
|
150
194
|
*/
|
|
151
195
|
export function computeAuctionEndBlock(name, claimHeight) {
|
|
152
196
|
var _ref3, _ref4, _ref5;
|
|
153
|
-
const length = name.length - AENS_SUFFIX.length;
|
|
197
|
+
const length = nameToPunycode(name).length - AENS_SUFFIX.length;
|
|
154
198
|
const h = (_ref3 = (_ref4 = (_ref5 = length <= 4 ? 62 * NAME_BID_TIMEOUT_BLOCKS : null) !== null && _ref5 !== void 0 ? _ref5 : length <= 8 ? 31 * NAME_BID_TIMEOUT_BLOCKS : null) !== null && _ref4 !== void 0 ? _ref4 : length <= 12 ? NAME_BID_TIMEOUT_BLOCKS : null) !== null && _ref3 !== void 0 ? _ref3 : 0;
|
|
155
199
|
return h + claimHeight;
|
|
156
200
|
}
|
|
@@ -160,6 +204,6 @@ export function computeAuctionEndBlock(name, claimHeight) {
|
|
|
160
204
|
* @category AENS
|
|
161
205
|
*/
|
|
162
206
|
export function isAuctionName(name) {
|
|
163
|
-
return name.length < 13 + AENS_SUFFIX.length;
|
|
207
|
+
return nameToPunycode(name).length < 13 + AENS_SUFFIX.length;
|
|
164
208
|
}
|
|
165
209
|
//# sourceMappingURL=helpers.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.mjs","names":["BigNumber","genSalt","hash","decode","encode","Encoding","toBytes","concatBuffers","NAME_BID_RANGES","NAME_BID_TIMEOUT_BLOCKS","NAME_FEE_BID_INCREMENT","NAME_MAX_LENGTH_FEE","ceil","ArgumentError","IllegalBidFeeError","buildContractId","ownerId","nonce","ownerIdAndNonce","_Buffer","from","b2bHash","ContractAddress","oracleQueryId","senderId","oracleId","_int32","val","nonceBE","alloc","length","OracleQueryId","produceNameId","name","toLowerCase","Name","commitmentHash","salt","arguments","undefined","toString","padStart","Commitment","readInt","buf","AENS_SUFFIX","isNameValid","endsWith","encodingToPointerKey","AccountAddress","OracleAddress","Channel","getDefaultPointerKey","identifier","_encodingToPointerKey","encoding","substring","result","find","_ref","e","map","_ref2","join","getMinimumNameFee","nameLength","Math","min","computeBidFee","startFee","increment","Number","times","plus","computeAuctionEndBlock","claimHeight","_ref3","_ref4","_ref5","h","isAuctionName"],"sources":["../../../src/tx/builder/helpers.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { genSalt, hash } from '../../utils/crypto';\nimport {\n decode, encode, Encoded, Encoding,\n} from '../../utils/encoder';\nimport { toBytes } from '../../utils/bytes';\nimport { concatBuffers } from '../../utils/other';\nimport {\n AensName,\n NAME_BID_RANGES,\n NAME_BID_TIMEOUT_BLOCKS,\n NAME_FEE_BID_INCREMENT,\n NAME_MAX_LENGTH_FEE,\n} from './constants';\nimport { ceil } from '../../utils/bignumber';\nimport { ArgumentError, IllegalBidFeeError } from '../../utils/errors';\n\n/**\n * JavaScript-based Transaction builder helper function's\n */\n\n/**\n * Build a contract public key\n * @category contract\n * @param ownerId - The public key of the owner account\n * @param nonce - the nonce of the transaction\n * @returns Contract public key\n */\nexport function buildContractId(\n ownerId: Encoded.AccountAddress,\n nonce: number | BigNumber,\n): Encoded.ContractAddress {\n const ownerIdAndNonce = Buffer.from([...decode(ownerId), ...toBytes(nonce)]);\n const b2bHash = hash(ownerIdAndNonce);\n return encode(b2bHash, Encoding.ContractAddress);\n}\n\n/**\n * Build a oracle query id\n * @category oracle\n * @param senderId - The public key of the sender account\n * @param nonce - the nonce of the transaction\n * @param oracleId - The oracle public key\n * @returns Contract public key\n */\nexport function oracleQueryId(\n senderId: Encoded.AccountAddress,\n nonce: number | BigNumber | string,\n oracleId: Encoded.OracleAddress,\n): Encoded.OracleQueryId {\n function _int32(val: number | string | BigNumber): Buffer {\n const nonceBE = toBytes(val, true);\n return concatBuffers([Buffer.alloc(32 - nonceBE.length), nonceBE]);\n }\n\n const b2bHash = hash(\n Buffer.from([...decode(senderId), ..._int32(nonce), ...decode(oracleId)]),\n );\n return encode(b2bHash, Encoding.OracleQueryId);\n}\n\n/**\n * Encode an AENS name\n * @category AENS\n * @param name - Name to encode\n * @returns `nm_` prefixed encoded AENS name\n */\nexport function produceNameId(name: AensName): Encoded.Name {\n return encode(hash(name.toLowerCase()), Encoding.Name);\n}\n\n/**\n * Generate the commitment hash by hashing the salt and\n * name, base 58 encoding the result and prepending 'cm_'\n * @category transaction builder\n * @param name - Name to be registered\n * @param salt - Random number\n * @returns Commitment hash\n */\nexport function commitmentHash(\n name: AensName,\n salt: number = genSalt(),\n): Encoded.Commitment {\n return encode(\n hash(concatBuffers([\n Buffer.from(name.toLowerCase()),\n Buffer.from(salt.toString(16).padStart(64, '0'), 'hex'),\n ])),\n Encoding.Commitment,\n );\n}\n\n/**\n * Utility function to convert bytes to int\n * @category transaction builder\n * @param buf - Value\n * @returns Buffer Buffer from number(BigEndian)\n */\nexport function readInt(buf: Buffer = Buffer.from([])): string {\n return new BigNumber(Buffer.from(buf).toString('hex'), 16).toString(10);\n}\n\nconst AENS_SUFFIX = '.chain';\n\n/**\n * Is AENS name valid\n * @category AENS\n * @param name - AENS name\n */\nexport function isNameValid(name: string): name is AensName {\n // TODO: probably there are stronger requirements\n return name.endsWith(AENS_SUFFIX);\n}\n\nconst encodingToPointerKey = [\n [Encoding.AccountAddress, 'account_pubkey'],\n [Encoding.OracleAddress, 'oracle_pubkey'],\n [Encoding.ContractAddress, 'contract_pubkey'],\n [Encoding.Channel, 'channel'],\n] as const;\n\n/**\n * @category AENS\n * @param identifier - account/oracle/contract address, or channel\n * @returns default AENS pointer key\n */\nexport function getDefaultPointerKey(\n identifier: Encoded.Generic<typeof encodingToPointerKey[number][0]>,\n): typeof encodingToPointerKey[number][1] {\n decode(identifier);\n const encoding = identifier.substring(0, 2);\n const result = encodingToPointerKey.find(([e]) => e === encoding)?.[1];\n if (result != null) return result;\n throw new ArgumentError(\n 'identifier',\n `prefixed with one of ${encodingToPointerKey.map(([e]) => `${e}_`).join(', ')}`,\n identifier,\n );\n}\n\n/**\n * Get the minimum AENS name fee\n * @category AENS\n * @param name - the AENS name to get the fee for\n * @returns the minimum fee for the AENS name auction\n */\nexport function getMinimumNameFee(name: AensName): BigNumber {\n const nameLength = name.length - AENS_SUFFIX.length;\n return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)];\n}\n\n/**\n * Compute bid fee for AENS auction\n * @category AENS\n * @param name - the AENS name to get the fee for\n * @param options - Options\n * @param options.startFee - Auction start fee\n * @param options.increment - Bid multiplier(In percentage, must be between 0 and 1)\n * @returns Bid fee\n */\nexport function computeBidFee(\n name: AensName,\n { startFee, increment = NAME_FEE_BID_INCREMENT }:\n { startFee?: number | string | BigNumber; increment?: number } = {},\n): BigNumber {\n if (!(Number(increment) === increment && increment % 1 !== 0)) throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`);\n if (increment < NAME_FEE_BID_INCREMENT) throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`);\n // FIXME: increment should be used somehow here\n return ceil(\n new BigNumber(startFee ?? getMinimumNameFee(name))\n .times(new BigNumber(NAME_FEE_BID_INCREMENT).plus(1)),\n );\n}\n\n/**\n * Compute auction end height\n * @category AENS\n * @param name - Name to compute auction end for\n * @param claimHeight - Auction starting height\n * @see {@link https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273}\n * @returns Auction end height\n */\nexport function computeAuctionEndBlock(name: AensName, claimHeight: number): number {\n const length = name.length - AENS_SUFFIX.length;\n const h = (length <= 4 ? 62 * NAME_BID_TIMEOUT_BLOCKS : null)\n ?? (length <= 8 ? 31 * NAME_BID_TIMEOUT_BLOCKS : null)\n ?? (length <= 12 ? NAME_BID_TIMEOUT_BLOCKS : null)\n ?? 0;\n return h + claimHeight;\n}\n\n/**\n * Is name accept going to auction\n * @category AENS\n */\nexport function isAuctionName(name: AensName): boolean {\n return name.length < 13 + AENS_SUFFIX.length;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.mjs","names":["BigNumber","genSalt","hash","decode","encode","Encoding","toBytes","concatBuffers","NAME_BID_RANGES","NAME_BID_TIMEOUT_BLOCKS","NAME_FEE_BID_INCREMENT","NAME_MAX_LENGTH_FEE","ceil","ArgumentError","IllegalBidFeeError","buildContractId","ownerId","nonce","ownerIdAndNonce","_Buffer","from","b2bHash","ContractAddress","oracleQueryId","senderId","oracleId","_int32","val","nonceBE","alloc","length","OracleQueryId","AENS_SUFFIX","nameToPunycode","maybeName","name","suffix","other","split","slice","test","punycode","u","URL","username","password","port","search","pathname","host","error","TypeError","message","includes","produceNameId","Name","commitmentHash","salt","arguments","undefined","toString","padStart","Commitment","readInt","buf","ensureName","isNameValid","encodingToPointerKey","AccountAddress","OracleAddress","Channel","getDefaultPointerKey","identifier","_encodingToPointerKey","encoding","substring","result","find","_ref","e","map","_ref2","join","getMinimumNameFee","nameLength","Math","min","computeBidFee","startFee","increment","Number","times","plus","computeAuctionEndBlock","claimHeight","_ref3","_ref4","_ref5","h","isAuctionName"],"sources":["../../../src/tx/builder/helpers.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { genSalt, hash } from '../../utils/crypto';\nimport {\n decode, encode, Encoded, Encoding,\n} from '../../utils/encoder';\nimport { toBytes } from '../../utils/bytes';\nimport { concatBuffers } from '../../utils/other';\nimport {\n AensName,\n NAME_BID_RANGES,\n NAME_BID_TIMEOUT_BLOCKS,\n NAME_FEE_BID_INCREMENT,\n NAME_MAX_LENGTH_FEE,\n} from './constants';\nimport { ceil } from '../../utils/bignumber';\nimport { ArgumentError, IllegalBidFeeError } from '../../utils/errors';\n\n/**\n * JavaScript-based Transaction builder helper function's\n */\n\n/**\n * Build a contract public key\n * @category contract\n * @param ownerId - The public key of the owner account\n * @param nonce - the nonce of the transaction\n * @returns Contract public key\n */\nexport function buildContractId(\n ownerId: Encoded.AccountAddress,\n nonce: number | BigNumber,\n): Encoded.ContractAddress {\n const ownerIdAndNonce = Buffer.from([...decode(ownerId), ...toBytes(nonce)]);\n const b2bHash = hash(ownerIdAndNonce);\n return encode(b2bHash, Encoding.ContractAddress);\n}\n\n/**\n * Build a oracle query id\n * @category oracle\n * @param senderId - The public key of the sender account\n * @param nonce - the nonce of the transaction\n * @param oracleId - The oracle public key\n * @returns Contract public key\n */\nexport function oracleQueryId(\n senderId: Encoded.AccountAddress,\n nonce: number | BigNumber | string,\n oracleId: Encoded.OracleAddress,\n): Encoded.OracleQueryId {\n function _int32(val: number | string | BigNumber): Buffer {\n const nonceBE = toBytes(val, true);\n return concatBuffers([Buffer.alloc(32 - nonceBE.length), nonceBE]);\n }\n\n const b2bHash = hash(\n Buffer.from([...decode(senderId), ..._int32(nonce), ...decode(oracleId)]),\n );\n return encode(b2bHash, Encoding.OracleQueryId);\n}\n\nconst AENS_SUFFIX = '.chain';\n\nexport function nameToPunycode(maybeName: string): AensName {\n const [name, suffix, ...other] = maybeName.split('.');\n if (other.length !== 0) throw new ArgumentError('aens name', 'including only one dot', maybeName);\n if (suffix !== AENS_SUFFIX.slice(1)) {\n throw new ArgumentError('aens name', `suffixed with ${AENS_SUFFIX}`, maybeName);\n }\n if (/\\p{Emoji_Presentation}/u.test(name)) {\n throw new ArgumentError('aens name', 'not containing emoji', maybeName);\n }\n let punycode;\n try {\n const u = new URL(`http://${name}.${suffix}`);\n if (u.username + u.password + u.port + u.search + u.hash !== '' || u.pathname !== '/') {\n throw new ArgumentError('aens name', 'valid', maybeName);\n }\n punycode = u.host;\n } catch (error) {\n if (error instanceof TypeError && error.message.includes('Invalid URL')) {\n throw new ArgumentError('aens name', 'valid', maybeName);\n }\n throw error;\n }\n if (!/^[a-z0-9.-]+$/i.test(punycode)) {\n throw new ArgumentError('aens name', 'without illegal chars', maybeName);\n }\n if (punycode.length > 63 + AENS_SUFFIX.length) {\n throw new ArgumentError('aens name', 'not too long', maybeName);\n }\n return punycode as AensName;\n}\n\n/**\n * Encode an AENS name\n * @category AENS\n * @param name - Name to encode\n * @returns `nm_` prefixed encoded AENS name\n */\nexport function produceNameId(name: AensName): Encoded.Name {\n return encode(hash(nameToPunycode(name)), Encoding.Name);\n}\n\n/**\n * Generate the commitment hash by hashing the salt and\n * name, base 58 encoding the result and prepending 'cm_'\n * @category transaction builder\n * @param name - Name to be registered\n * @param salt - Random number\n * @returns Commitment hash\n */\nexport function commitmentHash(\n name: AensName,\n salt: number = genSalt(),\n): Encoded.Commitment {\n return encode(\n hash(concatBuffers([\n Buffer.from(nameToPunycode(name)),\n Buffer.from(salt.toString(16).padStart(64, '0'), 'hex'),\n ])),\n Encoding.Commitment,\n );\n}\n\n/**\n * Utility function to convert bytes to int\n * @category transaction builder\n * @param buf - Value\n * @returns Buffer Buffer from number(BigEndian)\n */\nexport function readInt(buf: Buffer = Buffer.from([])): string {\n return new BigNumber(Buffer.from(buf).toString('hex'), 16).toString(10);\n}\n\n/**\n * Ensure that name is valid AENS name, would throw an exception otherwise\n * @category AENS\n * @param name - AENS name\n */\nexport function ensureName(maybeName: string): asserts maybeName is AensName {\n nameToPunycode(maybeName);\n}\n\n/**\n * Is AENS name valid\n * @category AENS\n * @param name - AENS name\n */\n// TODO: consider renaming to isName\nexport function isNameValid(maybeName: string): maybeName is AensName {\n try {\n ensureName(maybeName);\n return true;\n } catch (error) {\n return false;\n }\n}\n\nconst encodingToPointerKey = [\n [Encoding.AccountAddress, 'account_pubkey'],\n [Encoding.OracleAddress, 'oracle_pubkey'],\n [Encoding.ContractAddress, 'contract_pubkey'],\n [Encoding.Channel, 'channel'],\n] as const;\n\n/**\n * @category AENS\n * @param identifier - account/oracle/contract address, or channel\n * @returns default AENS pointer key\n */\nexport function getDefaultPointerKey(\n identifier: Encoded.Generic<typeof encodingToPointerKey[number][0]>,\n): typeof encodingToPointerKey[number][1] {\n decode(identifier);\n const encoding = identifier.substring(0, 2);\n const result = encodingToPointerKey.find(([e]) => e === encoding)?.[1];\n if (result != null) return result;\n throw new ArgumentError(\n 'identifier',\n `prefixed with one of ${encodingToPointerKey.map(([e]) => `${e}_`).join(', ')}`,\n identifier,\n );\n}\n\n/**\n * Get the minimum AENS name fee\n * @category AENS\n * @param name - the AENS name to get the fee for\n * @returns the minimum fee for the AENS name auction\n */\nexport function getMinimumNameFee(name: AensName): BigNumber {\n const nameLength = nameToPunycode(name).length - AENS_SUFFIX.length;\n return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)];\n}\n\n/**\n * Compute bid fee for AENS auction\n * @category AENS\n * @param name - the AENS name to get the fee for\n * @param options - Options\n * @param options.startFee - Auction start fee\n * @param options.increment - Bid multiplier(In percentage, must be between 0 and 1)\n * @returns Bid fee\n */\nexport function computeBidFee(\n name: AensName,\n { startFee, increment = NAME_FEE_BID_INCREMENT }:\n { startFee?: number | string | BigNumber; increment?: number } = {},\n): BigNumber {\n if (!(Number(increment) === increment && increment % 1 !== 0)) throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`);\n if (increment < NAME_FEE_BID_INCREMENT) throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`);\n // FIXME: increment should be used somehow here\n return ceil(\n new BigNumber(startFee ?? getMinimumNameFee(name))\n .times(new BigNumber(NAME_FEE_BID_INCREMENT).plus(1)),\n );\n}\n\n/**\n * Compute auction end height\n * @category AENS\n * @param name - Name to compute auction end for\n * @param claimHeight - Auction starting height\n * @see {@link https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273}\n * @returns Auction end height\n */\nexport function computeAuctionEndBlock(name: AensName, claimHeight: number): number {\n const length = nameToPunycode(name).length - AENS_SUFFIX.length;\n const h = (length <= 4 ? 62 * NAME_BID_TIMEOUT_BLOCKS : null)\n ?? (length <= 8 ? 31 * NAME_BID_TIMEOUT_BLOCKS : null)\n ?? (length <= 12 ? NAME_BID_TIMEOUT_BLOCKS : null)\n ?? 0;\n return h + claimHeight;\n}\n\n/**\n * Is name accept going to auction\n * @category AENS\n */\nexport function isAuctionName(name: AensName): boolean {\n return nameToPunycode(name).length < 13 + AENS_SUFFIX.length;\n}\n"],"mappings":"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"}
|
package/es/tx/builder/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { Tag } from './constants';
|
|
|
6
6
|
* JavaScript-based Transaction builder
|
|
7
7
|
*/
|
|
8
8
|
export declare function getSchema(tag: Tag, version?: number): Array<[string, Field]>;
|
|
9
|
+
type TxEncoding = Encoding.Transaction | Encoding.Poi | Encoding.StateTrees | Encoding.CallStateTree;
|
|
9
10
|
/**
|
|
10
11
|
* Build transaction hash
|
|
11
12
|
* @category transaction builder
|
|
@@ -14,7 +15,7 @@ export declare function getSchema(tag: Tag, version?: number): Array<[string, Fi
|
|
|
14
15
|
* @param options.prefix - Prefix of transaction
|
|
15
16
|
* @returns object Base64Check transaction hash with 'tx_' prefix
|
|
16
17
|
*/
|
|
17
|
-
export declare function buildTx<E extends
|
|
18
|
+
export declare function buildTx<E extends TxEncoding = Encoding.Transaction>(params: TxParams, { prefix }?: {
|
|
18
19
|
prefix?: E;
|
|
19
20
|
}): Encoded.Generic<E>;
|
|
20
21
|
export type BuildTxOptions<TxType extends Tag, OmitFields extends string> = Omit<TxParamsAsync & {
|
|
@@ -31,7 +32,7 @@ export declare function buildTxAsync(params: TxParamsAsync): Promise<Encoded.Tra
|
|
|
31
32
|
* @param txType - Expected transaction type
|
|
32
33
|
* @returns Object with transaction param's
|
|
33
34
|
*/
|
|
34
|
-
export declare function unpackTx<TxType extends Tag>(encodedTx: Encoded.
|
|
35
|
+
export declare function unpackTx<TxType extends Tag>(encodedTx: Encoded.Generic<TxEncoding>, txType?: TxType): TxUnpacked & {
|
|
35
36
|
tag: TxType;
|
|
36
37
|
};
|
|
37
38
|
/**
|
|
@@ -48,3 +49,4 @@ export declare function buildTxHash(rawTx: Encoded.Transaction | Uint8Array): En
|
|
|
48
49
|
* @returns Contract public key
|
|
49
50
|
*/
|
|
50
51
|
export declare function buildContractIdByContractTx(contractTx: Encoded.Transaction): Encoded.ContractAddress;
|
|
52
|
+
export {};
|
package/es/tx/builder/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["_rlp","decode","rlpDecode","encode","rlpEncode","Encoding","hash","txSchema","Tag","buildContractId","readInt","ArgumentError","DecodeError","SchemaNotFoundError","getSchema","tag","version","_version","schemas","filter","s","constValue","length","Math","max","map","schema","find","Object","entries","buildTx","params","prefix","arguments","undefined","binary","_ref","key","field","serialize","unpackTx","rebuildTx","overrideParams","Transaction","buildTxAsync","Promise","all","_ref2","prepare","encodedTx","txType","reduce","acc","_ref3","index","name","deserialized","deserialize","buildTxHash","rawTx","data","startsWith","TxHash","buildContractIdByContractTx","contractTx","ContractCreateTx","GaAttachTx","ownerId","nonce"],"sources":["../../../src/tx/builder/index.ts"],"sourcesContent":["import { decode as rlpDecode, encode as rlpEncode } from 'rlp';\nimport {\n decode, encode, Encoded, Encoding,\n} from '../../utils/encoder';\nimport { hash } from '../../utils/crypto';\nimport { BinaryData, Field } from './field-types';\nimport { txSchema } from './schema';\nimport { TxUnpacked, TxParams, TxParamsAsync } from './schema.generated';\nimport { Tag } from './constants';\nimport { buildContractId, readInt } from './helpers';\nimport { ArgumentError, DecodeError, SchemaNotFoundError } from '../../utils/errors';\n\n/**\n * JavaScript-based Transaction builder\n */\n\nexport function getSchema(tag: Tag, version?: number): Array<[string, Field]> {\n const schemas = txSchema.filter((s) => s.tag.constValue === tag);\n if (schemas.length === 0) throw new SchemaNotFoundError(`${Tag[tag]} (${tag})`, 0);\n version ??= Math.max(...schemas.map((schema) => schema.version.constValue));\n const schema = schemas.find((s) => s.version.constValue === version);\n if (schema == null) throw new SchemaNotFoundError(`${Tag[tag]} (${tag})`, version);\n return Object.entries(schema);\n}\n\n/**\n * Build transaction hash\n * @category transaction builder\n * @param params - Object with tx params\n * @param options - options\n * @param options.prefix - Prefix of transaction\n * @returns object Base64Check transaction hash with 'tx_' prefix\n */\nexport function buildTx
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["_rlp","decode","rlpDecode","encode","rlpEncode","Encoding","hash","txSchema","Tag","buildContractId","readInt","ArgumentError","DecodeError","SchemaNotFoundError","getSchema","tag","version","_version","schemas","filter","s","constValue","length","Math","max","map","schema","find","Object","entries","buildTx","params","prefix","arguments","undefined","binary","_ref","key","field","serialize","unpackTx","rebuildTx","overrideParams","Transaction","buildTxAsync","Promise","all","_ref2","prepare","encodedTx","txType","reduce","acc","_ref3","index","name","deserialized","deserialize","buildTxHash","rawTx","data","startsWith","TxHash","buildContractIdByContractTx","contractTx","ContractCreateTx","GaAttachTx","ownerId","nonce"],"sources":["../../../src/tx/builder/index.ts"],"sourcesContent":["import { decode as rlpDecode, encode as rlpEncode } from 'rlp';\nimport {\n decode, encode, Encoded, Encoding,\n} from '../../utils/encoder';\nimport { hash } from '../../utils/crypto';\nimport { BinaryData, Field } from './field-types';\nimport { txSchema } from './schema';\nimport { TxUnpacked, TxParams, TxParamsAsync } from './schema.generated';\nimport { Tag } from './constants';\nimport { buildContractId, readInt } from './helpers';\nimport { ArgumentError, DecodeError, SchemaNotFoundError } from '../../utils/errors';\n\n/**\n * JavaScript-based Transaction builder\n */\n\nexport function getSchema(tag: Tag, version?: number): Array<[string, Field]> {\n const schemas = txSchema.filter((s) => s.tag.constValue === tag);\n if (schemas.length === 0) throw new SchemaNotFoundError(`${Tag[tag]} (${tag})`, 0);\n version ??= Math.max(...schemas.map((schema) => schema.version.constValue));\n const schema = schemas.find((s) => s.version.constValue === version);\n if (schema == null) throw new SchemaNotFoundError(`${Tag[tag]} (${tag})`, version);\n return Object.entries(schema);\n}\n\ntype TxEncoding = Encoding.Transaction | Encoding.Poi | Encoding.StateTrees\n| Encoding.CallStateTree;\n\n/**\n * Build transaction hash\n * @category transaction builder\n * @param params - Object with tx params\n * @param options - options\n * @param options.prefix - Prefix of transaction\n * @returns object Base64Check transaction hash with 'tx_' prefix\n */\nexport function buildTx<E extends TxEncoding = Encoding.Transaction>(\n params: TxParams,\n { prefix }: { prefix?: E } = {},\n): Encoded.Generic<E> {\n const schema = getSchema(params.tag, params.version);\n\n const binary = schema.map(([key, field]) => (\n field.serialize(\n // @ts-expect-error the type of `params[key]` can't be determined accurately\n params[key],\n {\n ...params,\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n unpackTx,\n buildTx,\n rebuildTx: (overrideParams: any) => buildTx(\n { ...params, ...overrideParams },\n ),\n },\n params,\n )\n ));\n\n // @ts-expect-error looks like a TypeScript edge case\n return encode(rlpEncode(binary), prefix ?? Encoding.Transaction);\n}\n\nexport type BuildTxOptions <TxType extends Tag, OmitFields extends string> =\n Omit<TxParamsAsync & { tag: TxType }, 'tag' | OmitFields>;\n\n/**\n * @category transaction builder\n */\nexport async function buildTxAsync(params: TxParamsAsync): Promise<Encoded.Transaction> {\n await Promise.all(\n getSchema(params.tag, params.version)\n .map(async ([key, field]) => {\n if (field.prepare == null) return;\n // @ts-expect-error the type of `params[key]` can't be determined accurately\n params[key] = await field.prepare(params[key], params, params);\n }),\n );\n\n // @ts-expect-error after preparation properties should be compatible with sync tx builder\n return buildTx(params);\n}\n\n/**\n * Unpack transaction encoded as string\n * @category transaction builder\n * @param encodedTx - Transaction to unpack\n * @param txType - Expected transaction type\n * @returns Object with transaction param's\n */\nexport function unpackTx<TxType extends Tag>(\n encodedTx: Encoded.Generic<TxEncoding>,\n txType?: TxType,\n): TxUnpacked & { tag: TxType } {\n const binary = rlpDecode(decode(encodedTx));\n const tag = +readInt(binary[0] as Buffer);\n const version = +readInt(binary[1] as Buffer);\n const schema = getSchema(tag, version);\n if (txType != null && txType !== tag) throw new DecodeError(`Expected transaction to have ${Tag[txType]} tag, got ${Tag[tag]} instead`);\n if (binary.length !== schema.length) {\n throw new ArgumentError('Transaction RLP length', schema.length, binary.length);\n }\n return schema.reduce<any>(\n (acc, [name, field], index) => {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const deserialized = field.deserialize(binary[index] as BinaryData, { unpackTx });\n return { ...acc, [name]: deserialized };\n },\n {},\n ) as any;\n}\n\n/**\n * Build a transaction hash\n * @category transaction builder\n * @param rawTx - base64 or rlp encoded transaction\n * @returns Transaction hash\n */\nexport function buildTxHash(rawTx: Encoded.Transaction | Uint8Array): Encoded.TxHash {\n const data = typeof rawTx === 'string' && rawTx.startsWith('tx_')\n ? decode(rawTx)\n : rawTx;\n return encode(hash(data), Encoding.TxHash);\n}\n\n/**\n * Build a contract public key by contractCreateTx or gaAttach\n * @category contract\n * @param contractTx - Transaction\n * @returns Contract public key\n */\nexport function buildContractIdByContractTx(\n contractTx: Encoded.Transaction,\n): Encoded.ContractAddress {\n const params = unpackTx(contractTx);\n if (Tag.ContractCreateTx !== params.tag && Tag.GaAttachTx !== params.tag) {\n throw new ArgumentError('contractTx', 'a contractCreateTx or gaAttach', params.tag);\n }\n return buildContractId(params.ownerId, params.nonce);\n}\n"],"mappings":"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"}
|
|
@@ -213,7 +213,7 @@ export declare const txSchema: readonly [{
|
|
|
213
213
|
deserialize: (value: Buffer) => `ak_${string}` | `nm_${string}`;
|
|
214
214
|
};
|
|
215
215
|
readonly amount: {
|
|
216
|
-
serializeAettos(value: string | undefined): string;
|
|
216
|
+
serializeAettos(value: string | undefined, params: {}): string;
|
|
217
217
|
serialize(value: import("./constants").Int | undefined, params: {}, { denomination }: {
|
|
218
218
|
denomination?: import("../..").AE_AMOUNT_FORMATS | undefined;
|
|
219
219
|
}): Buffer;
|
|
@@ -639,7 +639,7 @@ export declare const txSchema: readonly [{
|
|
|
639
639
|
serialize(value: import("./constants").Int | undefined, options: {}, parameters: {
|
|
640
640
|
denomination?: import("../..").AE_AMOUNT_FORMATS | undefined;
|
|
641
641
|
}): Buffer;
|
|
642
|
-
serializeAettos(value: string | undefined): string;
|
|
642
|
+
serializeAettos(value: string | undefined, params: {}): string;
|
|
643
643
|
deserialize(value: Buffer): string;
|
|
644
644
|
};
|
|
645
645
|
}, {
|
|
@@ -709,11 +709,11 @@ export declare const txSchema: readonly [{
|
|
|
709
709
|
serialize(value: import("./constants").Int | undefined, options: {}, parameters: {
|
|
710
710
|
denomination?: import("../..").AE_AMOUNT_FORMATS | undefined;
|
|
711
711
|
}): Buffer;
|
|
712
|
-
serializeAettos(value: string | undefined): string;
|
|
712
|
+
serializeAettos(value: string | undefined, params: {}): string;
|
|
713
713
|
deserialize(value: Buffer): string;
|
|
714
714
|
};
|
|
715
715
|
readonly amount: {
|
|
716
|
-
serializeAettos(value: string | undefined): string;
|
|
716
|
+
serializeAettos(value: string | undefined, params: {}): string;
|
|
717
717
|
serialize(value: import("./constants").Int | undefined, params: {}, { denomination }: {
|
|
718
718
|
denomination?: import("../..").AE_AMOUNT_FORMATS | undefined;
|
|
719
719
|
}): Buffer;
|
|
@@ -811,7 +811,7 @@ export declare const txSchema: readonly [{
|
|
|
811
811
|
deserialize(value: Buffer): number;
|
|
812
812
|
};
|
|
813
813
|
readonly amount: {
|
|
814
|
-
serializeAettos(value: string | undefined): string;
|
|
814
|
+
serializeAettos(value: string | undefined, params: {}): string;
|
|
815
815
|
serialize(value: import("./constants").Int | undefined, params: {}, { denomination }: {
|
|
816
816
|
denomination?: import("../..").AE_AMOUNT_FORMATS | undefined;
|
|
817
817
|
}): Buffer;
|
|
@@ -915,7 +915,7 @@ export declare const txSchema: readonly [{
|
|
|
915
915
|
deserialize(buffer: Buffer): string;
|
|
916
916
|
};
|
|
917
917
|
readonly queryFee: {
|
|
918
|
-
serializeAettos(value: string | undefined): string;
|
|
918
|
+
serializeAettos(value: string | undefined, params: {}): string;
|
|
919
919
|
serialize(value: import("./constants").Int | undefined, params: {}, { denomination }: {
|
|
920
920
|
denomination?: import("../..").AE_AMOUNT_FORMATS | undefined;
|
|
921
921
|
}): Buffer;
|
|
@@ -977,7 +977,7 @@ export declare const txSchema: readonly [{
|
|
|
977
977
|
deserialize(buffer: Buffer): string;
|
|
978
978
|
};
|
|
979
979
|
readonly queryFee: {
|
|
980
|
-
serializeAettos(value: string | undefined): string;
|
|
980
|
+
serializeAettos(value: string | undefined, params: {}): string;
|
|
981
981
|
serialize(value: import("./constants").Int | undefined, params: {}, { denomination }: {
|
|
982
982
|
denomination?: import("../..").AE_AMOUNT_FORMATS | undefined;
|
|
983
983
|
}): Buffer;
|
|
@@ -1121,7 +1121,7 @@ export declare const txSchema: readonly [{
|
|
|
1121
1121
|
deserialize(buffer: Buffer): string;
|
|
1122
1122
|
};
|
|
1123
1123
|
readonly queryFee: {
|
|
1124
|
-
serializeAettos(value: string | undefined): string;
|
|
1124
|
+
serializeAettos(value: string | undefined, params: {}): string;
|
|
1125
1125
|
serialize(value: import("./constants").Int | undefined, params: {}, { denomination }: {
|
|
1126
1126
|
denomination?: import("../..").AE_AMOUNT_FORMATS | undefined;
|
|
1127
1127
|
}): Buffer;
|
|
@@ -2746,7 +2746,7 @@ export declare const txSchema: readonly [{
|
|
|
2746
2746
|
constValueOptional: boolean;
|
|
2747
2747
|
};
|
|
2748
2748
|
readonly fee: {
|
|
2749
|
-
serializeAettos(value: string | undefined): string;
|
|
2749
|
+
serializeAettos(value: string | undefined, params: {}): string;
|
|
2750
2750
|
serialize(value: import("./constants").Int | undefined, params: {}, { denomination }: {
|
|
2751
2751
|
denomination?: import("../..").AE_AMOUNT_FORMATS | undefined;
|
|
2752
2752
|
}): Buffer;
|
package/es/tx/validator.mjs
CHANGED
|
@@ -2,6 +2,7 @@ import _buffer from "buffer";
|
|
|
2
2
|
const {
|
|
3
3
|
Buffer: _Buffer
|
|
4
4
|
} = _buffer;
|
|
5
|
+
import { RestError } from '@azure/core-rest-pipeline';
|
|
5
6
|
import { hash, verify } from "../utils/crypto.mjs";
|
|
6
7
|
import { ProtocolToVmAbi } from "./builder/field-types/ct-version.mjs";
|
|
7
8
|
import { Tag } from "./builder/constants.mjs";
|
|
@@ -139,6 +140,7 @@ validators.push((tx, _ref) => {
|
|
|
139
140
|
}];
|
|
140
141
|
},
|
|
141
142
|
// TODO: revert nonce check
|
|
143
|
+
// TODO: ensure nonce valid when paying for own tx
|
|
142
144
|
(tx, _ref6) => {
|
|
143
145
|
var _ref7, _ref8;
|
|
144
146
|
let {
|
|
@@ -180,10 +182,11 @@ validators.push((tx, _ref) => {
|
|
|
180
182
|
checkedKeys: ['contractId']
|
|
181
183
|
}];
|
|
182
184
|
} catch (error) {
|
|
183
|
-
var _error$response
|
|
184
|
-
if ((
|
|
185
|
+
var _error$response;
|
|
186
|
+
if (!(error instanceof RestError) || ((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.bodyAsText) == null) throw error;
|
|
185
187
|
return [{
|
|
186
|
-
message: error.response.
|
|
188
|
+
message: JSON.parse(error.response.bodyAsText).reason,
|
|
189
|
+
// TODO: use parsedBody instead
|
|
187
190
|
key: 'ContractNotFound',
|
|
188
191
|
checkedKeys: ['contractId']
|
|
189
192
|
}];
|
package/es/tx/validator.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.mjs","names":["hash","verify","ProtocolToVmAbi","Tag","buildTx","unpackTx","concatBuffers","isAccountNotFoundError","decode","Node","genAggressiveCacheGetResponsesPolicy","UnexpectedTsError","getTransactionSignerAddress","getExecutionCostUsingNode","validators","verifyTransactionInternal","tx","node","parentTxTypes","address","account","height","consensusProtocolVersion","nodeNetworkId","Promise","all","getAccountByPubkey","catch","error","id","balance","nonce","then","acc","getCurrentKeyBlockHeight","getNodeInfo","map","v","flat","verifyTransaction","transaction","nodeNotCached","$host","ignoreVersion","pipeline","clone","additionalPolicies","push","_ref","tag","SignedTx","encodedTx","signatures","length","prefix","_Buffer","from","includes","PayingForTx","join","txBinary","txWithNetworkId","txHashWithNetworkId","message","key","checkedKeys","_ref2","nestedTx","_ref3","ttl","_ref4","cost","_ref5","kind","GaMetaTx","_ref6","_ref7","_ref8","oracleCall","Oracle","OracleRegisterTx","contractCreate","ContractCreateTx","GaAttachTx","contractCall","ContractCallTx","type","protocol","ctVersion","abiVersion","vmVersion","JSON","stringify","_ref9","active","getContract","contractId","_error$response","_error$response$parse","response","parsedBody","reason"],"sources":["../../src/tx/validator.ts"],"sourcesContent":["import { hash, verify } from '../utils/crypto';\nimport { TxUnpacked } from './builder/schema.generated';\nimport { CtVersion, ProtocolToVmAbi } from './builder/field-types/ct-version';\nimport { Tag, ConsensusProtocolVersion } from './builder/constants';\nimport { buildTx, unpackTx } from './builder';\nimport { concatBuffers, isAccountNotFoundError } from '../utils/other';\nimport { Encoded, decode } from '../utils/encoder';\nimport Node, { TransformNodeType } from '../Node';\nimport { Account } from '../apis/node';\nimport { genAggressiveCacheGetResponsesPolicy } from '../utils/autorest';\nimport { UnexpectedTsError } from '../utils/errors';\nimport getTransactionSignerAddress from './transaction-signer';\nimport { getExecutionCostUsingNode } from './execution-cost';\n\nexport interface ValidatorResult {\n message: string;\n key: string;\n checkedKeys: string[];\n}\n\ntype Validator = (\n tx: TxUnpacked,\n options: {\n // TODO: remove after fixing node types\n account: TransformNodeType<Account> & { id: Encoded.AccountAddress };\n nodeNetworkId: string;\n parentTxTypes: Tag[];\n node: Node;\n height: number;\n consensusProtocolVersion: ConsensusProtocolVersion;\n }\n) => ValidatorResult[] | Promise<ValidatorResult[]>;\n\nconst validators: Validator[] = [];\n\nasync function verifyTransactionInternal(\n tx: TxUnpacked,\n node: Node,\n parentTxTypes: Tag[],\n): Promise<ValidatorResult[]> {\n const address = getTransactionSignerAddress(buildTx(tx));\n const [account, { height }, { consensusProtocolVersion, nodeNetworkId }] = await Promise.all([\n node.getAccountByPubkey(address)\n .catch((error) => {\n if (!isAccountNotFoundError(error)) throw error;\n return { id: address, balance: 0n, nonce: 0 };\n })\n // TODO: remove after fixing https://github.com/aeternity/aepp-sdk-js/issues/1537\n .then((acc) => ({ ...acc, id: acc.id as Encoded.AccountAddress })),\n node.getCurrentKeyBlockHeight(),\n node.getNodeInfo(),\n ]);\n\n return (await Promise.all(\n validators.map(async (v) => v(\n tx,\n {\n node, account, height, consensusProtocolVersion, nodeNetworkId, parentTxTypes,\n },\n )),\n )).flat();\n}\n\n/**\n * Transaction Validator\n * This function validates some transaction properties,\n * to make sure it can be posted it to the chain\n * @category transaction builder\n * @param transaction - Base64Check-encoded transaction\n * @param nodeNotCached - Node to validate transaction against\n * @returns Array with verification errors\n * @example const errors = await verifyTransaction(transaction, node)\n */\nexport default async function verifyTransaction(\n transaction: Parameters<typeof unpackTx>[0],\n nodeNotCached: Node,\n): Promise<ValidatorResult[]> {\n const node = new Node(nodeNotCached.$host, {\n ignoreVersion: true,\n pipeline: nodeNotCached.pipeline.clone(),\n additionalPolicies: [genAggressiveCacheGetResponsesPolicy()],\n });\n return verifyTransactionInternal(unpackTx(transaction), node, []);\n}\n\nvalidators.push(\n (tx, { account, nodeNetworkId, parentTxTypes }) => {\n if (tx.tag !== Tag.SignedTx) return [];\n const { encodedTx, signatures } = tx;\n if ((encodedTx ?? signatures) == null) return [];\n if (signatures.length !== 1) return []; // TODO: Support multisignature like in state channels\n const prefix = Buffer.from([\n nodeNetworkId,\n ...parentTxTypes.includes(Tag.PayingForTx) ? ['inner_tx'] : [],\n ].join('-'));\n const txBinary = decode(buildTx(encodedTx));\n const txWithNetworkId = concatBuffers([prefix, txBinary]);\n const txHashWithNetworkId = concatBuffers([prefix, hash(txBinary)]);\n if (verify(txWithNetworkId, signatures[0], account.id)\n || verify(txHashWithNetworkId, signatures[0], account.id)) return [];\n return [{\n message: 'Signature cannot be verified, please ensure that you transaction have'\n + ' the correct prefix and the correct private key for the sender address',\n key: 'InvalidSignature',\n checkedKeys: ['encodedTx', 'signatures'],\n }];\n },\n async (tx, { node, parentTxTypes }) => {\n let nestedTx;\n if ('encodedTx' in tx) nestedTx = tx.encodedTx;\n if ('tx' in tx) nestedTx = tx.tx;\n if (nestedTx == null) return [];\n return verifyTransactionInternal(nestedTx, node, [...parentTxTypes, tx.tag]);\n },\n (tx, { height }) => {\n if (!('ttl' in tx)) return [];\n if (tx.ttl === 0 || tx.ttl >= height) return [];\n return [{\n message: `TTL ${tx.ttl} is already expired, current height is ${height}`,\n key: 'ExpiredTTL',\n checkedKeys: ['ttl'],\n }];\n },\n async (tx, { account, parentTxTypes, node }) => {\n if (parentTxTypes.length !== 0) return [];\n const cost = await getExecutionCostUsingNode(buildTx(tx), node).catch(() => 0n);\n if (cost <= account.balance) return [];\n return [{\n message: `Account balance ${account.balance} is not enough to execute the transaction that costs ${cost}`,\n key: 'InsufficientBalance',\n checkedKeys: ['amount', 'fee', 'nameFee', 'gasLimit', 'gasPrice'],\n }];\n },\n (tx, { account }) => {\n let message;\n if (tx.tag === Tag.SignedTx && account.kind === 'generalized' && tx.signatures.length !== 0) {\n message = 'Generalized account can\\'t be used to generate SignedTx with signatures';\n }\n if (tx.tag === Tag.GaMetaTx && account.kind === 'basic') {\n message = 'Basic account can\\'t be used to generate GaMetaTx';\n }\n if (message == null) return [];\n return [{ message, key: 'InvalidAccountType', checkedKeys: ['tag'] }];\n },\n // TODO: revert nonce check\n (tx, { consensusProtocolVersion }) => {\n const oracleCall = Tag.Oracle === tx.tag || Tag.OracleRegisterTx === tx.tag;\n const contractCreate = Tag.ContractCreateTx === tx.tag || Tag.GaAttachTx === tx.tag;\n const contractCall = Tag.ContractCallTx === tx.tag || Tag.GaMetaTx === tx.tag;\n const type = (oracleCall ? 'oracle-call' : null)\n ?? (contractCreate ? 'contract-create' : null)\n ?? (contractCall ? 'contract-call' : null);\n if (type == null) return [];\n const protocol = ProtocolToVmAbi[consensusProtocolVersion][type] as {\n abiVersion: readonly any[];\n vmVersion: readonly any[];\n };\n\n let ctVersion: Partial<CtVersion> | undefined;\n if ('abiVersion' in tx) ctVersion = { abiVersion: tx.abiVersion };\n if ('ctVersion' in tx) ctVersion = tx.ctVersion;\n if (ctVersion == null) throw new UnexpectedTsError();\n if (\n !protocol.abiVersion.includes(ctVersion.abiVersion)\n || (contractCreate && !protocol.vmVersion.includes(ctVersion.vmVersion))\n ) {\n return [{\n message: `ABI/VM version ${JSON.stringify(ctVersion)} is wrong, supported is: ${JSON.stringify(protocol)}`,\n key: 'VmAndAbiVersionMismatch',\n checkedKeys: ['ctVersion', 'abiVersion'],\n }];\n }\n return [];\n },\n async (tx, { node }) => {\n if (Tag.ContractCallTx !== tx.tag) return [];\n try {\n const { active } = await node.getContract(tx.contractId);\n if (active) return [];\n return [{\n message: `Contract ${tx.contractId} is not active`,\n key: 'ContractNotActive',\n checkedKeys: ['contractId'],\n }];\n } catch (error) {\n if (error.response?.parsedBody?.reason == null) throw error;\n return [{\n message: error.response.parsedBody.reason,\n key: 'ContractNotFound',\n checkedKeys: ['contractId'],\n }];\n }\n },\n);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validator.mjs","names":["RestError","hash","verify","ProtocolToVmAbi","Tag","buildTx","unpackTx","concatBuffers","isAccountNotFoundError","decode","Node","genAggressiveCacheGetResponsesPolicy","UnexpectedTsError","getTransactionSignerAddress","getExecutionCostUsingNode","validators","verifyTransactionInternal","tx","node","parentTxTypes","address","account","height","consensusProtocolVersion","nodeNetworkId","Promise","all","getAccountByPubkey","catch","error","id","balance","nonce","then","acc","getCurrentKeyBlockHeight","getNodeInfo","map","v","flat","verifyTransaction","transaction","nodeNotCached","$host","ignoreVersion","pipeline","clone","additionalPolicies","push","_ref","tag","SignedTx","encodedTx","signatures","length","prefix","_Buffer","from","includes","PayingForTx","join","txBinary","txWithNetworkId","txHashWithNetworkId","message","key","checkedKeys","_ref2","nestedTx","_ref3","ttl","_ref4","cost","_ref5","kind","GaMetaTx","_ref6","_ref7","_ref8","oracleCall","Oracle","OracleRegisterTx","contractCreate","ContractCreateTx","GaAttachTx","contractCall","ContractCallTx","type","protocol","ctVersion","abiVersion","vmVersion","JSON","stringify","_ref9","active","getContract","contractId","_error$response","response","bodyAsText","parse","reason"],"sources":["../../src/tx/validator.ts"],"sourcesContent":["import { RestError } from '@azure/core-rest-pipeline';\nimport { hash, verify } from '../utils/crypto';\nimport { TxUnpacked } from './builder/schema.generated';\nimport { CtVersion, ProtocolToVmAbi } from './builder/field-types/ct-version';\nimport { Tag, ConsensusProtocolVersion } from './builder/constants';\nimport { buildTx, unpackTx } from './builder';\nimport { concatBuffers, isAccountNotFoundError } from '../utils/other';\nimport { Encoded, decode } from '../utils/encoder';\nimport Node, { TransformNodeType } from '../Node';\nimport { Account } from '../apis/node';\nimport { genAggressiveCacheGetResponsesPolicy } from '../utils/autorest';\nimport { UnexpectedTsError } from '../utils/errors';\nimport getTransactionSignerAddress from './transaction-signer';\nimport { getExecutionCostUsingNode } from './execution-cost';\n\nexport interface ValidatorResult {\n message: string;\n key: string;\n checkedKeys: string[];\n}\n\ntype Validator = (\n tx: TxUnpacked,\n options: {\n // TODO: remove after fixing node types\n account: TransformNodeType<Account> & { id: Encoded.AccountAddress };\n nodeNetworkId: string;\n parentTxTypes: Tag[];\n node: Node;\n height: number;\n consensusProtocolVersion: ConsensusProtocolVersion;\n }\n) => ValidatorResult[] | Promise<ValidatorResult[]>;\n\nconst validators: Validator[] = [];\n\nasync function verifyTransactionInternal(\n tx: TxUnpacked,\n node: Node,\n parentTxTypes: Tag[],\n): Promise<ValidatorResult[]> {\n const address = getTransactionSignerAddress(buildTx(tx));\n const [account, { height }, { consensusProtocolVersion, nodeNetworkId }] = await Promise.all([\n node.getAccountByPubkey(address)\n .catch((error) => {\n if (!isAccountNotFoundError(error)) throw error;\n return { id: address, balance: 0n, nonce: 0 };\n })\n // TODO: remove after fixing https://github.com/aeternity/aepp-sdk-js/issues/1537\n .then((acc) => ({ ...acc, id: acc.id as Encoded.AccountAddress })),\n node.getCurrentKeyBlockHeight(),\n node.getNodeInfo(),\n ]);\n\n return (await Promise.all(\n validators.map(async (v) => v(\n tx,\n {\n node, account, height, consensusProtocolVersion, nodeNetworkId, parentTxTypes,\n },\n )),\n )).flat();\n}\n\n/**\n * Transaction Validator\n * This function validates some transaction properties,\n * to make sure it can be posted it to the chain\n * @category transaction builder\n * @param transaction - Base64Check-encoded transaction\n * @param nodeNotCached - Node to validate transaction against\n * @returns Array with verification errors\n * @example const errors = await verifyTransaction(transaction, node)\n */\nexport default async function verifyTransaction(\n transaction: Parameters<typeof unpackTx>[0],\n nodeNotCached: Node,\n): Promise<ValidatorResult[]> {\n const node = new Node(nodeNotCached.$host, {\n ignoreVersion: true,\n pipeline: nodeNotCached.pipeline.clone(),\n additionalPolicies: [genAggressiveCacheGetResponsesPolicy()],\n });\n return verifyTransactionInternal(unpackTx(transaction), node, []);\n}\n\nvalidators.push(\n (tx, { account, nodeNetworkId, parentTxTypes }) => {\n if (tx.tag !== Tag.SignedTx) return [];\n const { encodedTx, signatures } = tx;\n if ((encodedTx ?? signatures) == null) return [];\n if (signatures.length !== 1) return []; // TODO: Support multisignature like in state channels\n const prefix = Buffer.from([\n nodeNetworkId,\n ...parentTxTypes.includes(Tag.PayingForTx) ? ['inner_tx'] : [],\n ].join('-'));\n const txBinary = decode(buildTx(encodedTx));\n const txWithNetworkId = concatBuffers([prefix, txBinary]);\n const txHashWithNetworkId = concatBuffers([prefix, hash(txBinary)]);\n if (verify(txWithNetworkId, signatures[0], account.id)\n || verify(txHashWithNetworkId, signatures[0], account.id)) return [];\n return [{\n message: 'Signature cannot be verified, please ensure that you transaction have'\n + ' the correct prefix and the correct private key for the sender address',\n key: 'InvalidSignature',\n checkedKeys: ['encodedTx', 'signatures'],\n }];\n },\n async (tx, { node, parentTxTypes }) => {\n let nestedTx;\n if ('encodedTx' in tx) nestedTx = tx.encodedTx;\n if ('tx' in tx) nestedTx = tx.tx;\n if (nestedTx == null) return [];\n return verifyTransactionInternal(nestedTx, node, [...parentTxTypes, tx.tag]);\n },\n (tx, { height }) => {\n if (!('ttl' in tx)) return [];\n if (tx.ttl === 0 || tx.ttl >= height) return [];\n return [{\n message: `TTL ${tx.ttl} is already expired, current height is ${height}`,\n key: 'ExpiredTTL',\n checkedKeys: ['ttl'],\n }];\n },\n async (tx, { account, parentTxTypes, node }) => {\n if (parentTxTypes.length !== 0) return [];\n const cost = await getExecutionCostUsingNode(buildTx(tx), node).catch(() => 0n);\n if (cost <= account.balance) return [];\n return [{\n message: `Account balance ${account.balance} is not enough to execute the transaction that costs ${cost}`,\n key: 'InsufficientBalance',\n checkedKeys: ['amount', 'fee', 'nameFee', 'gasLimit', 'gasPrice'],\n }];\n },\n (tx, { account }) => {\n let message;\n if (tx.tag === Tag.SignedTx && account.kind === 'generalized' && tx.signatures.length !== 0) {\n message = 'Generalized account can\\'t be used to generate SignedTx with signatures';\n }\n if (tx.tag === Tag.GaMetaTx && account.kind === 'basic') {\n message = 'Basic account can\\'t be used to generate GaMetaTx';\n }\n if (message == null) return [];\n return [{ message, key: 'InvalidAccountType', checkedKeys: ['tag'] }];\n },\n // TODO: revert nonce check\n // TODO: ensure nonce valid when paying for own tx\n (tx, { consensusProtocolVersion }) => {\n const oracleCall = Tag.Oracle === tx.tag || Tag.OracleRegisterTx === tx.tag;\n const contractCreate = Tag.ContractCreateTx === tx.tag || Tag.GaAttachTx === tx.tag;\n const contractCall = Tag.ContractCallTx === tx.tag || Tag.GaMetaTx === tx.tag;\n const type = (oracleCall ? 'oracle-call' : null)\n ?? (contractCreate ? 'contract-create' : null)\n ?? (contractCall ? 'contract-call' : null);\n if (type == null) return [];\n const protocol = ProtocolToVmAbi[consensusProtocolVersion][type] as {\n abiVersion: readonly any[];\n vmVersion: readonly any[];\n };\n\n let ctVersion: Partial<CtVersion> | undefined;\n if ('abiVersion' in tx) ctVersion = { abiVersion: tx.abiVersion };\n if ('ctVersion' in tx) ctVersion = tx.ctVersion;\n if (ctVersion == null) throw new UnexpectedTsError();\n if (\n !protocol.abiVersion.includes(ctVersion.abiVersion)\n || (contractCreate && !protocol.vmVersion.includes(ctVersion.vmVersion))\n ) {\n return [{\n message: `ABI/VM version ${JSON.stringify(ctVersion)} is wrong, supported is: ${JSON.stringify(protocol)}`,\n key: 'VmAndAbiVersionMismatch',\n checkedKeys: ['ctVersion', 'abiVersion'],\n }];\n }\n return [];\n },\n async (tx, { node }) => {\n if (Tag.ContractCallTx !== tx.tag) return [];\n try {\n const { active } = await node.getContract(tx.contractId);\n if (active) return [];\n return [{\n message: `Contract ${tx.contractId} is not active`,\n key: 'ContractNotActive',\n checkedKeys: ['contractId'],\n }];\n } catch (error) {\n if (!(error instanceof RestError) || error.response?.bodyAsText == null) throw error;\n return [{\n message: JSON.parse(error.response.bodyAsText).reason, // TODO: use parsedBody instead\n key: 'ContractNotFound',\n checkedKeys: ['contractId'],\n }];\n }\n },\n);\n"],"mappings":"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"}
|
package/es/utils/autorest.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { RestError } from '@azure/core-rest-pipeline';
|
|
2
2
|
import { pause } from "./other.mjs";
|
|
3
3
|
import semverSatisfies from "./semver-satisfies.mjs";
|
|
4
|
-
import {
|
|
4
|
+
import { UnsupportedVersionError } from "./errors.mjs";
|
|
5
5
|
export const genRequestQueuesPolicy = () => {
|
|
6
6
|
const requestQueues = new Map();
|
|
7
7
|
return {
|
|
@@ -105,20 +105,18 @@ export const genRetryOnFailurePolicy = (retryCount, retryOverallDelay) => ({
|
|
|
105
105
|
const intervals = new Array(retryCount).fill(0).map((_, idx) => ((idx + 1) / retryCount) ** 2);
|
|
106
106
|
const intervalSum = intervals.reduce((a, b) => a + b);
|
|
107
107
|
const intervalsInMs = intervals.map(el => el / intervalSum * retryOverallDelay);
|
|
108
|
-
let error;
|
|
108
|
+
let error = new RestError('Not expected to be thrown');
|
|
109
109
|
for (let attempt = 0; attempt <= retryCount; attempt += 1) {
|
|
110
|
-
if (
|
|
111
|
-
var _error$response$statu, _error$response2;
|
|
112
|
-
if (!(error instanceof RestError) || statusesToNotRetry.includes((_error$response$statu = (_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.status) !== null && _error$response$statu !== void 0 ? _error$response$statu : 0)) throw error;
|
|
113
|
-
await pause(intervalsInMs[attempt - 1]);
|
|
114
|
-
}
|
|
110
|
+
if (attempt !== 0) await pause(intervalsInMs[attempt - 1]);
|
|
115
111
|
try {
|
|
116
112
|
return await next(request);
|
|
117
113
|
} catch (e) {
|
|
114
|
+
var _e$response$status, _e$response;
|
|
115
|
+
if (!(e instanceof RestError)) throw e;
|
|
116
|
+
if (statusesToNotRetry.includes((_e$response$status = (_e$response = e.response) === null || _e$response === void 0 ? void 0 : _e$response.status) !== null && _e$response$status !== void 0 ? _e$response$status : 0)) throw e;
|
|
118
117
|
error = e;
|
|
119
118
|
}
|
|
120
119
|
}
|
|
121
|
-
if (error == null) throw new UnexpectedTsError();
|
|
122
120
|
throw error;
|
|
123
121
|
}
|
|
124
122
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autorest.mjs","names":["RestError","pause","semverSatisfies","UnexpectedTsError","UnsupportedVersionError","genRequestQueuesPolicy","requestQueues","Map","policy","name","sendRequest","request","next","_requestQueues$get","key","headers","get","delete","getResponse","req","Promise","resolve","then","set","position","genCombineGetRequestsPolicy","pendingGetRequests","_pendingGetRequests$g","method","JSON","stringify","url","body","response","genAggressiveCacheGetResponsesPolicy","getRequests","_getRequests$get","genErrorFormatterPolicy","getMessage","error","_error$response","bodyAsText","parse","e","message","URL","pathname","slice","genVersionCheckPolicy","ignorePath","versionPromise","geVersion","ltVersion","version","Error","args","genRetryOnFailurePolicy","retryCount","retryOverallDelay","statusesToNotRetry","intervals","Array","fill","map","_","idx","intervalSum","reduce","a","b","intervalsInMs","el","attempt","_error$response$statu","_error$response2","includes","status"],"sources":["../../src/utils/autorest.ts"],"sourcesContent":["import { RestError, PipelineResponse, PipelinePolicy } from '@azure/core-rest-pipeline';\nimport { AdditionalPolicyConfig } from '@azure/core-client';\nimport { pause } from './other';\nimport semverSatisfies from './semver-satisfies';\nimport { UnexpectedTsError, UnsupportedVersionError } from './errors';\n\nexport const genRequestQueuesPolicy = (): AdditionalPolicyConfig => {\n const requestQueues = new Map<string, Promise<unknown>>();\n\n return {\n policy: {\n name: 'request-queues',\n async sendRequest(request, next) {\n const key = request.headers.get('__queue');\n request.headers.delete('__queue');\n const getResponse = async (): Promise<PipelineResponse> => next(request);\n if (key == null) return getResponse();\n const req = (requestQueues.get(key) ?? Promise.resolve()).then(getResponse, getResponse);\n // TODO: remove after fixing https://github.com/aeternity/aeternity/issues/3803\n // gap to ensure that node won't reject the nonce\n requestQueues.set(key, req.then(async () => pause(750)));\n return req;\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genCombineGetRequestsPolicy = (): AdditionalPolicyConfig => {\n const pendingGetRequests = new Map<string, Promise<PipelineResponse>>();\n\n return {\n policy: {\n name: 'combine-get-requests',\n async sendRequest(request, next) {\n if (request.method !== 'GET') return next(request);\n const key = JSON.stringify([request.url, request.body]);\n const response = pendingGetRequests.get(key) ?? next(request);\n pendingGetRequests.set(key, response);\n try {\n return await response;\n } finally {\n pendingGetRequests.delete(key);\n }\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genAggressiveCacheGetResponsesPolicy = (): AdditionalPolicyConfig => {\n const getRequests = new Map<string, Promise<PipelineResponse>>();\n\n return {\n policy: {\n name: 'aggressive-cache-get-responses',\n async sendRequest(request, next) {\n if (request.method !== 'GET') return next(request);\n const key = JSON.stringify([request.url, request.body]);\n const response = getRequests.get(key) ?? next(request);\n getRequests.set(key, response);\n return response;\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genErrorFormatterPolicy = (\n getMessage: (b: any) => string,\n): AdditionalPolicyConfig => ({\n policy: {\n name: 'error-formatter',\n async sendRequest(request, next) {\n try {\n return await next(request);\n } catch (error) {\n if (!(error instanceof RestError) || error.request == null) throw error;\n if (error.response?.bodyAsText == null) throw error;\n\n let body;\n try {\n body = JSON.parse(error.response.bodyAsText);\n } catch (e) {\n throw error;\n }\n error.message = `${new URL(error.request.url).pathname.slice(1)} error`;\n const message = getMessage(body);\n if (message !== '') error.message += `:${message}`;\n throw error;\n }\n },\n },\n position: 'perCall',\n});\n\nexport const genVersionCheckPolicy = (\n name: string,\n ignorePath: string,\n versionPromise: Promise<string | Error>,\n geVersion: string,\n ltVersion: string,\n): PipelinePolicy => ({\n name: 'version-check',\n async sendRequest(request, next) {\n if (new URL(request.url).pathname === ignorePath) return next(request);\n const version = await versionPromise;\n if (version instanceof Error) throw version;\n const args = [version, geVersion, ltVersion] as const;\n if (!semverSatisfies(...args)) throw new UnsupportedVersionError(name, ...args);\n return next(request);\n },\n});\n\nexport const genRetryOnFailurePolicy = (\n retryCount: number,\n retryOverallDelay: number,\n): AdditionalPolicyConfig => ({\n policy: {\n name: 'retry-on-failure',\n async sendRequest(request, next) {\n const statusesToNotRetry = [200, 400, 403];\n\n const intervals = new Array(retryCount).fill(0)\n .map((_, idx) => ((idx + 1) / retryCount) ** 2);\n const intervalSum = intervals.reduce((a, b) => a + b);\n const intervalsInMs = intervals.map((el) => (el / intervalSum) * retryOverallDelay);\n\n let error: Error | undefined;\n for (let attempt = 0; attempt <= retryCount; attempt += 1) {\n if (error != null) {\n if (\n !(error instanceof RestError)\n || statusesToNotRetry.includes(error.response?.status ?? 0)\n ) throw error;\n await pause(intervalsInMs[attempt - 1]);\n }\n try {\n return await next(request);\n } catch (e) {\n error = e;\n }\n }\n if (error == null) throw new UnexpectedTsError();\n throw error;\n },\n },\n position: 'perCall',\n});\n"],"mappings":"AAAA,SAASA,SAAS,QAA0C,2BAA2B;AAAC,SAE/EC,KAAK;AAAA,OACPC,eAAe;AAAA,SACbC,iBAAiB,EAAEC,uBAAuB;AAEnD,OAAO,MAAMC,sBAAsB,GAAGA,CAAA,KAA8B;EAClE,MAAMC,aAAa,GAAG,IAAIC,GAAG,EAA4B;EAEzD,OAAO;IACLC,MAAM,EAAE;MACNC,IAAI,EAAE,gBAAgB;MACtB,MAAMC,WAAWA,CAACC,OAAO,EAAEC,IAAI,EAAE;QAAA,IAAAC,kBAAA;QAC/B,MAAMC,GAAG,GAAGH,OAAO,CAACI,OAAO,CAACC,GAAG,CAAC,SAAS,CAAC;QAC1CL,OAAO,CAACI,OAAO,CAACE,MAAM,CAAC,SAAS,CAAC;QACjC,MAAMC,WAAW,GAAG,MAAAA,CAAA,KAAuCN,IAAI,CAACD,OAAO,CAAC;QACxE,IAAIG,GAAG,IAAI,IAAI,EAAE,OAAOI,WAAW,EAAE;QACrC,MAAMC,GAAG,GAAG,EAAAN,kBAAA,GAACP,aAAa,CAACU,GAAG,CAACF,GAAG,CAAC,cAAAD,kBAAA,cAAAA,kBAAA,GAAIO,OAAO,CAACC,OAAO,EAAE,EAAEC,IAAI,CAACJ,WAAW,EAAEA,WAAW,CAAC;QACxF;QACA;QACAZ,aAAa,CAACiB,GAAG,CAACT,GAAG,EAAEK,GAAG,CAACG,IAAI,CAAC,YAAYrB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,OAAOkB,GAAG;MACZ;IACF,CAAC;IACDK,QAAQ,EAAE;EACZ,CAAC;AACH,CAAC;AAED,OAAO,MAAMC,2BAA2B,GAAGA,CAAA,KAA8B;EACvE,MAAMC,kBAAkB,GAAG,IAAInB,GAAG,EAAqC;EAEvE,OAAO;IACLC,MAAM,EAAE;MACNC,IAAI,EAAE,sBAAsB;MAC5B,MAAMC,WAAWA,CAACC,OAAO,EAAEC,IAAI,EAAE;QAAA,IAAAe,qBAAA;QAC/B,IAAIhB,OAAO,CAACiB,MAAM,KAAK,KAAK,EAAE,OAAOhB,IAAI,CAACD,OAAO,CAAC;QAClD,MAAMG,GAAG,GAAGe,IAAI,CAACC,SAAS,CAAC,CAACnB,OAAO,CAACoB,GAAG,EAAEpB,OAAO,CAACqB,IAAI,CAAC,CAAC;QACvD,MAAMC,QAAQ,IAAAN,qBAAA,GAAGD,kBAAkB,CAACV,GAAG,CAACF,GAAG,CAAC,cAAAa,qBAAA,cAAAA,qBAAA,GAAIf,IAAI,CAACD,OAAO,CAAC;QAC7De,kBAAkB,CAACH,GAAG,CAACT,GAAG,EAAEmB,QAAQ,CAAC;QACrC,IAAI;UACF,OAAO,MAAMA,QAAQ;QACvB,CAAC,SAAS;UACRP,kBAAkB,CAACT,MAAM,CAACH,GAAG,CAAC;QAChC;MACF;IACF,CAAC;IACDU,QAAQ,EAAE;EACZ,CAAC;AACH,CAAC;AAED,OAAO,MAAMU,oCAAoC,GAAGA,CAAA,KAA8B;EAChF,MAAMC,WAAW,GAAG,IAAI5B,GAAG,EAAqC;EAEhE,OAAO;IACLC,MAAM,EAAE;MACNC,IAAI,EAAE,gCAAgC;MACtC,MAAMC,WAAWA,CAACC,OAAO,EAAEC,IAAI,EAAE;QAAA,IAAAwB,gBAAA;QAC/B,IAAIzB,OAAO,CAACiB,MAAM,KAAK,KAAK,EAAE,OAAOhB,IAAI,CAACD,OAAO,CAAC;QAClD,MAAMG,GAAG,GAAGe,IAAI,CAACC,SAAS,CAAC,CAACnB,OAAO,CAACoB,GAAG,EAAEpB,OAAO,CAACqB,IAAI,CAAC,CAAC;QACvD,MAAMC,QAAQ,IAAAG,gBAAA,GAAGD,WAAW,CAACnB,GAAG,CAACF,GAAG,CAAC,cAAAsB,gBAAA,cAAAA,gBAAA,GAAIxB,IAAI,CAACD,OAAO,CAAC;QACtDwB,WAAW,CAACZ,GAAG,CAACT,GAAG,EAAEmB,QAAQ,CAAC;QAC9B,OAAOA,QAAQ;MACjB;IACF,CAAC;IACDT,QAAQ,EAAE;EACZ,CAAC;AACH,CAAC;AAED,OAAO,MAAMa,uBAAuB,GAClCC,UAA8B,KACF;EAC5B9B,MAAM,EAAE;IACNC,IAAI,EAAE,iBAAiB;IACvB,MAAMC,WAAWA,CAACC,OAAO,EAAEC,IAAI,EAAE;MAC/B,IAAI;QACF,OAAO,MAAMA,IAAI,CAACD,OAAO,CAAC;MAC5B,CAAC,CAAC,OAAO4B,KAAK,EAAE;QAAA,IAAAC,eAAA;QACd,IAAI,EAAED,KAAK,YAAYvC,SAAS,CAAC,IAAIuC,KAAK,CAAC5B,OAAO,IAAI,IAAI,EAAE,MAAM4B,KAAK;QACvE,IAAI,EAAAC,eAAA,GAAAD,KAAK,CAACN,QAAQ,cAAAO,eAAA,uBAAdA,eAAA,CAAgBC,UAAU,KAAI,IAAI,EAAE,MAAMF,KAAK;QAEnD,IAAIP,IAAI;QACR,IAAI;UACFA,IAAI,GAAGH,IAAI,CAACa,KAAK,CAACH,KAAK,CAACN,QAAQ,CAACQ,UAAU,CAAC;QAC9C,CAAC,CAAC,OAAOE,CAAC,EAAE;UACV,MAAMJ,KAAK;QACb;QACAA,KAAK,CAACK,OAAO,GAAI,GAAE,IAAIC,GAAG,CAACN,KAAK,CAAC5B,OAAO,CAACoB,GAAG,CAAC,CAACe,QAAQ,CAACC,KAAK,CAAC,CAAC,CAAE,QAAO;QACvE,MAAMH,OAAO,GAAGN,UAAU,CAACN,IAAI,CAAC;QAChC,IAAIY,OAAO,KAAK,EAAE,EAAEL,KAAK,CAACK,OAAO,IAAK,IAAGA,OAAQ,EAAC;QAClD,MAAML,KAAK;MACb;IACF;EACF,CAAC;EACDf,QAAQ,EAAE;AACZ,CAAC,CAAC;AAEF,OAAO,MAAMwB,qBAAqB,GAAGA,CACnCvC,IAAY,EACZwC,UAAkB,EAClBC,cAAuC,EACvCC,SAAiB,EACjBC,SAAiB,MACG;EACpB3C,IAAI,EAAE,eAAe;EACrB,MAAMC,WAAWA,CAACC,OAAO,EAAEC,IAAI,EAAE;IAC/B,IAAI,IAAIiC,GAAG,CAAClC,OAAO,CAACoB,GAAG,CAAC,CAACe,QAAQ,KAAKG,UAAU,EAAE,OAAOrC,IAAI,CAACD,OAAO,CAAC;IACtE,MAAM0C,OAAO,GAAG,MAAMH,cAAc;IACpC,IAAIG,OAAO,YAAYC,KAAK,EAAE,MAAMD,OAAO;IAC3C,MAAME,IAAI,GAAG,CAACF,OAAO,EAAEF,SAAS,EAAEC,SAAS,CAAU;IACrD,IAAI,CAAClD,eAAe,CAAC,GAAGqD,IAAI,CAAC,EAAE,MAAM,IAAInD,uBAAuB,CAACK,IAAI,EAAE,GAAG8C,IAAI,CAAC;IAC/E,OAAO3C,IAAI,CAACD,OAAO,CAAC;EACtB;AACF,CAAC,CAAC;AAEF,OAAO,MAAM6C,uBAAuB,GAAGA,CACrCC,UAAkB,EAClBC,iBAAyB,MACG;EAC5BlD,MAAM,EAAE;IACNC,IAAI,EAAE,kBAAkB;IACxB,MAAMC,WAAWA,CAACC,OAAO,EAAEC,IAAI,EAAE;MAC/B,MAAM+C,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;MAE1C,MAAMC,SAAS,GAAG,IAAIC,KAAK,CAACJ,UAAU,CAAC,CAACK,IAAI,CAAC,CAAC,CAAC,CAC5CC,GAAG,CAAC,CAACC,CAAC,EAAEC,GAAG,KAAK,CAAC,CAACA,GAAG,GAAG,CAAC,IAAIR,UAAU,KAAK,CAAC,CAAC;MACjD,MAAMS,WAAW,GAAGN,SAAS,CAACO,MAAM,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,CAAC;MACrD,MAAMC,aAAa,GAAGV,SAAS,CAACG,GAAG,CAAEQ,EAAE,IAAMA,EAAE,GAAGL,WAAW,GAAIR,iBAAiB,CAAC;MAEnF,IAAInB,KAAwB;MAC5B,KAAK,IAAIiC,OAAO,GAAG,CAAC,EAAEA,OAAO,IAAIf,UAAU,EAAEe,OAAO,IAAI,CAAC,EAAE;QACzD,IAAIjC,KAAK,IAAI,IAAI,EAAE;UAAA,IAAAkC,qBAAA,EAAAC,gBAAA;UACjB,IACE,EAAEnC,KAAK,YAAYvC,SAAS,CAAC,IAC1B2D,kBAAkB,CAACgB,QAAQ,EAAAF,qBAAA,IAAAC,gBAAA,GAACnC,KAAK,CAACN,QAAQ,cAAAyC,gBAAA,uBAAdA,gBAAA,CAAgBE,MAAM,cAAAH,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC,EAC3D,MAAMlC,KAAK;UACb,MAAMtC,KAAK,CAACqE,aAAa,CAACE,OAAO,GAAG,CAAC,CAAC,CAAC;QACzC;QACA,IAAI;UACF,OAAO,MAAM5D,IAAI,CAACD,OAAO,CAAC;QAC5B,CAAC,CAAC,OAAOgC,CAAC,EAAE;UACVJ,KAAK,GAAGI,CAAC;QACX;MACF;MACA,IAAIJ,KAAK,IAAI,IAAI,EAAE,MAAM,IAAIpC,iBAAiB,EAAE;MAChD,MAAMoC,KAAK;IACb;EACF,CAAC;EACDf,QAAQ,EAAE;AACZ,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"autorest.mjs","names":["RestError","pause","semverSatisfies","UnsupportedVersionError","genRequestQueuesPolicy","requestQueues","Map","policy","name","sendRequest","request","next","_requestQueues$get","key","headers","get","delete","getResponse","req","Promise","resolve","then","set","position","genCombineGetRequestsPolicy","pendingGetRequests","_pendingGetRequests$g","method","JSON","stringify","url","body","response","genAggressiveCacheGetResponsesPolicy","getRequests","_getRequests$get","genErrorFormatterPolicy","getMessage","error","_error$response","bodyAsText","parse","e","message","URL","pathname","slice","genVersionCheckPolicy","ignorePath","versionPromise","geVersion","ltVersion","version","Error","args","genRetryOnFailurePolicy","retryCount","retryOverallDelay","statusesToNotRetry","intervals","Array","fill","map","_","idx","intervalSum","reduce","a","b","intervalsInMs","el","attempt","_e$response$status","_e$response","includes","status"],"sources":["../../src/utils/autorest.ts"],"sourcesContent":["import { RestError, PipelineResponse, PipelinePolicy } from '@azure/core-rest-pipeline';\nimport { AdditionalPolicyConfig } from '@azure/core-client';\nimport { pause } from './other';\nimport semverSatisfies from './semver-satisfies';\nimport { UnsupportedVersionError } from './errors';\n\nexport const genRequestQueuesPolicy = (): AdditionalPolicyConfig => {\n const requestQueues = new Map<string, Promise<unknown>>();\n\n return {\n policy: {\n name: 'request-queues',\n async sendRequest(request, next) {\n const key = request.headers.get('__queue');\n request.headers.delete('__queue');\n const getResponse = async (): Promise<PipelineResponse> => next(request);\n if (key == null) return getResponse();\n const req = (requestQueues.get(key) ?? Promise.resolve()).then(getResponse, getResponse);\n // TODO: remove after fixing https://github.com/aeternity/aeternity/issues/3803\n // gap to ensure that node won't reject the nonce\n requestQueues.set(key, req.then(async () => pause(750)));\n return req;\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genCombineGetRequestsPolicy = (): AdditionalPolicyConfig => {\n const pendingGetRequests = new Map<string, Promise<PipelineResponse>>();\n\n return {\n policy: {\n name: 'combine-get-requests',\n async sendRequest(request, next) {\n if (request.method !== 'GET') return next(request);\n const key = JSON.stringify([request.url, request.body]);\n const response = pendingGetRequests.get(key) ?? next(request);\n pendingGetRequests.set(key, response);\n try {\n return await response;\n } finally {\n pendingGetRequests.delete(key);\n }\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genAggressiveCacheGetResponsesPolicy = (): AdditionalPolicyConfig => {\n const getRequests = new Map<string, Promise<PipelineResponse>>();\n\n return {\n policy: {\n name: 'aggressive-cache-get-responses',\n async sendRequest(request, next) {\n if (request.method !== 'GET') return next(request);\n const key = JSON.stringify([request.url, request.body]);\n const response = getRequests.get(key) ?? next(request);\n getRequests.set(key, response);\n return response;\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genErrorFormatterPolicy = (\n getMessage: (b: any) => string,\n): AdditionalPolicyConfig => ({\n policy: {\n name: 'error-formatter',\n async sendRequest(request, next) {\n try {\n return await next(request);\n } catch (error) {\n if (!(error instanceof RestError) || error.request == null) throw error;\n if (error.response?.bodyAsText == null) throw error;\n\n let body;\n try {\n body = JSON.parse(error.response.bodyAsText);\n } catch (e) {\n throw error;\n }\n error.message = `${new URL(error.request.url).pathname.slice(1)} error`;\n const message = getMessage(body);\n if (message !== '') error.message += `:${message}`;\n throw error;\n }\n },\n },\n position: 'perCall',\n});\n\nexport const genVersionCheckPolicy = (\n name: string,\n ignorePath: string,\n versionPromise: Promise<string | Error>,\n geVersion: string,\n ltVersion: string,\n): PipelinePolicy => ({\n name: 'version-check',\n async sendRequest(request, next) {\n if (new URL(request.url).pathname === ignorePath) return next(request);\n const version = await versionPromise;\n if (version instanceof Error) throw version;\n const args = [version, geVersion, ltVersion] as const;\n if (!semverSatisfies(...args)) throw new UnsupportedVersionError(name, ...args);\n return next(request);\n },\n});\n\nexport const genRetryOnFailurePolicy = (\n retryCount: number,\n retryOverallDelay: number,\n): AdditionalPolicyConfig => ({\n policy: {\n name: 'retry-on-failure',\n async sendRequest(request, next) {\n const statusesToNotRetry = [200, 400, 403];\n\n const intervals = new Array(retryCount).fill(0)\n .map((_, idx) => ((idx + 1) / retryCount) ** 2);\n const intervalSum = intervals.reduce((a, b) => a + b);\n const intervalsInMs = intervals.map((el) => (el / intervalSum) * retryOverallDelay);\n\n let error = new RestError('Not expected to be thrown');\n for (let attempt = 0; attempt <= retryCount; attempt += 1) {\n if (attempt !== 0) await pause(intervalsInMs[attempt - 1]);\n try {\n return await next(request);\n } catch (e) {\n if (!(e instanceof RestError)) throw e;\n if (statusesToNotRetry.includes(e.response?.status ?? 0)) throw e;\n error = e;\n }\n }\n throw error;\n },\n },\n position: 'perCall',\n});\n"],"mappings":"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"}
|
package/es/utils/crypto.d.ts
CHANGED
|
@@ -74,6 +74,7 @@ export declare function sign(data: string | Uint8Array, privateKey: string | Uin
|
|
|
74
74
|
* @returns is data was signed by address
|
|
75
75
|
*/
|
|
76
76
|
export declare function verify(data: Uint8Array, signature: Uint8Array, address: Encoded.AccountAddress): boolean;
|
|
77
|
+
export declare const messagePrefixLength: Buffer;
|
|
77
78
|
export declare function messageToHash(message: string): Buffer;
|
|
78
79
|
export declare function signMessage(message: string, privateKey: string | Buffer): Uint8Array;
|
|
79
80
|
/**
|