@metamask/smart-accounts-kit 1.0.0 → 1.2.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/CHANGELOG.md +22 -1
- package/README.md +34 -2
- package/dist/actions/index.cjs +5 -5
- package/dist/actions/index.d.cts +2 -2
- package/dist/actions/index.d.ts +2 -2
- package/dist/actions/index.mjs +4 -4
- package/dist/{smartAccountsEnvironment-Czw9KUYZ.d.cts → caveats-CQbtzOKm.d.ts} +9 -2
- package/dist/{smartAccountsEnvironment-u1CcFcGE.d.ts → caveats-Cey0wm33.d.cts} +9 -2
- package/dist/{chunk-UUOH2WAW.cjs → chunk-3SHZ7PV2.cjs} +12 -12
- package/dist/{chunk-UUOH2WAW.cjs.map → chunk-3SHZ7PV2.cjs.map} +1 -1
- package/dist/{chunk-TPBFVDVM.mjs → chunk-4QXIOE7F.mjs} +8 -6
- package/dist/chunk-4QXIOE7F.mjs.map +1 -0
- package/dist/{chunk-NOCLGZGB.mjs → chunk-734MOPHR.mjs} +63 -5
- package/dist/chunk-734MOPHR.mjs.map +1 -0
- package/dist/{chunk-YDLLC6PP.cjs → chunk-7BEEGBA2.cjs} +519 -16
- package/dist/chunk-7BEEGBA2.cjs.map +1 -0
- package/dist/{chunk-45GHWVQA.mjs → chunk-G7VZ7E6W.mjs} +4 -4
- package/dist/{chunk-XN36L4RX.cjs → chunk-HFRQNSZE.cjs} +106 -107
- package/dist/chunk-HFRQNSZE.cjs.map +1 -0
- package/dist/{chunk-33AMUJBJ.mjs → chunk-L5DLMBDC.mjs} +5 -6
- package/dist/{chunk-VLKX4BR6.cjs → chunk-MOHCTPYQ.cjs} +8 -6
- package/dist/chunk-MOHCTPYQ.cjs.map +1 -0
- package/dist/{chunk-QMRKCB7T.cjs → chunk-T4IAMAB2.cjs} +102 -44
- package/dist/chunk-T4IAMAB2.cjs.map +1 -0
- package/dist/{chunk-BYWRJGSK.cjs → chunk-UB2FLPP3.cjs} +16 -16
- package/dist/{chunk-BYWRJGSK.cjs.map → chunk-UB2FLPP3.cjs.map} +1 -1
- package/dist/{chunk-23YXLKTX.cjs → chunk-UZO5OYCD.cjs} +14 -14
- package/dist/{chunk-23YXLKTX.cjs.map → chunk-UZO5OYCD.cjs.map} +1 -1
- package/dist/{chunk-YTELOQ4I.mjs → chunk-VJXM3LWA.mjs} +2 -2
- package/dist/{chunk-WV2R7BXP.mjs → chunk-YTNCEXUX.mjs} +3 -3
- package/dist/{chunk-C5ZEEH2Z.mjs → chunk-ZA2XYCVX.mjs} +517 -14
- package/dist/chunk-ZA2XYCVX.mjs.map +1 -0
- package/dist/contracts/index.cjs +6 -6
- package/dist/contracts/index.d.cts +3 -3
- package/dist/contracts/index.d.ts +3 -3
- package/dist/contracts/index.mjs +5 -5
- package/dist/{delegation-DIriDFkq.d.cts → delegation-Bx4FEAIU.d.ts} +2 -2
- package/dist/{delegation-CvVXs0PO.d.ts → delegation-KbWHzRxV.d.cts} +2 -2
- package/dist/experimental/index.cjs +36 -4
- package/dist/experimental/index.cjs.map +1 -1
- package/dist/experimental/index.d.cts +5 -2
- package/dist/experimental/index.d.ts +5 -2
- package/dist/experimental/index.mjs +35 -3
- package/dist/experimental/index.mjs.map +1 -1
- package/dist/{index-ChTryO1-.d.ts → index-D2THBlfm.d.ts} +3 -3
- package/dist/{index-5EdxVa_d.d.ts → index-D7fBuNV-.d.ts} +3 -3
- package/dist/{index-DC9baw8F.d.cts → index-DE87r5KY.d.cts} +3 -3
- package/dist/{index-Dvc4ir4O.d.cts → index-Uj_xXVko.d.cts} +3 -3
- package/dist/index.cjs +36 -26
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -12
- package/dist/index.d.ts +10 -12
- package/dist/index.mjs +28 -18
- package/dist/index.mjs.map +1 -1
- package/dist/{types-qdEHxd5Q.d.ts → types-BWaH4KH1.d.cts} +3 -2
- package/dist/{types-qdEHxd5Q.d.cts → types-BWaH4KH1.d.ts} +3 -2
- package/dist/utils/index.cjs +7 -5
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.cts +3 -3
- package/dist/utils/index.d.ts +3 -3
- package/dist/utils/index.mjs +6 -4
- package/package.json +5 -4
- package/dist/chunk-C5ZEEH2Z.mjs.map +0 -1
- package/dist/chunk-NOCLGZGB.mjs.map +0 -1
- package/dist/chunk-QMRKCB7T.cjs.map +0 -1
- package/dist/chunk-TPBFVDVM.mjs.map +0 -1
- package/dist/chunk-VLKX4BR6.cjs.map +0 -1
- package/dist/chunk-XN36L4RX.cjs.map +0 -1
- package/dist/chunk-YDLLC6PP.cjs.map +0 -1
- /package/dist/{chunk-45GHWVQA.mjs.map → chunk-G7VZ7E6W.mjs.map} +0 -0
- /package/dist/{chunk-33AMUJBJ.mjs.map → chunk-L5DLMBDC.mjs.map} +0 -0
- /package/dist/{chunk-YTELOQ4I.mjs.map → chunk-VJXM3LWA.mjs.map} +0 -0
- /package/dist/{chunk-WV2R7BXP.mjs.map → chunk-YTNCEXUX.mjs.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
__export
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ZA2XYCVX.mjs";
|
|
4
4
|
|
|
5
5
|
// src/DelegationFramework/ERC20PeriodTransferEnforcer/index.ts
|
|
6
6
|
var ERC20PeriodTransferEnforcer_exports = {};
|
|
@@ -296,4 +296,4 @@ export {
|
|
|
296
296
|
read_exports5,
|
|
297
297
|
NativeTokenStreamingEnforcer_exports
|
|
298
298
|
};
|
|
299
|
-
//# sourceMappingURL=chunk-
|
|
299
|
+
//# sourceMappingURL=chunk-VJXM3LWA.mjs.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
encodeExecutionCalldata
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-4QXIOE7F.mjs";
|
|
4
4
|
import {
|
|
5
5
|
__export,
|
|
6
6
|
toDelegationStruct
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-ZA2XYCVX.mjs";
|
|
8
8
|
|
|
9
9
|
// src/DelegationFramework/utils.ts
|
|
10
10
|
import { ERC1967Proxy } from "@metamask/delegation-abis";
|
|
@@ -827,4 +827,4 @@ export {
|
|
|
827
827
|
execute6,
|
|
828
828
|
encode_exports4
|
|
829
829
|
};
|
|
830
|
-
//# sourceMappingURL=chunk-
|
|
830
|
+
//# sourceMappingURL=chunk-YTNCEXUX.mjs.map
|
|
@@ -999,8 +999,8 @@ var timestamp = "timestamp";
|
|
|
999
999
|
var timestampBuilder = (environment, config) => {
|
|
1000
1000
|
const { afterThreshold, beforeThreshold } = config;
|
|
1001
1001
|
const terms = createTimestampTerms({
|
|
1002
|
-
|
|
1003
|
-
|
|
1002
|
+
afterThreshold,
|
|
1003
|
+
beforeThreshold
|
|
1004
1004
|
});
|
|
1005
1005
|
const {
|
|
1006
1006
|
caveatEnforcers: { TimestampEnforcer }
|
|
@@ -1354,6 +1354,39 @@ var resolveCaveats = ({
|
|
|
1354
1354
|
};
|
|
1355
1355
|
|
|
1356
1356
|
// src/caveats.ts
|
|
1357
|
+
import {
|
|
1358
|
+
decodeAllowedCalldataTerms,
|
|
1359
|
+
decodeERC20StreamingTerms,
|
|
1360
|
+
decodeERC20TransferAmountTerms,
|
|
1361
|
+
decodeERC20BalanceChangeTerms,
|
|
1362
|
+
decodeAllowedMethodsTerms,
|
|
1363
|
+
decodeAllowedTargetsTerms,
|
|
1364
|
+
decodeArgsEqualityCheckTerms,
|
|
1365
|
+
decodeBlockNumberTerms,
|
|
1366
|
+
decodeDeployedTerms,
|
|
1367
|
+
decodeERC721BalanceChangeTerms,
|
|
1368
|
+
decodeERC721TransferTerms,
|
|
1369
|
+
decodeERC1155BalanceChangeTerms,
|
|
1370
|
+
decodeTimestampTerms,
|
|
1371
|
+
decodeNonceTerms,
|
|
1372
|
+
decodeValueLteTerms,
|
|
1373
|
+
decodeLimitedCallsTerms,
|
|
1374
|
+
decodeIdTerms,
|
|
1375
|
+
decodeNativeTokenTransferAmountTerms,
|
|
1376
|
+
decodeNativeBalanceChangeTerms,
|
|
1377
|
+
decodeNativeTokenStreamingTerms,
|
|
1378
|
+
decodeNativeTokenPaymentTerms,
|
|
1379
|
+
decodeRedeemerTerms,
|
|
1380
|
+
decodeSpecificActionERC20TransferBatchTerms,
|
|
1381
|
+
decodeNativeTokenPeriodTransferTerms,
|
|
1382
|
+
decodeERC20TokenPeriodTransferTerms,
|
|
1383
|
+
decodeExactExecutionTerms,
|
|
1384
|
+
decodeExactCalldataTerms,
|
|
1385
|
+
decodeExactCalldataBatchTerms,
|
|
1386
|
+
decodeExactExecutionBatchTerms,
|
|
1387
|
+
decodeMultiTokenPeriodTerms,
|
|
1388
|
+
decodeOwnershipTransferTerms
|
|
1389
|
+
} from "@metamask/delegation-core";
|
|
1357
1390
|
import {
|
|
1358
1391
|
encodeAbiParameters,
|
|
1359
1392
|
parseAbiParameters,
|
|
@@ -1368,11 +1401,132 @@ var CAVEAT_ABI_TYPE_COMPONENTS = [
|
|
|
1368
1401
|
var CAVEAT_TYPEHASH = keccak256(
|
|
1369
1402
|
toHex2("Caveat(address enforcer,bytes terms)")
|
|
1370
1403
|
);
|
|
1371
|
-
var createCaveat = (enforcer, terms, args = "0x00") =>
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1404
|
+
var createCaveat = (enforcer, terms, args = "0x00") => {
|
|
1405
|
+
return {
|
|
1406
|
+
enforcer,
|
|
1407
|
+
terms,
|
|
1408
|
+
args
|
|
1409
|
+
};
|
|
1410
|
+
};
|
|
1411
|
+
var decodeCaveat = ({
|
|
1412
|
+
caveat: { enforcer, terms },
|
|
1413
|
+
environment: { caveatEnforcers }
|
|
1414
|
+
}) => {
|
|
1415
|
+
switch (enforcer.toLowerCase()) {
|
|
1416
|
+
case caveatEnforcers.AllowedCalldataEnforcer?.toLowerCase():
|
|
1417
|
+
return { type: "allowedCalldata", ...decodeAllowedCalldataTerms(terms) };
|
|
1418
|
+
case caveatEnforcers.AllowedMethodsEnforcer?.toLowerCase():
|
|
1419
|
+
return { type: "allowedMethods", ...decodeAllowedMethodsTerms(terms) };
|
|
1420
|
+
case caveatEnforcers.AllowedTargetsEnforcer?.toLowerCase():
|
|
1421
|
+
return { type: "allowedTargets", ...decodeAllowedTargetsTerms(terms) };
|
|
1422
|
+
case caveatEnforcers.ArgsEqualityCheckEnforcer?.toLowerCase():
|
|
1423
|
+
return {
|
|
1424
|
+
type: "argsEqualityCheck",
|
|
1425
|
+
...decodeArgsEqualityCheckTerms(terms)
|
|
1426
|
+
};
|
|
1427
|
+
case caveatEnforcers.BlockNumberEnforcer?.toLowerCase():
|
|
1428
|
+
return { type: "blockNumber", ...decodeBlockNumberTerms(terms) };
|
|
1429
|
+
case caveatEnforcers.DeployedEnforcer?.toLowerCase():
|
|
1430
|
+
return { type: "deployed", ...decodeDeployedTerms(terms) };
|
|
1431
|
+
case caveatEnforcers.ERC20BalanceChangeEnforcer?.toLowerCase():
|
|
1432
|
+
return {
|
|
1433
|
+
type: "erc20BalanceChange",
|
|
1434
|
+
...decodeERC20BalanceChangeTerms(terms)
|
|
1435
|
+
};
|
|
1436
|
+
case caveatEnforcers.ERC20TransferAmountEnforcer?.toLowerCase():
|
|
1437
|
+
return {
|
|
1438
|
+
type: "erc20TransferAmount",
|
|
1439
|
+
...decodeERC20TransferAmountTerms(terms)
|
|
1440
|
+
};
|
|
1441
|
+
case caveatEnforcers.ERC20StreamingEnforcer?.toLowerCase():
|
|
1442
|
+
return { type: "erc20Streaming", ...decodeERC20StreamingTerms(terms) };
|
|
1443
|
+
case caveatEnforcers.ERC721BalanceChangeEnforcer?.toLowerCase():
|
|
1444
|
+
return {
|
|
1445
|
+
type: "erc721BalanceChange",
|
|
1446
|
+
...decodeERC721BalanceChangeTerms(terms)
|
|
1447
|
+
};
|
|
1448
|
+
case caveatEnforcers.ERC721TransferEnforcer?.toLowerCase():
|
|
1449
|
+
return { type: "erc721Transfer", ...decodeERC721TransferTerms(terms) };
|
|
1450
|
+
case caveatEnforcers.ERC1155BalanceChangeEnforcer?.toLowerCase():
|
|
1451
|
+
return {
|
|
1452
|
+
type: "erc1155BalanceChange",
|
|
1453
|
+
...decodeERC1155BalanceChangeTerms(terms)
|
|
1454
|
+
};
|
|
1455
|
+
case caveatEnforcers.IdEnforcer?.toLowerCase():
|
|
1456
|
+
return { type: "id", ...decodeIdTerms(terms) };
|
|
1457
|
+
case caveatEnforcers.LimitedCallsEnforcer?.toLowerCase():
|
|
1458
|
+
return { type: "limitedCalls", ...decodeLimitedCallsTerms(terms) };
|
|
1459
|
+
case caveatEnforcers.NonceEnforcer?.toLowerCase():
|
|
1460
|
+
return { type: "nonce", ...decodeNonceTerms(terms) };
|
|
1461
|
+
case caveatEnforcers.TimestampEnforcer?.toLowerCase():
|
|
1462
|
+
return { type: "timestamp", ...decodeTimestampTerms(terms) };
|
|
1463
|
+
case caveatEnforcers.ValueLteEnforcer?.toLowerCase():
|
|
1464
|
+
return { type: "valueLte", ...decodeValueLteTerms(terms) };
|
|
1465
|
+
case caveatEnforcers.NativeTokenTransferAmountEnforcer?.toLowerCase():
|
|
1466
|
+
return {
|
|
1467
|
+
type: "nativeTokenTransferAmount",
|
|
1468
|
+
...decodeNativeTokenTransferAmountTerms(terms)
|
|
1469
|
+
};
|
|
1470
|
+
case caveatEnforcers.NativeBalanceChangeEnforcer?.toLowerCase():
|
|
1471
|
+
return {
|
|
1472
|
+
type: "nativeBalanceChange",
|
|
1473
|
+
...decodeNativeBalanceChangeTerms(terms)
|
|
1474
|
+
};
|
|
1475
|
+
case caveatEnforcers.NativeTokenStreamingEnforcer?.toLowerCase():
|
|
1476
|
+
return {
|
|
1477
|
+
type: "nativeTokenStreaming",
|
|
1478
|
+
...decodeNativeTokenStreamingTerms(terms)
|
|
1479
|
+
};
|
|
1480
|
+
case caveatEnforcers.NativeTokenPaymentEnforcer?.toLowerCase():
|
|
1481
|
+
return {
|
|
1482
|
+
type: "nativeTokenPayment",
|
|
1483
|
+
...decodeNativeTokenPaymentTerms(terms)
|
|
1484
|
+
};
|
|
1485
|
+
case caveatEnforcers.RedeemerEnforcer?.toLowerCase():
|
|
1486
|
+
return { type: "redeemer", ...decodeRedeemerTerms(terms) };
|
|
1487
|
+
case caveatEnforcers.SpecificActionERC20TransferBatchEnforcer?.toLowerCase():
|
|
1488
|
+
return {
|
|
1489
|
+
type: "specificActionERC20TransferBatch",
|
|
1490
|
+
...decodeSpecificActionERC20TransferBatchTerms(terms)
|
|
1491
|
+
};
|
|
1492
|
+
case caveatEnforcers.ERC20PeriodTransferEnforcer?.toLowerCase():
|
|
1493
|
+
return {
|
|
1494
|
+
type: "erc20PeriodTransfer",
|
|
1495
|
+
...decodeERC20TokenPeriodTransferTerms(terms)
|
|
1496
|
+
};
|
|
1497
|
+
case caveatEnforcers.NativeTokenPeriodTransferEnforcer?.toLowerCase():
|
|
1498
|
+
return {
|
|
1499
|
+
type: "nativeTokenPeriodTransfer",
|
|
1500
|
+
...decodeNativeTokenPeriodTransferTerms(terms)
|
|
1501
|
+
};
|
|
1502
|
+
case caveatEnforcers.ExactCalldataBatchEnforcer?.toLowerCase():
|
|
1503
|
+
return {
|
|
1504
|
+
type: "exactCalldataBatch",
|
|
1505
|
+
...decodeExactCalldataBatchTerms(terms)
|
|
1506
|
+
};
|
|
1507
|
+
case caveatEnforcers.ExactCalldataEnforcer?.toLowerCase():
|
|
1508
|
+
return { type: "exactCalldata", ...decodeExactCalldataTerms(terms) };
|
|
1509
|
+
case caveatEnforcers.ExactExecutionEnforcer?.toLowerCase():
|
|
1510
|
+
return { type: "exactExecution", ...decodeExactExecutionTerms(terms) };
|
|
1511
|
+
case caveatEnforcers.ExactExecutionBatchEnforcer?.toLowerCase():
|
|
1512
|
+
return {
|
|
1513
|
+
type: "exactExecutionBatch",
|
|
1514
|
+
...decodeExactExecutionBatchTerms(terms)
|
|
1515
|
+
};
|
|
1516
|
+
case caveatEnforcers.MultiTokenPeriodEnforcer?.toLowerCase():
|
|
1517
|
+
return {
|
|
1518
|
+
type: "multiTokenPeriod",
|
|
1519
|
+
...decodeMultiTokenPeriodTerms(terms)
|
|
1520
|
+
};
|
|
1521
|
+
case caveatEnforcers.OwnershipTransferEnforcer?.toLowerCase():
|
|
1522
|
+
return {
|
|
1523
|
+
type: "ownershipTransfer",
|
|
1524
|
+
...decodeOwnershipTransferTerms(terms)
|
|
1525
|
+
};
|
|
1526
|
+
default:
|
|
1527
|
+
throw new Error(`Unknown enforcer address: ${enforcer}`);
|
|
1528
|
+
}
|
|
1529
|
+
};
|
|
1376
1530
|
|
|
1377
1531
|
// src/delegation.ts
|
|
1378
1532
|
import {
|
|
@@ -1388,6 +1542,317 @@ import {
|
|
|
1388
1542
|
} from "@metamask/delegation-core";
|
|
1389
1543
|
import { toHex as toHex3, getAddress, isHex as isHex5 } from "viem";
|
|
1390
1544
|
import { signTypedData } from "viem/accounts";
|
|
1545
|
+
|
|
1546
|
+
// src/analytics/index.ts
|
|
1547
|
+
import createClient from "openapi-fetch";
|
|
1548
|
+
|
|
1549
|
+
// src/analytics/environment.ts
|
|
1550
|
+
var session;
|
|
1551
|
+
function createAnonId() {
|
|
1552
|
+
if (typeof globalThis.crypto?.randomUUID === "function") {
|
|
1553
|
+
return globalThis.crypto.randomUUID();
|
|
1554
|
+
}
|
|
1555
|
+
return `00000000-0000-4000-8000-${Math.random().toString(16).slice(2, 14).padEnd(12, "0")}`;
|
|
1556
|
+
}
|
|
1557
|
+
function inferPlatform() {
|
|
1558
|
+
if (typeof globalThis === "undefined" || !("window" in globalThis)) {
|
|
1559
|
+
return "nodejs";
|
|
1560
|
+
}
|
|
1561
|
+
const nav = globalThis.navigator;
|
|
1562
|
+
const ua = typeof nav?.userAgent === "string" ? nav.userAgent : "";
|
|
1563
|
+
if (/Mobile|Android|iPhone|iPod|webOS|BlackBerry|IEMobile|Opera Mini/iu.test(ua)) {
|
|
1564
|
+
return "web-mobile";
|
|
1565
|
+
}
|
|
1566
|
+
return "web-desktop";
|
|
1567
|
+
}
|
|
1568
|
+
function inferDomain() {
|
|
1569
|
+
if (typeof globalThis !== "undefined" && "window" in globalThis) {
|
|
1570
|
+
const win = globalThis;
|
|
1571
|
+
const hostname = win.location?.hostname;
|
|
1572
|
+
if (typeof hostname === "string" && hostname.length > 0) {
|
|
1573
|
+
return { domain: hostname };
|
|
1574
|
+
}
|
|
1575
|
+
}
|
|
1576
|
+
return {};
|
|
1577
|
+
}
|
|
1578
|
+
function getInitializationContext(params) {
|
|
1579
|
+
if (!session) {
|
|
1580
|
+
session = {
|
|
1581
|
+
sdk_version: params.sdk_version,
|
|
1582
|
+
anon_id: params.anon_id ?? createAnonId(),
|
|
1583
|
+
platform: inferPlatform(),
|
|
1584
|
+
...inferDomain()
|
|
1585
|
+
};
|
|
1586
|
+
return { ...session };
|
|
1587
|
+
}
|
|
1588
|
+
session = {
|
|
1589
|
+
...session,
|
|
1590
|
+
sdk_version: params.sdk_version
|
|
1591
|
+
};
|
|
1592
|
+
return { ...session };
|
|
1593
|
+
}
|
|
1594
|
+
function getSessionBaseProperties() {
|
|
1595
|
+
if (!session) {
|
|
1596
|
+
throw new Error(
|
|
1597
|
+
"Smart Accounts Kit analytics: call getInitializationContext({ sdk_version }) at SDK startup before recording events."
|
|
1598
|
+
);
|
|
1599
|
+
}
|
|
1600
|
+
return { ...session };
|
|
1601
|
+
}
|
|
1602
|
+
function mergeSessionProperties(partial) {
|
|
1603
|
+
if (!session) {
|
|
1604
|
+
throw new Error(
|
|
1605
|
+
"Smart Accounts Kit analytics: call getInitializationContext before mergeSessionProperties."
|
|
1606
|
+
);
|
|
1607
|
+
}
|
|
1608
|
+
session = { ...session, ...partial };
|
|
1609
|
+
}
|
|
1610
|
+
|
|
1611
|
+
// src/analytics/sender.ts
|
|
1612
|
+
var Sender = class {
|
|
1613
|
+
#sendFn;
|
|
1614
|
+
#batchSize;
|
|
1615
|
+
#baseTimeoutMs;
|
|
1616
|
+
#maxFailureCount;
|
|
1617
|
+
#maxTimeoutMs;
|
|
1618
|
+
#isDisabled = false;
|
|
1619
|
+
#batch = [];
|
|
1620
|
+
#failureCount = 0;
|
|
1621
|
+
#timeoutId = null;
|
|
1622
|
+
#isSending = false;
|
|
1623
|
+
constructor(options) {
|
|
1624
|
+
this.#batchSize = options.batchSize;
|
|
1625
|
+
this.#baseTimeoutMs = options.baseTimeoutMs;
|
|
1626
|
+
this.#maxFailureCount = options.maxFailureCount;
|
|
1627
|
+
this.#sendFn = options.sendFn;
|
|
1628
|
+
this.#maxTimeoutMs = options.maxTimeoutMs;
|
|
1629
|
+
}
|
|
1630
|
+
enqueue(item) {
|
|
1631
|
+
if (this.#isDisabled) {
|
|
1632
|
+
return;
|
|
1633
|
+
}
|
|
1634
|
+
this.#batch.push(item);
|
|
1635
|
+
this.#schedule();
|
|
1636
|
+
}
|
|
1637
|
+
#schedule() {
|
|
1638
|
+
if (this.#isDisabled) {
|
|
1639
|
+
return;
|
|
1640
|
+
}
|
|
1641
|
+
if (this.#batch.length > 0 && !this.#timeoutId) {
|
|
1642
|
+
const { isRetry, timeoutMs } = this.#getTimeout();
|
|
1643
|
+
const timeout = setTimeout(() => {
|
|
1644
|
+
this.#timeoutId = null;
|
|
1645
|
+
this.#flush();
|
|
1646
|
+
}, timeoutMs);
|
|
1647
|
+
if (isRetry && timeout.unref) {
|
|
1648
|
+
timeout.unref();
|
|
1649
|
+
}
|
|
1650
|
+
this.#timeoutId = timeout;
|
|
1651
|
+
}
|
|
1652
|
+
}
|
|
1653
|
+
async #flush() {
|
|
1654
|
+
if (this.#isDisabled || this.#isSending || this.#batch.length === 0) {
|
|
1655
|
+
return;
|
|
1656
|
+
}
|
|
1657
|
+
this.#isSending = true;
|
|
1658
|
+
const current = this.#batch.slice(0, this.#batchSize);
|
|
1659
|
+
this.#batch = this.#batch.slice(this.#batchSize);
|
|
1660
|
+
try {
|
|
1661
|
+
await this.#sendFn(current);
|
|
1662
|
+
this.#failureCount = 0;
|
|
1663
|
+
} catch {
|
|
1664
|
+
this.#failureCount += 1;
|
|
1665
|
+
if (this.#failureCount >= this.#maxFailureCount) {
|
|
1666
|
+
this.#isDisabled = true;
|
|
1667
|
+
this.#batch = [];
|
|
1668
|
+
if (this.#timeoutId !== null) {
|
|
1669
|
+
clearTimeout(this.#timeoutId);
|
|
1670
|
+
this.#timeoutId = null;
|
|
1671
|
+
}
|
|
1672
|
+
} else {
|
|
1673
|
+
this.#batch = [...current, ...this.#batch];
|
|
1674
|
+
}
|
|
1675
|
+
} finally {
|
|
1676
|
+
this.#isSending = false;
|
|
1677
|
+
this.#schedule();
|
|
1678
|
+
}
|
|
1679
|
+
}
|
|
1680
|
+
#getTimeout() {
|
|
1681
|
+
const isRetry = this.#failureCount > 0;
|
|
1682
|
+
const timeoutMs = Math.min(
|
|
1683
|
+
this.#baseTimeoutMs * 2 ** this.#failureCount,
|
|
1684
|
+
this.#maxTimeoutMs
|
|
1685
|
+
);
|
|
1686
|
+
return { isRetry, timeoutMs };
|
|
1687
|
+
}
|
|
1688
|
+
};
|
|
1689
|
+
|
|
1690
|
+
// package.json
|
|
1691
|
+
var version = "1.2.0";
|
|
1692
|
+
|
|
1693
|
+
// src/analytics/index.ts
|
|
1694
|
+
function isCompleteBase(value) {
|
|
1695
|
+
return typeof value.sdk_version === "string" && value.sdk_version.length > 0 && typeof value.anon_id === "string" && value.anon_id.length > 0 && typeof value.platform === "string" && value.platform.length > 0;
|
|
1696
|
+
}
|
|
1697
|
+
function normalise(batch) {
|
|
1698
|
+
const walk = (value) => {
|
|
1699
|
+
if (typeof value === "bigint") {
|
|
1700
|
+
return `${value}n`;
|
|
1701
|
+
}
|
|
1702
|
+
if (value === null || typeof value !== "object") {
|
|
1703
|
+
return value;
|
|
1704
|
+
}
|
|
1705
|
+
if (Array.isArray(value)) {
|
|
1706
|
+
return value.map((item) => walk(item));
|
|
1707
|
+
}
|
|
1708
|
+
const result = {};
|
|
1709
|
+
for (const [key, child] of Object.entries(
|
|
1710
|
+
value
|
|
1711
|
+
)) {
|
|
1712
|
+
result[key] = walk(child);
|
|
1713
|
+
}
|
|
1714
|
+
return result;
|
|
1715
|
+
};
|
|
1716
|
+
return walk(batch);
|
|
1717
|
+
}
|
|
1718
|
+
var METAMASK_ANALYTICS_ENDPOINT = "https://mm-sdk-analytics.api.cx.metamask.io/";
|
|
1719
|
+
var Analytics = class {
|
|
1720
|
+
enabled = false;
|
|
1721
|
+
sender;
|
|
1722
|
+
constructor(baseUrl) {
|
|
1723
|
+
const client = createClient({ baseUrl });
|
|
1724
|
+
const sendFn = async (batch) => {
|
|
1725
|
+
const normalisedBatch = normalise(batch);
|
|
1726
|
+
const res = await client.POST("/v2/events", { body: normalisedBatch });
|
|
1727
|
+
if (res.response.status !== 200) {
|
|
1728
|
+
throw new Error(String(res.error));
|
|
1729
|
+
}
|
|
1730
|
+
};
|
|
1731
|
+
this.sender = new Sender({
|
|
1732
|
+
batchSize: 100,
|
|
1733
|
+
baseTimeoutMs: 100,
|
|
1734
|
+
maxFailureCount: 6,
|
|
1735
|
+
maxTimeoutMs: 1e4,
|
|
1736
|
+
sendFn
|
|
1737
|
+
});
|
|
1738
|
+
}
|
|
1739
|
+
enable() {
|
|
1740
|
+
this.enabled = true;
|
|
1741
|
+
}
|
|
1742
|
+
/**
|
|
1743
|
+
* Merges a field into the session base (shared with {@link getSessionBaseProperties}).
|
|
1744
|
+
*
|
|
1745
|
+
* @param key - Base property name.
|
|
1746
|
+
* @param value - Value for that property.
|
|
1747
|
+
*/
|
|
1748
|
+
setGlobalProperty(key, value) {
|
|
1749
|
+
mergeSessionProperties({
|
|
1750
|
+
[key]: value
|
|
1751
|
+
});
|
|
1752
|
+
}
|
|
1753
|
+
/**
|
|
1754
|
+
* Sends `smart_accounts_kit_initialized` using the session base from {@link getInitializationContext}
|
|
1755
|
+
* plus optional per-event overrides. Updates the stored session with the merged snapshot.
|
|
1756
|
+
*
|
|
1757
|
+
* @param properties - Optional overrides; omit to use the current session base only.
|
|
1758
|
+
*/
|
|
1759
|
+
trackInitialized(properties = {}) {
|
|
1760
|
+
if (!this.enabled) {
|
|
1761
|
+
return;
|
|
1762
|
+
}
|
|
1763
|
+
const merged = {
|
|
1764
|
+
...getSessionBaseProperties(),
|
|
1765
|
+
...properties
|
|
1766
|
+
};
|
|
1767
|
+
if (!isCompleteBase(merged)) {
|
|
1768
|
+
throw new Error(
|
|
1769
|
+
"Analytics: trackInitialized produced incomplete base configuration (ensure getInitializationContext ran and sdk_version, anon_id, platform are set)"
|
|
1770
|
+
);
|
|
1771
|
+
}
|
|
1772
|
+
mergeSessionProperties(merged);
|
|
1773
|
+
const event = {
|
|
1774
|
+
namespace: "metamask/smart-accounts-kit",
|
|
1775
|
+
event_name: "smart_accounts_kit_initialized",
|
|
1776
|
+
properties: merged
|
|
1777
|
+
};
|
|
1778
|
+
this.sender.enqueue(event);
|
|
1779
|
+
}
|
|
1780
|
+
/**
|
|
1781
|
+
* Sends `smart_accounts_kit_function_called` with session base plus the function name and optional
|
|
1782
|
+
* non-sensitive parameters. Does not mutate the session store (unlike {@link trackInitialized}).
|
|
1783
|
+
*
|
|
1784
|
+
* @param functionName - Public SDK entry name (use a stable string, e.g. `createDelegation`).
|
|
1785
|
+
* @param parameters - Safe primitives only; omit secrets, keys, and raw addresses if sensitive.
|
|
1786
|
+
* @param baseOverrides - Optional overrides for base fields (same as {@link trackInitialized}).
|
|
1787
|
+
*/
|
|
1788
|
+
trackSdkFunctionCall(functionName, parameters, baseOverrides = {}) {
|
|
1789
|
+
if (!this.enabled) {
|
|
1790
|
+
return;
|
|
1791
|
+
}
|
|
1792
|
+
const mergedBase = {
|
|
1793
|
+
...getSessionBaseProperties(),
|
|
1794
|
+
...baseOverrides
|
|
1795
|
+
};
|
|
1796
|
+
if (!isCompleteBase(mergedBase)) {
|
|
1797
|
+
throw new Error(
|
|
1798
|
+
"Analytics: trackSdkFunctionCall requires session (call getInitializationContext before tracking)"
|
|
1799
|
+
);
|
|
1800
|
+
}
|
|
1801
|
+
const props = {
|
|
1802
|
+
...mergedBase,
|
|
1803
|
+
function_name: functionName,
|
|
1804
|
+
...parameters !== void 0 && Object.keys(parameters).length > 0 ? { parameters } : {}
|
|
1805
|
+
};
|
|
1806
|
+
const event = {
|
|
1807
|
+
namespace: "metamask/smart-accounts-kit",
|
|
1808
|
+
event_name: "smart_accounts_kit_function_called",
|
|
1809
|
+
properties: props
|
|
1810
|
+
};
|
|
1811
|
+
this.sender.enqueue(event);
|
|
1812
|
+
}
|
|
1813
|
+
};
|
|
1814
|
+
var analytics = new Analytics(METAMASK_ANALYTICS_ENDPOINT);
|
|
1815
|
+
function isAnalyticsDisabled() {
|
|
1816
|
+
const dntValues = [];
|
|
1817
|
+
if (typeof process !== "undefined") {
|
|
1818
|
+
dntValues.push(process.env?.CI);
|
|
1819
|
+
dntValues.push(process.env?.DO_NOT_TRACK);
|
|
1820
|
+
}
|
|
1821
|
+
if (typeof navigator !== "undefined") {
|
|
1822
|
+
dntValues.push(navigator.doNotTrack);
|
|
1823
|
+
}
|
|
1824
|
+
if (typeof window !== "undefined") {
|
|
1825
|
+
dntValues.push(window.doNotTrack);
|
|
1826
|
+
}
|
|
1827
|
+
return dntValues.some(
|
|
1828
|
+
(dntValue) => dntValue === "1" || dntValue?.toLowerCase() === "yes" || dntValue?.toLowerCase() === "true"
|
|
1829
|
+
);
|
|
1830
|
+
}
|
|
1831
|
+
var hasBootstrapped = false;
|
|
1832
|
+
function ensureSmartAccountsKitAnalyticsBootstrapped() {
|
|
1833
|
+
if (hasBootstrapped) {
|
|
1834
|
+
return;
|
|
1835
|
+
}
|
|
1836
|
+
hasBootstrapped = true;
|
|
1837
|
+
if (isAnalyticsDisabled()) {
|
|
1838
|
+
return;
|
|
1839
|
+
}
|
|
1840
|
+
try {
|
|
1841
|
+
getInitializationContext({ sdk_version: version });
|
|
1842
|
+
analytics.enable();
|
|
1843
|
+
analytics.trackInitialized();
|
|
1844
|
+
} catch {
|
|
1845
|
+
}
|
|
1846
|
+
}
|
|
1847
|
+
function trackSmartAccountsKitFunctionCall(functionName, parameters) {
|
|
1848
|
+
ensureSmartAccountsKitAnalyticsBootstrapped();
|
|
1849
|
+
try {
|
|
1850
|
+
analytics.trackSdkFunctionCall(functionName, parameters);
|
|
1851
|
+
} catch {
|
|
1852
|
+
}
|
|
1853
|
+
}
|
|
1854
|
+
|
|
1855
|
+
// src/delegation.ts
|
|
1391
1856
|
var DELEGATION_ABI_TYPE_COMPONENTS = [
|
|
1392
1857
|
{ type: "address", name: "delegate" },
|
|
1393
1858
|
{ type: "address", name: "delegator" },
|
|
@@ -1482,22 +1947,58 @@ var resolveAuthority = (parentDelegation) => {
|
|
|
1482
1947
|
}
|
|
1483
1948
|
return hashDelegation(parentDelegation);
|
|
1484
1949
|
};
|
|
1950
|
+
var getCaveatNames = ({
|
|
1951
|
+
caveats,
|
|
1952
|
+
environment: { caveatEnforcers }
|
|
1953
|
+
}) => {
|
|
1954
|
+
if (Array.isArray(caveats)) {
|
|
1955
|
+
const knownEnforcers = Object.entries(caveatEnforcers).map(
|
|
1956
|
+
([name, address]) => ({ name, address: address.toLowerCase() })
|
|
1957
|
+
);
|
|
1958
|
+
return caveats.map((caveat) => {
|
|
1959
|
+
const enforcerAddressLowercase = caveat.enforcer?.toLowerCase();
|
|
1960
|
+
const matchingCaveat = knownEnforcers.find(
|
|
1961
|
+
({ address }) => address === enforcerAddressLowercase
|
|
1962
|
+
);
|
|
1963
|
+
return matchingCaveat?.name ?? "Unknown";
|
|
1964
|
+
});
|
|
1965
|
+
}
|
|
1966
|
+
return [];
|
|
1967
|
+
};
|
|
1485
1968
|
var createDelegation = (options) => {
|
|
1969
|
+
const caveats = resolveCaveats(options);
|
|
1970
|
+
trackSmartAccountsKitFunctionCall("createDelegation", {
|
|
1971
|
+
hasParentDelegation: options.parentDelegation !== void 0,
|
|
1972
|
+
scope: options.scope.type,
|
|
1973
|
+
caveatNames: getCaveatNames({
|
|
1974
|
+
caveats,
|
|
1975
|
+
environment: options.environment
|
|
1976
|
+
})
|
|
1977
|
+
});
|
|
1486
1978
|
return {
|
|
1487
1979
|
delegate: options.to,
|
|
1488
1980
|
delegator: options.from,
|
|
1489
1981
|
authority: resolveAuthority(options.parentDelegation),
|
|
1490
|
-
caveats
|
|
1982
|
+
caveats,
|
|
1491
1983
|
salt: options.salt ?? "0x00",
|
|
1492
1984
|
signature: "0x"
|
|
1493
1985
|
};
|
|
1494
1986
|
};
|
|
1495
1987
|
var createOpenDelegation = (options) => {
|
|
1988
|
+
const caveats = resolveCaveats(options);
|
|
1989
|
+
trackSmartAccountsKitFunctionCall("createOpenDelegation", {
|
|
1990
|
+
hasParentDelegation: options.parentDelegation !== void 0,
|
|
1991
|
+
scope: options.scope.type,
|
|
1992
|
+
caveatNames: getCaveatNames({
|
|
1993
|
+
caveats,
|
|
1994
|
+
environment: options.environment
|
|
1995
|
+
})
|
|
1996
|
+
});
|
|
1496
1997
|
return {
|
|
1497
1998
|
delegate: ANY_BENEFICIARY,
|
|
1498
1999
|
delegator: options.from,
|
|
1499
2000
|
authority: resolveAuthority(options.parentDelegation),
|
|
1500
|
-
caveats
|
|
2001
|
+
caveats,
|
|
1501
2002
|
salt: options.salt ?? "0x00",
|
|
1502
2003
|
signature: "0x"
|
|
1503
2004
|
};
|
|
@@ -1507,7 +2008,7 @@ var prepareSignDelegationTypedData = ({
|
|
|
1507
2008
|
delegationManager,
|
|
1508
2009
|
chainId,
|
|
1509
2010
|
name = "DelegationManager",
|
|
1510
|
-
version = "1",
|
|
2011
|
+
version: version2 = "1",
|
|
1511
2012
|
allowInsecureUnrestrictedDelegation = false
|
|
1512
2013
|
}) => {
|
|
1513
2014
|
const delegationStruct = toDelegationStruct({
|
|
@@ -1523,7 +2024,7 @@ var prepareSignDelegationTypedData = ({
|
|
|
1523
2024
|
domain: {
|
|
1524
2025
|
chainId,
|
|
1525
2026
|
name,
|
|
1526
|
-
version,
|
|
2027
|
+
version: version2,
|
|
1527
2028
|
verifyingContract: delegationManager
|
|
1528
2029
|
},
|
|
1529
2030
|
types: SIGNABLE_DELEGATION_TYPED_DATA,
|
|
@@ -1537,7 +2038,7 @@ var signDelegation = async ({
|
|
|
1537
2038
|
delegationManager,
|
|
1538
2039
|
chainId,
|
|
1539
2040
|
name = "DelegationManager",
|
|
1540
|
-
version = "1",
|
|
2041
|
+
version: version2 = "1",
|
|
1541
2042
|
allowInsecureUnrestrictedDelegation = false
|
|
1542
2043
|
}) => {
|
|
1543
2044
|
const typedData = prepareSignDelegationTypedData({
|
|
@@ -1545,7 +2046,7 @@ var signDelegation = async ({
|
|
|
1545
2046
|
delegationManager,
|
|
1546
2047
|
chainId,
|
|
1547
2048
|
name,
|
|
1548
|
-
version,
|
|
2049
|
+
version: version2,
|
|
1549
2050
|
allowInsecureUnrestrictedDelegation
|
|
1550
2051
|
});
|
|
1551
2052
|
return signTypedData({
|
|
@@ -1556,6 +2057,7 @@ var signDelegation = async ({
|
|
|
1556
2057
|
|
|
1557
2058
|
export {
|
|
1558
2059
|
__export,
|
|
2060
|
+
trackSmartAccountsKitFunctionCall,
|
|
1559
2061
|
Implementation,
|
|
1560
2062
|
TransferWindow,
|
|
1561
2063
|
ScopeType,
|
|
@@ -1566,6 +2068,7 @@ export {
|
|
|
1566
2068
|
isDefined,
|
|
1567
2069
|
toHexOrThrow,
|
|
1568
2070
|
createCaveat,
|
|
2071
|
+
decodeCaveat,
|
|
1569
2072
|
ANY_BENEFICIARY,
|
|
1570
2073
|
DELEGATION_TYPEHASH,
|
|
1571
2074
|
ROOT_AUTHORITY,
|
|
@@ -1585,4 +2088,4 @@ export {
|
|
|
1585
2088
|
prepareSignDelegationTypedData,
|
|
1586
2089
|
signDelegation
|
|
1587
2090
|
};
|
|
1588
|
-
//# sourceMappingURL=chunk-
|
|
2091
|
+
//# sourceMappingURL=chunk-ZA2XYCVX.mjs.map
|