near-safe 0.8.2 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/decode/index.d.ts +8 -0
- package/dist/cjs/decode/index.js +52 -0
- package/dist/cjs/decode/util.d.ts +7 -0
- package/dist/cjs/{decode.js → decode/util.js} +2 -51
- package/dist/cjs/index.d.ts +3 -2
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/near-safe.js +7 -5
- package/dist/esm/decode/index.d.ts +8 -0
- package/dist/esm/decode/index.js +49 -0
- package/dist/esm/decode/util.d.ts +7 -0
- package/dist/esm/{decode.js → decode/util.js} +2 -50
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.js +2 -1
- package/dist/esm/near-safe.js +8 -6
- package/package.json +1 -1
- package/dist/cjs/decode.d.ts +0 -14
- package/dist/esm/decode.d.ts +0 -14
@@ -0,0 +1,8 @@
|
|
1
|
+
import { DecodedTxData, SafeEncodedSignRequest } from "../types";
|
2
|
+
/**
|
3
|
+
* Decodes transaction data for a given EVM transaction and extracts relevant details.
|
4
|
+
*
|
5
|
+
* @param {EvmTransactionData} data - The raw transaction data to be decoded.
|
6
|
+
* @returns {DecodedTxData} - An object containing the chain ID, estimated cost, and a list of decoded meta-transactions.
|
7
|
+
*/
|
8
|
+
export declare function decodeTxData({ evmMessage, chainId, }: Omit<SafeEncodedSignRequest, "hashToSign">): DecodedTxData;
|
@@ -0,0 +1,52 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.decodeTxData = decodeTxData;
|
4
|
+
const safe_message_1 = require("../lib/safe-message");
|
5
|
+
const util_1 = require("./util");
|
6
|
+
/**
|
7
|
+
* Decodes transaction data for a given EVM transaction and extracts relevant details.
|
8
|
+
*
|
9
|
+
* @param {EvmTransactionData} data - The raw transaction data to be decoded.
|
10
|
+
* @returns {DecodedTxData} - An object containing the chain ID, estimated cost, and a list of decoded meta-transactions.
|
11
|
+
*/
|
12
|
+
function decodeTxData({ evmMessage, chainId, }) {
|
13
|
+
const data = evmMessage;
|
14
|
+
if ((0, safe_message_1.isRlpHex)(evmMessage)) {
|
15
|
+
return (0, util_1.decodeRlpHex)(chainId, evmMessage);
|
16
|
+
}
|
17
|
+
if ((0, safe_message_1.isTransactionSerializable)(data)) {
|
18
|
+
return (0, util_1.decodeTransactionSerializable)(chainId, data);
|
19
|
+
}
|
20
|
+
if (typeof data !== "string") {
|
21
|
+
return (0, util_1.decodeTypedData)(chainId, data);
|
22
|
+
}
|
23
|
+
try {
|
24
|
+
// Stringified UserOperation.
|
25
|
+
const userOp = JSON.parse(data);
|
26
|
+
return (0, util_1.decodeUserOperation)(chainId, userOp);
|
27
|
+
}
|
28
|
+
catch (error) {
|
29
|
+
if (error instanceof SyntaxError) {
|
30
|
+
// Raw message string.
|
31
|
+
return {
|
32
|
+
chainId,
|
33
|
+
costEstimate: "0",
|
34
|
+
transactions: [],
|
35
|
+
message: data,
|
36
|
+
};
|
37
|
+
}
|
38
|
+
else {
|
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 (0, util_1.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
|
+
}
|
50
|
+
}
|
51
|
+
}
|
52
|
+
}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { EIP712TypedData } from "near-ca";
|
2
|
+
import { Hex, TransactionSerializable } from "viem";
|
3
|
+
import { DecodedTxData, UserOperation } from "../types";
|
4
|
+
export declare function decodeTransactionSerializable(chainId: number, tx: TransactionSerializable): DecodedTxData;
|
5
|
+
export declare function decodeRlpHex(chainId: number, tx: Hex): DecodedTxData;
|
6
|
+
export declare function decodeTypedData(chainId: number, data: EIP712TypedData): DecodedTxData;
|
7
|
+
export declare function decodeUserOperation(chainId: number, userOp: UserOperation): DecodedTxData;
|
@@ -1,62 +1,13 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.decodeTxData = decodeTxData;
|
4
3
|
exports.decodeTransactionSerializable = decodeTransactionSerializable;
|
5
4
|
exports.decodeRlpHex = decodeRlpHex;
|
6
5
|
exports.decodeTypedData = decodeTypedData;
|
7
6
|
exports.decodeUserOperation = decodeUserOperation;
|
8
7
|
const ethers_multisend_1 = require("ethers-multisend");
|
9
8
|
const viem_1 = require("viem");
|
10
|
-
const deployments_1 = require("
|
11
|
-
const multisend_1 = require("
|
12
|
-
const safe_message_1 = require("./lib/safe-message");
|
13
|
-
/**
|
14
|
-
* Decodes transaction data for a given EVM transaction and extracts relevant details.
|
15
|
-
*
|
16
|
-
* @param {EvmTransactionData} data - The raw transaction data to be decoded.
|
17
|
-
* @returns {DecodedTxData} - An object containing the chain ID, estimated cost, and a list of decoded meta-transactions.
|
18
|
-
*/
|
19
|
-
function decodeTxData({ evmMessage, chainId, }) {
|
20
|
-
const data = evmMessage;
|
21
|
-
if ((0, safe_message_1.isRlpHex)(evmMessage)) {
|
22
|
-
return decodeRlpHex(chainId, evmMessage);
|
23
|
-
}
|
24
|
-
if ((0, safe_message_1.isTransactionSerializable)(data)) {
|
25
|
-
return decodeTransactionSerializable(chainId, data);
|
26
|
-
}
|
27
|
-
if (typeof data !== "string") {
|
28
|
-
return decodeTypedData(chainId, data);
|
29
|
-
}
|
30
|
-
try {
|
31
|
-
// Stringified UserOperation.
|
32
|
-
const userOp = JSON.parse(data);
|
33
|
-
return decodeUserOperation(chainId, userOp);
|
34
|
-
}
|
35
|
-
catch (error) {
|
36
|
-
if (error instanceof SyntaxError) {
|
37
|
-
// Raw message string.
|
38
|
-
return {
|
39
|
-
chainId,
|
40
|
-
costEstimate: "0",
|
41
|
-
transactions: [],
|
42
|
-
message: data,
|
43
|
-
};
|
44
|
-
}
|
45
|
-
else {
|
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
|
-
}
|
57
|
-
}
|
58
|
-
}
|
59
|
-
}
|
9
|
+
const deployments_1 = require("../_gen/deployments");
|
10
|
+
const multisend_1 = require("../lib/multisend");
|
60
11
|
function decodeTransactionSerializable(chainId, tx) {
|
61
12
|
const { gas, maxFeePerGas, maxPriorityFeePerGas, to } = tx;
|
62
13
|
if (chainId !== tx.chainId) {
|
package/dist/cjs/index.d.ts
CHANGED
@@ -2,5 +2,6 @@ export * from "./near-safe";
|
|
2
2
|
export * from "./types";
|
3
3
|
export * from "./util";
|
4
4
|
export * from "./constants";
|
5
|
-
export
|
6
|
-
export
|
5
|
+
export { decodeTxData } from "./decode";
|
6
|
+
export * from "./lib/safe-message";
|
7
|
+
export { Network, BaseTx, SignRequestData, populateTx, NetworkFields, signatureFromOutcome, signatureFromTxHash, requestRouter as mpcRequestRouter, EthTransactionParams, } from "near-ca";
|
package/dist/cjs/index.js
CHANGED
@@ -14,12 +14,14 @@ 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.mpcRequestRouter = exports.signatureFromTxHash = exports.signatureFromOutcome = exports.populateTx = exports.Network = void 0;
|
17
|
+
exports.mpcRequestRouter = exports.signatureFromTxHash = exports.signatureFromOutcome = exports.populateTx = exports.Network = exports.decodeTxData = 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
|
-
|
22
|
+
var decode_1 = require("./decode");
|
23
|
+
Object.defineProperty(exports, "decodeTxData", { enumerable: true, get: function () { return decode_1.decodeTxData; } });
|
24
|
+
__exportStar(require("./lib/safe-message"), exports);
|
23
25
|
var near_ca_1 = require("near-ca");
|
24
26
|
Object.defineProperty(exports, "Network", { enumerable: true, get: function () { return near_ca_1.Network; } });
|
25
27
|
Object.defineProperty(exports, "populateTx", { enumerable: true, get: function () { return near_ca_1.populateTx; } });
|
package/dist/cjs/near-safe.js
CHANGED
@@ -337,13 +337,15 @@ class NearSafe {
|
|
337
337
|
}
|
338
338
|
}
|
339
339
|
encodeForSafe(from) {
|
340
|
-
const
|
341
|
-
|
342
|
-
|
343
|
-
|
340
|
+
const lowerFrom = from.toLowerCase();
|
341
|
+
const lowerZero = viem_1.zeroAddress.toLowerCase();
|
342
|
+
const lowerSafe = this.address.toLowerCase();
|
343
|
+
const lowerMpc = this.mpcAddress.toLowerCase();
|
344
|
+
// We allow zeroAddress (and and treat is as from = safe)
|
345
|
+
if (![lowerSafe, lowerMpc, lowerZero].includes(lowerFrom)) {
|
344
346
|
throw new Error(`Unexpected from address ${from}`);
|
345
347
|
}
|
346
|
-
return this.address.toLowerCase()
|
348
|
+
return [this.address.toLowerCase(), lowerZero].includes(lowerFrom);
|
347
349
|
}
|
348
350
|
async policyForChainId(chainId) {
|
349
351
|
const bundler = this.bundlerForChainId(chainId);
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { DecodedTxData, SafeEncodedSignRequest } from "../types";
|
2
|
+
/**
|
3
|
+
* Decodes transaction data for a given EVM transaction and extracts relevant details.
|
4
|
+
*
|
5
|
+
* @param {EvmTransactionData} data - The raw transaction data to be decoded.
|
6
|
+
* @returns {DecodedTxData} - An object containing the chain ID, estimated cost, and a list of decoded meta-transactions.
|
7
|
+
*/
|
8
|
+
export declare function decodeTxData({ evmMessage, chainId, }: Omit<SafeEncodedSignRequest, "hashToSign">): DecodedTxData;
|
@@ -0,0 +1,49 @@
|
|
1
|
+
import { isRlpHex, isTransactionSerializable } from "../lib/safe-message";
|
2
|
+
import { decodeRlpHex, decodeTransactionSerializable, decodeTypedData, decodeUserOperation, } from "./util";
|
3
|
+
/**
|
4
|
+
* Decodes transaction data for a given EVM transaction and extracts relevant details.
|
5
|
+
*
|
6
|
+
* @param {EvmTransactionData} data - The raw transaction data to be decoded.
|
7
|
+
* @returns {DecodedTxData} - An object containing the chain ID, estimated cost, and a list of decoded meta-transactions.
|
8
|
+
*/
|
9
|
+
export function decodeTxData({ evmMessage, chainId, }) {
|
10
|
+
const data = evmMessage;
|
11
|
+
if (isRlpHex(evmMessage)) {
|
12
|
+
return decodeRlpHex(chainId, evmMessage);
|
13
|
+
}
|
14
|
+
if (isTransactionSerializable(data)) {
|
15
|
+
return decodeTransactionSerializable(chainId, data);
|
16
|
+
}
|
17
|
+
if (typeof data !== "string") {
|
18
|
+
return decodeTypedData(chainId, data);
|
19
|
+
}
|
20
|
+
try {
|
21
|
+
// Stringified UserOperation.
|
22
|
+
const userOp = JSON.parse(data);
|
23
|
+
return decodeUserOperation(chainId, userOp);
|
24
|
+
}
|
25
|
+
catch (error) {
|
26
|
+
if (error instanceof SyntaxError) {
|
27
|
+
// Raw message string.
|
28
|
+
return {
|
29
|
+
chainId,
|
30
|
+
costEstimate: "0",
|
31
|
+
transactions: [],
|
32
|
+
message: data,
|
33
|
+
};
|
34
|
+
}
|
35
|
+
else {
|
36
|
+
// TODO: This shouldn't happen anymore and can probably be reverted.
|
37
|
+
// We keep it here now, because near-ca might not have adapted its router.
|
38
|
+
console.warn("Failed UserOp Parsing, try TypedData Parsing", error);
|
39
|
+
try {
|
40
|
+
const typedData = JSON.parse(data);
|
41
|
+
return decodeTypedData(chainId, typedData);
|
42
|
+
}
|
43
|
+
catch (error) {
|
44
|
+
const message = error instanceof Error ? error.message : String(error);
|
45
|
+
throw new Error(`decodeTxData: Unexpected error - ${message}`);
|
46
|
+
}
|
47
|
+
}
|
48
|
+
}
|
49
|
+
}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { EIP712TypedData } from "near-ca";
|
2
|
+
import { Hex, TransactionSerializable } from "viem";
|
3
|
+
import { DecodedTxData, UserOperation } from "../types";
|
4
|
+
export declare function decodeTransactionSerializable(chainId: number, tx: TransactionSerializable): DecodedTxData;
|
5
|
+
export declare function decodeRlpHex(chainId: number, tx: Hex): DecodedTxData;
|
6
|
+
export declare function decodeTypedData(chainId: number, data: EIP712TypedData): DecodedTxData;
|
7
|
+
export declare function decodeUserOperation(chainId: number, userOp: UserOperation): DecodedTxData;
|
@@ -1,55 +1,7 @@
|
|
1
1
|
import { decodeMulti } from "ethers-multisend";
|
2
2
|
import { decodeFunctionData, formatEther, parseTransaction, serializeTransaction, } from "viem";
|
3
|
-
import { SAFE_DEPLOYMENTS } from "
|
4
|
-
import { isMultisendTx } from "
|
5
|
-
import { isRlpHex, isTransactionSerializable } from "./lib/safe-message";
|
6
|
-
/**
|
7
|
-
* Decodes transaction data for a given EVM transaction and extracts relevant details.
|
8
|
-
*
|
9
|
-
* @param {EvmTransactionData} data - The raw transaction data to be decoded.
|
10
|
-
* @returns {DecodedTxData} - An object containing the chain ID, estimated cost, and a list of decoded meta-transactions.
|
11
|
-
*/
|
12
|
-
export function decodeTxData({ evmMessage, chainId, }) {
|
13
|
-
const data = evmMessage;
|
14
|
-
if (isRlpHex(evmMessage)) {
|
15
|
-
return decodeRlpHex(chainId, evmMessage);
|
16
|
-
}
|
17
|
-
if (isTransactionSerializable(data)) {
|
18
|
-
return decodeTransactionSerializable(chainId, data);
|
19
|
-
}
|
20
|
-
if (typeof data !== "string") {
|
21
|
-
return decodeTypedData(chainId, data);
|
22
|
-
}
|
23
|
-
try {
|
24
|
-
// Stringified UserOperation.
|
25
|
-
const userOp = JSON.parse(data);
|
26
|
-
return decodeUserOperation(chainId, userOp);
|
27
|
-
}
|
28
|
-
catch (error) {
|
29
|
-
if (error instanceof SyntaxError) {
|
30
|
-
// Raw message string.
|
31
|
-
return {
|
32
|
-
chainId,
|
33
|
-
costEstimate: "0",
|
34
|
-
transactions: [],
|
35
|
-
message: data,
|
36
|
-
};
|
37
|
-
}
|
38
|
-
else {
|
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
|
-
}
|
50
|
-
}
|
51
|
-
}
|
52
|
-
}
|
3
|
+
import { SAFE_DEPLOYMENTS } from "../_gen/deployments";
|
4
|
+
import { isMultisendTx } from "../lib/multisend";
|
53
5
|
export function decodeTransactionSerializable(chainId, tx) {
|
54
6
|
const { gas, maxFeePerGas, maxPriorityFeePerGas, to } = tx;
|
55
7
|
if (chainId !== tx.chainId) {
|
package/dist/esm/index.d.ts
CHANGED
@@ -2,5 +2,6 @@ export * from "./near-safe";
|
|
2
2
|
export * from "./types";
|
3
3
|
export * from "./util";
|
4
4
|
export * from "./constants";
|
5
|
-
export
|
6
|
-
export
|
5
|
+
export { decodeTxData } from "./decode";
|
6
|
+
export * from "./lib/safe-message";
|
7
|
+
export { Network, BaseTx, SignRequestData, populateTx, NetworkFields, signatureFromOutcome, signatureFromTxHash, requestRouter as mpcRequestRouter, EthTransactionParams, } from "near-ca";
|
package/dist/esm/index.js
CHANGED
@@ -2,5 +2,6 @@ export * from "./near-safe";
|
|
2
2
|
export * from "./types";
|
3
3
|
export * from "./util";
|
4
4
|
export * from "./constants";
|
5
|
-
export
|
5
|
+
export { decodeTxData } from "./decode";
|
6
|
+
export * from "./lib/safe-message";
|
6
7
|
export { Network, populateTx, signatureFromOutcome, signatureFromTxHash, requestRouter as mpcRequestRouter, } from "near-ca";
|
package/dist/esm/near-safe.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import { setupAdapter, signatureFromOutcome, toPayload, requestRouter as mpcRequestRouter, } from "near-ca";
|
2
|
-
import { serializeSignature } from "viem";
|
2
|
+
import { serializeSignature, zeroAddress } from "viem";
|
3
3
|
import { DEFAULT_SAFE_SALT_NONCE } from "./constants";
|
4
4
|
import { Erc4337Bundler } from "./lib/bundler";
|
5
5
|
import { encodeMulti } from "./lib/multisend";
|
@@ -340,13 +340,15 @@ export class NearSafe {
|
|
340
340
|
}
|
341
341
|
}
|
342
342
|
encodeForSafe(from) {
|
343
|
-
const
|
344
|
-
|
345
|
-
|
346
|
-
|
343
|
+
const lowerFrom = from.toLowerCase();
|
344
|
+
const lowerZero = zeroAddress.toLowerCase();
|
345
|
+
const lowerSafe = this.address.toLowerCase();
|
346
|
+
const lowerMpc = this.mpcAddress.toLowerCase();
|
347
|
+
// We allow zeroAddress (and and treat is as from = safe)
|
348
|
+
if (![lowerSafe, lowerMpc, lowerZero].includes(lowerFrom)) {
|
347
349
|
throw new Error(`Unexpected from address ${from}`);
|
348
350
|
}
|
349
|
-
return this.address.toLowerCase()
|
351
|
+
return [this.address.toLowerCase(), lowerZero].includes(lowerFrom);
|
350
352
|
}
|
351
353
|
async policyForChainId(chainId) {
|
352
354
|
const bundler = this.bundlerForChainId(chainId);
|
package/package.json
CHANGED
package/dist/cjs/decode.d.ts
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
import { EIP712TypedData } from "near-ca";
|
2
|
-
import { Hex, TransactionSerializable } from "viem";
|
3
|
-
import { DecodedTxData, SafeEncodedSignRequest, UserOperation } from "./types";
|
4
|
-
/**
|
5
|
-
* Decodes transaction data for a given EVM transaction and extracts relevant details.
|
6
|
-
*
|
7
|
-
* @param {EvmTransactionData} data - The raw transaction data to be decoded.
|
8
|
-
* @returns {DecodedTxData} - An object containing the chain ID, estimated cost, and a list of decoded meta-transactions.
|
9
|
-
*/
|
10
|
-
export declare function decodeTxData({ evmMessage, chainId, }: Omit<SafeEncodedSignRequest, "hashToSign">): DecodedTxData;
|
11
|
-
export declare function decodeTransactionSerializable(chainId: number, tx: TransactionSerializable): DecodedTxData;
|
12
|
-
export declare function decodeRlpHex(chainId: number, tx: Hex): DecodedTxData;
|
13
|
-
export declare function decodeTypedData(chainId: number, data: EIP712TypedData): DecodedTxData;
|
14
|
-
export declare function decodeUserOperation(chainId: number, userOp: UserOperation): DecodedTxData;
|
package/dist/esm/decode.d.ts
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
import { EIP712TypedData } from "near-ca";
|
2
|
-
import { Hex, TransactionSerializable } from "viem";
|
3
|
-
import { DecodedTxData, SafeEncodedSignRequest, UserOperation } from "./types";
|
4
|
-
/**
|
5
|
-
* Decodes transaction data for a given EVM transaction and extracts relevant details.
|
6
|
-
*
|
7
|
-
* @param {EvmTransactionData} data - The raw transaction data to be decoded.
|
8
|
-
* @returns {DecodedTxData} - An object containing the chain ID, estimated cost, and a list of decoded meta-transactions.
|
9
|
-
*/
|
10
|
-
export declare function decodeTxData({ evmMessage, chainId, }: Omit<SafeEncodedSignRequest, "hashToSign">): DecodedTxData;
|
11
|
-
export declare function decodeTransactionSerializable(chainId: number, tx: TransactionSerializable): DecodedTxData;
|
12
|
-
export declare function decodeRlpHex(chainId: number, tx: Hex): DecodedTxData;
|
13
|
-
export declare function decodeTypedData(chainId: number, data: EIP712TypedData): DecodedTxData;
|
14
|
-
export declare function decodeUserOperation(chainId: number, userOp: UserOperation): DecodedTxData;
|