@artblocks/abx-indexer 0.1.0-alpha.0 → 0.1.0-alpha.10
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/indexer.d.ts +33 -2
- package/dist/indexer.d.ts.map +1 -1
- package/dist/indexer.js +105 -11
- package/dist/indexer.js.map +1 -1
- package/dist/store.d.ts +89 -3
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +105 -10
- package/dist/store.js.map +1 -1
- package/package.json +2 -2
package/dist/indexer.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Address, type ProjectState, type PublicClient } from '@artblocks/abx-sdk';
|
|
2
|
-
import { type Store, type ProjectRegistration } from './store.js';
|
|
2
|
+
import { type IndexStatusRow, type Store, type ProjectRegistration } from './store.js';
|
|
3
3
|
export interface IndexResult {
|
|
4
4
|
state: ProjectState;
|
|
5
5
|
elapsedMs: number;
|
|
@@ -16,12 +16,16 @@ export interface IndexResult {
|
|
|
16
16
|
export declare class SelfHostIndexer {
|
|
17
17
|
readonly store: Store;
|
|
18
18
|
private clients;
|
|
19
|
+
/** Catch-up runs in flight, per lowercased address — see {@link reindexShared}. */
|
|
20
|
+
private inFlight;
|
|
19
21
|
constructor(store?: Store);
|
|
20
22
|
private client;
|
|
21
23
|
/** The RPC client for a chain — exposed for reads that aren't a reindex (e.g. deploy-block
|
|
22
24
|
* discovery in the admin control plane). Reuses the same pooled client as `reindex`. */
|
|
23
25
|
publicClient(chainKey: string): PublicClient;
|
|
24
|
-
/** Register a project to index (the minimum needed to replay it).
|
|
26
|
+
/** Register a project to index (the minimum needed to replay it). A FIRST registration enters the
|
|
27
|
+
* lifecycle at `queued`; a re-add leaves the existing lifecycle row alone (it's operational
|
|
28
|
+
* history, not operator input — see IndexStatusRow). */
|
|
25
29
|
register(reg: Omit<ProjectRegistration, 'registeredAt'>): ProjectRegistration;
|
|
26
30
|
/**
|
|
27
31
|
* Re-index a single project. By default this is **incremental**: it resumes from
|
|
@@ -33,11 +37,38 @@ export declare class SelfHostIndexer {
|
|
|
33
37
|
reindex(address: Address, opts?: {
|
|
34
38
|
full?: boolean;
|
|
35
39
|
}): Promise<IndexResult>;
|
|
40
|
+
/**
|
|
41
|
+
* {@link reindex}, but concurrent calls for the same project COALESCE into one run.
|
|
42
|
+
*
|
|
43
|
+
* Catch-up is the expensive, RPC-bound operation, and several triggers can point at one project at
|
|
44
|
+
* once: a re-POST arriving while a first backfill is still running, a watcher tick landing
|
|
45
|
+
* mid-catch-up. Starting a second reconstruct there doubles the load on the RPC that was already
|
|
46
|
+
* the bottleneck — so the second caller joins the first run instead. A caller that needs a *full*
|
|
47
|
+
* replay while an incremental is in flight gets its replay queued after it, never dropped.
|
|
48
|
+
*/
|
|
49
|
+
reindexShared(address: Address, opts?: {
|
|
50
|
+
full?: boolean;
|
|
51
|
+
}): Promise<IndexResult>;
|
|
52
|
+
/** Is a catch-up for this project running right now? (Lets a caller answer "still backfilling"
|
|
53
|
+
* without starting more work.) */
|
|
54
|
+
isCatchingUp(address: Address): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* A project's lifecycle row, with the default for a store that predates the lifecycle: an existing
|
|
57
|
+
* projection is already being served, so it reads `live` (freshness is what `toBlock` vs head is
|
|
58
|
+
* for) — reporting `queued` there would tell every client on an upgraded node that its serving
|
|
59
|
+
* projects are pending. A registration with no projection is genuinely `queued`.
|
|
60
|
+
*/
|
|
61
|
+
indexStatus(address: Address): IndexStatusRow;
|
|
62
|
+
private track;
|
|
36
63
|
/** Re-index every registered project. */
|
|
37
64
|
reindexAll(opts?: {
|
|
38
65
|
full?: boolean;
|
|
39
66
|
}): Promise<IndexResult[]>;
|
|
40
67
|
getProject(address: Address): ProjectState | null;
|
|
68
|
+
/** Throw away a project's reconstructed projection, keeping its registration — the next
|
|
69
|
+
* {@link reindex} then rebuilds it from the deploy block. The projection is a disposable cache of
|
|
70
|
+
* chain state; this is how you prove it (`abx demo` deletes and replays to show identical state). */
|
|
71
|
+
dropProjection(address: Address): void;
|
|
41
72
|
listProjects(): ProjectState[];
|
|
42
73
|
}
|
|
43
74
|
//# sourceMappingURL=indexer.d.ts.map
|
package/dist/indexer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAc,KAAK,cAAc,EAAE,KAAK,KAAK,EAAE,KAAK,mBAAmB,EAAC,MAAM,YAAY,CAAC;AAElG,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,qBAAa,eAAe;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,OAAO,CAAC,OAAO,CAAmC;IAClD,mFAAmF;IACnF,OAAO,CAAC,QAAQ,CAAqE;gBAEzE,KAAK,CAAC,EAAE,KAAK;IAIzB,OAAO,CAAC,MAAM;IAMd;6FACyF;IACzF,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY;IAI5C;;6DAEyD;IACzD,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,GAAG,mBAAmB;IAO7E;;;;;;OAMG;IACG,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,GAAE;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiDlF;;;;;;;;OAQG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,GAAE;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAYlF;uCACmC;IACnC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAIvC;;;;;OAKG;IACH,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc;IAU7C,OAAO,CAAC,KAAK;IAoBb,yCAAyC;IACnC,UAAU,CAAC,IAAI,GAAE;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAQrE,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI;IAIjD;;0GAEsG;IACtG,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAItC,YAAY,IAAI,YAAY,EAAE;CAG/B"}
|
package/dist/indexer.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { makePublicClient, reconstructIncremental, reconstructProject, } from '@artblocks/abx-sdk';
|
|
1
|
+
import { classifyIndexError, makePublicClient, reconstructIncremental, reconstructProject, } from '@artblocks/abx-sdk';
|
|
2
2
|
import { SqliteStore } from './store.js';
|
|
3
3
|
/**
|
|
4
4
|
* The reference indexer (Layer 3). It does one thing well: replay the event
|
|
@@ -11,6 +11,8 @@ import { SqliteStore } from './store.js';
|
|
|
11
11
|
export class SelfHostIndexer {
|
|
12
12
|
store;
|
|
13
13
|
clients = new Map();
|
|
14
|
+
/** Catch-up runs in flight, per lowercased address — see {@link reindexShared}. */
|
|
15
|
+
inFlight = new Map();
|
|
14
16
|
constructor(store) {
|
|
15
17
|
this.store = store ?? new SqliteStore();
|
|
16
18
|
}
|
|
@@ -25,10 +27,14 @@ export class SelfHostIndexer {
|
|
|
25
27
|
publicClient(chainKey) {
|
|
26
28
|
return this.client(chainKey);
|
|
27
29
|
}
|
|
28
|
-
/** Register a project to index (the minimum needed to replay it).
|
|
30
|
+
/** Register a project to index (the minimum needed to replay it). A FIRST registration enters the
|
|
31
|
+
* lifecycle at `queued`; a re-add leaves the existing lifecycle row alone (it's operational
|
|
32
|
+
* history, not operator input — see IndexStatusRow). */
|
|
29
33
|
register(reg) {
|
|
30
34
|
const full = { ...reg, registeredAt: new Date().toISOString() };
|
|
31
35
|
this.store.register(full);
|
|
36
|
+
if (!this.store.getIndexStatus(full.address))
|
|
37
|
+
this.store.setIndexStatus(full.address, { status: 'queued' });
|
|
32
38
|
return full;
|
|
33
39
|
}
|
|
34
40
|
/**
|
|
@@ -47,23 +53,105 @@ export class SelfHostIndexer {
|
|
|
47
53
|
const started = Date.now();
|
|
48
54
|
const factory = reg.factory ? reg.factory : undefined;
|
|
49
55
|
const prior = opts.full ? null : this.store.getProject(address);
|
|
56
|
+
const incremental = !!(prior && prior.deployBlock && prior.events.length > 0);
|
|
57
|
+
const attempts = (this.store.getIndexStatus(address)?.attempts ?? 0) + 1;
|
|
58
|
+
// `backfilling` is for an initial sync or a forced replay — the long ones a client polls. A
|
|
59
|
+
// routine incremental catch-up keeps its current status until it lands, so a live project's
|
|
60
|
+
// status doesn't flicker on every watcher tick.
|
|
61
|
+
if (!incremental) {
|
|
62
|
+
this.store.setIndexStatus(address, { status: 'backfilling', attempts, lastAttemptAt: new Date().toISOString() });
|
|
63
|
+
}
|
|
50
64
|
let state;
|
|
51
65
|
let mode;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
66
|
+
try {
|
|
67
|
+
if (incremental) {
|
|
68
|
+
state = await reconstructIncremental(this.client(reg.chainKey), prior, { factory });
|
|
69
|
+
mode = 'incremental';
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
state = await reconstructProject(this.client(reg.chainKey), {
|
|
73
|
+
address,
|
|
74
|
+
fromBlock: BigInt(reg.fromBlock),
|
|
75
|
+
factory,
|
|
76
|
+
});
|
|
77
|
+
mode = 'full';
|
|
78
|
+
}
|
|
55
79
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
80
|
+
catch (err) {
|
|
81
|
+
// Record WHY, as a closed credential-free class — a rate-limited RPC and a broken service are
|
|
82
|
+
// the same 500 to a caller otherwise, and only one of them means "wait".
|
|
83
|
+
this.store.setIndexStatus(address, {
|
|
84
|
+
status: 'failed',
|
|
85
|
+
error: classifyIndexError(err),
|
|
86
|
+
attempts,
|
|
87
|
+
lastAttemptAt: new Date().toISOString(),
|
|
61
88
|
});
|
|
62
|
-
|
|
89
|
+
throw err;
|
|
63
90
|
}
|
|
64
91
|
this.store.putProject(state);
|
|
92
|
+
const now = new Date().toISOString();
|
|
93
|
+
this.store.setIndexStatus(address, { status: 'live', error: null, attempts: 0, lastAttemptAt: now, lastIndexedAt: now });
|
|
65
94
|
return { state, elapsedMs: Date.now() - started, mode };
|
|
66
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* {@link reindex}, but concurrent calls for the same project COALESCE into one run.
|
|
98
|
+
*
|
|
99
|
+
* Catch-up is the expensive, RPC-bound operation, and several triggers can point at one project at
|
|
100
|
+
* once: a re-POST arriving while a first backfill is still running, a watcher tick landing
|
|
101
|
+
* mid-catch-up. Starting a second reconstruct there doubles the load on the RPC that was already
|
|
102
|
+
* the bottleneck — so the second caller joins the first run instead. A caller that needs a *full*
|
|
103
|
+
* replay while an incremental is in flight gets its replay queued after it, never dropped.
|
|
104
|
+
*/
|
|
105
|
+
reindexShared(address, opts = {}) {
|
|
106
|
+
const key = address.toLowerCase();
|
|
107
|
+
const running = this.inFlight.get(key);
|
|
108
|
+
if (running) {
|
|
109
|
+
if (!opts.full || running.full)
|
|
110
|
+
return running.promise;
|
|
111
|
+
// A forced replay can't be satisfied by an in-flight incremental — chain it on.
|
|
112
|
+
const chained = running.promise.catch(() => undefined).then(() => this.reindex(address, opts));
|
|
113
|
+
return this.track(key, chained, true);
|
|
114
|
+
}
|
|
115
|
+
return this.track(key, this.reindex(address, opts), !!opts.full);
|
|
116
|
+
}
|
|
117
|
+
/** Is a catch-up for this project running right now? (Lets a caller answer "still backfilling"
|
|
118
|
+
* without starting more work.) */
|
|
119
|
+
isCatchingUp(address) {
|
|
120
|
+
return this.inFlight.has(address.toLowerCase());
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* A project's lifecycle row, with the default for a store that predates the lifecycle: an existing
|
|
124
|
+
* projection is already being served, so it reads `live` (freshness is what `toBlock` vs head is
|
|
125
|
+
* for) — reporting `queued` there would tell every client on an upgraded node that its serving
|
|
126
|
+
* projects are pending. A registration with no projection is genuinely `queued`.
|
|
127
|
+
*/
|
|
128
|
+
indexStatus(address) {
|
|
129
|
+
const row = this.store.getIndexStatus(address);
|
|
130
|
+
if (row)
|
|
131
|
+
return row;
|
|
132
|
+
return {
|
|
133
|
+
address: address.toLowerCase(),
|
|
134
|
+
status: this.store.getProject(address) ? 'live' : 'queued',
|
|
135
|
+
attempts: 0,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
track(key, promise, full) {
|
|
139
|
+
// settle() must run whether the run resolves or rejects, and must NOT swallow the rejection —
|
|
140
|
+
// every caller of the shared promise still sees the error.
|
|
141
|
+
const settle = () => {
|
|
142
|
+
if (this.inFlight.get(key)?.promise === tracked)
|
|
143
|
+
this.inFlight.delete(key);
|
|
144
|
+
};
|
|
145
|
+
const tracked = promise.then((r) => {
|
|
146
|
+
settle();
|
|
147
|
+
return r;
|
|
148
|
+
}, (e) => {
|
|
149
|
+
settle();
|
|
150
|
+
throw e;
|
|
151
|
+
});
|
|
152
|
+
this.inFlight.set(key, { promise: tracked, full });
|
|
153
|
+
return tracked;
|
|
154
|
+
}
|
|
67
155
|
/** Re-index every registered project. */
|
|
68
156
|
async reindexAll(opts = {}) {
|
|
69
157
|
const out = [];
|
|
@@ -75,6 +163,12 @@ export class SelfHostIndexer {
|
|
|
75
163
|
getProject(address) {
|
|
76
164
|
return this.store.getProject(address);
|
|
77
165
|
}
|
|
166
|
+
/** Throw away a project's reconstructed projection, keeping its registration — the next
|
|
167
|
+
* {@link reindex} then rebuilds it from the deploy block. The projection is a disposable cache of
|
|
168
|
+
* chain state; this is how you prove it (`abx demo` deletes and replays to show identical state). */
|
|
169
|
+
dropProjection(address) {
|
|
170
|
+
this.store.dropProjection(address);
|
|
171
|
+
}
|
|
78
172
|
listProjects() {
|
|
79
173
|
return this.store.listProjects();
|
|
80
174
|
}
|
package/dist/indexer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.js","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,GAInB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"indexer.js","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"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"}
|
package/dist/store.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ProjectState } from '@artblocks/abx-sdk';
|
|
1
|
+
import type { IndexError, IndexErrorClass, IndexStatus, ProjectState } from '@artblocks/abx-sdk';
|
|
2
2
|
/** How a project was registered for indexing — the minimum to replay it. */
|
|
3
3
|
export interface ProjectRegistration {
|
|
4
4
|
address: string;
|
|
@@ -25,8 +25,9 @@ export interface ProjectRegistration {
|
|
|
25
25
|
* (`specs/protocol/data-plane.md`). The resolver lists a token's rows and keeps only those whose
|
|
26
26
|
* `key` matches the recomputed address at the CURRENT settled inputsHash, so stale rows go
|
|
27
27
|
* silently unlisted (self-invalidation). `locator === null` means the bytes live in custody
|
|
28
|
-
* (the shared backend at `key`, or
|
|
29
|
-
* chain-derived: rows survive a projection wipe and self-heal from a
|
|
28
|
+
* (a co-located producer's bytes in the shared backend at `key`, or a bound output's `bytes` below).
|
|
29
|
+
* Producer-registered, NOT chain-derived: rows survive a projection wipe and self-heal from a
|
|
30
|
+
* runner's next sweep. */
|
|
30
31
|
export interface EffectArtifactRow {
|
|
31
32
|
/** renderArtifactKey (keccak hex; encodes effectKey + settled inputsHash). */
|
|
32
33
|
key: string;
|
|
@@ -38,8 +39,57 @@ export interface EffectArtifactRow {
|
|
|
38
39
|
/** The effect's DECLARED output mimeType — what the manifest and byte route serve. */
|
|
39
40
|
contentType: string | null;
|
|
40
41
|
locator: string | null;
|
|
42
|
+
/**
|
|
43
|
+
* A **bound** output's content (`specs/protocol/effects.md → Bound vs referenced`): the bytes that
|
|
44
|
+
* stitch into the metadata JSON — `render/traits` today. Capped at
|
|
45
|
+
* {@link BOUND_ARTIFACT_MAX_BYTES}; `null` for every **referenced** output, whose bytes stay with
|
|
46
|
+
* the producer and reach us only as `locator`.
|
|
47
|
+
*
|
|
48
|
+
* These live HERE, next to the row, and deliberately not in a `StorageBackend`: byte custody holds
|
|
49
|
+
* *source* bytes an on-chain keccak commits to (switchable, never lapsable), while these are
|
|
50
|
+
* re-creatable projection state whose loss is a re-render. One write instead of two also removes a
|
|
51
|
+
* way for the row and its content to disagree.
|
|
52
|
+
*/
|
|
53
|
+
bytes?: Uint8Array | null;
|
|
41
54
|
updatedAt?: string;
|
|
42
55
|
}
|
|
56
|
+
/** The cap a serving node MUST accept per bound output, and MUST refuse above
|
|
57
|
+
* (`specs/self-host-toolkit/remote-services.md → The mode is decided by the binding`). ~100× a real
|
|
58
|
+
* traits payload: generous for what it is for, far too small to become blob storage. */
|
|
59
|
+
export declare const BOUND_ARTIFACT_MAX_BYTES: number;
|
|
60
|
+
/**
|
|
61
|
+
* Where one project sits in the indexing lifecycle (`specs/self-host-toolkit/remote-services.md` →
|
|
62
|
+
* The indexing lifecycle) — what the control plane's `status`/list routes report and what
|
|
63
|
+
* `abx status` prints, for a managed provider and for your own node in the same words.
|
|
64
|
+
*
|
|
65
|
+
* Deliberately its OWN table, not columns on `registrations`: `register()` is a full-column upsert,
|
|
66
|
+
* so a re-add would silently reset the lifecycle (the clobber class). Registrations are operator
|
|
67
|
+
* *input*; this is operational history — it survives a projection wipe (a replay's whole point is
|
|
68
|
+
* that it doesn't lose where you were) and dies with `deregister()`.
|
|
69
|
+
*/
|
|
70
|
+
export interface IndexStatusRow {
|
|
71
|
+
address: string;
|
|
72
|
+
status: IndexStatus;
|
|
73
|
+
/** Set on `stale`/`failed`, cleared on success. Credential-free by contract. */
|
|
74
|
+
errorClass?: IndexErrorClass | null;
|
|
75
|
+
errorMessage?: string | null;
|
|
76
|
+
/** Catch-up attempts since the last success. */
|
|
77
|
+
attempts: number;
|
|
78
|
+
lastAttemptAt?: string | null;
|
|
79
|
+
/** When catch-up last COMPLETED (distinct from the projection's `reconstructedAt`, which a
|
|
80
|
+
* failed attempt leaves untouched). */
|
|
81
|
+
lastIndexedAt?: string | null;
|
|
82
|
+
updatedAt?: string;
|
|
83
|
+
}
|
|
84
|
+
/** A patch to {@link IndexStatusRow}: omitted fields are preserved, an explicit `null` clears —
|
|
85
|
+
* the same preserve-on-omit / clear-on-null rule the off-chain registration fields follow. */
|
|
86
|
+
export interface IndexStatusPatch {
|
|
87
|
+
status?: IndexStatus;
|
|
88
|
+
error?: IndexError | null;
|
|
89
|
+
attempts?: number;
|
|
90
|
+
lastAttemptAt?: string | null;
|
|
91
|
+
lastIndexedAt?: string | null;
|
|
92
|
+
}
|
|
43
93
|
/** Transient per-(artifact key) effect observability — `rendering`/`failed` between triggers.
|
|
44
94
|
* Rebuildable state ONLY: "up to date" is always artifact-presence at the current settled
|
|
45
95
|
* inputsHash, never a row here; a lost table costs history, not correctness. */
|
|
@@ -73,6 +123,10 @@ export interface Store {
|
|
|
73
123
|
getRegistration(address: string): ProjectRegistration | null;
|
|
74
124
|
/** Forget a project entirely — drop its registration and its projection (on-chain data is untouched). */
|
|
75
125
|
deregister(address: string): void;
|
|
126
|
+
/** Throw away the reconstructed projection but KEEP the registration, so the next index rebuilds
|
|
127
|
+
* it from the deploy block. The projection is a cache of chain state, never a source of truth —
|
|
128
|
+
* this is the operation that makes that claim checkable (and what `abx demo` demonstrates). */
|
|
129
|
+
dropProjection(address: string): void;
|
|
76
130
|
/** Register one effect artifact (the data plane's enumeration registry). Effect-agnostic —
|
|
77
131
|
* producers declare the (effectKey, outputKey, mimeType); the store never interprets them.
|
|
78
132
|
* Idempotent — last write wins per key. */
|
|
@@ -82,6 +136,27 @@ export interface Store {
|
|
|
82
136
|
/** Every registered artifact row for (project, token) — the manifest's effect-source listing.
|
|
83
137
|
* Callers filter by recomputing the current-inputsHash key per row (stale rows unlisted). */
|
|
84
138
|
listEffectArtifacts(address: string, tokenId: string): EffectArtifactRow[];
|
|
139
|
+
/**
|
|
140
|
+
* Drop the **bound** content of every superseded row for (project, token, effectKey, outputKey) —
|
|
141
|
+
* everything whose `inputs_hash` isn't `currentHash`.
|
|
142
|
+
*
|
|
143
|
+
* The spec makes this a **MAY**, not a MUST (`specs/protocol/effects.md → Bound vs referenced`):
|
|
144
|
+
* what's normative is that superseded content is never *served* or stitched, which leaves it with
|
|
145
|
+
* no legal reader. Dropping it is therefore free of consequence, and this node drops eagerly — on
|
|
146
|
+
* each bound registration — because that is what turns "held bytes" into
|
|
147
|
+
* `cap × minted × bound outputs` rather than a number that grows with every param change. A node
|
|
148
|
+
* that chose to keep history would be equally conforming and simply carry the cost.
|
|
149
|
+
*
|
|
150
|
+
* The rows themselves survive as provenance; only the unreadable content goes.
|
|
151
|
+
*/
|
|
152
|
+
pruneBoundArtifactBytes(address: string, tokenId: string, effectKey: string, outputKey: string, currentHash: string): void;
|
|
153
|
+
/** Merge a lifecycle patch for one project (preserve-on-omit, clear-on-`null`) and return the
|
|
154
|
+
* stored row. Creates the row on first write. */
|
|
155
|
+
setIndexStatus(address: string, patch: IndexStatusPatch): IndexStatusRow;
|
|
156
|
+
/** One project's lifecycle row, or null when nothing has stamped it yet. */
|
|
157
|
+
getIndexStatus(address: string): IndexStatusRow | null;
|
|
158
|
+
/** Every lifecycle row (the list route's status column, in one read). */
|
|
159
|
+
listIndexStatuses(): IndexStatusRow[];
|
|
85
160
|
/** Node-level key/value metadata (e.g. the chain watcher's persisted watermark). */
|
|
86
161
|
putMeta(key: string, value: string): void;
|
|
87
162
|
getMeta(key: string): string | null;
|
|
@@ -126,12 +201,23 @@ export declare class SqliteStore implements Store {
|
|
|
126
201
|
register(reg: ProjectRegistration): void;
|
|
127
202
|
listRegistrations(): ProjectRegistration[];
|
|
128
203
|
getRegistration(address: string): ProjectRegistration | null;
|
|
204
|
+
dropProjection(address: string): void;
|
|
129
205
|
deregister(address: string): void;
|
|
130
206
|
putEffectArtifact(row: EffectArtifactRow): void;
|
|
207
|
+
pruneBoundArtifactBytes(address: string, tokenId: string, effectKey: string, outputKey: string, currentHash: string): void;
|
|
131
208
|
getEffectArtifact(key: string): EffectArtifactRow | null;
|
|
132
209
|
listEffectArtifacts(address: string, tokenId: string): EffectArtifactRow[];
|
|
133
210
|
putMeta(key: string, value: string): void;
|
|
134
211
|
getMeta(key: string): string | null;
|
|
212
|
+
/**
|
|
213
|
+
* Read-modify-write so a caller can advance ONE field without knowing the rest: the watcher marks
|
|
214
|
+
* `stale` without touching `attempts`, a failure records the error without inventing a
|
|
215
|
+
* `lastIndexedAt`. Omitted = preserved, explicit `null` = cleared (the same rule the off-chain
|
|
216
|
+
* registration fields follow). Single writer per node, so a read-then-write is safe here.
|
|
217
|
+
*/
|
|
218
|
+
setIndexStatus(address: string, patch: IndexStatusPatch): IndexStatusRow;
|
|
219
|
+
getIndexStatus(address: string): IndexStatusRow | null;
|
|
220
|
+
listIndexStatuses(): IndexStatusRow[];
|
|
135
221
|
putEffectStatus(row: EffectStatusRow): void;
|
|
136
222
|
clearEffectStatus(key: string): void;
|
|
137
223
|
listEffectStatuses(address: string): EffectStatusRow[];
|
package/dist/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/dist/store.js
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { DatabaseSync } from 'node:sqlite';
|
|
2
2
|
import { existsSync, mkdirSync, rmSync } from 'node:fs';
|
|
3
3
|
import { resolve } from 'node:path';
|
|
4
|
+
/** The cap a serving node MUST accept per bound output, and MUST refuse above
|
|
5
|
+
* (`specs/self-host-toolkit/remote-services.md → The mode is decided by the binding`). ~100× a real
|
|
6
|
+
* traits payload: generous for what it is for, far too small to become blob storage. */
|
|
7
|
+
export const BOUND_ARTIFACT_MAX_BYTES = 64 * 1024;
|
|
4
8
|
// The data plane's effect-artifact registry (`specs/protocol/data-plane.md`): one row per declared
|
|
5
9
|
// output a runner produced, keyed by renderArtifactKey at the CURRENT settled inputsHash (a param
|
|
6
10
|
// change re-addresses → old rows go silently unlisted). Effect-agnostic — producers declare the
|
|
7
|
-
// (effect_key, output_key, content_type); the store never interprets them. locator NULL =
|
|
8
|
-
//
|
|
11
|
+
// (effect_key, output_key, content_type); the store never interprets them. locator NULL = nothing to
|
|
12
|
+
// redirect to: a BOUND output (content in `bytes`) or a co-located producer's bytes at `key` in the
|
|
13
|
+
// shared backend. Producer-registered, NOT chain-
|
|
9
14
|
// derived, so like registrations rows survive a projection wipe/replay — and a lost table self-heals
|
|
10
|
-
// from a runner's next sweep (record-on-skip /
|
|
15
|
+
// from a runner's next sweep (record-on-skip / re-register).
|
|
11
16
|
const EFFECT_ARTIFACTS_DDL = `
|
|
12
17
|
CREATE TABLE IF NOT EXISTS effect_artifacts (
|
|
13
18
|
key TEXT PRIMARY KEY, -- renderArtifactKey (keccak hex; encodes effectKey + settled inputsHash)
|
|
@@ -16,20 +21,27 @@ CREATE TABLE IF NOT EXISTS effect_artifacts (
|
|
|
16
21
|
effect_key TEXT NOT NULL, -- 'render' | any registered effect
|
|
17
22
|
output_key TEXT NOT NULL, -- 'image' | 'traits' | any declared output
|
|
18
23
|
inputs_hash TEXT NOT NULL, -- the settled inputsHash this row was produced at
|
|
19
|
-
locator TEXT, -- ipfs://<cid> | ar://<txid> | https://… | NULL (bytes
|
|
24
|
+
locator TEXT, -- ipfs://<cid> | ar://<txid> | https://… | NULL (referenced bytes stay with the producer; or co-located custody at \`key\`)
|
|
20
25
|
content_type TEXT, -- the effect's DECLARED output mimeType
|
|
26
|
+
bytes BLOB, -- BOUND output content only (≤64KB, stitches into the JSON); NULL for referenced
|
|
21
27
|
updated_at TEXT NOT NULL
|
|
22
28
|
);
|
|
23
29
|
CREATE INDEX IF NOT EXISTS idx_effect_artifacts_token ON effect_artifacts(address, token_id);
|
|
24
30
|
`;
|
|
25
31
|
const SCHEMA = `
|
|
26
|
-
PRAGMA journal_mode = WAL;
|
|
27
|
-
PRAGMA foreign_keys = ON;
|
|
28
32
|
-- Cross-process co-located writes (a local effect runner records artifact rows into this same
|
|
29
33
|
-- file while the resolver serves): wait out a writer instead of failing fast. WAL keeps readers
|
|
30
34
|
-- unblocked; artifact writes are rare (one per rendered output) and touch a table the indexer
|
|
31
35
|
-- never writes.
|
|
36
|
+
--
|
|
37
|
+
-- FIRST, before anything else: a timeout only protects the statements that come AFTER it. With this
|
|
38
|
+
-- third in the list (as it was), the WAL switch and the DDL below it had no timeout at all — so two
|
|
39
|
+
-- processes opening the same store at once (parallel CLI invocations, or a co-located runner starting
|
|
40
|
+
-- alongside the resolver) could fail outright with "database is locked" instead of waiting the moment
|
|
41
|
+
-- out. Setting the journal mode itself takes a write lock, which is exactly the collision.
|
|
32
42
|
PRAGMA busy_timeout = 5000;
|
|
43
|
+
PRAGMA journal_mode = WAL;
|
|
44
|
+
PRAGMA foreign_keys = ON;
|
|
33
45
|
|
|
34
46
|
CREATE TABLE IF NOT EXISTS registrations (
|
|
35
47
|
address TEXT PRIMARY KEY, -- lowercased
|
|
@@ -138,6 +150,21 @@ CREATE TABLE IF NOT EXISTS effect_status (
|
|
|
138
150
|
updated_at TEXT NOT NULL
|
|
139
151
|
);
|
|
140
152
|
CREATE INDEX IF NOT EXISTS idx_effect_status_address ON effect_status(address);
|
|
153
|
+
|
|
154
|
+
-- Where each project sits in the indexing lifecycle (queued | backfilling | live | stale | failed).
|
|
155
|
+
-- Operational history, NOT chain-derived and NOT operator input: it survives a projection wipe (the
|
|
156
|
+
-- replay must not lose where you were) and dies with deregister(). Kept OFF the registrations table
|
|
157
|
+
-- on purpose: register() is a full-column upsert, so a re-add would silently reset it.
|
|
158
|
+
CREATE TABLE IF NOT EXISTS index_status (
|
|
159
|
+
address TEXT PRIMARY KEY, -- lowercased
|
|
160
|
+
status TEXT NOT NULL, -- IndexStatus
|
|
161
|
+
error_class TEXT, -- IndexErrorClass, on stale/failed
|
|
162
|
+
error_message TEXT, -- credential-free hint (closed set — never an upstream message)
|
|
163
|
+
attempts INTEGER NOT NULL DEFAULT 0,
|
|
164
|
+
last_attempt_at TEXT,
|
|
165
|
+
last_indexed_at TEXT, -- when catch-up last COMPLETED
|
|
166
|
+
updated_at TEXT NOT NULL
|
|
167
|
+
);
|
|
141
168
|
`;
|
|
142
169
|
const b = (v) => v === null || v === undefined ? null : v ? 1 : 0;
|
|
143
170
|
const lc = (address) => address.toLowerCase();
|
|
@@ -210,6 +237,9 @@ export class SqliteStore {
|
|
|
210
237
|
// one JSON column; the shape is the ProjectState fields, spread back on hydrate.
|
|
211
238
|
add('projects', 'code_state TEXT');
|
|
212
239
|
add('tokens', 'params TEXT');
|
|
240
|
+
// bound-output content (`effects.md → Bound vs referenced`): traits used to land in the
|
|
241
|
+
// StorageBackend beside the referenced bytes; they belong with the row instead.
|
|
242
|
+
add('effect_artifacts', 'bytes BLOB');
|
|
213
243
|
}
|
|
214
244
|
// ── registrations ──────────────────────────────────────────────────────────
|
|
215
245
|
register(reg) {
|
|
@@ -235,23 +265,35 @@ export class SqliteStore {
|
|
|
235
265
|
const row = this.db.prepare(`SELECT * FROM registrations WHERE address = ?`).get(lc(address));
|
|
236
266
|
return row ? rowToRegistration(row) : null;
|
|
237
267
|
}
|
|
268
|
+
dropProjection(address) {
|
|
269
|
+
this.deleteProjection(lc(address));
|
|
270
|
+
}
|
|
238
271
|
deregister(address) {
|
|
239
272
|
const key = lc(address);
|
|
240
273
|
this.deleteProjection(key);
|
|
241
274
|
this.db.prepare(`DELETE FROM effect_artifacts WHERE address = ?`).run(key);
|
|
242
275
|
this.db.prepare(`DELETE FROM effect_status WHERE address = ?`).run(key);
|
|
276
|
+
this.db.prepare(`DELETE FROM index_status WHERE address = ?`).run(key);
|
|
243
277
|
this.db.prepare(`DELETE FROM registrations WHERE address = ?`).run(key);
|
|
244
278
|
}
|
|
245
279
|
// ── effect artifacts (the data plane's registry; producer-published) ──────────
|
|
246
280
|
putEffectArtifact(row) {
|
|
247
281
|
this.db
|
|
248
|
-
.prepare(`INSERT INTO effect_artifacts (key, address, token_id, effect_key, output_key, inputs_hash, locator, content_type, updated_at)
|
|
249
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
282
|
+
.prepare(`INSERT INTO effect_artifacts (key, address, token_id, effect_key, output_key, inputs_hash, locator, content_type, bytes, updated_at)
|
|
283
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
250
284
|
ON CONFLICT(key) DO UPDATE SET
|
|
251
285
|
address=excluded.address, token_id=excluded.token_id, effect_key=excluded.effect_key,
|
|
252
286
|
output_key=excluded.output_key, inputs_hash=excluded.inputs_hash,
|
|
253
|
-
locator=excluded.locator, content_type=excluded.content_type,
|
|
254
|
-
|
|
287
|
+
locator=excluded.locator, content_type=excluded.content_type,
|
|
288
|
+
bytes=excluded.bytes, updated_at=excluded.updated_at`)
|
|
289
|
+
.run(row.key.toLowerCase(), lc(row.address), row.tokenId, row.effectKey, row.outputKey, row.inputsHash.toLowerCase(), row.locator, row.contentType, row.bytes ?? null, row.updatedAt ?? new Date().toISOString());
|
|
290
|
+
}
|
|
291
|
+
pruneBoundArtifactBytes(address, tokenId, effectKey, outputKey, currentHash) {
|
|
292
|
+
this.db
|
|
293
|
+
.prepare(`UPDATE effect_artifacts SET bytes = NULL
|
|
294
|
+
WHERE address = ? AND token_id = ? AND effect_key = ? AND output_key = ?
|
|
295
|
+
AND inputs_hash <> ? AND bytes IS NOT NULL`)
|
|
296
|
+
.run(lc(address), tokenId, effectKey, outputKey, currentHash.toLowerCase());
|
|
255
297
|
}
|
|
256
298
|
getEffectArtifact(key) {
|
|
257
299
|
const row = this.db
|
|
@@ -274,6 +316,46 @@ export class SqliteStore {
|
|
|
274
316
|
const row = this.db.prepare(`SELECT value FROM meta WHERE key = ?`).get(key);
|
|
275
317
|
return row?.value ?? null;
|
|
276
318
|
}
|
|
319
|
+
// ── indexing lifecycle (queued | backfilling | live | stale | failed) ────────
|
|
320
|
+
/**
|
|
321
|
+
* Read-modify-write so a caller can advance ONE field without knowing the rest: the watcher marks
|
|
322
|
+
* `stale` without touching `attempts`, a failure records the error without inventing a
|
|
323
|
+
* `lastIndexedAt`. Omitted = preserved, explicit `null` = cleared (the same rule the off-chain
|
|
324
|
+
* registration fields follow). Single writer per node, so a read-then-write is safe here.
|
|
325
|
+
*/
|
|
326
|
+
setIndexStatus(address, patch) {
|
|
327
|
+
const key = lc(address);
|
|
328
|
+
const prior = this.getIndexStatus(key);
|
|
329
|
+
const merged = {
|
|
330
|
+
address: key,
|
|
331
|
+
status: patch.status ?? prior?.status ?? 'queued',
|
|
332
|
+
errorClass: patch.error === undefined ? prior?.errorClass ?? null : patch.error === null ? null : patch.error.class,
|
|
333
|
+
errorMessage: patch.error === undefined ? prior?.errorMessage ?? null : patch.error === null ? null : patch.error.message ?? null,
|
|
334
|
+
attempts: patch.attempts ?? prior?.attempts ?? 0,
|
|
335
|
+
lastAttemptAt: patch.lastAttemptAt === undefined ? prior?.lastAttemptAt ?? null : patch.lastAttemptAt,
|
|
336
|
+
lastIndexedAt: patch.lastIndexedAt === undefined ? prior?.lastIndexedAt ?? null : patch.lastIndexedAt,
|
|
337
|
+
updatedAt: new Date().toISOString(),
|
|
338
|
+
};
|
|
339
|
+
this.db
|
|
340
|
+
.prepare(`INSERT INTO index_status (address, status, error_class, error_message, attempts, last_attempt_at, last_indexed_at, updated_at)
|
|
341
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
342
|
+
ON CONFLICT(address) DO UPDATE SET
|
|
343
|
+
status=excluded.status, error_class=excluded.error_class, error_message=excluded.error_message,
|
|
344
|
+
attempts=excluded.attempts, last_attempt_at=excluded.last_attempt_at,
|
|
345
|
+
last_indexed_at=excluded.last_indexed_at, updated_at=excluded.updated_at`)
|
|
346
|
+
.run(merged.address, merged.status, merged.errorClass ?? null, merged.errorMessage ?? null, merged.attempts, merged.lastAttemptAt ?? null, merged.lastIndexedAt ?? null, merged.updatedAt);
|
|
347
|
+
return merged;
|
|
348
|
+
}
|
|
349
|
+
getIndexStatus(address) {
|
|
350
|
+
const row = this.db.prepare(`SELECT * FROM index_status WHERE address = ?`).get(lc(address));
|
|
351
|
+
return row ? rowToIndexStatus(row) : null;
|
|
352
|
+
}
|
|
353
|
+
listIndexStatuses() {
|
|
354
|
+
return this.db
|
|
355
|
+
.prepare(`SELECT * FROM index_status`)
|
|
356
|
+
.all()
|
|
357
|
+
.map((r) => rowToIndexStatus(r));
|
|
358
|
+
}
|
|
277
359
|
// ── transient effect status (runner-reported observability; rebuildable) ─────
|
|
278
360
|
putEffectStatus(row) {
|
|
279
361
|
this.db
|
|
@@ -462,6 +544,19 @@ function rowToArtifact(row) {
|
|
|
462
544
|
inputsHash: row.inputs_hash,
|
|
463
545
|
contentType: row.content_type ?? null,
|
|
464
546
|
locator: row.locator ?? null,
|
|
547
|
+
bytes: row.bytes ?? null,
|
|
548
|
+
updatedAt: row.updated_at,
|
|
549
|
+
};
|
|
550
|
+
}
|
|
551
|
+
function rowToIndexStatus(row) {
|
|
552
|
+
return {
|
|
553
|
+
address: row.address,
|
|
554
|
+
status: row.status,
|
|
555
|
+
errorClass: row.error_class ?? null,
|
|
556
|
+
errorMessage: row.error_message ?? null,
|
|
557
|
+
attempts: row.attempts ?? 0,
|
|
558
|
+
lastAttemptAt: row.last_attempt_at ?? null,
|
|
559
|
+
lastIndexedAt: row.last_indexed_at ?? null,
|
|
465
560
|
updatedAt: row.updated_at,
|
|
466
561
|
};
|
|
467
562
|
}
|
package/dist/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@artblocks/abx-indexer",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.10",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "ABX Self-Host Toolkit (Layer 3) — the reference indexer. Replays the event spine from chain into a disposable, rebuildable projection. The canonical re-index.",
|
|
6
6
|
"type": "module",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"viem": "^2.21.0",
|
|
41
|
-
"@artblocks/abx-sdk": "0.1.0-alpha.
|
|
41
|
+
"@artblocks/abx-sdk": "0.1.0-alpha.9"
|
|
42
42
|
},
|
|
43
43
|
"scripts": {
|
|
44
44
|
"build": "tsc -b tsconfig.build.json"
|