near-safe 0.8.0 → 0.8.2
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/cjs/decode.d.ts +1 -1
- package/dist/cjs/decode.js +12 -3
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/near-safe.js +9 -1
- package/dist/esm/decode.d.ts +1 -1
- package/dist/esm/decode.js +12 -3
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/near-safe.js +9 -1
- package/package.json +1 -1
package/dist/cjs/decode.d.ts
CHANGED
@@ -7,7 +7,7 @@ import { DecodedTxData, SafeEncodedSignRequest, UserOperation } from "./types";
|
|
7
7
|
* @param {EvmTransactionData} data - The raw transaction data to be decoded.
|
8
8
|
* @returns {DecodedTxData} - An object containing the chain ID, estimated cost, and a list of decoded meta-transactions.
|
9
9
|
*/
|
10
|
-
export declare function decodeTxData({ evmMessage, chainId, }: SafeEncodedSignRequest): DecodedTxData;
|
10
|
+
export declare function decodeTxData({ evmMessage, chainId, }: Omit<SafeEncodedSignRequest, "hashToSign">): DecodedTxData;
|
11
11
|
export declare function decodeTransactionSerializable(chainId: number, tx: TransactionSerializable): DecodedTxData;
|
12
12
|
export declare function decodeRlpHex(chainId: number, tx: Hex): DecodedTxData;
|
13
13
|
export declare function decodeTypedData(chainId: number, data: EIP712TypedData): DecodedTxData;
|
package/dist/cjs/decode.js
CHANGED
@@ -19,7 +19,7 @@ const safe_message_1 = require("./lib/safe-message");
|
|
19
19
|
function decodeTxData({ evmMessage, chainId, }) {
|
20
20
|
const data = evmMessage;
|
21
21
|
if ((0, safe_message_1.isRlpHex)(evmMessage)) {
|
22
|
-
decodeRlpHex(chainId, evmMessage);
|
22
|
+
return decodeRlpHex(chainId, evmMessage);
|
23
23
|
}
|
24
24
|
if ((0, safe_message_1.isTransactionSerializable)(data)) {
|
25
25
|
return decodeTransactionSerializable(chainId, data);
|
@@ -43,8 +43,17 @@ function decodeTxData({ evmMessage, chainId, }) {
|
|
43
43
|
};
|
44
44
|
}
|
45
45
|
else {
|
46
|
-
|
47
|
-
|
46
|
+
// TODO: This shouldn't happen anymore and can probably be reverted.
|
47
|
+
// We keep it here now, because near-ca might not have adapted its router.
|
48
|
+
console.warn("Failed UserOp Parsing, try TypedData Parsing", error);
|
49
|
+
try {
|
50
|
+
const typedData = JSON.parse(data);
|
51
|
+
return decodeTypedData(chainId, typedData);
|
52
|
+
}
|
53
|
+
catch (error) {
|
54
|
+
const message = error instanceof Error ? error.message : String(error);
|
55
|
+
throw new Error(`decodeTxData: Unexpected error - ${message}`);
|
56
|
+
}
|
48
57
|
}
|
49
58
|
}
|
50
59
|
}
|
package/dist/cjs/index.d.ts
CHANGED
@@ -2,4 +2,5 @@ export * from "./near-safe";
|
|
2
2
|
export * from "./types";
|
3
3
|
export * from "./util";
|
4
4
|
export * from "./constants";
|
5
|
-
export
|
5
|
+
export * from "./decode";
|
6
|
+
export { Network, BaseTx, SignRequestData, populateTx, NetworkFields, signatureFromOutcome, signatureFromTxHash, requestRouter as mpcRequestRouter, } from "near-ca";
|
package/dist/cjs/index.js
CHANGED
@@ -14,13 +14,15 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
-
exports.signatureFromTxHash = exports.signatureFromOutcome = exports.populateTx = exports.Network = void 0;
|
17
|
+
exports.mpcRequestRouter = exports.signatureFromTxHash = exports.signatureFromOutcome = exports.populateTx = exports.Network = void 0;
|
18
18
|
__exportStar(require("./near-safe"), exports);
|
19
19
|
__exportStar(require("./types"), exports);
|
20
20
|
__exportStar(require("./util"), exports);
|
21
21
|
__exportStar(require("./constants"), exports);
|
22
|
+
__exportStar(require("./decode"), exports);
|
22
23
|
var near_ca_1 = require("near-ca");
|
23
24
|
Object.defineProperty(exports, "Network", { enumerable: true, get: function () { return near_ca_1.Network; } });
|
24
25
|
Object.defineProperty(exports, "populateTx", { enumerable: true, get: function () { return near_ca_1.populateTx; } });
|
25
26
|
Object.defineProperty(exports, "signatureFromOutcome", { enumerable: true, get: function () { return near_ca_1.signatureFromOutcome; } });
|
26
27
|
Object.defineProperty(exports, "signatureFromTxHash", { enumerable: true, get: function () { return near_ca_1.signatureFromTxHash; } });
|
28
|
+
Object.defineProperty(exports, "mpcRequestRouter", { enumerable: true, get: function () { return near_ca_1.requestRouter; } });
|
package/dist/cjs/near-safe.js
CHANGED
@@ -283,6 +283,7 @@ class NearSafe {
|
|
283
283
|
(0, util_1.assertUnique)(fromAddresses);
|
284
284
|
// Early return with eoaEncoding if `from` is not the Safe
|
285
285
|
if (!this.encodeForSafe(fromAddresses[0])) {
|
286
|
+
// TODO: near-ca needs to update this for typed data like we did.
|
286
287
|
return (0, near_ca_1.requestRouter)({ method, chainId, params });
|
287
288
|
}
|
288
289
|
const safeInfo = {
|
@@ -295,7 +296,14 @@ class NearSafe {
|
|
295
296
|
// We should either confirm they agree or ignore one of the two.
|
296
297
|
switch (method) {
|
297
298
|
case "eth_signTypedData":
|
298
|
-
case "eth_signTypedData_v4":
|
299
|
+
case "eth_signTypedData_v4": {
|
300
|
+
const [_, typedDataString] = params;
|
301
|
+
const message = (0, safe_message_1.decodeSafeMessage)(JSON.parse(typedDataString), safeInfo);
|
302
|
+
return {
|
303
|
+
evmMessage: JSON.parse(typedDataString),
|
304
|
+
hashToSign: message.safeMessageHash,
|
305
|
+
};
|
306
|
+
}
|
299
307
|
case "eth_sign": {
|
300
308
|
const [_, messageOrData] = params;
|
301
309
|
const message = (0, safe_message_1.decodeSafeMessage)(messageOrData, safeInfo);
|
package/dist/esm/decode.d.ts
CHANGED
@@ -7,7 +7,7 @@ import { DecodedTxData, SafeEncodedSignRequest, UserOperation } from "./types";
|
|
7
7
|
* @param {EvmTransactionData} data - The raw transaction data to be decoded.
|
8
8
|
* @returns {DecodedTxData} - An object containing the chain ID, estimated cost, and a list of decoded meta-transactions.
|
9
9
|
*/
|
10
|
-
export declare function decodeTxData({ evmMessage, chainId, }: SafeEncodedSignRequest): DecodedTxData;
|
10
|
+
export declare function decodeTxData({ evmMessage, chainId, }: Omit<SafeEncodedSignRequest, "hashToSign">): DecodedTxData;
|
11
11
|
export declare function decodeTransactionSerializable(chainId: number, tx: TransactionSerializable): DecodedTxData;
|
12
12
|
export declare function decodeRlpHex(chainId: number, tx: Hex): DecodedTxData;
|
13
13
|
export declare function decodeTypedData(chainId: number, data: EIP712TypedData): DecodedTxData;
|
package/dist/esm/decode.js
CHANGED
@@ -12,7 +12,7 @@ import { isRlpHex, isTransactionSerializable } from "./lib/safe-message";
|
|
12
12
|
export function decodeTxData({ evmMessage, chainId, }) {
|
13
13
|
const data = evmMessage;
|
14
14
|
if (isRlpHex(evmMessage)) {
|
15
|
-
decodeRlpHex(chainId, evmMessage);
|
15
|
+
return decodeRlpHex(chainId, evmMessage);
|
16
16
|
}
|
17
17
|
if (isTransactionSerializable(data)) {
|
18
18
|
return decodeTransactionSerializable(chainId, data);
|
@@ -36,8 +36,17 @@ export function decodeTxData({ evmMessage, chainId, }) {
|
|
36
36
|
};
|
37
37
|
}
|
38
38
|
else {
|
39
|
-
|
40
|
-
|
39
|
+
// TODO: This shouldn't happen anymore and can probably be reverted.
|
40
|
+
// We keep it here now, because near-ca might not have adapted its router.
|
41
|
+
console.warn("Failed UserOp Parsing, try TypedData Parsing", error);
|
42
|
+
try {
|
43
|
+
const typedData = JSON.parse(data);
|
44
|
+
return decodeTypedData(chainId, typedData);
|
45
|
+
}
|
46
|
+
catch (error) {
|
47
|
+
const message = error instanceof Error ? error.message : String(error);
|
48
|
+
throw new Error(`decodeTxData: Unexpected error - ${message}`);
|
49
|
+
}
|
41
50
|
}
|
42
51
|
}
|
43
52
|
}
|
package/dist/esm/index.d.ts
CHANGED
@@ -2,4 +2,5 @@ export * from "./near-safe";
|
|
2
2
|
export * from "./types";
|
3
3
|
export * from "./util";
|
4
4
|
export * from "./constants";
|
5
|
-
export
|
5
|
+
export * from "./decode";
|
6
|
+
export { Network, BaseTx, SignRequestData, populateTx, NetworkFields, signatureFromOutcome, signatureFromTxHash, requestRouter as mpcRequestRouter, } from "near-ca";
|
package/dist/esm/index.js
CHANGED
@@ -2,4 +2,5 @@ export * from "./near-safe";
|
|
2
2
|
export * from "./types";
|
3
3
|
export * from "./util";
|
4
4
|
export * from "./constants";
|
5
|
-
export
|
5
|
+
export * from "./decode";
|
6
|
+
export { Network, populateTx, signatureFromOutcome, signatureFromTxHash, requestRouter as mpcRequestRouter, } from "near-ca";
|
package/dist/esm/near-safe.js
CHANGED
@@ -286,6 +286,7 @@ export class NearSafe {
|
|
286
286
|
assertUnique(fromAddresses);
|
287
287
|
// Early return with eoaEncoding if `from` is not the Safe
|
288
288
|
if (!this.encodeForSafe(fromAddresses[0])) {
|
289
|
+
// TODO: near-ca needs to update this for typed data like we did.
|
289
290
|
return mpcRequestRouter({ method, chainId, params });
|
290
291
|
}
|
291
292
|
const safeInfo = {
|
@@ -298,7 +299,14 @@ export class NearSafe {
|
|
298
299
|
// We should either confirm they agree or ignore one of the two.
|
299
300
|
switch (method) {
|
300
301
|
case "eth_signTypedData":
|
301
|
-
case "eth_signTypedData_v4":
|
302
|
+
case "eth_signTypedData_v4": {
|
303
|
+
const [_, typedDataString] = params;
|
304
|
+
const message = decodeSafeMessage(JSON.parse(typedDataString), safeInfo);
|
305
|
+
return {
|
306
|
+
evmMessage: JSON.parse(typedDataString),
|
307
|
+
hashToSign: message.safeMessageHash,
|
308
|
+
};
|
309
|
+
}
|
302
310
|
case "eth_sign": {
|
303
311
|
const [_, messageOrData] = params;
|
304
312
|
const message = decodeSafeMessage(messageOrData, safeInfo);
|