@pimlico/alto 0.0.0-main.20250916T162729 → 0.0.0-main.20250930T125129

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.
Files changed (91) hide show
  1. package/esm/cli/config/bundler.d.ts +12 -0
  2. package/esm/cli/config/bundler.js +2 -0
  3. package/esm/cli/config/bundler.js.map +1 -1
  4. package/esm/cli/config/options.js +11 -0
  5. package/esm/cli/config/options.js.map +1 -1
  6. package/esm/cli/setupServer.js +1 -1
  7. package/esm/cli/setupServer.js.map +1 -1
  8. package/esm/cli/shutDown.js +15 -55
  9. package/esm/cli/shutDown.js.map +1 -1
  10. package/esm/executor/bundleManager.d.ts +1 -1
  11. package/esm/executor/bundleManager.js +47 -34
  12. package/esm/executor/bundleManager.js.map +1 -1
  13. package/esm/executor/executorManager.js +3 -4
  14. package/esm/executor/executorManager.js.map +1 -1
  15. package/esm/executor/senderManager/createRedisSenderManager.js +1 -2
  16. package/esm/executor/senderManager/createRedisSenderManager.js.map +1 -1
  17. package/esm/handlers/arbitrumGasPriceManager.js +2 -2
  18. package/esm/handlers/gasPriceManager.js +3 -3
  19. package/esm/handlers/mantleGasPriceManager.js +4 -4
  20. package/esm/handlers/optimismManager.js +1 -1
  21. package/esm/mempool/mempool.d.ts +3 -11
  22. package/esm/mempool/mempool.js +91 -93
  23. package/esm/mempool/mempool.js.map +1 -1
  24. package/esm/mempool/monitoring.d.ts +1 -1
  25. package/esm/mempool/monitoring.js +30 -21
  26. package/esm/mempool/monitoring.js.map +1 -1
  27. package/esm/receiptCache/createMemoryReceiptCache.js +8 -5
  28. package/esm/receiptCache/createMemoryReceiptCache.js.map +1 -1
  29. package/esm/receiptCache/createRedisReceiptCache.js +13 -11
  30. package/esm/receiptCache/createRedisReceiptCache.js.map +1 -1
  31. package/esm/receiptCache/index.d.ts +4 -1
  32. package/esm/receiptCache/index.js.map +1 -1
  33. package/esm/rpc/methods/pimlico_sendUserOperationNow.js +4 -1
  34. package/esm/rpc/methods/pimlico_sendUserOperationNow.js.map +1 -1
  35. package/esm/store/createMempoolStore.d.ts +1 -1
  36. package/esm/store/createMempoolStore.js +51 -143
  37. package/esm/store/createMempoolStore.js.map +1 -1
  38. package/esm/store/index.d.ts +4 -75
  39. package/esm/store/index.js +4 -1
  40. package/esm/store/index.js.map +1 -1
  41. package/esm/store/outstanding/index.d.ts +13 -0
  42. package/esm/store/outstanding/index.js +16 -0
  43. package/esm/store/outstanding/index.js.map +1 -0
  44. package/esm/store/{createMemoryOutstandingStore.d.ts → outstanding/memory.d.ts} +11 -10
  45. package/esm/store/outstanding/memory.js +249 -0
  46. package/esm/store/outstanding/memory.js.map +1 -0
  47. package/esm/store/outstanding/redis.d.ts +11 -0
  48. package/esm/store/outstanding/redis.js +201 -0
  49. package/esm/store/outstanding/redis.js.map +1 -0
  50. package/esm/store/outstanding/types.d.ts +18 -0
  51. package/esm/store/outstanding/types.js +2 -0
  52. package/esm/store/outstanding/types.js.map +1 -0
  53. package/esm/store/processing/index.d.ts +11 -0
  54. package/esm/store/processing/index.js +17 -0
  55. package/esm/store/processing/index.js.map +1 -0
  56. package/esm/store/processing/memory.d.ts +14 -0
  57. package/esm/store/processing/memory.js +46 -0
  58. package/esm/store/processing/memory.js.map +1 -0
  59. package/esm/store/processing/redis.d.ts +21 -0
  60. package/esm/store/processing/redis.js +69 -0
  61. package/esm/store/processing/redis.js.map +1 -0
  62. package/esm/store/processing/types.d.ts +9 -0
  63. package/esm/store/processing/types.js +2 -0
  64. package/esm/store/processing/types.js.map +1 -0
  65. package/esm/store/types.d.ts +49 -0
  66. package/esm/store/types.js +2 -0
  67. package/esm/store/types.js.map +1 -0
  68. package/esm/utils/minMaxQueue/createRedisMinMaxQueue.d.ts +23 -2
  69. package/esm/utils/minMaxQueue/createRedisMinMaxQueue.js +83 -60
  70. package/esm/utils/minMaxQueue/createRedisMinMaxQueue.js.map +1 -1
  71. package/esm/utils/minMaxQueue/index.d.ts +2 -2
  72. package/esm/utils/minMaxQueue/index.js +2 -2
  73. package/esm/utils/minMaxQueue/index.js.map +1 -1
  74. package/esm/utils/userop.d.ts +1 -0
  75. package/esm/utils/userop.js +6 -0
  76. package/esm/utils/userop.js.map +1 -1
  77. package/package.json +1 -1
  78. package/esm/cli/config/redisKeys.d.ts +0 -9
  79. package/esm/cli/config/redisKeys.js +0 -16
  80. package/esm/cli/config/redisKeys.js.map +0 -1
  81. package/esm/store/createMemoryOutstandingStore.js +0 -240
  82. package/esm/store/createMemoryOutstandingStore.js.map +0 -1
  83. package/esm/store/createRedisOutstandingStore.d.ts +0 -28
  84. package/esm/store/createRedisOutstandingStore.js +0 -341
  85. package/esm/store/createRedisOutstandingStore.js.map +0 -1
  86. package/esm/store/createRedisStore.d.ts +0 -10
  87. package/esm/store/createRedisStore.js +0 -128
  88. package/esm/store/createRedisStore.js.map +0 -1
  89. package/esm/store/createStore.d.ts +0 -6
  90. package/esm/store/createStore.js +0 -66
  91. package/esm/store/createStore.js.map +0 -1
