@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.
@@ -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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"}
@@ -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.getLocalIndexedContext(key)) || null;
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