@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":"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"}
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,EAAc,MAAM,SAAS,CAAC;AA8LrC,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"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/indexer-interface",
3
- "version": "3.0.13",
3
+ "version": "3.1.0",
4
4
  "description": "Indexer store interface",
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -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;