@@ -1,106 +1,129 @@
1
+ /**
2
+ * MinMaxQueue implementation in Redis using a single sorted set
3
+ *
4
+ * ## Data Structure
5
+ * - Uses a Redis sorted set where:
6
+ * - Score: timestamp when value was added (seconds since epoch)
7
+ * - Member: the actual bigint value (stored as string)
8
+ *
9
+ * ## Flow
10
+ * 1. **Adding values**: New values are added/updated with current timestamp as score
11
+ * 2. **Reading values**: Queries filter out expired entries based on timestamp
12
+ * 3. **Cleanup**: Background process runs every minute to remove expired entries
13
+ *
14
+ * ## Optimization Strategy
15
+ * - Lazy cleanup: expired entries filtered on read, bulk removed by background process (removing is expensive)
16
+ *
17
+ * ## TTL Management
18
+ * - Entries expire based on `queueValidity` (configured via `gasPriceExpiry`)
19
+ * - Background cleanup prevents unbounded growth
20
+ * - Read operations ignore expired entries without removing them
21
+ */
1
22
  import Redis from "ioredis";
2
23
  import * as sentry from "@sentry/node";
3
- // Sorted TTL queue, one queue to keep track of values and other queue to keep track of TTL.
4
24
  class SortedTtlSet {
5
25
  redis;
6
- valueKey;
7
- timestampKey;
26
+ redisKey; // Single sorted set: score = timestamp, member = value
8
27
  queueValidity;
9
- constructor({ keyPrefix, config, redisEndpoint }) {
28
+ cleanupInterval = null;
29
+ constructor({ queueName, config, redisEndpoint }) {
10
30
  const redis = new Redis(redisEndpoint);
11
31
  const queueValidity = config.gasPriceExpiry;
12
- const redisKey = `${config.chainId}:${keyPrefix}`;
13
32
  this.redis = redis;
14
- this.valueKey = `${redisKey}:value`;
15
- this.timestampKey = `${redisKey}:timestamp`;
33
+ this.redisKey = `${config.redisKeyPrefix}:${config.chainId}:${queueName}`;
16
34
  this.queueValidity = queueValidity;
35
+ // Start background cleanup every minute
36
+ this.startBackgroundCleanup();
37
+ }
38
+ startBackgroundCleanup() {
39
+ // Run cleanup every minute
40
+ this.cleanupInterval = setInterval(() => {
41
+ this.cleanup().catch((err) => {
42
+ sentry.captureException(err);
43
+ });
44
+ }, 60 * 1000);
45
+ // Allow process to exit even if interval is active
46
+ if (this.cleanupInterval.unref) {
47
+ this.cleanupInterval.unref();
48
+ }
49
+ }
50
+ async cleanup() {
51
+ const cutoffTime = Date.now() / 1_000 - this.queueValidity * 5;
52
+ await this.redis.zremrangebyscore(this.redisKey, "-inf", `(${cutoffTime}`);
17
53
  }
18
54
  async add(value, logger) {
19
55
  try {
20
- await this.pruneExpiredEntries(logger);
21
56
  if (value === 0n) {
22
57
  return;
23
58
  }
24
59
  const now = Date.now() / 1_000;
25
60
  const valueStr = value.toString();
26
- // Check if value exists in the value set
27
- const exists = await this.redis.zscore(this.valueKey, valueStr);
28
- if (exists) {
29
- // If value exists, only update its timestamp
30
- const multi = this.redis.multi();
31
- multi.zrem(this.timestampKey, valueStr); // Remove old timestamp
32
- multi.zadd(this.timestampKey, now, valueStr); // Add new timestamp
33
- await multi.exec();
34
- }
35
- else {
36
- // If it's a new value, add entry to timestamp and value queues
37
- const multi = this.redis.multi();
38
- multi.zadd(this.timestampKey, now, valueStr);
39
- multi.zadd(this.valueKey, valueStr, valueStr);
40
- await multi.exec();
41
- }
61
+ // Add or update (if exists) with current timestamp
62
+ await this.redis.zadd(this.redisKey, now, valueStr);
42
63
  }
43
64
  catch (err) {
44
65
  logger.error({ err }, "Failed to save value to minMaxQueue");
45
66
  sentry.captureException(err);
46
67
  }
47
68
  }
48
- async pruneExpiredEntries(logger) {
69
+ getValidCutoffTime() {
70
+ return Date.now() / 1_000 - this.queueValidity;
71
+ }
72
+ async getMin(logger) {
49
73
  try {
50
- const timestamp = Date.now() / 1_000;
51
- const cutoffTime = timestamp - this.queueValidity;
52
- // Get expired unique IDs from time queue
53
- const expiredMembers = await this.redis.zrangebyscore(this.timestampKey, "-inf", `(${cutoffTime}` // exclusive upper bound
54
- );
55
- if (expiredMembers.length) {
56
- const multi = this.redis.multi();
57
- // Remove expired entries from both sets
58
- multi.zrem(this.timestampKey, ...expiredMembers);
59
- multi.zrem(this.valueKey, ...expiredMembers);
60
- await multi.exec();
74
+ // Get all valid (non-expired) values
75
+ const validValues = await this.redis.zrangebyscore(this.redisKey, this.getValidCutoffTime(), "+inf");
76
+ if (validValues.length === 0) {
77
+ return null;
61
78
  }
79
+ // Find minimum value among valid entries
80
+ const bigIntValues = validValues.map((v) => BigInt(v));
81
+ return bigIntValues.reduce((min, val) => (val < min ? val : min));
62
82
  }
63
83
  catch (err) {
64
- logger.error({ err }, "Failed to prune expired entries");
84
+ logger.error({ err }, "Failed to get min value");
65
85
  sentry.captureException(err);
66
- }
67
- }
68
- async getMin(logger) {
69
- // Prune expired entries
70
- await this.pruneExpiredEntries(logger);
71
- // Get the smallest value from the value set
72
- const values = await this.redis.zrange(this.valueKey, 0, 0);
73
- if (values.length === 0) {
74
86
  return null;
75
87
  }
76
- return BigInt(values[0]);
77
88
  }
78
89
  async getMax(logger) {
79
- // Prune expired entries
80
- await this.pruneExpiredEntries(logger);
81
- // Get the largest value from the value set (using reverse range)
82
- const values = await this.redis.zrange(this.valueKey, -1, -1);
83
- if (values.length === 0) {
90
+ try {
91
+ // Get all valid (non-expired) values
92
+ const validValues = await this.redis.zrangebyscore(this.redisKey, this.getValidCutoffTime(), "+inf");
93
+ if (validValues.length === 0) {
94
+ return null;
95
+ }
96
+ // Find maximum value among valid entries
97
+ const bigIntValues = validValues.map((v) => BigInt(v));
98
+ return bigIntValues.reduce((max, val) => (val > max ? val : max));
99
+ }
100
+ catch (err) {
101
+ logger.error({ err }, "Failed to get max value");
102
+ sentry.captureException(err);
84
103
  return null;
85
104
  }
86
- return BigInt(values[0]);
87
105
  }
88
106
  async getLatestValue(logger) {
89
- // Prune expired entries
90
- await this.pruneExpiredEntries(logger);
91
- // Get the member with highest TTL (most recent timestamp)
92
- const values = await this.redis.zrange(this.timestampKey, -1, -1);
93
- if (values.length === 0) {
107
+ try {
108
+ // Get the most recently added value (highest timestamp) that's still valid
109
+ const validValues = await this.redis.zrevrangebyscore(this.redisKey, "+inf", this.getValidCutoffTime(), "LIMIT", 0, 1);
110
+ if (validValues.length === 0) {
111
+ return null;
112
+ }
113
+ return BigInt(validValues[0]);
114
+ }
115
+ catch (err) {
116
+ logger.error({ err }, "Failed to get latest value");
117
+ sentry.captureException(err);
94
118
  return null;
95
119
  }
96
- return BigInt(values[0]);
97
120
  }
98
121
  }
99
- export const createRedisMinMaxQueue = ({ config, keyPrefix, redisEndpoint }) => {
122
+ export const createRedisMinMaxQueue = ({ config, queueName, redisEndpoint }) => {
100
123
  const queue = new SortedTtlSet({
101
124
  config,
102
125
  redisEndpoint,
103
- keyPrefix: `${keyPrefix}:minMaxQueue`
126
+ queueName
104
127
  });
105
128
  const logger = config.getLogger({ module: "minMaxQueue" }, {
106
129
  level: config.logLevel
@@ -1 +1 @@
1
- {"version":3,"file":"createRedisMinMaxQueue.js","sourceRoot":"","sources":["../../../utils/minMaxQueue/createRedisMinMaxQueue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createRedisMinMaxQueue.js","sourceRoot":"","sources":["../../../utils/minMaxQueue/createRedisMinMaxQueue.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,8 @@ export interface MinMaxQueue {
5
5
  getMinValue(): Promise<bigint | null>;
6
6
  getMaxValue(): Promise<bigint | null>;
7
7
  }
8
- export declare const createMinMaxQueue: ({ config, keyPrefix }: {
8
+ export declare const createMinMaxQueue: ({ config, queueName }: {
9
9
  config: AltoConfig;
10
- keyPrefix: string;
10
+ queueName: string;
11
11
  }) => MinMaxQueue;
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1,10 +1,10 @@
1
1
  import { createMemoryMinMaxQueue } from "./createMemoryMinMaxQueue.js";
2
2
  import { createRedisMinMaxQueue } from "./createRedisMinMaxQueue.js";
3
- export const createMinMaxQueue = ({ config, keyPrefix }) => {
3
+ export const createMinMaxQueue = ({ config, queueName }) => {
4
4
  if (config.enableHorizontalScaling && config.redisEndpoint) {
5
5
  return createRedisMinMaxQueue({
6
6
  config,
7
- keyPrefix,
7
+ queueName: queueName,
8
8
  redisEndpoint: config.redisEndpoint
9
9
  });
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../utils/minMaxQueue/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AASjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAC9B,MAAM,EACN,SAAS,EAC+B,EAAe,EAAE;IACzD,IAAI,MAAM,CAAC,uBAAuB,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzD,OAAO,sBAAsB,CAAC;YAC1B,MAAM;YACN,SAAS;YACT,aAAa,EAAE,MAAM,CAAC,aAAa;SACtC,CAAC,CAAA;IACN,CAAC;IAED,OAAO,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;AAC9C,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../utils/minMaxQueue/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AASjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAC9B,MAAM,EACN,SAAS,EAC+B,EAAe,EAAE;IACzD,IAAI,MAAM,CAAC,uBAAuB,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzD,OAAO,sBAAsB,CAAC;YAC1B,MAAM;YACN,SAAS,EAAE,SAAS;YACpB,aAAa,EAAE,MAAM,CAAC,aAAa;SACtC,CAAC,CAAA;IACN,CAAC;IAED,OAAO,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;AAC9C,CAAC,CAAA"}
@@ -3,6 +3,7 @@ import { type Address, type Hex, type PublicClient, type TransactionReceipt } fr
3
3
  export declare function isVersion06(operation: UserOperation): operation is UserOperation06;
4
4
  export declare function isVersion07(operation: UserOperation): operation is UserOperation07;
5
5
  export declare function isVersion08(operation: UserOperation, entryPointAddress: Address): operation is UserOperation07;
6
+ export declare function isDeployment(userOp: UserOperation): boolean;
6
7
  export declare function getInitCode(unpackedUserOp: UserOperation07): `0x${string}`;
7
8
  export declare function unPackInitCode(initCode: Hex): {
8
9
  factory: null;
@@ -15,6 +15,12 @@ export function isVersion07(operation) {
15
15
  export function isVersion08(operation, entryPointAddress) {
16
16
  return entryPointAddress.startsWith("0x4337");
17
17
  }
18
+ // Check if a userOperation is a deployment operation
19
+ export function isDeployment(userOp) {
20
+ const isV6Deployment = isVersion06(userOp) && !!userOp.initCode && userOp.initCode !== "0x";
21
+ const isV7Deployment = isVersion07(userOp) && !!userOp.factory && userOp.factory !== "0x";
22
+ return isV6Deployment || isV7Deployment;
23
+ }
18
24
  export function getInitCode(unpackedUserOp) {
19
25
  return unpackedUserOp.factory
20
26
  ? concat([
@@ -1 +1 @@
1
- {"version":3,"file":"userop.js","sourceRoot":"","sources":["../../utils/userop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"userop.js","sourceRoot":"","sources":["../../utils/userop.ts"],"names":[],"mappings":"AAAA,OAAO,EAMH,SAAS,EACT,aAAa,EAChB,MAAM,aAAa,CAAA;AACpB,OAAO,EAKH,MAAM,EACN,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,UAAU,EACV,SAAS,EACT,GAAG,EACH,IAAI,EACJ,KAAK,EACL,KAAK,EACL,WAAW,EACd,MAAM,MAAM,CAAA;AACb,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,8BAA8B,EAAE,MAAM,WAAW,CAAA;AAE1D,oDAAoD;AACpD,MAAM,UAAU,WAAW,CACvB,SAAwB;IAExB,OAAO,UAAU,IAAI,SAAS,IAAI,kBAAkB,IAAI,SAAS,CAAA;AACrE,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,WAAW,CACvB,SAAwB;IAExB,OAAO,SAAS,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,CAAA;AAC7D,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,WAAW,CACvB,SAAwB,EACxB,iBAA0B;IAE1B,OAAO,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;AACjD,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,YAAY,CAAC,MAAqB;IAC9C,MAAM,cAAc,GAChB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAA;IACxE,MAAM,cAAc,GAChB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,CAAA;IACtE,OAAO,cAAc,IAAI,cAAc,CAAA;AAC3C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,cAA+B;IACvD,OAAO,cAAc,CAAC,OAAO;QACzB,CAAC,CAAC,MAAM,CAAC;YACH,cAAc,CAAC,OAAO,KAAK,QAAQ;gBAC/B,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE;oBACxB,GAAG,EAAE,OAAO;oBACZ,IAAI,EAAE,EAAE;iBACX,CAAC;gBACJ,CAAC,CAAC,cAAc,CAAC,OAAO;YAC5B,cAAc,CAAC,WAAW,IAAK,IAAY;SAC9C,CAAC;QACJ,CAAC,CAAC,IAAI,CAAA;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAa;IACxC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO;YACH,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,IAAI;SACpB,CAAA;IACL,CAAC;IAED,OAAO;QACH,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;KAChE,CAAA;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,cAA+B;IAC/D,OAAO,MAAM,CAAC;QACV,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAAE;YAC5C,IAAI,EAAE,EAAE;SACX,CAAC;QACF,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;KACxD,CAAC,CAAA;AACN,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,gBAAqB;IACxD,OAAO;QACH,oBAAoB,EAAE,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5D,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;KACpD,CAAA;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,cAA+B;IACxD,OAAO,MAAM,CAAC;QACV,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAAE;YAC5C,IAAI,EAAE,EAAE;SACX,CAAC;QACF,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;KACxD,CAAC,CAAA;AACN,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAc;IAC1C,OAAO;QACH,oBAAoB,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACrD,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;KAC7C,CAAA;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,cAA+B;IAC/D,OAAO,cAAc,CAAC,SAAS;QAC3B,CAAC,CAAC,MAAM,CAAC;YACH,cAAc,CAAC,SAAS;YACxB,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,6BAA6B,IAAI,EAAE,CAAC,EAAE;gBAC3D,IAAI,EAAE,EAAE;aACX,CAAC;YACF,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,uBAAuB,IAAI,EAAE,CAAC,EAAE;gBACrD,IAAI,EAAE,EAAE;aACX,CAAC;YACF,cAAc,CAAC,aAAa,IAAK,IAAY;SAChD,CAAC;QACJ,CAAC,CAAC,IAAI,CAAA;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,gBAAqB;IACxD,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO;YACH,SAAS,EAAE,IAAI;YACf,6BAA6B,EAAE,IAAI;YACnC,uBAAuB,EAAE,IAAI;YAC7B,aAAa,EAAE,IAAI;SACtB,CAAA;IACL,CAAC;IAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAEnD,OAAO;QACH,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACrD,6BAA6B,EAAE,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACtE,uBAAuB,EAAE,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAChE,aAAa,EACT,oBAAoB,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;KACrE,CAAA;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAC1B,cAA+B;IAE/B,OAAO;QACH,MAAM,EAAE,cAAc,CAAC,MAAM;QAC7B,KAAK,EAAE,cAAc,CAAC,KAAK;QAC3B,QAAQ,EAAE,WAAW,CAAC,cAAc,CAAC;QACrC,QAAQ,EAAE,cAAc,CAAC,QAAQ;QACjC,gBAAgB,EAAE,mBAAmB,CAAC,cAAc,CAAC;QACrD,kBAAkB,EAAE,cAAc,CAAC,kBAAkB;QACrD,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC;QACrC,gBAAgB,EAAE,mBAAmB,CAAC,cAAc,CAAC;QACrD,SAAS,EAAE,cAAc,CAAC,SAAS;KACtC,CAAA;AACL,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,WAAW,CAAC,GAAQ;IAChC,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAA;IACpB,CAAC;IACD,IAAI,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE,CAAC;QACrE,OAAO,GAAG,CAAA;IACd,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAA;IACrB,CAAC;IAED,IAAI,GAAG,CAAC,YAAY,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3C,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM;IAC1B,8FAA8F;IAC9F,CAAC,GAAQ,EAAE,GAAW,EAAE,EAAE;QACtB,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QAChC,OAAO,GAAG,CAAA;IACd,CAAC,EACD,EAAE,CACL,CAAA;AACL,CAAC;AAED,MAAM,UAAU,wCAAwC,CACpD,IAAS;IAET,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,IAAI,CAAA;IACf,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QACpB,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,IAAI,CAAA;AACf,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAC7B,MAAM,EACN,iBAAiB,EACjB,OAAO,EAKV,EAAE,EAAE;IACD,MAAM,IAAI,GAAG,SAAS,CAClB,mBAAmB,CACf;QACI;YACI,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE,SAAS;SAClB;KACJ,EACD;QACI,MAAM,CAAC,MAAM;QACb,MAAM,CAAC,KAAK;QACZ,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC1B,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC1B,MAAM,CAAC,YAAY;QACnB,MAAM,CAAC,oBAAoB;QAC3B,MAAM,CAAC,kBAAkB;QACzB,MAAM,CAAC,YAAY;QACnB,MAAM,CAAC,oBAAoB;QAC3B,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC;KACrC,CACJ,CACJ,CAAA;IAED,OAAO,SAAS,CACZ,mBAAmB,CACf;QACI;YACI,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;SAClB;KACJ,EACD,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAC7C,CACJ,CAAA;AACL,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAC7B,MAAM,EACN,iBAAiB,EACjB,OAAO,EAKV,EAAE,EAAE;IACD,MAAM,IAAI,GAAG,SAAS,CAClB,mBAAmB,CACf;QACI;YACI,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE,SAAS;SAClB;KACJ,EACD;QACI,MAAM,CAAC,MAAM;QACb,MAAM,CAAC,KAAK;QACZ,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC1B,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC1B,MAAM,CAAC,gBAAgB;QACvB,MAAM,CAAC,kBAAkB;QACzB,MAAM,CAAC,OAAO;QACd,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC;KACrC,CACJ,CACJ,CAAA;IAED,OAAO,SAAS,CACZ,mBAAmB,CACf;QACI;YACI,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,SAAS;SAClB;QACD;YACI,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;SAClB;KACJ,EACD,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAC7C,CACJ,CAAA;AACL,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,EACnC,MAAM,EACN,iBAAiB,EACjB,YAAY,EAMf,EAAE,EAAE;IACD,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;IAE3C,uCAAuC;IACvC,MAAM,cAAc,GAAG,8BAA8B,CAAC;QAClD,OAAO,EAAE,CAAC,MAAM,CAAC;KACpB,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;QACzC,OAAO,EAAE,iBAAiB;QAC1B,GAAG,EAAE;YACD;gBACI,MAAM,EAAE;oBACJ;wBACI,UAAU,EAAE;4BACR,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;4BACnC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;4BAClC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;4BACnC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;4BACnC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE;4BAC7C,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,SAAS,EAAE;4BAC/C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;4BACpC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,EAAE;4BAC3C,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE;yBACvC;wBACD,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,OAAO;qBAChB;iBACJ;gBACD,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;gBACxC,eAAe,EAAE,MAAM;gBACvB,IAAI,EAAE,UAAU;aACnB;SACJ;QACD,YAAY,EAAE,eAAe;QAC7B,IAAI,EAAE,CAAC,YAAY,CAAC;QACpB,aAAa,EAAE;YACX,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC7C,OAAO,EAAE,OAAkB;gBAC3B,IAAI,EAAE,cAAc,CAAC,OAAkB,CAAC,EAAE,IAAI,IAAI,IAAI;aACzD,CAAC,CAAC;SACN;KACJ,CAAC,CAAA;IAEF,OAAO,IAAI,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC1B,MAAM,EACN,iBAAiB,EACjB,OAAO,EACP,YAAY,EAMf,EAAE,EAAE;IACD,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,OAAO,gBAAgB,CAAC;YACpB,MAAM;YACN,iBAAiB;YACjB,OAAO;SACV,CAAC,CAAA;IACN,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE,CAAC;QACzC,OAAO,gBAAgB,CAAC;YACpB,MAAM;YACN,iBAAiB;YACjB,OAAO;YACP,YAAY;SACf,CAAC,CAAA;IACN,CAAC;IAED,OAAO,gBAAgB,CAAC;QACpB,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC;QAC9B,iBAAiB;QACjB,OAAO;KACV,CAAC,CAAA;AACN,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAa,EAAE,EAAE;IACpD,MAAM,QAAQ,GAAG,KAAK,IAAI,GAAG,CAAA,CAAC,0BAA0B;IACxD,MAAM,aAAa,GAAG,KAAK,GAAG,mBAAmB,CAAA,CAAC,wBAAwB;IAE1E,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;AACpC,CAAC,CAAA;AAED,MAAM,UAAU,gBAAgB,CAC5B,YAAiC;IAEjC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;IAEtE,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAAG,sBAAsB,CACjE,YAAY,CAAC,gBAAgB,CAChC,CAAA;IAED,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAAG,eAAe,CAC1D,YAAY,CAAC,OAAO,CACvB,CAAA;IAED,MAAM,EACF,SAAS,EACT,6BAA6B,EAC7B,uBAAuB,EACvB,aAAa,EAChB,GAAG,sBAAsB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAA;IAEzD,OAAO;QACH,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,WAAW;QACxB,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,YAAY,EAAE,YAAY;QAC1B,oBAAoB,EAAE,oBAAoB;QAC1C,kBAAkB,EAAE,YAAY,CAAC,kBAAkB;QACnD,YAAY,EAAE,YAAY;QAC1B,oBAAoB,EAAE,oBAAoB;QAC1C,SAAS,EAAE,SAAS;QACpB,6BAA6B,EAAE,6BAA6B;QAC5D,uBAAuB,EAAE,uBAAuB;QAChD,aAAa,EAAE,aAAa;QAC5B,SAAS,EAAE,YAAY,CAAC,SAAS;KACpC,CAAA;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAC9B,UAAe,EACf,OAA2B;IAE3B,IAAI,UAAU,GAAY,WAAW,CAAA;IACrC,IAAI,YAA6B,CAAA;IACjC,IAAI,eAUW,CAAA;IAEf,IAAI,UAAU,GAAG,CAAC,CAAC,CAAA;IACnB,IAAI,gBAAgB,GAAG,CAAC,CAAC,CAAA;IAEzB,iEAAiE;IACjE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACvD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC/B,IAAI,CAAC;YACD,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC;gBACvC,GAAG,EAAE;oBACD,UAAU,CAAC;wBACP,GAAG,EAAE,eAAe;wBACpB,IAAI,EAAE,oBAAoB;qBAC7B,CAAC;oBACF,UAAU,CAAC;wBACP,GAAG,EAAE,eAAe;wBACpB,IAAI,EAAE,2BAA2B;qBACpC,CAAC;oBACF,UAAU,CAAC;wBACP,GAAG,EAAE,eAAe;wBACpB,IAAI,EAAE,iBAAiB;qBAC1B,CAAC;iBACL;gBACD,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,MAAM;aACrB,CAAC,CAAA;YAEF,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;gBAClC,oFAAoF;gBACpF,UAAU,GAAG,KAAK,CAAA;YACtB,CAAC;YAED,IACI,SAAS,KAAK,2BAA2B;gBACzC,IAAI,CAAC,UAAU,KAAK,UAAU,EAChC,CAAC;gBACC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;YACpC,CAAC;YAED,IAAI,SAAS,KAAK,oBAAoB,EAAE,CAAC;gBACrC,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;oBACjC,gBAAgB,GAAG,KAAK,CAAA;oBACxB,UAAU,GAAG,GAAG,CAAC,OAAO,CAAA;oBACxB,eAAe,GAAG,IAAI,CAAA;oBACtB,MAAK;gBACT,CAAC;gBACD,mEAAmE;gBACnE,UAAU,GAAG,KAAK,CAAA;YACtB,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;IAClB,CAAC;IAED,IAAI,gBAAgB,KAAK,CAAC,CAAC,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IACpD,CAAC;IAED,0DAA0D;IAC1D,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAA;IACzE,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IACzD,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC;QACtC,GAAG,OAAO;QACV,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC/C,CAAC,CAAA;IAEF,IAAI,SAAS,GAAwB,eAAe,CAAC,SAAS,CAAA;IAC9D,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC5B,SAAS,GAAG,SAAS,CAAA;IACzB,CAAC;IAED,MAAM,aAAa,GAAyB;QACxC,UAAU;QACV,UAAU;QACV,SAAS;QACT,MAAM,EAAE,eAAe,CAAC,MAAM;QAC9B,KAAK,EAAE,eAAe,CAAC,KAAK;QAC5B,aAAa,EAAE,eAAe,CAAC,aAAa;QAC5C,aAAa,EAAE,eAAe,CAAC,aAAa;QAC5C,OAAO,EAAE,eAAe,CAAC,OAAO;QAChC,MAAM,EAAE,YAAY;QACpB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,aAAa;KACzB,CAAA;IAED,OAAO,aAAa,CAAA;AACxB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pimlico/alto",
3
- "version": "0.0.0-main.20250916T162729",
3
+ "version": "0.0.0-main.20250930T125129",
4
4
  "description": "A performant and modular ERC-4337 Bundler written in Typescript",
5
5
  "repository": "https://github.com/pimlicolabs/alto.git",
6
6
  "author": "Pimlico",
@@ -1,9 +0,0 @@
1
- import type { AltoConfig } from "../../createConfig.js";
2
- export declare const getRedisKeys: (config: AltoConfig) => {
3
- mempoolQueue: string;
4
- userOpReceiptCachePrefix: string;
5
- userOpStatusQueue: string;
6
- gasPriceQueue: string;
7
- senderManagerQueue: string;
8
- };
9
- //# sourceMappingURL=redisKeys.d.ts.map
@@ -1,16 +0,0 @@
1
- export const getRedisKeys = (config) => {
2
- const prefix = `${config.redisKeyPrefix}:${config.chainId}`;
3
- return {
4
- // Mempool queue
5
- mempoolQueue: `${prefix}:outstanding-mempool`,
6
- // User operation receipt cache - returns just the key prefix for receipt cache
7
- userOpReceiptCachePrefix: `${prefix}:receipt-cache`,
8
- // User operation status
9
- userOpStatusQueue: `${prefix}:userop-status`,
10
- // Gas price queue
11
- gasPriceQueue: `${prefix}:gas-price`,
12
- // Sender manager queue
13
- senderManagerQueue: `${prefix}:sender-manager`
14
- };
15
- };
16
- //# sourceMappingURL=redisKeys.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"redisKeys.js","sourceRoot":"","sources":["../../../cli/config/redisKeys.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAkB,EAAE,EAAE;IAC/C,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,OAAO,EAAE,CAAA;IAE3D,OAAO;QACH,gBAAgB;QAChB,YAAY,EAAE,GAAG,MAAM,sBAAsB;QAE7C,+EAA+E;QAC/E,wBAAwB,EAAE,GAAG,MAAM,gBAAgB;QAEnD,wBAAwB;QACxB,iBAAiB,EAAE,GAAG,MAAM,gBAAgB;QAE5C,kBAAkB;QAClB,aAAa,EAAE,GAAG,MAAM,YAAY;QAEpC,uBAAuB;QACvB,kBAAkB,EAAE,GAAG,MAAM,iBAAiB;KACjD,CAAA;AACL,CAAC,CAAA"}
@@ -1,240 +0,0 @@
1
- import { getNonceKeyAndSequence, isVersion06, isVersion07 } from "../utils/userop.js";
2
- const senderNonceSlot = (userOp) => {
3
- const sender = userOp.sender;
4
- const [nonceKey] = getNonceKeyAndSequence(userOp.nonce);
5
- return `${sender}-${nonceKey}`;
6
- };
7
- export class MemoryOutstanding {
8
- config;
9
- pendingOps = new Map();
10
- priorityQueue = [];
11
- logger;
12
- constructor(config) {
13
- this.config = config;
14
- this.logger = config.getLogger({ module: "memory-outstanding-queue" }, {
15
- level: config.logLevel
16
- });
17
- }
18
- dump() {
19
- return [...Array.from(this.pendingOps.values()).flat()];
20
- }
21
- // Adds userOp to queue and maintains sorting by gas price.
22
- addToPriorityQueue(userOpInfo) {
23
- this.priorityQueue.push(userOpInfo);
24
- this.priorityQueue.sort((a, b) => {
25
- const userOpA = a.userOp;
26
- const userOpB = b.userOp;
27
- return Number(userOpA.maxFeePerGas - userOpB.maxFeePerGas);
28
- });
29
- }
30
- validateQueuedLimit(userOp) {
31
- const outstandingOps = this.dump();
32
- const parallelUserOpsCount = outstandingOps.filter((userOpInfo) => {
33
- const { userOp: mempoolUserOp } = userOpInfo;
34
- return mempoolUserOp.sender === userOp.sender;
35
- }).length;
36
- if (parallelUserOpsCount > this.config.mempoolMaxParallelOps) {
37
- return false;
38
- }
39
- return true;
40
- }
41
- validateParallelLimit(userOp) {
42
- const outstandingOps = this.dump();
43
- const [nonceKey] = getNonceKeyAndSequence(userOp.nonce);
44
- const queuedUserOpsCount = outstandingOps.filter((userOpInfo) => {
45
- const { userOp: mempoolUserOp } = userOpInfo;
46
- const [opNonceKey] = getNonceKeyAndSequence(mempoolUserOp.nonce);
47
- return (mempoolUserOp.sender === userOp.sender &&
48
- opNonceKey === nonceKey);
49
- }).length;
50
- if (queuedUserOpsCount > this.config.mempoolMaxQueuedOps) {
51
- return false;
52
- }
53
- return true;
54
- }
55
- popConflicting(userOp) {
56
- const outstandingOps = this.dump();
57
- let conflictingReason;
58
- for (const userOpInfo of outstandingOps) {
59
- const { userOp: mempoolUserOp } = userOpInfo;
60
- const isSameSender = mempoolUserOp.sender === userOp.sender;
61
- if (isSameSender && mempoolUserOp.nonce === userOp.nonce) {
62
- this.remove(userOpInfo.userOpHash);
63
- conflictingReason = {
64
- reason: "conflicting_nonce",
65
- userOpInfo
66
- };
67
- break;
68
- }
69
- const isConflictingV6Deployment = isVersion06(userOp) &&
70
- isVersion06(mempoolUserOp) &&
71
- userOp.initCode &&
72
- userOp.initCode !== "0x" &&
73
- mempoolUserOp.initCode &&
74
- mempoolUserOp.initCode !== "0x" &&
75
- isSameSender;
76
- const isConflictingV7Deployment = isVersion07(userOp) &&
77
- isVersion07(mempoolUserOp) &&
78
- userOp.factory &&
79
- userOp.factory !== "0x" &&
80
- mempoolUserOp.factory &&
81
- mempoolUserOp.factory !== "0x" &&
82
- isSameSender;
83
- const isConflictingDeployment = isConflictingV6Deployment || isConflictingV7Deployment;
84
- if (isConflictingDeployment) {
85
- this.remove(userOpInfo.userOpHash);
86
- conflictingReason = {
87
- reason: "conflicting_deployment",
88
- userOpInfo
89
- };
90
- break;
91
- }
92
- }
93
- return Promise.resolve(conflictingReason);
94
- }
95
- async contains(userOpHash) {
96
- for (const userOpInfos of this.pendingOps.values()) {
97
- if (userOpInfos.some((info) => info.userOpHash === userOpHash)) {
98
- return true;
99
- }
100
- }
101
- return false;
102
- }
103
- peek() {
104
- if (this.priorityQueue.length === 0) {
105
- return Promise.resolve(undefined);
106
- }
107
- return Promise.resolve(this.priorityQueue[0]);
108
- }
109
- pop() {
110
- const userOpInfo = this.priorityQueue.shift();
111
- if (!userOpInfo) {
112
- return Promise.resolve(undefined);
113
- }
114
- const pendingOpsSlot = senderNonceSlot(userOpInfo.userOp);
115
- const backlogOps = this.pendingOps.get(pendingOpsSlot);
116
- // This should never throw.
117
- if (!backlogOps?.shift()) {
118
- throw new Error("FATAL: No pending userOps for sender");
119
- }
120
- // Move next pending userOp into priorityQueue if exist.
121
- if (backlogOps.length > 0) {
122
- this.addToPriorityQueue(backlogOps[0]);
123
- }
124
- // Cleanup.
125
- if (backlogOps.length === 0) {
126
- this.pendingOps.delete(pendingOpsSlot);
127
- }
128
- return Promise.resolve(userOpInfo);
129
- }
130
- async add(userOpInfo) {
131
- const { userOp, userOpHash } = userOpInfo;
132
- const [nonceKey] = getNonceKeyAndSequence(userOp.nonce);
133
- const pendingOpsSlot = senderNonceSlot(userOp);
134
- const backlogOps = (() => {
135
- if (this.pendingOps.has(pendingOpsSlot)) {
136
- return this.pendingOps.get(pendingOpsSlot);
137
- }
138
- this.pendingOps.set(pendingOpsSlot, []);
139
- return this.pendingOps.get(pendingOpsSlot);
140
- })();
141
- if (!backlogOps) {
142
- throw new Error("FATAL: No pending operations found for userOpHash");
143
- }
144
- // Note: the userOpInfo is always added to backlogOps, because we are pushing to a reference
145
- backlogOps.push(userOpInfo);
146
- backlogOps
147
- .map((sop) => sop.userOp)
148
- .sort((a, b) => {
149
- const [, aNonceSeq] = getNonceKeyAndSequence(a.nonce);
150
- const [, bNonceSeq] = getNonceKeyAndSequence(b.nonce);
151
- return Number(aNonceSeq) - Number(bNonceSeq);
152
- });
153
- const lowestUserOpHash = backlogOps[0].userOpHash;
154
- // If lowest, remove any existing userOp with same sender and nonceKey and add current userOp to priorityQueue.
155
- if (lowestUserOpHash === userOpHash) {
156
- this.priorityQueue = this.priorityQueue.filter((userOpInfo) => {
157
- const pendingUserOp = userOpInfo.userOp;
158
- const isSameSender = pendingUserOp.sender === userOp.sender;
159
- const isSameNonceKey = getNonceKeyAndSequence(pendingUserOp.nonce)[0] === nonceKey;
160
- return !(isSameSender && isSameNonceKey);
161
- });
162
- this.addToPriorityQueue(userOpInfo);
163
- }
164
- }
165
- async getQueuedUserOps(userOp) {
166
- const [nonceKey, nonceSequence] = getNonceKeyAndSequence(userOp.nonce);
167
- const outstandingOps = this.dump();
168
- const outstanding = outstandingOps.filter((userOpInfo) => {
169
- const { userOp: mempoolUserOp } = userOpInfo;
170
- const [mempoolNonceKey, mempoolNonceSequence] = getNonceKeyAndSequence(mempoolUserOp.nonce);
171
- let isPaymasterSame = false;
172
- if (isVersion07(userOp) && isVersion07(mempoolUserOp)) {
173
- isPaymasterSame =
174
- mempoolUserOp.paymaster === userOp.paymaster &&
175
- !(mempoolUserOp.sender === userOp.sender &&
176
- mempoolNonceKey === nonceKey &&
177
- mempoolNonceSequence === nonceSequence) &&
178
- userOp.paymaster !== null;
179
- }
180
- // Filter operations with the same sender and nonce key
181
- // but with a lower nonce sequence
182
- return ((mempoolUserOp.sender === userOp.sender &&
183
- mempoolNonceKey === nonceKey &&
184
- mempoolNonceSequence < nonceSequence) ||
185
- isPaymasterSame);
186
- });
187
- return outstanding
188
- .sort((a, b) => {
189
- const aUserOp = a.userOp;
190
- const bUserOp = b.userOp;
191
- const [, aNonceValue] = getNonceKeyAndSequence(aUserOp.nonce);
192
- const [, bNonceValue] = getNonceKeyAndSequence(bUserOp.nonce);
193
- return Number(aNonceValue - bNonceValue);
194
- })
195
- .map((userOpInfo) => userOpInfo.userOp);
196
- }
197
- async remove(userOpHash) {
198
- const priorityQueueIndex = this.priorityQueue.findIndex((info) => info.userOpHash === userOpHash);
199
- if (priorityQueueIndex === -1) {
200
- this.logger.info("tried to remove non-existent user op from mempool");
201
- return false;
202
- }
203
- const userOpInfo = this.priorityQueue[priorityQueueIndex];
204
- const pendingOpsSlot = senderNonceSlot(userOpInfo.userOp);
205
- // Remove from priority queue
206
- this.priorityQueue.splice(priorityQueueIndex, 1);
207
- // Find and remove from pending ops
208
- const backlogOps = this.pendingOps.get(pendingOpsSlot);
209
- if (!backlogOps) {
210
- throw new Error(`FATAL: No pending operations found for userOpHash ${userOpHash}`);
211
- }
212
- const backlogIndex = backlogOps.findIndex((info) => info.userOpHash === userOpHash);
213
- if (backlogIndex === -1) {
214
- throw new Error(`FATAL: UserOp with hash ${userOpHash} not found in backlog`);
215
- }
216
- backlogOps.splice(backlogIndex, 1);
217
- // If this was the first operation and there are more in the backlog,
218
- // add the new first operation to the priority queue
219
- if (backlogIndex === 0 && backlogOps.length > 0) {
220
- this.addToPriorityQueue(backlogOps[0]);
221
- }
222
- return true;
223
- }
224
- dumpLocal() {
225
- return Promise.resolve(this.dump());
226
- }
227
- clear() {
228
- this.priorityQueue = [];
229
- this.pendingOps.clear();
230
- return Promise.resolve();
231
- }
232
- // Adding findConflicting method to maintain compatibility with Store interface
233
- findConflicting(userOp) {
234
- return Promise.resolve(this.popConflicting(userOp));
235
- }
236
- }
237
- export const createMemoryOutstandingQueue = ({ config }) => {
238
- return new MemoryOutstanding(config);
239
- };
240
- //# sourceMappingURL=createMemoryOutstandingStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createMemoryOutstandingStore.js","sourceRoot":"","sources":["../../store/createMemoryOutstandingStore.ts"],"names":[],"mappings":"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"}