@peerbit/document 12.0.2 → 12.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.
@@ -12,6 +12,19 @@ export declare class OperationError extends Error {
12
12
  constructor(message?: string);
13
13
  }
14
14
  type MaybePromise<T> = Promise<T> | T;
15
+ export type CountEstimate = {
16
+ estimate: number;
17
+ /**
18
+ * Relative error margin (0..1), where e.g. `0.1` means ~±10%.
19
+ *
20
+ * Only non-`undefined` when the replication domain is expected to be uniformly
21
+ * distributed (currently: `domain.type === "hash"`), and when there is
22
+ * sufficient local sample information to compute it.
23
+ *
24
+ * When `undefined`, the caller should treat `estimate` as unreliable.
25
+ */
26
+ errorMargin: number | undefined;
27
+ };
15
28
  type CanPerformPut<T> = {
16
29
  type: "put";
17
30
  value: T;
@@ -98,12 +111,22 @@ export declare class Documents<T, I extends Record<string, any> = T extends Reco
98
111
  operation: PutOperation;
99
112
  unique?: boolean;
100
113
  }): Promise<void>;
114
+ /**
115
+ * Count documents locally (default), or estimate the global count.
116
+ *
117
+ * - `count()` / `count({ query })`: exact local count from the index.
118
+ * - `count({ approximate: true })`: estimated global count from replication metadata (no remote queries) + error margin when available.
119
+ */
101
120
  count(options?: {
121
+ query?: indexerTypes.Query | indexerTypes.QueryLike;
122
+ approximate?: false | undefined;
123
+ }): Promise<number>;
124
+ count(options: {
102
125
  query?: indexerTypes.Query | indexerTypes.QueryLike;
103
126
  approximate: true | {
104
127
  scope?: ReachScope;
105
128
  };
106
- }): Promise<number>;
129
+ }): Promise<CountEstimate>;
107
130
  }
108
131
  export {};
109
132
  //# sourceMappingURL=program.d.ts.map
@@ -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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"}
@@ -597,38 +597,73 @@ let Documents = (() => {
597
597
  }
598
598
  this.events.dispatchEvent(new CustomEvent("change", { detail: documentsChanged }));
599
599
  }
