@1sat/wallet 0.0.93 → 0.0.94
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/reviewInvalidTask.d.ts +48 -0
- package/dist/reviewInvalidTask.d.ts.map +1 -0
- package/dist/reviewInvalidTask.js +88 -0
- package/dist/reviewInvalidTask.js.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export { ChromeCWI, CWI_EVENT_NAMES, CWIEventName, EventCWI, createChromeCWI, cr
|
|
|
9
9
|
export { parsePrivateKey } from './parsePrivateKey';
|
|
10
10
|
export { createWalletCore, DEFAULT_FEE_MODEL, DEFAULT_CONNECTION_TIMEOUT, type Chain, type TaskStateStore, type WalletCoreConfig, type WalletCoreResult, } from './factory';
|
|
11
11
|
export { installStoragePaymentAutoRetry, StoragePaymentError, type AutoRetryConfig, type StoragePaymentHook, type StoragePaymentRequiredInfo, } from './storagePaymentAutoRetry';
|
|
12
|
+
export { buildReviewInvalidTask, nominateInvalidReqs, type NominatedReq, type NominateInvalidResult, type ReviewInvalidTaskOptions, } from './reviewInvalidTask';
|
|
12
13
|
export { filterGroupedByMissing, InMemoryPermissionStore, isExpired, LocalWalletPermissionsManager, normalizeOriginator, permissionKeyFromRequest, permissionKeysFromGroup, permissionKeyToString, } from './permissions';
|
|
13
14
|
export type { IPermissionStore, ListGrantsFilter, LocalWalletPermissionsManagerOptions, PermissionKey, PermissionType, StoredGrant, } from './permissions';
|
|
14
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,YAAY,EACX,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,aAAa,EACb,UAAU,GACV,MAAM,aAAa,CAAA;AAGpB,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAGzD,OAAO,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,aAAa,EACb,SAAS,GACT,MAAM,cAAc,CAAA;AAGrB,OAAO,EACN,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,OAAO,EACP,kBAAkB,EAClB,WAAW,EACX,OAAO,EACP,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,KAAK,KAAK,EACV,KAAK,UAAU,EACf,KAAK,IAAI,EACT,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,GAAG,GACR,MAAM,YAAY,CAAA;AAGnB,OAAO,EACN,cAAc,EACd,iBAAiB,EACjB,KAAK,iBAAiB,GACtB,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EACN,kBAAkB,EAClB,iBAAiB,EACjB,GAAG,EACH,UAAU,EACV,KAAK,EACL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,QAAQ,GACb,MAAM,UAAU,CAAA;AAGjB,OAAO,EACN,SAAS,EACT,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,SAAS,EACT,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACd,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,GACjB,MAAM,OAAO,CAAA;AAMd,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAGnD,OAAO,EACN,gBAAgB,EAChB,iBAAiB,EACjB,0BAA0B,EAC1B,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACrB,MAAM,WAAW,CAAA;AAGlB,OAAO,EACN,8BAA8B,EAC9B,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,GAC/B,MAAM,2BAA2B,CAAA;AAGlC,OAAO,EACN,sBAAsB,EACtB,uBAAuB,EACvB,SAAS,EACT,6BAA6B,EAC7B,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,GACrB,MAAM,eAAe,CAAA;AACtB,YAAY,EACX,gBAAgB,EAChB,gBAAgB,EAChB,oCAAoC,EACpC,aAAa,EACb,cAAc,EACd,WAAW,GACX,MAAM,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,YAAY,EACX,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,aAAa,EACb,UAAU,GACV,MAAM,aAAa,CAAA;AAGpB,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAGzD,OAAO,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,aAAa,EACb,SAAS,GACT,MAAM,cAAc,CAAA;AAGrB,OAAO,EACN,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,OAAO,EACP,kBAAkB,EAClB,WAAW,EACX,OAAO,EACP,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,KAAK,KAAK,EACV,KAAK,UAAU,EACf,KAAK,IAAI,EACT,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,GAAG,GACR,MAAM,YAAY,CAAA;AAGnB,OAAO,EACN,cAAc,EACd,iBAAiB,EACjB,KAAK,iBAAiB,GACtB,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EACN,kBAAkB,EAClB,iBAAiB,EACjB,GAAG,EACH,UAAU,EACV,KAAK,EACL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,QAAQ,GACb,MAAM,UAAU,CAAA;AAGjB,OAAO,EACN,SAAS,EACT,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,SAAS,EACT,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACd,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,GACjB,MAAM,OAAO,CAAA;AAMd,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAGnD,OAAO,EACN,gBAAgB,EAChB,iBAAiB,EACjB,0BAA0B,EAC1B,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACrB,MAAM,WAAW,CAAA;AAGlB,OAAO,EACN,8BAA8B,EAC9B,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,GAC/B,MAAM,2BAA2B,CAAA;AAGlC,OAAO,EACN,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,GAC7B,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EACN,sBAAsB,EACtB,uBAAuB,EACvB,SAAS,EACT,6BAA6B,EAC7B,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,GACrB,MAAM,eAAe,CAAA;AACtB,YAAY,EACX,gBAAgB,EAChB,gBAAgB,EAChB,oCAAoC,EACpC,aAAa,EACb,cAAc,EACd,WAAW,GACX,MAAM,eAAe,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,8 @@ export { parsePrivateKey } from './parsePrivateKey';
|
|
|
20
20
|
export { createWalletCore, DEFAULT_FEE_MODEL, DEFAULT_CONNECTION_TIMEOUT, } from './factory';
|
|
21
21
|
// 507 auto-retry
|
|
22
22
|
export { installStoragePaymentAutoRetry, StoragePaymentError, } from './storagePaymentAutoRetry';
|
|
23
|
+
// Invalid-req recovery nomination for TaskUnFail
|
|
24
|
+
export { buildReviewInvalidTask, nominateInvalidReqs, } from './reviewInvalidTask';
|
|
23
25
|
// Permissions — local-storage-backed WalletPermissionsManager
|
|
24
26
|
export { filterGroupedByMissing, InMemoryPermissionStore, isExpired, LocalWalletPermissionsManager, normalizeOriginator, permissionKeyFromRequest, permissionKeysFromGroup, permissionKeyToString, } from './permissions';
|
|
25
27
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAU7C,UAAU;AACV,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEzD,cAAc;AACd,OAAO,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,aAAa,EACb,SAAS,GACT,MAAM,cAAc,CAAA;AAErB,WAAW;AACX,OAAO,EACN,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,OAAO,EACP,kBAAkB,EAClB,WAAW,EACX,OAAO,EACP,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,YAAY,GAYZ,MAAM,YAAY,CAAA;AAEnB,eAAe;AACf,OAAO,EACN,cAAc,EACd,iBAAiB,GAEjB,MAAM,gBAAgB,CAAA;AAEvB,SAAS;AACT,OAAO,EACN,kBAAkB,EAClB,iBAAiB,EACjB,GAAG,EACH,UAAU,EACV,KAAK,GAKL,MAAM,UAAU,CAAA;AAEjB,+BAA+B;AAC/B,OAAO,EACN,SAAS,EACT,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,SAAS,EACT,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,GAWd,MAAM,OAAO,CAAA;AAEd,8EAA8E;AAC9E,sDAAsD;AAEtD,oBAAoB;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,eAAe;AACf,OAAO,EACN,gBAAgB,EAChB,iBAAiB,EACjB,0BAA0B,GAK1B,MAAM,WAAW,CAAA;AAElB,iBAAiB;AACjB,OAAO,EACN,8BAA8B,EAC9B,mBAAmB,GAInB,MAAM,2BAA2B,CAAA;AAElC,8DAA8D;AAC9D,OAAO,EACN,sBAAsB,EACtB,uBAAuB,EACvB,SAAS,EACT,6BAA6B,EAC7B,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,GACrB,MAAM,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAU7C,UAAU;AACV,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEzD,cAAc;AACd,OAAO,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,aAAa,EACb,SAAS,GACT,MAAM,cAAc,CAAA;AAErB,WAAW;AACX,OAAO,EACN,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,OAAO,EACP,kBAAkB,EAClB,WAAW,EACX,OAAO,EACP,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,YAAY,GAYZ,MAAM,YAAY,CAAA;AAEnB,eAAe;AACf,OAAO,EACN,cAAc,EACd,iBAAiB,GAEjB,MAAM,gBAAgB,CAAA;AAEvB,SAAS;AACT,OAAO,EACN,kBAAkB,EAClB,iBAAiB,EACjB,GAAG,EACH,UAAU,EACV,KAAK,GAKL,MAAM,UAAU,CAAA;AAEjB,+BAA+B;AAC/B,OAAO,EACN,SAAS,EACT,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,SAAS,EACT,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,GAWd,MAAM,OAAO,CAAA;AAEd,8EAA8E;AAC9E,sDAAsD;AAEtD,oBAAoB;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,eAAe;AACf,OAAO,EACN,gBAAgB,EAChB,iBAAiB,EACjB,0BAA0B,GAK1B,MAAM,WAAW,CAAA;AAElB,iBAAiB;AACjB,OAAO,EACN,8BAA8B,EAC9B,mBAAmB,GAInB,MAAM,2BAA2B,CAAA;AAElC,iDAAiD;AACjD,OAAO,EACN,sBAAsB,EACtB,mBAAmB,GAInB,MAAM,qBAAqB,CAAA;AAE5B,8DAA8D;AAC9D,OAAO,EACN,sBAAsB,EACtB,uBAAuB,EACvB,SAAS,EACT,6BAA6B,EAC7B,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,GACrB,MAAM,eAAe,CAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export interface NominatedReq {
|
|
2
|
+
provenTxReqId: number;
|
|
3
|
+
txid: string;
|
|
4
|
+
}
|
|
5
|
+
export interface NominateInvalidResult {
|
|
6
|
+
nominated: NominatedReq[];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Nominate `invalid` proven_tx_reqs for recovery by setting them to
|
|
10
|
+
* `unfail`. Nomination only — wallet-toolbox's scheduled `TaskUnFail`
|
|
11
|
+
* verifies each against the chain, restores the ones that actually mined
|
|
12
|
+
* (transaction back to completed, inputs re-marked spent, outputs
|
|
13
|
+
* activated), and returns the rest to `invalid`.
|
|
14
|
+
*
|
|
15
|
+
* Exists because `invalid` is otherwise terminal: a transaction that the
|
|
16
|
+
* network later mines — a wrongly classified rejection, or a proof that
|
|
17
|
+
* arrived after the give-up limit — stays `failed` forever and its
|
|
18
|
+
* released inputs get re-spent against confirmed history.
|
|
19
|
+
*
|
|
20
|
+
* `windowMsecs` limits nomination to reqs created within the window;
|
|
21
|
+
* omit it to nominate every invalid req (one-time cleanup). The window
|
|
22
|
+
* keys on `created_at`, which is immutable — `updated_at` would never
|
|
23
|
+
* age anything out, because TaskUnFail's bounce back to `invalid`
|
|
24
|
+
* refreshes it every cycle.
|
|
25
|
+
*
|
|
26
|
+
* `storage` accepts either a `WalletStorageManager` or a raw
|
|
27
|
+
* `StorageProvider` — both expose `findProvenTxReqs`; the update goes
|
|
28
|
+
* through `runAsStorageProvider` when present, directly otherwise.
|
|
29
|
+
*/
|
|
30
|
+
export declare function nominateInvalidReqs(storage: any, windowMsecs?: number): Promise<NominateInvalidResult>;
|
|
31
|
+
export interface ReviewInvalidTaskOptions {
|
|
32
|
+
/** How often the task runs. Default 1 hour. */
|
|
33
|
+
triggerMsecs?: number;
|
|
34
|
+
/** Only reqs created within this window are nominated. Omit for all. */
|
|
35
|
+
windowMsecs?: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Builds a plain-object Monitor task around `nominateInvalidReqs` for
|
|
39
|
+
* deployments that want a standing audit. Deliberately wired nowhere by
|
|
40
|
+
* default: automatic healing hides upstream failures (a misclassifying
|
|
41
|
+
* broadcast path would self-repair invisibly instead of surfacing).
|
|
42
|
+
* Prefer the CLI (`1sat storage unfail`) for occasional deliberate runs.
|
|
43
|
+
*
|
|
44
|
+
* Shape-compatible with `WalletMonitorTask` so callers don't import the
|
|
45
|
+
* abstract class from whichever wallet-toolbox variant they use.
|
|
46
|
+
*/
|
|
47
|
+
export declare function buildReviewInvalidTask(monitor: any, storage: any, options?: ReviewInvalidTaskOptions): any;
|
|
48
|
+
//# sourceMappingURL=reviewInvalidTask.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewInvalidTask.d.ts","sourceRoot":"","sources":["../src/reviewInvalidTask.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,qBAAqB;IACrC,SAAS,EAAE,YAAY,EAAE,CAAA;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,mBAAmB,CACxC,OAAO,EAAE,GAAG,EACZ,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,CAAC,CAgChC;AAED,MAAM,WAAW,wBAAwB;IACxC,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACrC,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,GAAG,EACZ,OAAO,GAAE,wBAA6B,GACpC,GAAG,CAsBL"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nominate `invalid` proven_tx_reqs for recovery by setting them to
|
|
3
|
+
* `unfail`. Nomination only — wallet-toolbox's scheduled `TaskUnFail`
|
|
4
|
+
* verifies each against the chain, restores the ones that actually mined
|
|
5
|
+
* (transaction back to completed, inputs re-marked spent, outputs
|
|
6
|
+
* activated), and returns the rest to `invalid`.
|
|
7
|
+
*
|
|
8
|
+
* Exists because `invalid` is otherwise terminal: a transaction that the
|
|
9
|
+
* network later mines — a wrongly classified rejection, or a proof that
|
|
10
|
+
* arrived after the give-up limit — stays `failed` forever and its
|
|
11
|
+
* released inputs get re-spent against confirmed history.
|
|
12
|
+
*
|
|
13
|
+
* `windowMsecs` limits nomination to reqs created within the window;
|
|
14
|
+
* omit it to nominate every invalid req (one-time cleanup). The window
|
|
15
|
+
* keys on `created_at`, which is immutable — `updated_at` would never
|
|
16
|
+
* age anything out, because TaskUnFail's bounce back to `invalid`
|
|
17
|
+
* refreshes it every cycle.
|
|
18
|
+
*
|
|
19
|
+
* `storage` accepts either a `WalletStorageManager` or a raw
|
|
20
|
+
* `StorageProvider` — both expose `findProvenTxReqs`; the update goes
|
|
21
|
+
* through `runAsStorageProvider` when present, directly otherwise.
|
|
22
|
+
*/
|
|
23
|
+
export async function nominateInvalidReqs(storage, windowMsecs) {
|
|
24
|
+
const cutoff = windowMsecs === undefined
|
|
25
|
+
? undefined
|
|
26
|
+
: new Date(Date.now() - windowMsecs);
|
|
27
|
+
const nominated = [];
|
|
28
|
+
const limit = 100;
|
|
29
|
+
let offset = 0;
|
|
30
|
+
for (;;) {
|
|
31
|
+
const reqs = await storage.findProvenTxReqs({
|
|
32
|
+
partial: { status: 'invalid' },
|
|
33
|
+
paged: { limit, offset },
|
|
34
|
+
});
|
|
35
|
+
for (const req of reqs) {
|
|
36
|
+
if (!cutoff || new Date(req.created_at) >= cutoff) {
|
|
37
|
+
nominated.push({ provenTxReqId: req.provenTxReqId, txid: req.txid });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (reqs.length < limit)
|
|
41
|
+
break;
|
|
42
|
+
offset += limit;
|
|
43
|
+
}
|
|
44
|
+
if (nominated.length > 0) {
|
|
45
|
+
const ids = nominated.map((n) => n.provenTxReqId);
|
|
46
|
+
if (typeof storage.runAsStorageProvider === 'function') {
|
|
47
|
+
await storage.runAsStorageProvider(async (sp) => {
|
|
48
|
+
await sp.updateProvenTxReq(ids, { status: 'unfail' });
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
await storage.updateProvenTxReq(ids, { status: 'unfail' });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return { nominated };
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Builds a plain-object Monitor task around `nominateInvalidReqs` for
|
|
59
|
+
* deployments that want a standing audit. Deliberately wired nowhere by
|
|
60
|
+
* default: automatic healing hides upstream failures (a misclassifying
|
|
61
|
+
* broadcast path would self-repair invisibly instead of surfacing).
|
|
62
|
+
* Prefer the CLI (`1sat storage unfail`) for occasional deliberate runs.
|
|
63
|
+
*
|
|
64
|
+
* Shape-compatible with `WalletMonitorTask` so callers don't import the
|
|
65
|
+
* abstract class from whichever wallet-toolbox variant they use.
|
|
66
|
+
*/
|
|
67
|
+
export function buildReviewInvalidTask(monitor, storage, options = {}) {
|
|
68
|
+
const triggerMsecs = options.triggerMsecs ?? 60 * 60 * 1000;
|
|
69
|
+
return {
|
|
70
|
+
monitor,
|
|
71
|
+
storage: monitor.storage,
|
|
72
|
+
name: 'ReviewInvalid',
|
|
73
|
+
lastRunMsecsSinceEpoch: 0,
|
|
74
|
+
async asyncSetup() { },
|
|
75
|
+
trigger(nowMsecsSinceEpoch) {
|
|
76
|
+
return {
|
|
77
|
+
run: nowMsecsSinceEpoch - this.lastRunMsecsSinceEpoch >= triggerMsecs,
|
|
78
|
+
};
|
|
79
|
+
},
|
|
80
|
+
async runTask() {
|
|
81
|
+
const { nominated } = await nominateInvalidReqs(storage, options.windowMsecs);
|
|
82
|
+
if (nominated.length === 0)
|
|
83
|
+
return 'no invalid reqs nominated';
|
|
84
|
+
return `nominated ${nominated.length} invalid reqs for unfail review`;
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=reviewInvalidTask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewInvalidTask.js","sourceRoot":"","sources":["../src/reviewInvalidTask.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,OAAY,EACZ,WAAoB;IAEpB,MAAM,MAAM,GACX,WAAW,KAAK,SAAS;QACxB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,CAAA;IACtC,MAAM,SAAS,GAAmB,EAAE,CAAA;IACpC,MAAM,KAAK,GAAG,GAAG,CAAA;IACjB,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,SAAS,CAAC;QACT,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC;YAC3C,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;YAC9B,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;SACxB,CAAC,CAAA;QACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,MAAM,EAAE,CAAC;gBACnD,SAAS,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;YACrE,CAAC;QACF,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK;YAAE,MAAK;QAC9B,MAAM,IAAI,KAAK,CAAA;IAChB,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;QACjD,IAAI,OAAO,OAAO,CAAC,oBAAoB,KAAK,UAAU,EAAE,CAAC;YACxD,MAAM,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE,EAAO,EAAE,EAAE;gBACpD,MAAM,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;YACtD,CAAC,CAAC,CAAA;QACH,CAAC;aAAM,CAAC;YACP,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC3D,CAAC;IACF,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,CAAA;AACrB,CAAC;AASD;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CACrC,OAAY,EACZ,OAAY,EACZ,UAAoC,EAAE;IAEtC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;IAC3D,OAAO;QACN,OAAO;QACP,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,eAAe;QACrB,sBAAsB,EAAE,CAAC;QACzB,KAAK,CAAC,UAAU,KAAI,CAAC;QACrB,OAAO,CAAC,kBAA0B;YACjC,OAAO;gBACN,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,IAAI,YAAY;aACrE,CAAA;QACF,CAAC;QACD,KAAK,CAAC,OAAO;YACZ,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,mBAAmB,CAC9C,OAAO,EACP,OAAO,CAAC,WAAW,CACnB,CAAA;YACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,2BAA2B,CAAA;YAC9D,OAAO,aAAa,SAAS,CAAC,MAAM,iCAAiC,CAAA;QACtE,CAAC;KACD,CAAA;AACF,CAAC"}
|