@peerbit/indexer-interface 3.0.13 → 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,5 +1,5 @@
|
|
|
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
5
|
export type CrashSafeIndexDurability = {
|
|
@@ -79,6 +79,44 @@ export type IndexIterator<T extends Record<string, any>, S extends Shape | undef
|
|
|
79
79
|
*/
|
|
80
80
|
markYielded?: (ids: Iterable<IdKey>) => MaybePromise<void>;
|
|
81
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
|
+
}
|
|
82
120
|
/**
|
|
83
121
|
* Public data APIs require an open index and should throw NotStartedError after
|
|
84
122
|
* the index is fully stopped. Implementations may return neutral results only
|
|
@@ -118,6 +156,12 @@ export interface Index<T extends Record<string, any>, NestedType = any> {
|
|
|
118
156
|
shape?: S;
|
|
119
157
|
reference?: boolean;
|
|
120
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;
|
|
121
165
|
getSize(): MaybePromise<number>;
|
|
122
166
|
persisted(): MaybePromise<boolean>;
|
|
123
167
|
readonly crashSafeDurability?: CrashSafeIndexDurability;
|
|
@@ -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":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElD,KAAK,YAAY,CAAC,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7C,MAAM,MAAM,wBAAwB,GAAG;IACtC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,WAAW,aAAa,CAC7B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAEnD,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,CAAC,CAAC;CACT;AAED,MAAM,MAAM,cAAc,CACzB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAChD,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;AAEvB,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACpD,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,CAAC,CAAC;CACT;AAED,MAAM,WAAW,cAAc;IAC9B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC;IACrB;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IACjC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;CAC9E,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AACF,MAAM,MAAM,yBAAyB,CAAC,CAAC,EAAE,CAAC,IAAI;IAC7C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;CAExB,CAAC;AAYF,MAAM,MAAM,KAAK,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,EAAE,CAAA;CAAE,CAAC;AAE9D,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,GAC5C,GAAG,GACH,CAAC,SAAS,KAAK,EAAE,GAChB,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAC5B,CAAC,SAAS,KAAK,GACd;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACzC,KAAK,CAAC;AAEX,MAAM,MAAM,mBAAmB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,GACpD,eAAe,CAAC,CAAC,CAAC,GAClB,CAAC,CAAC;AAEL,MAAM,MAAM,aAAa,CACxB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,CAAC,SAAS,KAAK,GAAG,SAAS,IACxB;IACH,IAAI,EAAE,CACL,MAAM,EAAE,MAAM,KACV,YAAY,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,GAAG,EAAE,MAAM,YAAY,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,IAAI,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,KAAK,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GACzB;IAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;IAAC,IAAI,EAAE,WAAW,EAAE,CAAA;CAAE,GACpD;IACA,MAAM,EAAE,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACxD,IAAI,EAAE,EAAE,CAAC;CACR,CAAC;AAEL;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,YAAY;IAC5B,IAAI,IAAI,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACvC,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,GAAG;IACrE,IAAI,CACH,UAAU,EAAE,yBAAyB,CAAC,CAAC,EAAE,UAAU,CAAC,GAClD,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IACtC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3B,GAAG,CACF,EAAE,EAAE,KAAK,EACT,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,GACxB,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC9C,GAAG,CACF,KAAK,EAAE,CAAC,EACR,EAAE,CAAC,EAAE,KAAK,EACV,OAAO,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,OAAO,CAAC;KAClB,GACC,YAAY,CAAC,IAAI,CAAC,CAAC;IACtB,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3C;;;;;;;;;;;;;;;OAeG;IACH,uBAAuB,CAAC,CAAC,CAAC,EACzB,SAAS,EAAE,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,GAClE,YAAY,CAAC,CAAC,CAAC,CAAC;IACnB,GAAG,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;IACjD,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACtD,KAAK,CAAC,KAAK,CAAC,EAAE,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,CAAC,CAAC,SAAS,KAAK,GAAG,SAAS,GAAG,SAAS,EAC9C,OAAO,CAAC,EAAE,cAAc,EACxB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAC1C,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB;;;;OAIG;IACH,iBAAiB,CAAC,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAAC;IAC/D,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IAChC,SAAS,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,wBAAwB,CAAC;IACxD,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACtE,GAAG,CACF,EAAE,EAAE,KAAK,EACT,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,GACxB,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC9C,GAAG,CACF,KAAK,EAAE,CAAC,EACR,EAAE,CAAC,EAAE,KAAK,EACV,OAAO,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,OAAO,CAAC;KAClB,GACC,YAAY,CAAC,IAAI,CAAC,CAAC;IACtB,yEAAyE;IACzE,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,eAAO,MAAM,gBAAgB,GAC5B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,CAAC,SAAS,KAAK,GAAG,SAAS,EAE3B,GAAG,WAAW,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KACjC,aAAa,CAAC,CAAC,EAAE,CAAC,CAiDpB,CAAC;AAEF,MAAM,WAAW,OAAO;IACvB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,EAC7C,UAAU,EAAE,yBAAyB,CAAC,CAAC,EAAE,UAAU,CAAC,GAClD,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAC3C,SAAS,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC;;yDAEqD;IACrD,mBAAmB,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;CAC3B"}
|
|
@@ -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,5 +1,5 @@
|
|
|
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;
|
|
@@ -118,6 +118,46 @@ export type IndexIterator<
|
|
|
118
118
|
markYielded?: (ids: Iterable<IdKey>) => MaybePromise<void>;
|
|
119
119
|
};
|
|
120
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
|
+
|
|
121
161
|
/**
|
|
122
162
|
* Public data APIs require an open index and should throw NotStartedError after
|
|
123
163
|
* the index is fully stopped. Implementations may return neutral results only
|
|
@@ -166,6 +206,12 @@ export interface Index<T extends Record<string, any>, NestedType = any> {
|
|
|
166
206
|
request?: IterateOptions,
|
|
167
207
|
options?: { shape?: S; reference?: boolean },
|
|
168
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;
|
|
169
215
|
getSize(): MaybePromise<number>;
|
|
170
216
|
persisted(): MaybePromise<boolean>;
|
|
171
217
|
readonly crashSafeDurability?: CrashSafeIndexDurability;
|