@gzeoneth/gov-tracker 0.2.0-0 → 0.2.0-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/calldata/decoder.d.ts.map +1 -1
- package/dist/calldata/decoder.js +14 -8
- package/dist/calldata/decoder.js.map +1 -1
- package/dist/calldata/parameter-decoder.js +8 -8
- package/dist/calldata/parameter-decoder.js.map +1 -1
- package/dist/cli/lib/cli.d.ts.map +1 -1
- package/dist/cli/lib/cli.js +5 -6
- package/dist/cli/lib/cli.js.map +1 -1
- package/dist/cli/lib/json-state.d.ts.map +1 -1
- package/dist/cli/lib/json-state.js +12 -11
- package/dist/cli/lib/json-state.js.map +1 -1
- package/dist/cli/monitor.js +2 -2
- package/dist/cli/monitor.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -20
- package/dist/index.js.map +1 -1
- package/dist/simulation/simulation-data.js +2 -2
- package/dist/simulation/simulation-data.js.map +1 -1
- package/dist/stages/{stage-builder.d.ts → builder.d.ts} +11 -7
- package/dist/stages/builder.d.ts.map +1 -0
- package/dist/stages/{stage-builder.js → builder.js} +12 -3
- package/dist/stages/builder.js.map +1 -0
- package/dist/stages/l2-to-l1-message.d.ts +3 -3
- package/dist/stages/l2-to-l1-message.d.ts.map +1 -1
- package/dist/stages/l2-to-l1-message.js +11 -12
- package/dist/stages/l2-to-l1-message.js.map +1 -1
- package/dist/stages/proposal-created.d.ts +2 -2
- package/dist/stages/proposal-created.d.ts.map +1 -1
- package/dist/stages/proposal-created.js +4 -4
- package/dist/stages/proposal-created.js.map +1 -1
- package/dist/stages/proposal-queued.d.ts +2 -2
- package/dist/stages/proposal-queued.d.ts.map +1 -1
- package/dist/stages/proposal-queued.js +8 -9
- package/dist/stages/proposal-queued.js.map +1 -1
- package/dist/stages/retryables.d.ts +3 -3
- package/dist/stages/retryables.d.ts.map +1 -1
- package/dist/stages/retryables.js +14 -15
- package/dist/stages/retryables.js.map +1 -1
- package/dist/stages/timelock.d.ts +3 -3
- package/dist/stages/timelock.d.ts.map +1 -1
- package/dist/stages/timelock.js +32 -32
- package/dist/stages/timelock.js.map +1 -1
- package/dist/stages/{base.d.ts → utils.d.ts} +78 -35
- package/dist/stages/utils.d.ts.map +1 -0
- package/dist/stages/{base.js → utils.js} +208 -63
- package/dist/stages/utils.js.map +1 -0
- package/dist/stages/voting.d.ts +2 -2
- package/dist/stages/voting.d.ts.map +1 -1
- package/dist/stages/voting.js +2 -2
- package/dist/stages/voting.js.map +1 -1
- package/dist/tracker/cache.d.ts +104 -0
- package/dist/tracker/cache.d.ts.map +1 -0
- package/dist/tracker/cache.js +287 -0
- package/dist/tracker/cache.js.map +1 -0
- package/dist/tracker/execute.js +8 -8
- package/dist/tracker/execute.js.map +1 -1
- package/dist/tracker/pipeline.d.ts +3 -3
- package/dist/tracker/pipeline.d.ts.map +1 -1
- package/dist/tracker/pipeline.js +38 -35
- package/dist/tracker/pipeline.js.map +1 -1
- package/dist/tracker/query.js +3 -3
- package/dist/tracker/query.js.map +1 -1
- package/dist/tracker/state.d.ts +88 -81
- package/dist/tracker/state.d.ts.map +1 -1
- package/dist/tracker/state.js +241 -264
- package/dist/tracker/state.js.map +1 -1
- package/dist/tracker.d.ts +4 -4
- package/dist/tracker.d.ts.map +1 -1
- package/dist/tracker.js +22 -20
- package/dist/tracker.js.map +1 -1
- package/dist/types/calldata.d.ts +15 -3
- package/dist/types/calldata.d.ts.map +1 -1
- package/dist/types/calldata.js +7 -0
- package/dist/types/calldata.js.map +1 -1
- package/dist/types/core.d.ts +12 -0
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/core.js +30 -0
- package/dist/types/core.js.map +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +7 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/stages.d.ts +32 -17
- package/dist/types/stages.d.ts.map +1 -1
- package/dist/types/stages.js +2 -0
- package/dist/types/stages.js.map +1 -1
- package/package.json +2 -1
- package/dist/stages/base.d.ts.map +0 -1
- package/dist/stages/base.js.map +0 -1
- package/dist/stages/stage-builder.d.ts.map +0 -1
- package/dist/stages/stage-builder.js.map +0 -1
- package/dist/tracker/context.d.ts +0 -111
- package/dist/tracker/context.d.ts.map +0 -1
- package/dist/tracker/context.js +0 -264
- package/dist/tracker/context.js.map +0 -1
- package/dist/utils/stage-helpers.d.ts +0 -50
- package/dist/utils/stage-helpers.d.ts.map +0 -1
- package/dist/utils/stage-helpers.js +0 -135
- package/dist/utils/stage-helpers.js.map +0 -1
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache utilities for tracker state
|
|
3
|
+
*
|
|
4
|
+
* Provides cache implementations and utility functions.
|
|
5
|
+
* All other state management is handled directly in tracker.ts.
|
|
6
|
+
*
|
|
7
|
+
* Available cache adapters:
|
|
8
|
+
* - FileCache: File-based persistence (Node.js only)
|
|
9
|
+
* - LocalStorageCache: Browser localStorage (web only)
|
|
10
|
+
* - MemoryCache: In-memory, no persistence (universal)
|
|
11
|
+
*/
|
|
12
|
+
import { TrackingCheckpoint, DiscoveryWatermarks, CacheAdapter } from "../types";
|
|
13
|
+
/**
|
|
14
|
+
* File-based cache that persists to JSON file.
|
|
15
|
+
* Synchronously loads on construction, persists on every write.
|
|
16
|
+
* Uses a write queue to prevent race conditions from concurrent writes.
|
|
17
|
+
*/
|
|
18
|
+
export declare class FileCache implements CacheAdapter {
|
|
19
|
+
private readonly path;
|
|
20
|
+
private cache;
|
|
21
|
+
private writeQueue;
|
|
22
|
+
constructor(path: string);
|
|
23
|
+
private load;
|
|
24
|
+
private persistSync;
|
|
25
|
+
private persist;
|
|
26
|
+
get<T>(key: string): Promise<T | null>;
|
|
27
|
+
set<T>(key: string, value: T): Promise<void>;
|
|
28
|
+
delete(key: string): Promise<void>;
|
|
29
|
+
clear(): Promise<void>;
|
|
30
|
+
has(key: string): Promise<boolean>;
|
|
31
|
+
keys(): IterableIterator<string>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Browser localStorage-based cache adapter.
|
|
35
|
+
* Persists to localStorage with a configurable key prefix.
|
|
36
|
+
*
|
|
37
|
+
* Limitations:
|
|
38
|
+
* - 5MB storage limit (varies by browser)
|
|
39
|
+
* - Synchronous API (blocks main thread, usually negligible)
|
|
40
|
+
* - String-only storage (JSON serialization handled internally)
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* import { createTracker, LocalStorageCache } from "@gzeoneth/gov-tracker";
|
|
45
|
+
*
|
|
46
|
+
* const tracker = createTracker({
|
|
47
|
+
* l2Provider,
|
|
48
|
+
* l1Provider,
|
|
49
|
+
* cache: new LocalStorageCache("arb-gov:"),
|
|
50
|
+
* });
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare class LocalStorageCache implements CacheAdapter {
|
|
54
|
+
private readonly prefix;
|
|
55
|
+
constructor(prefix?: string);
|
|
56
|
+
private fullKey;
|
|
57
|
+
get<T>(key: string): Promise<T | null>;
|
|
58
|
+
set<T>(key: string, value: T): Promise<void>;
|
|
59
|
+
delete(key: string): Promise<void>;
|
|
60
|
+
clear(): Promise<void>;
|
|
61
|
+
has(key: string): Promise<boolean>;
|
|
62
|
+
keys(prefix?: string): Promise<string[]>;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* In-memory cache adapter with no persistence.
|
|
66
|
+
* Useful for testing, short-lived sessions, or as a fallback.
|
|
67
|
+
*
|
|
68
|
+
* Data is lost when the page is refreshed or the process exits.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* import { createTracker, MemoryCache } from "@gzeoneth/gov-tracker";
|
|
73
|
+
*
|
|
74
|
+
* const tracker = createTracker({
|
|
75
|
+
* l2Provider,
|
|
76
|
+
* l1Provider,
|
|
77
|
+
* cache: new MemoryCache(),
|
|
78
|
+
* });
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
export declare class MemoryCache implements CacheAdapter {
|
|
82
|
+
private cache;
|
|
83
|
+
get<T>(key: string): Promise<T | null>;
|
|
84
|
+
set<T>(key: string, value: T): Promise<void>;
|
|
85
|
+
delete(key: string): Promise<void>;
|
|
86
|
+
clear(): Promise<void>;
|
|
87
|
+
has(key: string): Promise<boolean>;
|
|
88
|
+
keys(): IterableIterator<string>;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Generate cache key from transaction hash (primary cache key format)
|
|
92
|
+
*/
|
|
93
|
+
export declare function txHashCacheKey(txHash: string): string;
|
|
94
|
+
/**
|
|
95
|
+
* Read all cache data without requiring RPC providers.
|
|
96
|
+
* Use this for status/dashboard views that only need cached data.
|
|
97
|
+
*
|
|
98
|
+
* @param cachePath - Path to the cache file
|
|
99
|
+
*/
|
|
100
|
+
export declare function readCacheStatus(cachePath: string): Promise<{
|
|
101
|
+
watermarks: DiscoveryWatermarks;
|
|
102
|
+
checkpoints: Map<string, TrackingCheckpoint>;
|
|
103
|
+
}>;
|
|
104
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/tracker/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGjF;;;;GAIG;AACH,qBAAa,SAAU,YAAW,YAAY;IAC5C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,UAAU,CAAoC;gBAE1C,IAAI,EAAE,MAAM;IAKxB,OAAO,CAAC,IAAI;IASZ,OAAO,CAAC,WAAW;YAKL,OAAO;IAiBf,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAItC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIxC,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC;CAGjC;AA2BD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,GAAE,MAAmB;IAIvC,OAAO,CAAC,OAAO;IAIT,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAYtC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMlC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAe/C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,KAAK,CAAmC;IAE1C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAItC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIxC,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC;CAGjC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAChE,UAAU,EAAE,mBAAmB,CAAC;IAChC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CAC9C,CAAC,CAqBD"}
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cache utilities for tracker state
|
|
4
|
+
*
|
|
5
|
+
* Provides cache implementations and utility functions.
|
|
6
|
+
* All other state management is handled directly in tracker.ts.
|
|
7
|
+
*
|
|
8
|
+
* Available cache adapters:
|
|
9
|
+
* - FileCache: File-based persistence (Node.js only)
|
|
10
|
+
* - LocalStorageCache: Browser localStorage (web only)
|
|
11
|
+
* - MemoryCache: In-memory, no persistence (universal)
|
|
12
|
+
*/
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
30
|
+
var ownKeys = function(o) {
|
|
31
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
32
|
+
var ar = [];
|
|
33
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
34
|
+
return ar;
|
|
35
|
+
};
|
|
36
|
+
return ownKeys(o);
|
|
37
|
+
};
|
|
38
|
+
return function (mod) {
|
|
39
|
+
if (mod && mod.__esModule) return mod;
|
|
40
|
+
var result = {};
|
|
41
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
42
|
+
__setModuleDefault(result, mod);
|
|
43
|
+
return result;
|
|
44
|
+
};
|
|
45
|
+
})();
|
|
46
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
+
exports.MemoryCache = exports.LocalStorageCache = exports.FileCache = void 0;
|
|
48
|
+
exports.txHashCacheKey = txHashCacheKey;
|
|
49
|
+
exports.readCacheStatus = readCacheStatus;
|
|
50
|
+
const fs = __importStar(require("fs"));
|
|
51
|
+
const discovery_1 = require("./discovery");
|
|
52
|
+
/**
|
|
53
|
+
* File-based cache that persists to JSON file.
|
|
54
|
+
* Synchronously loads on construction, persists on every write.
|
|
55
|
+
* Uses a write queue to prevent race conditions from concurrent writes.
|
|
56
|
+
*/
|
|
57
|
+
class FileCache {
|
|
58
|
+
constructor(path) {
|
|
59
|
+
this.writeQueue = Promise.resolve();
|
|
60
|
+
this.path = path;
|
|
61
|
+
this.cache = this.load();
|
|
62
|
+
}
|
|
63
|
+
load() {
|
|
64
|
+
try {
|
|
65
|
+
const data = JSON.parse(fs.readFileSync(this.path, "utf8"));
|
|
66
|
+
return new Map(Object.entries(data));
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return new Map();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
persistSync() {
|
|
73
|
+
const obj = Object.fromEntries(this.cache);
|
|
74
|
+
fs.writeFileSync(this.path, JSON.stringify(obj, null, 2));
|
|
75
|
+
}
|
|
76
|
+
async persist() {
|
|
77
|
+
// Chain writes to prevent race conditions
|
|
78
|
+
// Create the write promise that may reject on error
|
|
79
|
+
const writePromise = this.writeQueue.then(() => {
|
|
80
|
+
this.persistSync();
|
|
81
|
+
});
|
|
82
|
+
// Update the queue with error recovery to prevent getting stuck
|
|
83
|
+
// This ensures future writes can proceed even if this one fails
|
|
84
|
+
this.writeQueue = writePromise.catch(() => {
|
|
85
|
+
// Silently recover the queue - error is propagated via writePromise
|
|
86
|
+
});
|
|
87
|
+
// Return the original promise so errors propagate to caller
|
|
88
|
+
return writePromise;
|
|
89
|
+
}
|
|
90
|
+
async get(key) {
|
|
91
|
+
return this.cache.get(key) ?? null;
|
|
92
|
+
}
|
|
93
|
+
async set(key, value) {
|
|
94
|
+
this.cache.set(key, value);
|
|
95
|
+
await this.persist();
|
|
96
|
+
}
|
|
97
|
+
async delete(key) {
|
|
98
|
+
this.cache.delete(key);
|
|
99
|
+
await this.persist();
|
|
100
|
+
}
|
|
101
|
+
async clear() {
|
|
102
|
+
this.cache.clear();
|
|
103
|
+
await this.persist();
|
|
104
|
+
}
|
|
105
|
+
async has(key) {
|
|
106
|
+
return this.cache.has(key);
|
|
107
|
+
}
|
|
108
|
+
keys() {
|
|
109
|
+
return this.cache.keys();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
exports.FileCache = FileCache;
|
|
113
|
+
/**
|
|
114
|
+
* Get localStorage if available (browser environment)
|
|
115
|
+
*/
|
|
116
|
+
function getLocalStorage() {
|
|
117
|
+
// Check for browser environment with localStorage
|
|
118
|
+
if (typeof globalThis !== "undefined") {
|
|
119
|
+
const global = globalThis;
|
|
120
|
+
if (typeof global.localStorage !== "undefined") {
|
|
121
|
+
return global.localStorage;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Browser localStorage-based cache adapter.
|
|
128
|
+
* Persists to localStorage with a configurable key prefix.
|
|
129
|
+
*
|
|
130
|
+
* Limitations:
|
|
131
|
+
* - 5MB storage limit (varies by browser)
|
|
132
|
+
* - Synchronous API (blocks main thread, usually negligible)
|
|
133
|
+
* - String-only storage (JSON serialization handled internally)
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```typescript
|
|
137
|
+
* import { createTracker, LocalStorageCache } from "@gzeoneth/gov-tracker";
|
|
138
|
+
*
|
|
139
|
+
* const tracker = createTracker({
|
|
140
|
+
* l2Provider,
|
|
141
|
+
* l1Provider,
|
|
142
|
+
* cache: new LocalStorageCache("arb-gov:"),
|
|
143
|
+
* });
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
class LocalStorageCache {
|
|
147
|
+
constructor(prefix = "tracker:") {
|
|
148
|
+
this.prefix = prefix;
|
|
149
|
+
}
|
|
150
|
+
fullKey(key) {
|
|
151
|
+
return `${this.prefix}${key}`;
|
|
152
|
+
}
|
|
153
|
+
async get(key) {
|
|
154
|
+
const storage = getLocalStorage();
|
|
155
|
+
if (!storage)
|
|
156
|
+
return null;
|
|
157
|
+
const data = storage.getItem(this.fullKey(key));
|
|
158
|
+
if (data === null)
|
|
159
|
+
return null;
|
|
160
|
+
try {
|
|
161
|
+
return JSON.parse(data);
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
async set(key, value) {
|
|
168
|
+
const storage = getLocalStorage();
|
|
169
|
+
if (!storage)
|
|
170
|
+
return;
|
|
171
|
+
storage.setItem(this.fullKey(key), JSON.stringify(value));
|
|
172
|
+
}
|
|
173
|
+
async delete(key) {
|
|
174
|
+
const storage = getLocalStorage();
|
|
175
|
+
if (!storage)
|
|
176
|
+
return;
|
|
177
|
+
storage.removeItem(this.fullKey(key));
|
|
178
|
+
}
|
|
179
|
+
async clear() {
|
|
180
|
+
const storage = getLocalStorage();
|
|
181
|
+
if (!storage)
|
|
182
|
+
return;
|
|
183
|
+
const keysToRemove = [];
|
|
184
|
+
for (let i = 0; i < storage.length; i++) {
|
|
185
|
+
const key = storage.key(i);
|
|
186
|
+
if (key?.startsWith(this.prefix)) {
|
|
187
|
+
keysToRemove.push(key);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
keysToRemove.forEach((k) => storage.removeItem(k));
|
|
191
|
+
}
|
|
192
|
+
async has(key) {
|
|
193
|
+
const storage = getLocalStorage();
|
|
194
|
+
if (!storage)
|
|
195
|
+
return false;
|
|
196
|
+
return storage.getItem(this.fullKey(key)) !== null;
|
|
197
|
+
}
|
|
198
|
+
async keys(prefix) {
|
|
199
|
+
const storage = getLocalStorage();
|
|
200
|
+
if (!storage)
|
|
201
|
+
return [];
|
|
202
|
+
const result = [];
|
|
203
|
+
for (let i = 0; i < storage.length; i++) {
|
|
204
|
+
const fullKey = storage.key(i);
|
|
205
|
+
if (fullKey?.startsWith(this.prefix)) {
|
|
206
|
+
const key = fullKey.slice(this.prefix.length);
|
|
207
|
+
if (!prefix || key.startsWith(prefix)) {
|
|
208
|
+
result.push(key);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return result;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
exports.LocalStorageCache = LocalStorageCache;
|
|
216
|
+
/**
|
|
217
|
+
* In-memory cache adapter with no persistence.
|
|
218
|
+
* Useful for testing, short-lived sessions, or as a fallback.
|
|
219
|
+
*
|
|
220
|
+
* Data is lost when the page is refreshed or the process exits.
|
|
221
|
+
*
|
|
222
|
+
* @example
|
|
223
|
+
* ```typescript
|
|
224
|
+
* import { createTracker, MemoryCache } from "@gzeoneth/gov-tracker";
|
|
225
|
+
*
|
|
226
|
+
* const tracker = createTracker({
|
|
227
|
+
* l2Provider,
|
|
228
|
+
* l1Provider,
|
|
229
|
+
* cache: new MemoryCache(),
|
|
230
|
+
* });
|
|
231
|
+
* ```
|
|
232
|
+
*/
|
|
233
|
+
class MemoryCache {
|
|
234
|
+
constructor() {
|
|
235
|
+
this.cache = new Map();
|
|
236
|
+
}
|
|
237
|
+
async get(key) {
|
|
238
|
+
return this.cache.get(key) ?? null;
|
|
239
|
+
}
|
|
240
|
+
async set(key, value) {
|
|
241
|
+
this.cache.set(key, value);
|
|
242
|
+
}
|
|
243
|
+
async delete(key) {
|
|
244
|
+
this.cache.delete(key);
|
|
245
|
+
}
|
|
246
|
+
async clear() {
|
|
247
|
+
this.cache.clear();
|
|
248
|
+
}
|
|
249
|
+
async has(key) {
|
|
250
|
+
return this.cache.has(key);
|
|
251
|
+
}
|
|
252
|
+
keys() {
|
|
253
|
+
return this.cache.keys();
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
exports.MemoryCache = MemoryCache;
|
|
257
|
+
/**
|
|
258
|
+
* Generate cache key from transaction hash (primary cache key format)
|
|
259
|
+
*/
|
|
260
|
+
function txHashCacheKey(txHash) {
|
|
261
|
+
return `tx:${txHash.toLowerCase()}`;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Read all cache data without requiring RPC providers.
|
|
265
|
+
* Use this for status/dashboard views that only need cached data.
|
|
266
|
+
*
|
|
267
|
+
* @param cachePath - Path to the cache file
|
|
268
|
+
*/
|
|
269
|
+
async function readCacheStatus(cachePath) {
|
|
270
|
+
const cache = new FileCache(cachePath);
|
|
271
|
+
// Load watermarks from discovery checkpoint (unified format)
|
|
272
|
+
const discoveryCheckpoint = await cache.get(discovery_1.WATERMARKS_KEY);
|
|
273
|
+
const watermarks = discoveryCheckpoint?.cachedData.discoveryWatermarks ?? {};
|
|
274
|
+
const checkpoints = new Map();
|
|
275
|
+
const allKeys = cache.keys();
|
|
276
|
+
const keys = Array.from(allKeys);
|
|
277
|
+
for (const key of keys) {
|
|
278
|
+
if (key.startsWith("tx:")) {
|
|
279
|
+
const checkpoint = await cache.get(key);
|
|
280
|
+
if (checkpoint) {
|
|
281
|
+
checkpoints.set(key, checkpoint);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
return { watermarks, checkpoints };
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/tracker/cache.ts"],"names":[],"mappings":"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"}
|
package/dist/tracker/execute.js
CHANGED
|
@@ -13,7 +13,7 @@ const proposal_queued_1 = require("../stages/proposal-queued");
|
|
|
13
13
|
const timelock_1 = require("../stages/timelock");
|
|
14
14
|
const l2_to_l1_message_1 = require("../stages/l2-to-l1-message");
|
|
15
15
|
const retryables_1 = require("../stages/retryables");
|
|
16
|
-
const
|
|
16
|
+
const utils_1 = require("../stages/utils");
|
|
17
17
|
const logger_1 = require("../utils/logger");
|
|
18
18
|
const log = logger_1.loggers.execution;
|
|
19
19
|
/**
|
|
@@ -50,11 +50,11 @@ async function prepareTransaction(stage, context, options = {}) {
|
|
|
50
50
|
// Queue a proposal on the governor (calls governor.queue())
|
|
51
51
|
const queueData = (0, types_1.getStageData)(stage, "PROPOSAL_QUEUED");
|
|
52
52
|
if (!queueData) {
|
|
53
|
-
return (0,
|
|
53
|
+
return (0, utils_1.failPrepare)("Stage is not a PROPOSAL_QUEUED stage");
|
|
54
54
|
}
|
|
55
55
|
const { governorAddress, proposalId, targets, values, calldatas, description } = queueData;
|
|
56
56
|
if (!governorAddress || !proposalId || !targets || !values || !calldatas || !description) {
|
|
57
|
-
return (0,
|
|
57
|
+
return (0, utils_1.failPrepare)("Missing proposal queue params in stage data");
|
|
58
58
|
}
|
|
59
59
|
return (0, proposal_queued_1.prepareGovernorQueue)(governorAddress, proposalId, {
|
|
60
60
|
targets,
|
|
@@ -74,7 +74,7 @@ async function prepareTransaction(stage, context, options = {}) {
|
|
|
74
74
|
prepareCompleted: options.prepareCompleted,
|
|
75
75
|
});
|
|
76
76
|
if (results.length === 0) {
|
|
77
|
-
return (0,
|
|
77
|
+
return (0, utils_1.failPrepare)("No messages to prepare");
|
|
78
78
|
}
|
|
79
79
|
// Find first successful result
|
|
80
80
|
const successResult = results.find((r) => r.success);
|
|
@@ -100,17 +100,17 @@ async function prepareTransaction(stage, context, options = {}) {
|
|
|
100
100
|
const targetChain = retryableData?.targetChains?.[0];
|
|
101
101
|
// Validate target chain exists before selecting provider
|
|
102
102
|
if (!targetChain) {
|
|
103
|
-
return (0,
|
|
103
|
+
return (0, utils_1.failPrepare)("No target chain found in retryable stage data");
|
|
104
104
|
}
|
|
105
105
|
const targetProvider = targetChain === "nova" ? novaProvider : l2Provider;
|
|
106
106
|
if (!targetProvider) {
|
|
107
|
-
return (0,
|
|
107
|
+
return (0, utils_1.failPrepare)("Target chain provider not available");
|
|
108
108
|
}
|
|
109
109
|
const { total, results } = await (0, retryables_1.prepareRetryableStage)(stage, l1Provider, targetProvider, {
|
|
110
110
|
prepareCompleted: options.prepareCompleted,
|
|
111
111
|
});
|
|
112
112
|
if (results.length === 0) {
|
|
113
|
-
return (0,
|
|
113
|
+
return (0, utils_1.failPrepare)("No tickets to prepare");
|
|
114
114
|
}
|
|
115
115
|
// Find first successful result
|
|
116
116
|
const successResult = results.find((r) => r.success);
|
|
@@ -132,7 +132,7 @@ async function prepareTransaction(stage, context, options = {}) {
|
|
|
132
132
|
return results[0];
|
|
133
133
|
}
|
|
134
134
|
default:
|
|
135
|
-
return (0,
|
|
135
|
+
return (0, utils_1.failPrepare)(`Preparation not supported for stage type: ${stage.type}`);
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
//# sourceMappingURL=execute.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/tracker/execute.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAgDH,gDAgHC;AA9JD,mCAAgC;AAChC,oCAAqF;AACrF,+DAAiE;AACjE,iDAA0D;AAC1D,iEAAuE;AACvE,qDAA6D;AAC7D,
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/tracker/execute.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,15 +4,15 @@
|
|
|
4
4
|
* Pure functions that track stages and return updated state.
|
|
5
5
|
* Each function reads from state, performs tracking, and returns new state.
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
7
|
+
import { TrackingState } from "./state";
|
|
8
8
|
/**
|
|
9
9
|
* Track full governor proposal pipeline.
|
|
10
10
|
* Returns final state after tracking all stages.
|
|
11
11
|
*/
|
|
12
|
-
export declare function trackGovernorPipeline(state:
|
|
12
|
+
export declare function trackGovernorPipeline(state: TrackingState): Promise<TrackingState>;
|
|
13
13
|
/**
|
|
14
14
|
* Track timelock pipeline (stages 4-7).
|
|
15
15
|
* Used by governor pipeline and direct timelock tracking.
|
|
16
16
|
*/
|
|
17
|
-
export declare function trackTimelockPipeline(state:
|
|
17
|
+
export declare function trackTimelockPipeline(state: TrackingState): Promise<TrackingState>;
|
|
18
18
|
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/tracker/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/tracker/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACL,aAAa,EAiBd,MAAM,SAAS,CAAC;AAuWjB;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAwBxF;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CA8BxF"}
|