600
- // approximate the amount of documents that exists globally
601
600
  async count(options) {
602
- let isReplicating = await this.log.isReplicating();
601
+ // Local/exact count
602
+ if (!options?.approximate) {
603
+ return this.index.index.count({ query: options?.query });
604
+ }
605
+ const indexedDocumentsCount = await this.index.index.count({
606
+ query: options?.query,
607
+ });
608
+ const fallbackToLocal = () => ({
609
+ estimate: indexedDocumentsCount,
610
+ errorMargin: undefined,
611
+ });
612
+ const isReplicating = await this.log.isReplicating();
603
613
  if (!isReplicating) {
604
- // fetch a subset of posts
605
- const iterator = this.index.iterate({ query: options?.query }, {
606
- remote: {
607
- reach: typeof options?.approximate === "object"
608
- ? options?.approximate.scope
609
- : undefined,
610
- },
611
- resolve: false,
612
- });
613
- const one = await iterator.next(1);
614
- const left = (await iterator.pending()) ?? 0;
615
- await iterator.close();
616
- return one.length + left;
614
+ return fallbackToLocal();
615
+ }
616
+ const myTotalParticipation = await this.log.calculateMyTotalParticipation();
617
+ const minReplicasValue = this.log.replicas.min.getValue(this.log);
618
+ const pRaw = minReplicasValue * myTotalParticipation;
619
+ const inclusionProbability = Math.min(1, pRaw);
620
+ if (!Number.isFinite(inclusionProbability) ||
621
+ inclusionProbability <= 0 ||
622
+ inclusionProbability > 1) {
623
+ return fallbackToLocal();
617
624
  }
618
- let totalHeadCount = await this.log.countHeads({ approximate: true }); /* -
619
- (this.keepCache?.size || 0); TODO adjust for keep fn */
620
- let totalAssignedHeads = await this.log.countAssignedHeads({
625
+ const scaleFactor = inclusionProbability >= 1 ? 1 : 1 / inclusionProbability; // same saturation as SharedLog.countHeads
626
+ if (!Number.isFinite(scaleFactor) ||
627
+ scaleFactor > Number.MAX_SAFE_INTEGER) {
628
+ return fallbackToLocal();
629
+ }
630
+ // heads strictly assigned to us (sample size for the head-count estimator)
631
+ const ownedHeadCount = await this.log.countAssignedHeads({ strict: true });
632
+ // heads we have in our index (includes boundary assignments)
633
+ const totalAssignedHeads = await this.log.countAssignedHeads({
621
634
  strict: false,
622
635
  });
623
- let indexedDocumentsCount = await this.index.index.count({
624
- query: options?.query,
625
- });
626
- if (totalAssignedHeads == 0) {
627
- return indexedDocumentsCount; // TODO is this really expected?
636
+ if (totalAssignedHeads === 0) {
637
+ return fallbackToLocal();
628
638
  }
639
+ const totalHeadCount = Math.round(ownedHeadCount * scaleFactor);
629
640
  const nonDeletedDocumentsRatio = indexedDocumentsCount / totalAssignedHeads; // [0, 1]
630
- let expectedAmountOfDocuments = totalHeadCount * nonDeletedDocumentsRatio; // if total heads count is 100 and 80% is actual documents, then 80 pieces of non-deleted documents should exist
631
- return Math.round(expectedAmountOfDocuments);
641
+ const expectedAmountOfDocuments = totalHeadCount * nonDeletedDocumentsRatio;
642
+ if (!Number.isFinite(expectedAmountOfDocuments) ||
643
+ expectedAmountOfDocuments > Number.MAX_SAFE_INTEGER) {
644
+ return fallbackToLocal();
645
+ }
646
+ const estimate = Math.round(expectedAmountOfDocuments);
647
+ if (!Number.isFinite(estimate) || estimate > Number.MAX_SAFE_INTEGER) {
648
+ return fallbackToLocal();
649
+ }
650
+ const domainType = this.log.domain?.type;
651
+ const canProvideErrorMargin = domainType === "hash" && ownedHeadCount > 0 && indexedDocumentsCount > 0;
652
+ let errorMargin = undefined;
653
+ if (canProvideErrorMargin) {
654
+ // 95% relative margin for the scaled head-count estimator
655
+ const headMargin = 1.96 * Math.sqrt((1 - inclusionProbability) / ownedHeadCount);
656
+ // 95% relative margin for the ratio estimator (docs among assigned heads)
657
+ const rHat = nonDeletedDocumentsRatio;
658
+ const ratioMargin = rHat > 0 && rHat < 1
659
+ ? 1.96 * Math.sqrt((1 - rHat) / (rHat * totalAssignedHeads))
660
+ : 0;
661
+ const combined = Math.sqrt(headMargin * headMargin + ratioMargin * ratioMargin);
662
+ if (Number.isFinite(combined)) {
663
+ errorMargin = Math.min(1, Math.max(0, combined));
664
+ }
665
+ }
666
+ return { estimate, errorMargin };
632
667
  }
633
668
  };
634
669
  return Documents = _classThis;
@@ -1 +1 @@
1
- {"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAEN,UAAU,EACV,KAAK,EACL,SAAS,EACT,OAAO,GACP,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEhF,OAAO,KAAK,YAAY,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAEN,KAAK,EACL,SAAS,GAGT,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAsB,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAIN,SAAS,GAET,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EACN,wBAAwB,EACxB,eAAe,EAEf,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAGN,aAAa,EAKb,iBAAiB,EACjB,iBAAiB,GACjB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,GAAG,QAAQ,CAAC,0BAA0B,CAAC,CAAC;AACpD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAErC,MAAM,OAAO,cAAe,SAAQ,KAAK;IACxC,YAAY,OAAgB;QAC3B,KAAK,CAAC,OAAO,CAAC,CAAC;IAChB,CAAC;CACD;IAgEY,SAAS;4BADrB,OAAO,CAAC,WAAW,CAAC;;;;sBAKX,OAAO;;;;;;;;;;yBAAf,SAAQ,WAAoE;;;;+BAC5E,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;qCAG1B,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kCAGvB,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;YAL/B,2JAAA,GAAG,6BAAH,GAAG,iFAAqC;YAGxC,6KAAA,SAAS,6BAAT,SAAS,6FAAU;YAGnB,oKAAQ,MAAM,6BAAN,MAAM,uFAAyB;YAZxC,6KA+sBC;;;YA/sBY,uDAAS;;QAMrB,GAAG,sDAAqC;QAGxC,SAAS,+GAAU,CAAC,gCAAgC;QAG5C,MAAM,kHAAyB;QAE/B,MAAM,sDAAmB;QAEzB,iBAAiB,CAAiB;QAClC,UAAU,CAA0C;QACpD,MAAM,CAAmC;QACzC,aAAa,CAAU;QAC/B,OAAO,CAA8C;QAErD,aAAa,CAAoB;QAEjC,YAAY,UAIX;YACA,KAAK,EAAE,CAAC;YAER,IAAI,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,GAAG,UAAU,EAAE,SAAS,IAAI,KAAK,CAAC;YAChD,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE,KAAK,IAAI,IAAI,aAAa,EAAE,CAAC;QACxD,CAAC;QAED,IAAI,KAAK;YACR,OAAO,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;QAEO,KAAK,CAAC,mBAAmB,CAAC,KAAkB;YACnD,IAAI,MAAM,IAAI,CAAC,OAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;oBACnC,MAAM,EAAE,IAAyB;oBACjC,QAAQ,EAAE,OAAO;iBACjB,CAAC,CAAuB,CAAC,CAAC,aAAa;YACzC,CAAC;YAED,OAAO,KAAK,CAAC;QACd,CAAC;QACO,SAAS,GAA4B,SAAS,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,OAA8B;YACxC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAE/B,oBAAoB;YACpB,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CACd,2FAA2F,CAC3F,CAAC;gBACH,CAAC;YACF,CAAC;YAED,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;YAC5C,MAAM,UAAU,GACf,OAAO,CAAC,KAAK,EAAE,UAAU;gBACzB,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;gBACvC,IAAI,CAAC;YACN,MAAM,UAAU,GACf,OAAO,CAAC,EAAE;gBACV,CAAC,OAAO,UAAU,KAAK,QAAQ;oBAC9B,CAAC,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,UAAoB,CAAC;oBACzC,CAAC,CAAC,CAAC,GAAQ,EAAE,EAAE,CACb,YAAY,CAAC,iBAAiB,CAAC,GAAG,EAAE,UAAsB,CAAC,CAAC,CAAC;YAEjE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;YAC3C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC;YAEpD,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACtB,cAAc,EAAE,IAAI,CAAC,MAAM;gBAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO;gBAChC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS;gBACnC,YAAY,EAAE,IAAI,CAAC,MAAM;gBACzB,SAAS,EAAE,OAAO,CAAC,KAAK;gBACxB,OAAO,EAAE,UAAU;gBACnB,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK;gBAC5B,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBACnC,yDAAyD;oBAEzD,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC;oBAC/D,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAClB,OAAO,CAAC,OAAO;yBACb,IAAI,EAAE;yBACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACV,CAAC,YAAY,kBAAkB,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;wBACtD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;wBACd,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CACjB,EACF,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CACpD,CAAC;gBACH,CAAC;gBACD,MAAM,EAAE,IAAI,CAAC,WAAW;gBACxB,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9C,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ;gBACjC,cAAc,EAAE,OAAO,CAAC,KAAK,EAAE,cAAc;aAC7C,CAAC,CAAC;YAEH,8DAA8D;YAC9D,4CAA4C;YAC5C,IAAI,eAAe,GAAuB,SAAS,CAAC;YACpD,IAAI,OAAO,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;gBACjC,eAAe,GAAG,CAAC,CAAC;YACrB,CAAC;iBAAM,IAAI,OAAO,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;gBACxC,eAAe,GAAG,CAAC,CAAC;YACrB,CAAC;YAED,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;YAErC,IAAI,YAIQ,CAAC;YACb,IAAI,OAAO,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;gBAC3B,YAAY,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;oBAC1B,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;wBACjC,OAAO,IAAI,CAAC;oBACb,CAAC;oBACD,IAAI,UAAU,GAAmC,SAAS,CAAC;oBAC3D,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC;wBACxB,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;oBAC3B,CAAC;yBAAM,CAAC;wBACP,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;wBAC7C,UAAU,GAAG,KAAK,EAAE,UAAU,CAAC;oBAChC,CAAC;oBAED,IAAI,CAAC,UAAU,EAAE,CAAC;wBACjB,OAAO,KAAK,CAAC;oBACd,CAAC;oBAED,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;wBACpC,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;4BAC9D,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;4BAC5B,OAAO,IAAI,CAAC;wBACb,CAAC;oBACF,CAAC;oBACD,OAAO,KAAK,CAAC,CAAC,wBAAwB;gBACvC,CAAC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,YAAY,GAAG,OAAO,EAAE,IAAI,CAAC;YAC9B,CAAC;YAED,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBACnB,QAAQ,EAAE,wBAAwB;gBAClC,YAAY,EAAE,OAAO,EAAE,YAAY;gBACnC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBACpC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;gBACvC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI;gBACxB,SAAS,EAAE,OAAO,EAAE,SAAS;gBAC7B,QAAQ,EAAE,OAAO,EAAE,QAAQ;gBAC3B,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM;oBACvB,CAAC,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,MAAO,CAAC,IAAI,CAAC;oBACrC,CAAC,CAAC,SAAS,CAAQ,EAAE,eAAe;gBACrC,aAAa,EAAE,eAAe;gBAC9B,IAAI,EAAE,YAAY;aAClB,CAAC,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,OAAO;YACZ,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QAEO,KAAK,CAAC,aAAa,CAC1B,OAAkC,EAClC,OAOC;YAED,OAAO,OAAO,OAAO,KAAK,QAAQ;gBACjC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC1C,CAAC,MAAM,KAAK,CAAC,aAAa,CACzB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EACnB,OAAO,EACP,OAAO,CACP,CAAC;gBACJ,CAAC,CAAC,OAAO,CAAC;QACZ,CAAC;QAED,KAAK,CAAC,SAAS,CACd,KAAuB,EACvB,SAAoD;YAEpD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAyB,EAAE,SAAS,CAAC,CAAC;YACvE,IAAI,CAAC,EAAE,EAAE,CAAC;gBACT,OAAO,KAAK,CAAC;YACd,CAAC;YAED,IAAI,CAAC;gBACJ,IAAI,SAAS,GAAmC,EAAE,CAAC;gBACnD,IAAI,QAAQ,GAAkB,SAAS,EAAE,QAAQ,CAAC;gBAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACf,IAAI,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;wBACxB,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;wBACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACf,OAAO,KAAK,CAAC;wBACd,CAAC;oBACF,CAAC;yBAAM,IAAI,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;wBAClC,gCAAgC;wBAChC,mDAAmD;wBACnD,oCAAoC;oBACrC,CAAC;yBAAM,CAAC;wBACP,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;oBAC1C,CAAC;gBACF,CAAC;gBAED,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC5B,IACC,CAAC,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAC7B,cAAc,CAAC,SAAS,CAAC;wBACxB,CAAC,CAAC;4BACA,IAAI,EAAE,KAAK;4BACX,KAAK,EAAE,QAAS;4BAChB,SAAS;4BACT,KAAK,EAAE,KAAmC;yBAC1C;wBACF,CAAC,CAAC;4BACA,IAAI,EAAE,QAAQ;4BACd,SAAS;4BACT,KAAK,EAAE,KAAsC;yBAC7C,CACH,CAAC,EACD,CAAC;wBACF,OAAO,KAAK,CAAC;oBACd,CAAC;gBACF,CAAC;YACF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;oBACjC,IAAI,CAAC,sDAAsD,CAAC,CAAC;oBAC7D,OAAO,KAAK,CAAC;gBACd,CAAC;gBACD,MAAM,KAAK,CAAC;YACb,CAAC;YAED,OAAO,IAAI,CAAC;QACb,CAAC;QAED,KAAK,CAAC,UAAU,CACf,KAAuB,EACvB,SAAoD;YAEpD,MAAM,OAAO,GAAG,KAAK,EAAE,OAAkC,EAAE,EAAE;gBAC5D,OAAO,OAAO,OAAO,KAAK,QAAQ;oBACjC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;wBACzB,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBAC3D,CAAC,CAAC,OAAO,CAAC;YACZ,CAAC,CAAC;YACF,MAAM,eAAe,GAAG,KAAK,EAAE,OAAkC,EAAE,EAAE;gBACpE,wEAAwE;gBACxE,IAAI,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;gBAErC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChC,OACC,OAAO,EAAE,IAAI;oBACb,IAAI,KAAK,OAAO,EAAE,IAAI;oBACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAC3B,CAAC;oBACF,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,CAAC;gBACzD,CAAC;gBACD,IAAI,OAAO,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC;oBAC5B,OAAO,IAAI,CAAC,CAAC,sFAAsF;gBACpG,CAAC;gBACD,OAAO,KAAK,CAAC;YACd,CAAC,CAAC;YAEF,IAAI,CAAC;gBACJ,KAAK,CAAC,IAAI,CAAC;oBACV,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ;oBAC/B,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ;iBACrC,CAAC,CAAC;gBACH,MAAM,SAAS,GACd,SAAS,EAAE,SAAS;oBACpB;;6BAEM,CAAC,CAAC,MAAM,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,8EAA8E;gBACvH,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC/B,cAAc;oBACd,MAAM,YAAY,GAAG,SAAyB,CAAC;oBAC/C,IAAI,KAAK,GACR,SAAS,EAAE,QAAQ;wBACnB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBAExC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAExC,MAAM,gBAAgB,GAAG,CACxB,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;wBACjC,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,IAAI;wBACX,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK;qBACzD,CAAC,CACF,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;oBACnB,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;wBACtE,4HAA4H;wBAC5H,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;4BACpB,8CAA8C;4BAC9C,4DAA4D;4BAC5D,IACC,gBAAgB,CAAC,OAAO,CAAC,OAAO;gCAChC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAClC,CAAC;gCACF,OAAO,KAAK,CAAC;4BACd,CAAC;4BAED,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCAChC,OAAO,KAAK,CAAC,CAAC,uCAAuC;4BACtD,CAAC;4BAED,OAAO,YAAY,CAAC;wBACrB,CAAC;6BAAM,CAAC;4BACP,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gCACxB,6EAA6E;gCAC7E,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oCAClC,OAAO,KAAK,CAAC;gCACd,CAAC;gCAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAClD,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAC7B,CAAC;gCACF,IAAI,CAAC,SAAS,EAAE,CAAC;oCAChB,MAAM,CAAC,KAAK,CACX,mDAAmD;wCAClD,KAAK,CAAC,IAAI,CACX,CAAC;oCACF,OAAO,KAAK,CAAC;gCACd,CAAC;gCACD,MAAM,yBAAyB,GAC9B,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;gCAClC,OAAO,yBAAyB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;4BACzD,CAAC;iCAAM,CAAC;gCACP,OAAO,YAAY,CAAC;4BACrB,CAAC;wBACF,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,0DAA0D;wBAC1D,yDAAyD;wBACzD,6EAA6E;oBAC9E,CAAC;gBACF,CAAC;qBAAM,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;oBACzC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAClC,OAAO,KAAK,CAAC;oBACd,CAAC;oBACD,MAAM,gBAAgB,GAAG,CACxB,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE;wBAC3C,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,IAAI;wBACX,MAAM,EAAE,IAAI,CAAC,SAAS;qBACtB,CAAC,CACF,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;oBAEnB,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACvB,kBAAkB;wBAClB,OAAO,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY;oBACtD,CAAC;oBACD,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChE,IAAI,CAAC,GAAG,EAAE,CAAC;wBACV,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;wBAClD,OAAO,KAAK,CAAC;oBACd,CAAC;oBACD,IAAI,MAAM,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;wBAChC,mCAAmC;wBACnC,OAAO,qBAAqB,CAAC,SAAS,CAAC,CAAC;oBACzC,CAAC;oBACD,OAAO,KAAK,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACP,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBAC1C,CAAC;gBAED,OAAO,SAAS,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;oBAClC,OAAO,KAAK,CAAC,CAAC,2CAA2C;gBAC1D,CAAC;qBAAM,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;oBACxC,IAAI,CAAC,sDAAsD,CAAC,CAAC;oBAC7D,OAAO,KAAK,CAAC;gBACd,CAAC;gBACD,MAAM,KAAK,CAAC;YACb,CAAC;QACF,CAAC;QAEM,KAAK,CAAC,GAAG,CACf,GAAM,EACN,OAIC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAEtC,qBAAqB;YACrB,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAE/B,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,GAAG,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CACd,0BACC,GAAG,CAAC,MAAM,GAAG,IACd,gCAAgC,cAAc,GAAG,IAAI,KAAK,CAC1D,CAAC;YACH,CAAC;YAED,MAAM,gBAAgB,GAAG,OAAO,EAAE,MAAM;gBACvC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,CACA,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE;oBACvC,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,OAAO,EAAE,WAAW;wBAC3B,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;wBACnC,CAAC,CAAC,KAAK,EAAE,0CAA0C;iBACpD,CAAC,CACF,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YAErB,IAAI,SAA6C,CAAC;YAClD,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;gBAC9B,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAClC,SAAS,GAAG,IAAI,mBAAmB,CAAC;wBACnC,GAAG,EAAE,QAAQ;wBACb,IAAI,EAAE,GAAG;qBACT,CAAC,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACP,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;gBAClE,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,SAAS,GAAG,IAAI,YAAY,CAAC;oBAC5B,IAAI,EAAE,GAAG;iBACT,CAAC,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE;gBACjD,GAAG,OAAO;gBACV,IAAI,EAAE;oBACL,IAAI,EAAE,gBAAgB;wBACrB,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;wBAC3D,CAAC,CAAC,EAAE;oBACL,GAAG,OAAO,EAAE,IAAI;iBAChB;gBACD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;oBACpB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC5D,CAAC;gBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;oBACpB,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;gBACjE,CAAC;gBACD,SAAS,EAAE,OAAO,EAAE,SAAS;aAC7B,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO,QAAQ,CAAC;QACjB,CAAC;QAED,KAAK,CAAC,GAAG,CACR,EAAwB,EACxB,OAAwC;YAExC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClC,MAAM,QAAQ,GAAG,CAChB,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE;gBAClC,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;aACzC,CAAC,CACF,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YAEnB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACf,MAAM,IAAI,aAAa,CACtB,sBAAsB,GAAG,CAAC,SAAS,mBAAmB,CACtD,CAAC;YACH,CAAC;YAED,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE;gBAC7D,MAAM,EAAE,IAAI;aACZ,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CACrB,IAAI,eAAe,CAAC;gBACnB,GAAG;aACH,CAAC,EACF;gBACC,GAAG,OAAO;gBACV,IAAI,EAAE;oBACL,IAAI,EAAE,CAAC,KAAK,CAAC;oBACb,IAAI,EAAE,SAAS,CAAC,GAAG;oBACnB,GAAG,OAAO,EAAE,IAAI;iBAChB;aACD,CACD,CAAC;QACH,CAAC;QAED,KAAK,CAAC,aAAa,CAClB,MAAyB,EACzB,SAAsE;YAEtE,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,iBAAiB,GACtB,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACxD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyC,CAAC;YAEpE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAChC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC3B,CAAC;YAED,MAAM,aAAa,GAAG;gBACrB,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;gBACnC,GAAG,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CACrB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACxB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAC5D,CACD,CAAC,IAAI,EAAE,CAAC;aACT,CAAC,CAAC,sBAAsB;YACzB;;yEAEoD;YAEpD,uIAAuI;YACvI,oIAAoI;YAEpI,IAAI,gBAAgB,GAA0B;gBAC7C,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE,EAAE;aACX,CAAC;YAEF,IAAI,QAAQ,GAAkC,IAAI,GAAG,EAAE,CAAC;YACxD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBAClC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACX,SAAS;gBACV,CAAC;gBAED,IAAI,CAAC;oBACJ,MAAM,OAAO;oBACZ;;6BAEM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,8EAA8E;oBAEpH,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC3D,IAAI,KAAK,GACR,CAAC,iBAAiB;4BACjB,SAAS,EAAE,SAAS,KAAK,OAAO;4BAChC,SAAS,EAAE,QAAQ,CAAC;4BACrB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;wBAEhD,2BAA2B;wBAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;wBACzC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBAEzC,qDAAqD;wBACrD,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;4BACjC,SAAS;wBACV,CAAC;wBAED,8DAA8D;wBAC9D,IAAI,QAAQ,GAAG,SAAS,EAAE,MAAM;4BAC/B,CAAC,CAAC,IAAI;4BACN,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;wBAC9C,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,QAAQ,EAAE,CAAC;4BACrC,2CAA2C;4BAC3C,IAAI,kBAAkB,GAAG,IAAI,CAAC,SAAS;gCACtC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ;oCAClC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ;gCACnC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ;oCAClC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;4BACrC,IAAI,kBAAkB,EAAE,CAAC;gCACxB,SAAS;4BACV,CAAC;wBACF,CAAC;wBAED,mBAAmB;wBACnB,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;4BAC9B,2BAA2B;4BAC3B,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;wBAC/C,CAAC;wBACD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CACnD,KAAK,EACL,GAAG,EACH,IAAI,EACJ,QAAQ,CACR,CAAC;wBACF,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAC1B,iBAAiB,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAC/D,CAAC;wBAEF,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC7B,CAAC;yBAAM,IACN,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC1D,cAAc,CAAC,OAAO,CAAC;wBACvB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EACxB,CAAC;wBACF,IAAI,KAA+B,CAAC;wBACpC,IAAI,GAAuB,CAAC;wBAE5B,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;4BAC7B,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAC3D,OAAO,CAAC,IAAI,CACZ,CAAC;4BACF,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC;4BAC9D,qDAAqD;4BACrD,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gCACjC,SAAS;4BACV,CAAC;4BAED,wEAAwE;4BACxE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;gCAC3C,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,KAAK;6BACb,CAAC,CAAC;4BACH,IAAI,CAAC,QAAQ,EAAE,CAAC;gCACf,SAAS;4BACV,CAAC;4BACD,KAAK,GAAG,QAAQ,CAAC;wBAClB,CAAC;6BAAM,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;4BACvC,GAAG,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC;4BACzC,qDAAqD;4BACrD,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gCACjC,SAAS;4BACV,CAAC;4BACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;gCAC3C,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,KAAK;6BACb,CAAC,CAAC;4BACH,IAAI,CAAC,QAAQ,EAAE,CAAC;gCACf,SAAS;4BACV,CAAC;4BACD,KAAK,GAAG,QAAQ,CAAC;wBAClB,CAAC;6BAAM,CAAC;4BACP,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;wBAC/B,CAAC;wBAED,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAErC,IACC,KAAK,YAAY,OAAO;4BACxB,KAAK,CAAC,MAAM,KAAK,IAAI;4BACrB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC3B,CAAC;4BACF,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACxB,CAAC;wBAED,eAAe;wBACf,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAC3B,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC7B,CAAC;yBAAM,CAAC;wBACP,oBAAoB;wBACpB,MAAM,IAAI,cAAc,CAAC,mBAAmB,CAAC,CAAC;oBAC/C,CAAC;gBACF,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;wBAClC,SAAS;oBACV,CAAC;oBACD,MAAM,KAAK,CAAC;gBACb,CAAC;YACF,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,aAAa,CACxB,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CACvD,CAAC;QACH,CAAC;QAED,2DAA2D;QAC3D,KAAK,CAAC,KAAK,CAAC,OAGX;YACA,IAAI,aAAa,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACnD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACpB,0BAA0B;gBAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAClC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EACzB;oBACC,MAAM,EAAE;wBACP,KAAK,EACJ,OAAO,OAAO,EAAE,WAAW,KAAK,QAAQ;4BACvC,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,KAAK;4BAC5B,CAAC,CAAC,SAAS;qBACb;oBACD,OAAO,EAAE,KAAK;iBACd,CACD,CAAC;gBACF,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC7C,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACvB,OAAO,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;YAC1B,CAAC;YAED,IAAI,cAAc,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;uEACf;YACxD,IAAI,kBAAkB,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC;gBAC1D,MAAM,EAAE,KAAK;aACb,CAAC,CAAC;YAEH,IAAI,qBAAqB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;gBACxD,KAAK,EAAE,OAAO,EAAE,KAAK;aACrB,CAAC,CAAC;YACH,IAAI,kBAAkB,IAAI,CAAC,EAAE,CAAC;gBAC7B,OAAO,qBAAqB,CAAC,CAAC,gCAAgC;YAC/D,CAAC;YAED,MAAM,wBAAwB,GAAG,qBAAqB,GAAG,kBAAkB,CAAC,CAAC,SAAS;YACtF,IAAI,yBAAyB,GAAG,cAAc,GAAG,wBAAwB,CAAC,CAAC,gHAAgH;YAC3L,OAAO,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC9C,CAAC;;;;SA9sBW,SAAS"}
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/document",
3
- "version": "12.0.2",
3
+ "version": "12.1.0",
4
4
  "description": "Document store implementation",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -60,19 +60,19 @@
60
60
  "p-defer": "^4.0.0",
61
61
  "uint8arrays": "^5.1.0",
62
62
  "@peerbit/cache": "2.2.0",
63
- "@peerbit/log": "5.0.2",
64
- "@peerbit/crypto": "2.4.0",
65
63
  "@peerbit/logger": "2.0.0",
66
- "@peerbit/pubsub": "4.1.1",
67
- "@peerbit/program": "5.5.0",
68
- "@peerbit/rpc": "5.4.11",
69
- "@peerbit/shared-log": "12.1.0",
70
- "@peerbit/indexer-simple": "1.2.1",
71
- "@peerbit/indexer-sqlite3": "2.0.0",
72
- "@peerbit/indexer-interface": "2.1.0",
73
- "@peerbit/document-interface": "3.1.11",
74
- "@peerbit/stream-interface": "5.3.0",
75
- "@peerbit/indexer-cache": "0.2.1"
64
+ "@peerbit/log": "5.0.3",
65
+ "@peerbit/pubsub": "4.1.2",
66
+ "@peerbit/crypto": "2.4.1",
67
+ "@peerbit/program": "5.5.1",
68
+ "@peerbit/rpc": "5.4.12",
69
+ "@peerbit/shared-log": "12.1.1",
70
+ "@peerbit/indexer-interface": "2.1.1",
71
+ "@peerbit/indexer-simple": "1.2.2",
72
+ "@peerbit/indexer-sqlite3": "2.0.1",
73
+ "@peerbit/indexer-cache": "0.2.2",
74
+ "@peerbit/document-interface": "3.1.12",
75
+ "@peerbit/stream-interface": "5.3.1"
76
76
  },
77
77
  "devDependencies": {
78
78
  "@types/pidusage": "^2.0.5",
@@ -80,9 +80,9 @@
80
80
  "uuid": "^10.0.0",
81
81
  "@libp2p/websockets": "^10.1.0",
82
82
  "@chainsafe/libp2p-noise": "^17.0.0",
83
- "@peerbit/test-utils": "2.3.11",
83
+ "@peerbit/test-utils": "2.3.12",
84
84
  "@peerbit/time": "2.3.0",
85
- "peerbit": "4.4.11"
85
+ "peerbit": "4.4.12"
86
86
  },
87
87
  "scripts": {
88
88
  "clean": "aegir clean",
package/src/program.ts CHANGED
@@ -61,6 +61,20 @@ export class OperationError extends Error {
61
61
 
62
62
  type MaybePromise<T> = Promise<T> | T;
63
63
 
64
+ export type CountEstimate = {
65
+ estimate: number;
66
+ /**
67
+ * Relative error margin (0..1), where e.g. `0.1` means ~±10%.
68
+ *
69
+ * Only non-`undefined` when the replication domain is expected to be uniformly
70
+ * distributed (currently: `domain.type === "hash"`), and when there is
71
+ * sufficient local sample information to compute it.
72
+ *
73
+ * When `undefined`, the caller should treat `estimate` as unreliable.
74
+ */
75
+ errorMargin: number | undefined;
76
+ };
77
+
64
78
  type CanPerformPut<T> = {
65
79
  type: "put";
66
80
  value: T;
@@ -797,47 +811,118 @@ export class Documents<
797
811
  );
798
812
  }
799
813
 
800
- // approximate the amount of documents that exists globally
814
+ /**
815
+ * Count documents locally (default), or estimate the global count.
816
+ *
817
+ * - `count()` / `count({ query })`: exact local count from the index.
818
+ * - `count({ approximate: true })`: estimated global count from replication metadata (no remote queries) + error margin when available.
819
+ */
801
820
  async count(options?: {
821
+ query?: indexerTypes.Query | indexerTypes.QueryLike;
822
+ approximate?: false | undefined;
823
+ }): Promise<number>;
824
+ async count(options: {
802
825
  query?: indexerTypes.Query | indexerTypes.QueryLike;
803
826
  approximate: true | { scope?: ReachScope };
804
- }): Promise<number> {
805
- let isReplicating = await this.log.isReplicating();
827
+ }): Promise<CountEstimate>;
828
+ async count(options?: {
829
+ query?: indexerTypes.Query | indexerTypes.QueryLike;
830
+ approximate?: false | true | { scope?: ReachScope };
831
+ }): Promise<number | CountEstimate> {
832
+ // Local/exact count
833
+ if (!options?.approximate) {
834
+ return this.index.index.count({ query: options?.query });
835
+ }
836
+
837
+ const indexedDocumentsCount = await this.index.index.count({
838
+ query: options?.query,
839
+ });
840
+
841
+ const fallbackToLocal = (): CountEstimate => ({
842
+ estimate: indexedDocumentsCount,
843
+ errorMargin: undefined,
844
+ });
845
+
846
+ const isReplicating = await this.log.isReplicating();
806
847
  if (!isReplicating) {
807
- // fetch a subset of posts
808
- const iterator = this.index.iterate(
809
- { query: options?.query },
810
- {
811
- remote: {
812
- reach:
813
- typeof options?.approximate === "object"
814
- ? options?.approximate.scope
815
- : undefined,
816
- },
817
- resolve: false,
818
- },
819
- );
820
- const one = await iterator.next(1);
821
- const left = (await iterator.pending()) ?? 0;
822
- await iterator.close();
823
- return one.length + left;
848
+ return fallbackToLocal();
849
+ }
850
+
851
+ const myTotalParticipation = await this.log.calculateMyTotalParticipation();
852
+ const minReplicasValue = this.log.replicas.min.getValue(this.log);
853
+ const pRaw = minReplicasValue * myTotalParticipation;
854
+ const inclusionProbability = Math.min(1, pRaw);
855
+
856
+ if (
857
+ !Number.isFinite(inclusionProbability) ||
858
+ inclusionProbability <= 0 ||
859
+ inclusionProbability > 1
860
+ ) {
861
+ return fallbackToLocal();
862
+ }
863
+
864
+ const scaleFactor =
865
+ inclusionProbability >= 1 ? 1 : 1 / inclusionProbability; // same saturation as SharedLog.countHeads
866
+ if (
867
+ !Number.isFinite(scaleFactor) ||
868
+ scaleFactor > Number.MAX_SAFE_INTEGER
869
+ ) {
870
+ return fallbackToLocal();
824
871
  }
825
872
 
826
- let totalHeadCount = await this.log.countHeads({ approximate: true }); /* -
827
- (this.keepCache?.size || 0); TODO adjust for keep fn */
828
- let totalAssignedHeads = await this.log.countAssignedHeads({
873
+ // heads strictly assigned to us (sample size for the head-count estimator)
874
+ const ownedHeadCount = await this.log.countAssignedHeads({ strict: true });
875
+
876
+ // heads we have in our index (includes boundary assignments)
877
+ const totalAssignedHeads = await this.log.countAssignedHeads({
829
878
  strict: false,
830
879
  });
831
880
 
832
- let indexedDocumentsCount = await this.index.index.count({
833
- query: options?.query,
834
- });
835
- if (totalAssignedHeads == 0) {
836
- return indexedDocumentsCount; // TODO is this really expected?
881
+ if (totalAssignedHeads === 0) {
882
+ return fallbackToLocal();
837
883
  }
838
884
 
885
+ const totalHeadCount = Math.round(ownedHeadCount * scaleFactor);
839
886
  const nonDeletedDocumentsRatio = indexedDocumentsCount / totalAssignedHeads; // [0, 1]
840
- let expectedAmountOfDocuments = totalHeadCount * nonDeletedDocumentsRatio; // if total heads count is 100 and 80% is actual documents, then 80 pieces of non-deleted documents should exist
841
- return Math.round(expectedAmountOfDocuments);
887
+ const expectedAmountOfDocuments = totalHeadCount * nonDeletedDocumentsRatio;
888
+
889
+ if (
890
+ !Number.isFinite(expectedAmountOfDocuments) ||
891
+ expectedAmountOfDocuments > Number.MAX_SAFE_INTEGER
892
+ ) {
893
+ return fallbackToLocal();
894
+ }
895
+
896
+ const estimate = Math.round(expectedAmountOfDocuments);
897
+ if (!Number.isFinite(estimate) || estimate > Number.MAX_SAFE_INTEGER) {
898
+ return fallbackToLocal();
899
+ }
900
+
901
+ const domainType = this.log.domain?.type;
902
+ const canProvideErrorMargin =
903
+ domainType === "hash" && ownedHeadCount > 0 && indexedDocumentsCount > 0;
904
+
905
+ let errorMargin: number | undefined = undefined;
906
+ if (canProvideErrorMargin) {
907
+ // 95% relative margin for the scaled head-count estimator
908
+ const headMargin =
909
+ 1.96 * Math.sqrt((1 - inclusionProbability) / ownedHeadCount);
910
+
911
+ // 95% relative margin for the ratio estimator (docs among assigned heads)
912
+ const rHat = nonDeletedDocumentsRatio;
913
+ const ratioMargin =
914
+ rHat > 0 && rHat < 1
915
+ ? 1.96 * Math.sqrt((1 - rHat) / (rHat * totalAssignedHeads))
916
+ : 0;
917
+
918
+ const combined = Math.sqrt(
919
+ headMargin * headMargin + ratioMargin * ratioMargin,
920
+ );
921
+ if (Number.isFinite(combined)) {
922
+ errorMargin = Math.min(1, Math.max(0, combined));
923
+ }
924
+ }
925
+
926
+ return { estimate, errorMargin };
842
927
  }
843
928
  }