@peerbit/document 15.0.4 → 15.0.6
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/src/program.d.ts +57 -0
- package/dist/src/program.d.ts.map +1 -1
- package/dist/src/program.js +75 -1
- package/dist/src/program.js.map +1 -1
- package/dist/src/search.d.ts +17 -0
- package/dist/src/search.d.ts.map +1 -1
- package/dist/src/search.js +56 -20
- package/dist/src/search.js.map +1 -1
- package/package.json +22 -22
- package/src/program.ts +91 -1
- package/src/search.ts +101 -78
package/dist/src/program.d.ts
CHANGED
|
@@ -160,6 +160,45 @@ export declare class Documents<T, I extends Record<string, any> = T extends Reco
|
|
|
160
160
|
private normalizeNativeModePutOptions;
|
|
161
161
|
private trackDocumentChangeListeners;
|
|
162
162
|
private getLocalIndexedContext;
|
|
163
|
+
/**
|
|
164
|
+
* The change-delivery variant of `getLocalIndexedContext`, and the ONLY caller
|
|
165
|
+
* allowed to treat a closed index as "no prior version".
|
|
166
|
+
*
|
|
167
|
+
* `getLocalIndexedContext` reaches the backing indexer directly, bypassing
|
|
168
|
+
* `DocumentIndex`'s guarded wrappers. `terminalChildOrder` now tears the index
|
|
169
|
+
* down after the log, but a change can still be delivered against a closed
|
|
170
|
+
* index on paths that do not go through that ordering: a `DocumentIndex` closed
|
|
171
|
+
* on its own rather than through its parent, and a log teardown that fails,
|
|
172
|
+
* which opens the rank gate without having drained. For a change that the log
|
|
173
|
+
* has ALREADY committed, "there is no prior version to compare against" is the
|
|
174
|
+
* right reading, and the write leg - which already returns without persisting
|
|
175
|
+
* once the index is closed, see `DocumentIndex.putWithContext` - drops it.
|
|
176
|
+
*
|
|
177
|
+
* WHY THIS IS NOT ON THE SHARED HELPER. It was, and that was wrong. The helper
|
|
178
|
+
* has five callers and only this one is a post-commit change:
|
|
179
|
+
*
|
|
180
|
+
* :2689 resolveCanPerformDeleteValue - feeds the user's canPerform policy
|
|
181
|
+
* :2794 _canAppend PUT - immutable-overwrite protection
|
|
182
|
+
* :2863 _canAppend DELETE - delete-history validation
|
|
183
|
+
* :3124 putCompatDocumentBackend - the user-initiated put() path
|
|
184
|
+
*
|
|
185
|
+
* Swallowing there is actively harmful rather than merely broad. On :3124 a
|
|
186
|
+
* put() against a closed index returned SUCCESS with the entry committed to the
|
|
187
|
+
* log and silently absent from the index - the exact log/index divergence this
|
|
188
|
+
* recovery exists to avoid, manufactured on the public write path with no error
|
|
189
|
+
* signal. On :2863 a swallowed read reads as "already deleted" and returns
|
|
190
|
+
* `assume ok`, turning a REJECT into an ALLOW for inbound remote deletes.
|
|
191
|
+
*
|
|
192
|
+
* Those callers must keep throwing: outside change delivery, a closed index is
|
|
193
|
+
* a caller error, not a state to paper over.
|
|
194
|
+
*/
|
|
195
|
+
private getLocalIndexedContextForChange;
|
|
196
|
+
/**
|
|
197
|
+
* Deliberately narrow: only `NotStartedError`, and only once the document index
|
|
198
|
+
* is actually closed. An indexer that breaks while the index is open still
|
|
199
|
+
* throws. Reachable only from `getLocalIndexedContextForChange`.
|
|
200
|
+
*/
|
|
201
|
+
private recoverClosedIndexContextRead;
|
|
163
202
|
private getNativeEntrySignerPublicKeys;
|
|
164
203
|
private getSharedLogNativeBackbone;
|
|
165
204
|
private getNativePreviousEntrySignerPublicKey;
|
|
@@ -178,6 +217,24 @@ export declare class Documents<T, I extends Record<string, any> = T extends Reco
|
|
|
178
217
|
private keepCache;
|
|
179
218
|
open(options: SetupOptions<T, I, D>): Promise<void>;
|
|
180
219
|
recover(): Promise<void>;
|
|
220
|
+
/**
|
|
221
|
+
* `Documents` owns two sub-programs: `log` (the source of changes) and
|
|
222
|
+
* `_index` (a view derived from it, backed by an indexer). `Program` tears
|
|
223
|
+
* children down concurrently by default, so nothing stopped
|
|
224
|
+
* `DocumentIndex.close()` -> `indexer.stop()` from completing while a
|
|
225
|
+
* `Log.joinRecursively()` was still in flight. That join calls `handleChanges`
|
|
226
|
+
* with an entry it has *already* committed to the log, and `handleChanges`
|
|
227
|
+
* reads the index (`getLocalIndexedContext`) before it writes - so the read hit
|
|
228
|
+
* an indexer in state "closed" and threw `NotStartedError` out of a join that
|
|
229
|
+
* had no business failing.
|
|
230
|
+
*
|
|
231
|
+
* Ranking the index behind the log fixes the ordering rather than the symptom:
|
|
232
|
+
* `SharedLog.close()` drains its in-flight receives and then closes the lower
|
|
233
|
+
* `Log`, so by the time the index is torn down no further change can be
|
|
234
|
+
* dispatched, and every change already committed to the log has been applied to
|
|
235
|
+
* the index. Nothing is dropped.
|
|
236
|
+
*/
|
|
237
|
+
protected terminalChildOrder(child: Program): number;
|
|
181
238
|
private _resolveEntry;
|
|
182
239
|
protected canAppend(entry: Entry<Operation>, reference?: {
|
|
183
240
|
document: T;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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"}
|
package/dist/src/program.js
CHANGED
|
@@ -995,6 +995,60 @@ let Documents = (() => {
|
|
|
995
995
|
shape: INDEX_CONTEXT_SHAPE,
|
|
996
996
|
});
|
|
997
997
|
}
|
|
998
|
+
/**
|
|
999
|
+
* The change-delivery variant of `getLocalIndexedContext`, and the ONLY caller
|
|
1000
|
+
* allowed to treat a closed index as "no prior version".
|
|
1001
|
+
*
|
|
1002
|
+
* `getLocalIndexedContext` reaches the backing indexer directly, bypassing
|
|
1003
|
+
* `DocumentIndex`'s guarded wrappers. `terminalChildOrder` now tears the index
|
|
1004
|
+
* down after the log, but a change can still be delivered against a closed
|
|
1005
|
+
* index on paths that do not go through that ordering: a `DocumentIndex` closed
|
|
1006
|
+
* on its own rather than through its parent, and a log teardown that fails,
|
|
1007
|
+
* which opens the rank gate without having drained. For a change that the log
|
|
1008
|
+
* has ALREADY committed, "there is no prior version to compare against" is the
|
|
1009
|
+
* right reading, and the write leg - which already returns without persisting
|
|
1010
|
+
* once the index is closed, see `DocumentIndex.putWithContext` - drops it.
|
|
1011
|
+
*
|
|
1012
|
+
* WHY THIS IS NOT ON THE SHARED HELPER. It was, and that was wrong. The helper
|
|
1013
|
+
* has five callers and only this one is a post-commit change:
|
|
1014
|
+
*
|
|
1015
|
+
* :2689 resolveCanPerformDeleteValue - feeds the user's canPerform policy
|
|
1016
|
+
* :2794 _canAppend PUT - immutable-overwrite protection
|
|
1017
|
+
* :2863 _canAppend DELETE - delete-history validation
|
|
1018
|
+
* :3124 putCompatDocumentBackend - the user-initiated put() path
|
|
1019
|
+
*
|
|
1020
|
+
* Swallowing there is actively harmful rather than merely broad. On :3124 a
|
|
1021
|
+
* put() against a closed index returned SUCCESS with the entry committed to the
|
|
1022
|
+
* log and silently absent from the index - the exact log/index divergence this
|
|
1023
|
+
* recovery exists to avoid, manufactured on the public write path with no error
|
|
1024
|
+
* signal. On :2863 a swallowed read reads as "already deleted" and returns
|
|
1025
|
+
* `assume ok`, turning a REJECT into an ALLOW for inbound remote deletes.
|
|
1026
|
+
*
|
|
1027
|
+
* Those callers must keep throwing: outside change delivery, a closed index is
|
|
1028
|
+
* a caller error, not a state to paper over.
|
|
1029
|
+
*/
|
|
1030
|
+
getLocalIndexedContextForChange(key) {
|
|
1031
|
+
try {
|
|
1032
|
+
const result = this.getLocalIndexedContext(key);
|
|
1033
|
+
return (isPromiseLike(result)
|
|
1034
|
+
? result.catch((error) => this.recoverClosedIndexContextRead(error))
|
|
1035
|
+
: result);
|
|
1036
|
+
}
|
|
1037
|
+
catch (error) {
|
|
1038
|
+
return this.recoverClosedIndexContextRead(error);
|
|
1039
|
+
}
|
|
1040
|
+
}
|
|
1041
|
+
/**
|
|
1042
|
+
* Deliberately narrow: only `NotStartedError`, and only once the document index
|
|
1043
|
+
* is actually closed. An indexer that breaks while the index is open still
|
|
1044
|
+
* throws. Reachable only from `getLocalIndexedContextForChange`.
|
|
1045
|
+
*/
|
|
1046
|
+
recoverClosedIndexContextRead(error) {
|
|
1047
|
+
if (error instanceof indexerTypes.NotStartedError && this._index.closed) {
|
|
1048
|
+
return undefined;
|
|
1049
|
+
}
|
|
1050
|
+
throw error;
|
|
1051
|
+
}
|
|
998
1052
|
getNativeEntrySignerPublicKeys(hashes) {
|
|
999
1053
|
if (hashes.length === 0) {
|
|
1000
1054
|
return [];
|
|
@@ -1287,6 +1341,26 @@ let Documents = (() => {
|
|
|
1287
1341
|
async recover() {
|
|
1288
1342
|
return this.log.recover();
|
|
1289
1343
|
}
|
|
1344
|
+
/**
|
|
1345
|
+
* `Documents` owns two sub-programs: `log` (the source of changes) and
|
|
1346
|
+
* `_index` (a view derived from it, backed by an indexer). `Program` tears
|
|
1347
|
+
* children down concurrently by default, so nothing stopped
|
|
1348
|
+
* `DocumentIndex.close()` -> `indexer.stop()` from completing while a
|
|
1349
|
+
* `Log.joinRecursively()` was still in flight. That join calls `handleChanges`
|
|
1350
|
+
* with an entry it has *already* committed to the log, and `handleChanges`
|
|
1351
|
+
* reads the index (`getLocalIndexedContext`) before it writes - so the read hit
|
|
1352
|
+
* an indexer in state "closed" and threw `NotStartedError` out of a join that
|
|
1353
|
+
* had no business failing.
|
|
1354
|
+
*
|
|
1355
|
+
* Ranking the index behind the log fixes the ordering rather than the symptom:
|
|
1356
|
+
* `SharedLog.close()` drains its in-flight receives and then closes the lower
|
|
1357
|
+
* `Log`, so by the time the index is torn down no further change can be
|
|
1358
|
+
* dispatched, and every change already committed to the log has been applied to
|
|
1359
|
+
* the index. Nothing is dropped.
|
|
1360
|
+
*/
|
|
1361
|
+
terminalChildOrder(child) {
|
|
1362
|
+
return child === this._index ? 1 : 0;
|
|
1363
|
+
}
|
|
1290
1364
|
async _resolveEntry(history, options) {
|
|
1291
1365
|
return typeof history === "string"
|
|
1292
1366
|
? (await this.log.log.get(history, options)) ||
|
|
@@ -3334,7 +3408,7 @@ let Documents = (() => {
|
|
|
3334
3408
|
? reference.existing
|
|
3335
3409
|
: this.isNativeMode()
|
|
3336
3410
|
? this.getNativeModeIndexedContext(key) || null
|
|
3337
|
-
: (await this.
|
|
3411
|
+
: (await this.getLocalIndexedContextForChange(key)) || null;
|
|
3338
3412
|
if (!this.strictHistory && existing) {
|
|
3339
3413
|
// if immutable use oldest, else use newest
|
|
3340
3414
|
let shouldIgnoreChange = this.immutable
|