@peerbit/indexer-interface 3.0.12 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import type { AbstractType } from "@dao-xyz/borsh";
|
|
2
|
-
import { type IdKey } from "./id.js";
|
|
2
|
+
import { type IdKey, type IdPrimitive } from "./id.js";
|
|
3
3
|
import type { QueryLike, Sort } from "./query.js";
|
|
4
4
|
type MaybePromise<T = void> = Promise<T> | T;
|
|
5
|
+
export type CrashSafeIndexDurability = {
|
|
6
|
+
readonly crashSafe: true;
|
|
7
|
+
barrier(): MaybePromise<void>;
|
|
8
|
+
};
|
|
5
9
|
export interface IndexedResult<T extends Record<string, any> = Record<string, any>> {
|
|
6
10
|
id: IdKey;
|
|
7
11
|
value: T;
|
|
@@ -75,6 +79,44 @@ export type IndexIterator<T extends Record<string, any>, S extends Shape | undef
|
|
|
75
79
|
*/
|
|
76
80
|
markYielded?: (ids: Iterable<IdKey>) => MaybePromise<void>;
|
|
77
81
|
};
|
|
82
|
+
export type IndexKeyScanOptions = {
|
|
83
|
+
/** Positive integer, at most 4096. Fixed for the lifetime of the scan. */
|
|
84
|
+
pageSize: number;
|
|
85
|
+
signal?: AbortSignal;
|
|
86
|
+
};
|
|
87
|
+
export type IndexKeyScanPage = {
|
|
88
|
+
status: "more" | "complete";
|
|
89
|
+
keys: IdPrimitive[];
|
|
90
|
+
} | {
|
|
91
|
+
status: "invalidated" | "closed" | "aborted" | "failed";
|
|
92
|
+
keys: [];
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Fresh, unfiltered inventory of one backend owner's canonical key primitives.
|
|
96
|
+
* These are membership/equality keys, not typed IdKey.key values: byte keys may
|
|
97
|
+
* be normalized to strings. Encoding and order are not portable across engines.
|
|
98
|
+
* No document values, queries, cached results or durable completeness are implied.
|
|
99
|
+
*
|
|
100
|
+
* Await next calls serially. Pages are provisional until `complete`: mutations
|
|
101
|
+
* (including replacements and possibly failed/no-op attempts) or lifecycle
|
|
102
|
+
* changes invalidate a scan. Starting during admitted mutation returns an
|
|
103
|
+
* invalidated scan without waiting. A completed inventory describes membership
|
|
104
|
+
* only at its completion point, NOT a lease protecting subsequent async work.
|
|
105
|
+
* Direct changes outside the backend owner's supported methods are not covered.
|
|
106
|
+
*
|
|
107
|
+
* Additional cursor state is bounded independently of row count; only one page
|
|
108
|
+
* is collected per next call. This bounds item count, not key sizes or caller
|
|
109
|
+
* retention. An idle cursor may keep its backing storage alive after lifecycle
|
|
110
|
+
* replacement. No all/pending operation or fallback to query iteration is allowed.
|
|
111
|
+
* Call close when abandoning a scan; abort also releases its cursor resources.
|
|
112
|
+
* Terminal results are sticky and subsequent calls return no keys. Unexpected
|
|
113
|
+
* errors release resources and are rethrown unchanged; later next calls fail
|
|
114
|
+
* closed with status `failed`.
|
|
115
|
+
*/
|
|
116
|
+
export interface IndexKeyScan {
|
|
117
|
+
next(): MaybePromise<IndexKeyScanPage>;
|
|
118
|
+
close(): MaybePromise<void>;
|
|
119
|
+
}
|
|
78
120
|
/**
|
|
79
121
|
* Public data APIs require an open index and should throw NotStartedError after
|
|
80
122
|
* the index is fully stopped. Implementations may return neutral results only
|
|
@@ -114,8 +156,15 @@ export interface Index<T extends Record<string, any>, NestedType = any> {
|
|
|
114
156
|
shape?: S;
|
|
115
157
|
reference?: boolean;
|
|
116
158
|
}): IndexIterator<T, S>;
|
|
159
|
+
/**
|
|
160
|
+
* Optional origin-owned key inventory, independent of ordinary query iterator
|
|
161
|
+
* consistency. Absence means unsupported; callers must not emulate it using
|
|
162
|
+
* iterate(). Creation requires an open owner and validates the page bound.
|
|
163
|
+
*/
|
|
164
|
+
scanKeyPrimitives?(options: IndexKeyScanOptions): IndexKeyScan;
|
|
117
165
|
getSize(): MaybePromise<number>;
|
|
118
166
|
persisted(): MaybePromise<boolean>;
|
|
167
|
+
readonly crashSafeDurability?: CrashSafeIndexDurability;
|
|
119
168
|
start(): MaybePromise<void>;
|
|
120
169
|
stop(): MaybePromise<void>;
|
|
121
170
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-engine.d.ts","sourceRoot":"","sources":["../../src/index-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index-engine.d.ts","sourceRoot":"","sources":["../../src/index-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-engine.js","sourceRoot":"","sources":["../../src/index-engine.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"index-engine.js","sourceRoot":"","sources":["../../src/index-engine.ts"],"names":[],"mappings":"AACA,OAAO,EAAgC,MAAM,SAAS,CAAC;AA4OvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAI/B,GAAG,SAAgC,EACb,EAAE;IACxB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC;IACzC,IAAI,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;QACpC,IAAI,GAAG,GAA8C,EAAE,CAAC;QACxD,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAElB,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBACpB,CAAC,EAAE,CAAC;gBACJ,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;oBAC3B,MAAM;gBACP,CAAC;gBACD,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC;YAED,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM;YACP,CAAC;QACF,CAAC;QAED,OAAO,GAAG,CAAC;IACZ,CAAC,CAAC;IACF,OAAO;QACN,IAAI;QACJ,IAAI;QACJ,KAAK,EAAE,KAAK,IAAI,EAAE;YACjB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBAClC,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;YACxB,CAAC;QACF,CAAC;QACD,GAAG,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,OAAO,GAAG,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChB,KAAK,MAAM,OAAO,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvB,CAAC;YACF,CAAC;YACD,OAAO,OAAO,CAAC;QAChB,CAAC;QACD,OAAO,EAAE,KAAK,IAAI,EAAE;YACnB,IAAI,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAC/C,CAAC;YACF,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC;KACD,CAAC;AACH,CAAC,CAAC;AAiBF;;;;;;;;;;;;;;;;;;;;;gIAqBgI"}
|
package/package.json
CHANGED
package/src/index-engine.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import type { AbstractType } from "@dao-xyz/borsh";
|
|
2
|
-
import { type IdKey } from "./id.js";
|
|
2
|
+
import { type IdKey, type IdPrimitive } from "./id.js";
|
|
3
3
|
import type { QueryLike, Sort } from "./query.js";
|
|
4
4
|
|
|
5
5
|
type MaybePromise<T = void> = Promise<T> | T;
|
|
6
|
+
export type CrashSafeIndexDurability = {
|
|
7
|
+
readonly crashSafe: true;
|
|
8
|
+
barrier(): MaybePromise<void>;
|
|
9
|
+
};
|
|
6
10
|
|
|
7
11
|
export interface IndexedResult<
|
|
8
12
|
T extends Record<string, any> = Record<string, any>,
|
|
@@ -114,6 +118,46 @@ export type IndexIterator<
|
|
|
114
118
|
markYielded?: (ids: Iterable<IdKey>) => MaybePromise<void>;
|
|
115
119
|
};
|
|
116
120
|
|
|
121
|
+
export type IndexKeyScanOptions = {
|
|
122
|
+
/** Positive integer, at most 4096. Fixed for the lifetime of the scan. */
|
|
123
|
+
pageSize: number;
|
|
124
|
+
signal?: AbortSignal;
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
export type IndexKeyScanPage =
|
|
128
|
+
| { status: "more" | "complete"; keys: IdPrimitive[] }
|
|
129
|
+
| {
|
|
130
|
+
status: "invalidated" | "closed" | "aborted" | "failed";
|
|
131
|
+
keys: [];
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Fresh, unfiltered inventory of one backend owner's canonical key primitives.
|
|
136
|
+
* These are membership/equality keys, not typed IdKey.key values: byte keys may
|
|
137
|
+
* be normalized to strings. Encoding and order are not portable across engines.
|
|
138
|
+
* No document values, queries, cached results or durable completeness are implied.
|
|
139
|
+
*
|
|
140
|
+
* Await next calls serially. Pages are provisional until `complete`: mutations
|
|
141
|
+
* (including replacements and possibly failed/no-op attempts) or lifecycle
|
|
142
|
+
* changes invalidate a scan. Starting during admitted mutation returns an
|
|
143
|
+
* invalidated scan without waiting. A completed inventory describes membership
|
|
144
|
+
* only at its completion point, NOT a lease protecting subsequent async work.
|
|
145
|
+
* Direct changes outside the backend owner's supported methods are not covered.
|
|
146
|
+
*
|
|
147
|
+
* Additional cursor state is bounded independently of row count; only one page
|
|
148
|
+
* is collected per next call. This bounds item count, not key sizes or caller
|
|
149
|
+
* retention. An idle cursor may keep its backing storage alive after lifecycle
|
|
150
|
+
* replacement. No all/pending operation or fallback to query iteration is allowed.
|
|
151
|
+
* Call close when abandoning a scan; abort also releases its cursor resources.
|
|
152
|
+
* Terminal results are sticky and subsequent calls return no keys. Unexpected
|
|
153
|
+
* errors release resources and are rethrown unchanged; later next calls fail
|
|
154
|
+
* closed with status `failed`.
|
|
155
|
+
*/
|
|
156
|
+
export interface IndexKeyScan {
|
|
157
|
+
next(): MaybePromise<IndexKeyScanPage>;
|
|
158
|
+
close(): MaybePromise<void>;
|
|
159
|
+
}
|
|
160
|
+
|
|
117
161
|
/**
|
|
118
162
|
* Public data APIs require an open index and should throw NotStartedError after
|
|
119
163
|
* the index is fully stopped. Implementations may return neutral results only
|
|
@@ -162,8 +206,15 @@ export interface Index<T extends Record<string, any>, NestedType = any> {
|
|
|
162
206
|
request?: IterateOptions,
|
|
163
207
|
options?: { shape?: S; reference?: boolean },
|
|
164
208
|
): IndexIterator<T, S>;
|
|
209
|
+
/**
|
|
210
|
+
* Optional origin-owned key inventory, independent of ordinary query iterator
|
|
211
|
+
* consistency. Absence means unsupported; callers must not emulate it using
|
|
212
|
+
* iterate(). Creation requires an open owner and validates the page bound.
|
|
213
|
+
*/
|
|
214
|
+
scanKeyPrimitives?(options: IndexKeyScanOptions): IndexKeyScan;
|
|
165
215
|
getSize(): MaybePromise<number>;
|
|
166
216
|
persisted(): MaybePromise<boolean>;
|
|
217
|
+
readonly crashSafeDurability?: CrashSafeIndexDurability;
|
|
167
218
|
start(): MaybePromise<void>;
|
|
168
219
|
stop(): MaybePromise<void>;
|
|
169
220
|
}
|