@peerbit/trusted-network 5.1.5 → 5.1.6-3f16953

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.
@@ -28,6 +28,7 @@ type TrustedNetworkArgs = {
28
28
  export declare class TrustedNetwork extends Program<TrustedNetworkArgs> {
29
29
  rootTrust: PublicSignKey;
30
30
  trustGraph: DocumentsLike<IdentityRelation, FromTo>;
31
+ private _lastWarmupAt;
31
32
  constructor(props: {
32
33
  id?: Uint8Array;
33
34
  rootTrust: PublicSignKey | PeerId;
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACN,aAAa,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,OAAO,EAEZ,KAAK,aAAa,EAClB,KAAK,SAAS,EAEd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACN,MAAM,EACN,gBAAgB,EAOhB,MAAM,qBAAqB,CAAC;AA8D7B,KAAK,iBAAiB,GAAG;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAC/B,CAAC;AAEF,qBACa,aAAc,SAAQ,OAAO,CAAC,iBAAiB,CAAC;IAE5D,aAAa,EAAE,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;gBAE3C,KAAK,CAAC,EAAE;QACnB,EAAE,CAAC,EAAE,UAAU,CAAC;QAChB,aAAa,CAAC,EAAE,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;KACxD;IAQK,UAAU,CACf,UAAU,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,GAChD,OAAO,CAAC,OAAO,CAAC;IAIb,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB;IAYhC,WAAW,CAChB,EAAE,EAAE,aAAa,GAAG,MAAM,EAC1B,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC;CAWnC;AAED;;GAEG;AAEH,KAAK,kBAAkB,GAAG;IAAE,SAAS,CAAC,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAE7D,qBACa,cAAe,SAAQ,OAAO,CAAC,kBAAkB,CAAC;IAE9D,SAAS,EAAE,aAAa,CAAC;IAGzB,UAAU,EAAE,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;gBAExC,KAAK,EAAE;QAAE,EAAE,CAAC,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,aAAa,GAAG,MAAM,CAAA;KAAE;IAMnE,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB;IAejC,UAAU,CACf,UAAU,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,GAChD,OAAO,CAAC,OAAO,CAAC;IAIb,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAInE,GAAG,CACR,OAAO,EAAE,aAAa,GAAG,MAAM,EAC/B,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC;IAsB7B,WAAW,CAChB,OAAO,EAAE,aAAa,GAAG,MAAM,EAC/B,OAAO,GAAE,aAAa,GAAG,MAAuB;IAIjD,WAAW,CACV,OAAO,EAAE,aAAa,GAAG,MAAM,EAC/B,OAAO,GAAE,aAAa,GAAG,MAAuB;IASjD;;;;;;;;;OASG;IACG,SAAS,CACd,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE,aAA8B,GACrC,OAAO,CAAC,OAAO,CAAC;IAmBb,eAAe,CACpB,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE,aAA8B,GACrC,OAAO,CAAC,OAAO,CAAC;IAUb,UAAU,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAU5C,QAAQ,IAAI,MAAM;CAGlB"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACN,aAAa,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,OAAO,EAEZ,KAAK,aAAa,EAClB,KAAK,SAAS,EAEd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACN,MAAM,EACN,gBAAgB,EAQhB,MAAM,qBAAqB,CAAC;AA8D7B,KAAK,iBAAiB,GAAG;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAC/B,CAAC;AAEF,qBACa,aAAc,SAAQ,OAAO,CAAC,iBAAiB,CAAC;IAE5D,aAAa,EAAE,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;gBAE3C,KAAK,CAAC,EAAE;QACnB,EAAE,CAAC,EAAE,UAAU,CAAC;QAChB,aAAa,CAAC,EAAE,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;KACxD;IAQK,UAAU,CACf,UAAU,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,GAChD,OAAO,CAAC,OAAO,CAAC;IAIb,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB;IAYhC,WAAW,CAChB,EAAE,EAAE,aAAa,GAAG,MAAM,EAC1B,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC;CAWnC;AAED;;GAEG;AAEH,KAAK,kBAAkB,GAAG;IAAE,SAAS,CAAC,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAE7D,qBACa,cAAe,SAAQ,OAAO,CAAC,kBAAkB,CAAC;IAE9D,SAAS,EAAE,aAAa,CAAC;IAGzB,UAAU,EAAE,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAIpD,OAAO,CAAC,aAAa,CAAK;gBAEd,KAAK,EAAE;QAAE,EAAE,CAAC,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,aAAa,GAAG,MAAM,CAAA;KAAE;IAMnE,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB;IAejC,UAAU,CACf,UAAU,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,GAChD,OAAO,CAAC,OAAO,CAAC;IAIb,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAInE,GAAG,CACR,OAAO,EAAE,aAAa,GAAG,MAAM,EAC/B,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC;IAsB7B,WAAW,CAChB,OAAO,EAAE,aAAa,GAAG,MAAM,EAC/B,OAAO,GAAE,aAAa,GAAG,MAAuB;IAIjD,WAAW,CACV,OAAO,EAAE,aAAa,GAAG,MAAM,EAC/B,OAAO,GAAE,aAAa,GAAG,MAAuB;IASjD;;;;;;;;;OASG;IACG,SAAS,CACd,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE,aAA8B,GACrC,OAAO,CAAC,OAAO,CAAC;IAyBb,eAAe,CACpB,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE,aAA8B,GACrC,OAAO,CAAC,OAAO,CAAC;IAUb,UAAU,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAU5C,QAAQ,IAAI,MAAM;CAGlB"}
@@ -39,7 +39,7 @@ import { Documents, SearchRequest, } from "@peerbit/document";
39
39
  import {} from "@peerbit/log";
40
40
  import { Program } from "@peerbit/program";
41
41
  import {} from "@peerbit/shared-log";
42
- import { FromTo, IdentityRelation, createIdentityGraphStore, getFromByTo, getPathGenerator, getToByFrom, hasPath, getRelation as resolveRelation, } from "./identity-graph.js";
42
+ import { FromTo, IdentityRelation, createIdentityGraphStore, getFromByTo, getFromByToLocalOnly, getPathGenerator, getToByFrom, hasPath, getRelation as resolveRelation, } from "./identity-graph.js";
43
43
  const openDocumentsLike = async (owner, docs, args) => {
44
44
  if (!(docs instanceof Program)) {
45
45
  return docs;
@@ -171,9 +171,11 @@ let TrustedNetwork = (() => {
171
171
  }
172
172
  rootTrust = __runInitializers(this, _rootTrust_initializers, void 0);
173
173
  trustGraph = (__runInitializers(this, _rootTrust_extraInitializers), __runInitializers(this, _trustGraph_initializers, void 0));
174
+ // Best-effort remote warmup throttle for `isTrusted()` calls when the local graph is empty.
175
+ // Access control should be conservative (default deny) and non-blocking, so this is fire-and-forget.
176
+ _lastWarmupAt = (__runInitializers(this, _trustGraph_extraInitializers), 0);
174
177
  constructor(props) {
175
178
  super();
176
- __runInitializers(this, _trustGraph_extraInitializers);
177
179
  this.rootTrust = coercePublicKey(props.rootTrust);
178
180
  this.trustGraph = createIdentityGraphStore(props.id);
179
181
  }
@@ -232,22 +234,25 @@ let TrustedNetwork = (() => {
232
234
  if (trustee.equals(this.rootTrust)) {
233
235
  return true;
234
236
  }
235
- const log = this.trustGraph?.log;
236
- const isReplicating = log && typeof log.isReplicating === "function"
237
- ? await log.isReplicating()
238
- : false;
239
- if (isReplicating) {
240
- return this._isTrustedLocal(trustee, truster);
237
+ // Fast local-only check first. This avoids stalling writes on cold-start or churn.
238
+ if (await this._isTrustedLocal(trustee, truster)) {
239
+ return true;
241
240
  }
242
- else {
243
- this.trustGraph.index.search(new SearchRequest({ query: [] }), {
241
+ // Best-effort: kick off a background remote query to encourage replication metadata to converge.
242
+ // Do not await; access control remains default-deny until local state reflects trust.
243
+ const now = Date.now();
244
+ if (now - this._lastWarmupAt > 2_000) {
245
+ this._lastWarmupAt = now;
246
+ void this.trustGraph.index
247
+ .search(new SearchRequest({ query: [] }), {
244
248
  remote: { replicate: true },
245
- });
246
- return this._isTrustedLocal(trustee, truster);
249
+ })
250
+ .catch(() => { });
247
251
  }
252
+ return false;
248
253
  }
249
254
  async _isTrustedLocal(trustee, truster = this.rootTrust) {
250
- const trustPath = await hasPath(trustee, truster, this.trustGraph, getFromByTo);
255
+ const trustPath = await hasPath(trustee, truster, this.trustGraph, getFromByToLocalOnly);
251
256
  return !!trustPath;
252
257
  }
253
258
  async getTrusted() {
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@ export type RelationResolver = {
6
6
  };
7
7
  export declare const getFromByTo: RelationResolver;
8
8
  export declare const getToByFrom: RelationResolver;
9
+ export declare const getFromByToLocalOnly: RelationResolver;
10
+ export declare const getToByFromLocalOnly: RelationResolver;
9
11
  export declare function getPathGenerator(from: PublicSignKey, db: DocumentsLike<IdentityRelation, FromTo>, resolver: RelationResolver): AsyncGenerator<IdentityRelation, void, unknown>;
10
12
  /**
11
13
  * Get path, to target.
@@ -1 +1 @@
1
- {"version":3,"file":"identity-graph.d.ts","sourceRoot":"","sources":["../../src/identity-graph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAc,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EACN,SAAS,EACT,KAAK,aAAa,EAGlB,MAAM,mBAAmB,CAAC;AAG3B,MAAM,MAAM,gBAAgB,GAAG;IAC9B,OAAO,EAAE,CACR,GAAG,EAAE,aAAa,EAClB,EAAE,EAAE,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,KACvC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACjC,IAAI,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,aAAa,CAAC;CACpD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,gBAmBzB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,gBAmBzB,CAAC;AAEF,wBAAuB,gBAAgB,CACtC,IAAI,EAAE,aAAa,EACnB,EAAE,EAAE,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAC3C,QAAQ,EAAE,gBAAgB,mDAsB1B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAC3B,OAAO,aAAa,EACpB,QAAQ,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,EACvC,IAAI,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAC3C,UAAU,gBAAgB,KACxB,OAAO,CAAC,OAAO,CAiBjB,CAAC;AAEF,8BACsB,gBAAgB;IAErC,EAAE,EAAE,UAAU,CAAC;CACf;AAED,qBACa,gBAAiB,SAAQ,gBAAgB;IAErD,KAAK,EAAE,aAAa,CAAC;IAGrB,GAAG,EAAE,aAAa,CAAC;gBAEP,UAAU,CAAC,EAAE;QACxB,EAAE,EAAE,aAAa,CAAC;QAClB,IAAI,EAAE,aAAa,CAAC;KACpB;IASD,IAAI,IAAI,IAAI,aAAa,CAExB;IAED,IAAI,EAAE,IAAI,aAAa,CAEtB;IAED,YAAY;IAIZ,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa;CAGhD;AAED,eAAO,MAAM,OAAO,GACnB,OAAO,aAAa,EACpB,KAAK,aAAa,EAClB,IAAI,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAC3C,UAAU,gBAAgB,KACxB,OAAO,CAAC,OAAO,CAEjB,CAAC;AAEF,eAAO,MAAM,WAAW,GACvB,MAAM,aAAa,EACnB,IAAI,aAAa,EACjB,IAAI,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,KACzC,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAEtC,CAAC;AAEF,qBACa,MAAM;IAElB,EAAE,EAAE,UAAU,CAAC;IAGf,IAAI,EAAE,MAAM,CAAC;IAGb,EAAE,EAAE,MAAM,CAAC;gBAEC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,GAAG;CAKnD;AAED,eAAO,MAAM,wBAAwB,GAAI,KAAK,UAAU,6CAGrD,CAAC"}
1
+ {"version":3,"file":"identity-graph.d.ts","sourceRoot":"","sources":["../../src/identity-graph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAc,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EACN,SAAS,EACT,KAAK,aAAa,EAGlB,MAAM,mBAAmB,CAAC;AAG3B,MAAM,MAAM,gBAAgB,GAAG;IAC9B,OAAO,EAAE,CACR,GAAG,EAAE,aAAa,EAClB,EAAE,EAAE,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,KACvC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACjC,IAAI,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,aAAa,CAAC;CACpD,CAAC;AAuBF,eAAO,MAAM,WAAW,EAAE,gBAQzB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,gBAQzB,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAAE,gBAQlC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,gBAYlC,CAAC;AAEF,wBAAuB,gBAAgB,CACtC,IAAI,EAAE,aAAa,EACnB,EAAE,EAAE,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAC3C,QAAQ,EAAE,gBAAgB,mDAsB1B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAC3B,OAAO,aAAa,EACpB,QAAQ,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,EACvC,IAAI,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAC3C,UAAU,gBAAgB,KACxB,OAAO,CAAC,OAAO,CAiBjB,CAAC;AAEF,8BACsB,gBAAgB;IAErC,EAAE,EAAE,UAAU,CAAC;CACf;AAED,qBACa,gBAAiB,SAAQ,gBAAgB;IAErD,KAAK,EAAE,aAAa,CAAC;IAGrB,GAAG,EAAE,aAAa,CAAC;gBAEP,UAAU,CAAC,EAAE;QACxB,EAAE,EAAE,aAAa,CAAC;QAClB,IAAI,EAAE,aAAa,CAAC;KACpB;IASD,IAAI,IAAI,IAAI,aAAa,CAExB;IAED,IAAI,EAAE,IAAI,aAAa,CAEtB;IAED,YAAY;IAIZ,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa;CAGhD;AAED,eAAO,MAAM,OAAO,GACnB,OAAO,aAAa,EACpB,KAAK,aAAa,EAClB,IAAI,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAC3C,UAAU,gBAAgB,KACxB,OAAO,CAAC,OAAO,CAEjB,CAAC;AAEF,eAAO,MAAM,WAAW,GACvB,MAAM,aAAa,EACnB,IAAI,aAAa,EACjB,IAAI,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,KACzC,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAOtC,CAAC;AAEF,qBACa,MAAM;IAElB,EAAE,EAAE,UAAU,CAAC;IAGf,IAAI,EAAE,MAAM,CAAC;IAGb,EAAE,EAAE,MAAM,CAAC;gBAEC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,GAAG;CAKnD;AAED,eAAO,MAAM,wBAAwB,GAAI,KAAK,UAAU,6CAGrD,CAAC"}
@@ -36,29 +36,43 @@ import { field, fixedArray, serialize, variant } from "@dao-xyz/borsh";
36
36
  import { PublicSignKey, sha256Sync } from "@peerbit/crypto";
37
37
  import { Documents, SearchRequest, StringMatch, } from "@peerbit/document";
38
38
  import { concat } from "uint8arrays";
39
+ const LOCAL_ONLY_QUERY = { remote: false, local: true };
40
+ const searchRelations = async (db, query, options) => {
41
+ const request = new SearchRequest({
42
+ query: [
43
+ new StringMatch({
44
+ key: query.key,
45
+ value: query.value,
46
+ }),
47
+ ],
48
+ });
49
+ const results = options
50
+ ? await db.index.search(request, options)
51
+ : await db.index.search(request);
52
+ return Promise.all(results);
53
+ };
39
54
  export const getFromByTo = {
40
55
  resolve: async (to, db) => {
41
- return Promise.all(await db.index.search(new SearchRequest({
42
- query: [
43
- new StringMatch({
44
- key: "to",
45
- value: to.hashcode(),
46
- }),
47
- ],
48
- })));
56
+ return searchRelations(db, { key: "to", value: to.hashcode() });
49
57
  },
50
58
  next: (relation) => relation.from,
51
59
  };
52
60
  export const getToByFrom = {
53
61
  resolve: async (from, db) => {
54
- return Promise.all(await db.index.search(new SearchRequest({
55
- query: [
56
- new StringMatch({
57
- key: "from",
58
- value: from.hashcode(),
59
- }),
60
- ],
61
- })));
62
+ return searchRelations(db, { key: "from", value: from.hashcode() });
63
+ },
64
+ next: (relation) => relation.to,
65
+ };
66
+ // Local-only resolvers for access control checks. These must be conservative and non-blocking.
67
+ export const getFromByToLocalOnly = {
68
+ resolve: async (to, db) => {
69
+ return searchRelations(db, { key: "to", value: to.hashcode() }, LOCAL_ONLY_QUERY);
70
+ },
71
+ next: (relation) => relation.from,
72
+ };
73
+ export const getToByFromLocalOnly = {
74
+ resolve: async (from, db) => {
75
+ return searchRelations(db, { key: "from", value: from.hashcode() }, LOCAL_ONLY_QUERY);
62
76
  },
63
77
  next: (relation) => relation.to,
64
78
  };
@@ -189,7 +203,12 @@ export const hasPath = async (start, end, db, resolver) => {
189
203
  return hasPathToTarget(start, (key) => end.equals(key), db, resolver);
190
204
  };
191
205
  export const getRelation = async (from, to, db) => {
192
- return db.index.get(new IdentityRelation({ from, to }).id);
206
+ // This is used as a local existence check before writing relations.
207
+ // Avoid remote queries which can hang under churn or cold-start.
208
+ return db.index.get(new IdentityRelation({ from, to }).id, {
209
+ remote: false,
210
+ local: true,
211
+ });
193
212
  };
194
213
  let FromTo = (() => {
195
214
  let _classDecorators = [variant(0)];
@@ -1 +1 @@
1
- {"version":3,"file":"identity-graph.js","sourceRoot":"","sources":["../../src/identity-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity-graph.js","sourceRoot":"","sources":["../../src/identity-graph.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/trusted-network",
3
- "version": "5.1.5",
3
+ "version": "5.1.6-3f16953",
4
4
  "description": "Access controller that operates on a DB",
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -54,17 +54,17 @@
54
54
  "dependencies": {
55
55
  "@dao-xyz/borsh": "^6.0.0",
56
56
  "@libp2p/interface": "^3.1.0",
57
- "uint8arrays": "^5.1.0",
58
- "@peerbit/crypto": "2.4.1",
59
- "@peerbit/document": "12.3.4",
60
- "@peerbit/log": "5.0.10",
61
- "@peerbit/program": "5.6.3",
62
- "@peerbit/shared-log": "12.3.4"
57
+ "@peerbit/crypto": "2.4.1-3f16953",
58
+ "@peerbit/document": "12.3.5-3f16953",
59
+ "@peerbit/log": "5.0.10-3f16953",
60
+ "@peerbit/program": "5.6.3-3f16953",
61
+ "@peerbit/shared-log": "12.3.5-3f16953",
62
+ "uint8arrays": "^5.1.0"
63
63
  },
64
64
  "devDependencies": {
65
+ "@peerbit/time": "2.3.0-3f16953",
65
66
  "@ethersproject/wallet": "^5.8.0",
66
- "@peerbit/time": "2.3.0",
67
- "@peerbit/test-utils": "2.3.19"
67
+ "@peerbit/test-utils": "2.3.19-3f16953"
68
68
  },
69
69
  "scripts": {
70
70
  "clean": "aegir clean",
package/src/controller.ts CHANGED
@@ -21,6 +21,7 @@ import {
21
21
  IdentityRelation,
22
22
  createIdentityGraphStore,
23
23
  getFromByTo,
24
+ getFromByToLocalOnly,
24
25
  getPathGenerator,
25
26
  getToByFrom,
26
27
  hasPath,
@@ -155,6 +156,10 @@ export class TrustedNetwork extends Program<TrustedNetworkArgs> {
155
156
  @field({ type: Documents })
156
157
  trustGraph: DocumentsLike<IdentityRelation, FromTo>;
157
158
 
159
+ // Best-effort remote warmup throttle for `isTrusted()` calls when the local graph is empty.
160
+ // Access control should be conservative (default deny) and non-blocking, so this is fire-and-forget.
161
+ private _lastWarmupAt = 0;
162
+
158
163
  constructor(props: { id?: Uint8Array; rootTrust: PublicSignKey | PeerId }) {
159
164
  super();
160
165
  this.rootTrust = coercePublicKey(props.rootTrust);
@@ -244,19 +249,25 @@ export class TrustedNetwork extends Program<TrustedNetworkArgs> {
244
249
  if (trustee.equals(this.rootTrust)) {
245
250
  return true;
246
251
  }
247
- const log = (this.trustGraph as any)?.log;
248
- const isReplicating =
249
- log && typeof log.isReplicating === "function"
250
- ? await log.isReplicating()
251
- : false;
252
- if (isReplicating) {
253
- return this._isTrustedLocal(trustee, truster);
254
- } else {
255
- this.trustGraph.index.search(new SearchRequest({ query: [] }), {
256
- remote: { replicate: true },
257
- });
258
- return this._isTrustedLocal(trustee, truster);
252
+
253
+ // Fast local-only check first. This avoids stalling writes on cold-start or churn.
254
+ if (await this._isTrustedLocal(trustee, truster)) {
255
+ return true;
256
+ }
257
+
258
+ // Best-effort: kick off a background remote query to encourage replication metadata to converge.
259
+ // Do not await; access control remains default-deny until local state reflects trust.
260
+ const now = Date.now();
261
+ if (now - this._lastWarmupAt > 2_000) {
262
+ this._lastWarmupAt = now;
263
+ void this.trustGraph.index
264
+ .search(new SearchRequest({ query: [] }), {
265
+ remote: { replicate: true },
266
+ })
267
+ .catch(() => {});
259
268
  }
269
+
270
+ return false;
260
271
  }
261
272
 
262
273
  async _isTrustedLocal(
@@ -267,7 +278,7 @@ export class TrustedNetwork extends Program<TrustedNetworkArgs> {
267
278
  trustee,
268
279
  truster,
269
280
  this.trustGraph,
270
- getFromByTo,
281
+ getFromByToLocalOnly,
271
282
  );
272
283
  return !!trustPath;
273
284
  }
@@ -16,23 +16,33 @@ export type RelationResolver = {
16
16
  next: (relation: IdentityRelation) => PublicSignKey;
17
17
  };
18
18
 
19
+ const LOCAL_ONLY_QUERY = { remote: false, local: true } as any;
20
+
21
+ const searchRelations = async (
22
+ db: DocumentsLike<IdentityRelation, FromTo>,
23
+ query: { key: "from" | "to"; value: string },
24
+ options?: any,
25
+ ): Promise<IdentityRelation[]> => {
26
+ const request = new SearchRequest({
27
+ query: [
28
+ new StringMatch({
29
+ key: query.key,
30
+ value: query.value,
31
+ }),
32
+ ],
33
+ });
34
+ const results = options
35
+ ? await db.index.search(request, options)
36
+ : await db.index.search(request);
37
+ return Promise.all(results);
38
+ };
39
+
19
40
  export const getFromByTo: RelationResolver = {
20
41
  resolve: async (
21
42
  to: PublicSignKey,
22
43
  db: DocumentsLike<IdentityRelation, FromTo>,
23
44
  ) => {
24
- return Promise.all(
25
- await db.index.search(
26
- new SearchRequest({
27
- query: [
28
- new StringMatch({
29
- key: "to",
30
- value: to.hashcode(),
31
- }),
32
- ],
33
- }),
34
- ),
35
- );
45
+ return searchRelations(db, { key: "to", value: to.hashcode() });
36
46
  },
37
47
  next: (relation) => relation.from,
38
48
  };
@@ -42,17 +52,31 @@ export const getToByFrom: RelationResolver = {
42
52
  from: PublicSignKey,
43
53
  db: DocumentsLike<IdentityRelation, FromTo>,
44
54
  ) => {
45
- return Promise.all(
46
- await db.index.search(
47
- new SearchRequest({
48
- query: [
49
- new StringMatch({
50
- key: "from",
51
- value: from.hashcode(),
52
- }),
53
- ],
54
- }),
55
- ),
55
+ return searchRelations(db, { key: "from", value: from.hashcode() });
56
+ },
57
+ next: (relation) => relation.to,
58
+ };
59
+
60
+ // Local-only resolvers for access control checks. These must be conservative and non-blocking.
61
+ export const getFromByToLocalOnly: RelationResolver = {
62
+ resolve: async (
63
+ to: PublicSignKey,
64
+ db: DocumentsLike<IdentityRelation, FromTo>,
65
+ ) => {
66
+ return searchRelations(db, { key: "to", value: to.hashcode() }, LOCAL_ONLY_QUERY);
67
+ },
68
+ next: (relation) => relation.from,
69
+ };
70
+
71
+ export const getToByFromLocalOnly: RelationResolver = {
72
+ resolve: async (
73
+ from: PublicSignKey,
74
+ db: DocumentsLike<IdentityRelation, FromTo>,
75
+ ) => {
76
+ return searchRelations(
77
+ db,
78
+ { key: "from", value: from.hashcode() },
79
+ LOCAL_ONLY_QUERY,
56
80
  );
57
81
  },
58
82
  next: (relation) => relation.to,
@@ -173,7 +197,12 @@ export const getRelation = async (
173
197
  to: PublicSignKey,
174
198
  db: DocumentsLike<IdentityRelation, FromTo>,
175
199
  ): Promise<IdentityRelation | undefined> => {
176
- return db.index.get(new IdentityRelation({ from, to }).id);
200
+ // This is used as a local existence check before writing relations.
201
+ // Avoid remote queries which can hang under churn or cold-start.
202
+ return db.index.get(new IdentityRelation({ from, to }).id, {
203
+ remote: false,
204
+ local: true,
205
+ } as any);
177
206
  };
178
207
 
179
208
  @variant(0)