@peerbit/clock-service 2.0.40-aa577a5 → 2.0.40-cccc078

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,9 +1,9 @@
1
- import { RPC } from "@peerbit/rpc";
2
- import { Program } from "@peerbit/program";
3
1
  import { SignatureWithKey } from "@peerbit/crypto";
4
2
  import { Entry } from "@peerbit/log";
3
+ import { Program } from "@peerbit/program";
4
+ import { RPC } from "@peerbit/rpc";
5
+ import { type ReplicationOptions } from "@peerbit/shared-log";
5
6
  import { TrustedNetwork } from "@peerbit/trusted-network";
6
- import { type RoleOptions } from "@peerbit/shared-log";
7
7
  export declare abstract class Result {
8
8
  }
9
9
  export declare class Ok extends Result {
@@ -19,7 +19,7 @@ export declare class SignError extends Result {
19
19
  });
20
20
  }
21
21
  type Args = {
22
- role?: RoleOptions;
22
+ replicate?: ReplicationOptions;
23
23
  maxTimeError?: number;
24
24
  };
25
25
  export declare class ClockService extends Program<Args> {
@@ -32,7 +32,7 @@ export declare class ClockService extends Program<Args> {
32
32
  remoteSigner?: RPC<Uint8Array, Result>;
33
33
  });
34
34
  /**
35
- * @param maxError, in ms, defaults to 10 seconds
35
+ * @param properties in ms, defaults to 10 seconds
36
36
  */
37
37
  open(properties?: Args): Promise<void>;
38
38
  sign(data: Uint8Array): Promise<SignatureWithKey>;
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAoB,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAO,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKnE,8BAAsB,MAAM;CAAI;AAEhC,qBACa,EAAG,SAAQ,MAAM;IAE7B,SAAS,EAAE,gBAAgB,CAAC;gBAEhB,UAAU,CAAC,EAAE;QAAE,SAAS,EAAE,gBAAgB,CAAA;KAAE;CAMxD;AAED,qBACa,SAAU,SAAQ,MAAM;IAEpC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAEL,UAAU,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;CAM7C;AAED,KAAK,IAAI,GAAG;IAAE,IAAI,CAAC,EAAE,WAAW,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,qBACa,YAAa,SAAQ,OAAO,CAAC,IAAI,CAAC;IAE9C,OAAO,CAAC,aAAa,CAAkC;IAGvD,OAAO,CAAC,eAAe,CAAiB;IAExC,OAAO,CAAC,IAAI,CAAkB;IAC9B,QAAQ,EAAE,MAAM,CAAC;gBAEL,UAAU,EAAE;QACvB,cAAc,EAAE,cAAc,CAAC;QAC/B,YAAY,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;KACvC;IAMD;;OAEG;IACG,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI;IAoCtB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgBjD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;CASjD"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAO,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAoB,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAK1D,8BAAsB,MAAM;CAAG;AAE/B,qBACa,EAAG,SAAQ,MAAM;IAE7B,SAAS,EAAE,gBAAgB,CAAC;gBAEhB,UAAU,CAAC,EAAE;QAAE,SAAS,EAAE,gBAAgB,CAAA;KAAE;CAMxD;AAED,qBACa,SAAU,SAAQ,MAAM;IAEpC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAEL,UAAU,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;CAM7C;AAED,KAAK,IAAI,GAAG;IAAE,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE,qBACa,YAAa,SAAQ,OAAO,CAAC,IAAI,CAAC;IAE9C,OAAO,CAAC,aAAa,CAAkC;IAGvD,OAAO,CAAC,eAAe,CAAiB;IAExC,OAAO,CAAC,IAAI,CAAkB;IAC9B,QAAQ,EAAE,MAAM,CAAC;gBAEL,UAAU,EAAE;QACvB,cAAc,EAAE,cAAc,CAAC;QAC/B,YAAY,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;KACvC;IAMD;;OAEG;IACG,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI;IAgDtB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgBjD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;CASjD"}
@@ -7,15 +7,14 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- import { field, deserialize, variant, option } from "@dao-xyz/borsh";
11
- import { RPC } from "@peerbit/rpc";
12
- import { Program } from "@peerbit/program";
10
+ import { deserialize, field, option, serialize, variant } from "@dao-xyz/borsh";
13
11
  import { SignatureWithKey } from "@peerbit/crypto";
14
12
  import { Entry, HLC } from "@peerbit/log";
15
- import { TrustedNetwork } from "@peerbit/trusted-network";
16
13
  import { logger as loggerFn } from "@peerbit/logger";
17
- import { Replicator } from "@peerbit/shared-log";
18
- import { serialize } from "@dao-xyz/borsh";
14
+ import { Program } from "@peerbit/program";
15
+ import { RPC } from "@peerbit/rpc";
16
+ import {} from "@peerbit/shared-log";
17
+ import { TrustedNetwork } from "@peerbit/trusted-network";
19
18
  const logger = loggerFn({ module: "clock-signer" });
20
19
  const abs = (n) => (n < 0n ? -n : n);
21
20
  export class Result {
@@ -67,16 +66,25 @@ let ClockService = class ClockService extends Program {
67
66
  this._trustedNetwork = properties.trustedNetwork;
68
67
  }
69
68
  /**
70
- * @param maxError, in ms, defaults to 10 seconds
69
+ * @param properties in ms, defaults to 10 seconds
71
70
  */
72
71
  async open(properties) {
72
+ if (properties?.replicate === true) {
73
+ properties.replicate = {
74
+ factor: 1,
75
+ };
76
+ }
77
+ if (properties?.replicate &&
78
+ properties.replicate?.["factor"] !== 1) {
79
+ throw new Error("ClockService can only be used with a factor of 1");
80
+ }
73
81
  this.maxError = BigInt((properties?.maxTimeError || 10e3) * 1e6);
74
- await this._trustedNetwork.open({ role: properties?.role });
82
+ await this._trustedNetwork.open({ replicate: properties?.replicate });
75
83
  await this._remoteSigner.open({
76
84
  topic: this._trustedNetwork.trustGraph.log.log.idString + "/clock", // TODO do better
77
85
  queryType: Uint8Array,
78
86
  responseType: Result,
79
- responseHandler: !properties?.role || properties?.role instanceof Replicator
87
+ responseHandler: !properties?.replicate /* || properties?.replicate instanceof Replicator */ // ?? this feels wrong since the replication duties are dynamic
80
88
  ? async (arr, context) => {
81
89
  const entry = deserialize(arr, Entry);
82
90
  if (entry.hash) {
@@ -88,15 +96,15 @@ let ClockService = class ClockService extends Program {
88
96
  if (abs(now - cmp) > this.maxError) {
89
97
  logger.info("Recieved an entry with an invalid timestamp");
90
98
  return new SignError({
91
- message: "Recieved an entry with an invalid timestamp"
99
+ message: "Recieved an entry with an invalid timestamp",
92
100
  });
93
101
  }
94
102
  const signature = await this.node.identity.sign(serialize(entry.toSignable()));
95
103
  return new Ok({
96
- signature
104
+ signature,
97
105
  });
98
106
  }
99
- : undefined
107
+ : undefined,
100
108
  });
101
109
  }
102
110
  async sign(data) {
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/clock-service",
3
- "version": "2.0.40-aa577a5",
3
+ "version": "2.0.40-cccc078",
4
4
  "description": "Clock signing",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -35,7 +35,7 @@
35
35
  }
36
36
  },
37
37
  "eslintConfig": {
38
- "extends": "ipfs",
38
+ "extends": "peerbit",
39
39
  "parserOptions": {
40
40
  "project": true,
41
41
  "sourceType": "module"
@@ -52,16 +52,17 @@
52
52
  "scripts": {
53
53
  "clean": "aegir clean",
54
54
  "build": "aegir build --no-bundle",
55
- "test": "aegir test -t node"
55
+ "test": "aegir test -t node",
56
+ "lint": "aegir lint"
56
57
  },
57
58
  "author": "dao.xyz",
58
59
  "license": "MIT",
59
60
  "dependencies": {
60
- "@peerbit/logger": "1.0.2-aa577a5",
61
- "@peerbit/rpc": "4.0.7-aa577a5",
62
- "@peerbit/trusted-network": "3.0.40-aa577a5"
61
+ "@peerbit/logger": "1.0.2-cccc078",
62
+ "@peerbit/rpc": "4.0.7-cccc078",
63
+ "@peerbit/trusted-network": "3.0.40-cccc078"
63
64
  },
64
65
  "devDependencies": {
65
- "@peerbit/test-utils": "2.0.33-aa577a5"
66
+ "@peerbit/test-utils": "2.0.33-cccc078"
66
67
  }
67
68
  }
package/src/controller.ts CHANGED
@@ -1,16 +1,16 @@
1
- import { field, deserialize, variant, option } from "@dao-xyz/borsh";
2
- import { RPC, type RPCResponse } from "@peerbit/rpc";
3
- import { Program } from "@peerbit/program";
1
+ import { deserialize, field, option, serialize, variant } from "@dao-xyz/borsh";
4
2
  import { SignatureWithKey } from "@peerbit/crypto";
5
3
  import { Entry, HLC } from "@peerbit/log";
6
- import { TrustedNetwork } from "@peerbit/trusted-network";
7
4
  import { logger as loggerFn } from "@peerbit/logger";
8
- import { Replicator, type RoleOptions } from "@peerbit/shared-log";
9
- import { serialize } from "@dao-xyz/borsh";
5
+ import { Program } from "@peerbit/program";
6
+ import { RPC, type RPCResponse } from "@peerbit/rpc";
7
+ import { type ReplicationOptions } from "@peerbit/shared-log";
8
+ import { TrustedNetwork } from "@peerbit/trusted-network";
9
+
10
10
  const logger = loggerFn({ module: "clock-signer" });
11
11
  const abs = (n: number | bigint) => (n < 0n ? -n : n);
12
12
 
13
- export abstract class Result { }
13
+ export abstract class Result {}
14
14
 
15
15
  @variant(0)
16
16
  export class Ok extends Result {
@@ -38,7 +38,7 @@ export class SignError extends Result {
38
38
  }
39
39
  }
40
40
 
41
- type Args = { role?: RoleOptions; maxTimeError?: number };
41
+ type Args = { replicate?: ReplicationOptions; maxTimeError?: number };
42
42
 
43
43
  @variant("clock_service")
44
44
  export class ClockService extends Program<Args> {
@@ -61,41 +61,53 @@ export class ClockService extends Program<Args> {
61
61
  }
62
62
 
63
63
  /**
64
- * @param maxError, in ms, defaults to 10 seconds
64
+ * @param properties in ms, defaults to 10 seconds
65
65
  */
66
66
  async open(properties?: Args) {
67
+ if (properties?.replicate === true) {
68
+ properties.replicate = {
69
+ factor: 1,
70
+ };
71
+ }
72
+ if (
73
+ properties?.replicate &&
74
+ (properties.replicate as any)?.["factor"] !== 1
75
+ ) {
76
+ throw new Error("ClockService can only be used with a factor of 1");
77
+ }
78
+
67
79
  this.maxError = BigInt((properties?.maxTimeError || 10e3) * 1e6);
68
- await this._trustedNetwork.open({ role: properties?.role });
80
+ await this._trustedNetwork.open({ replicate: properties?.replicate });
69
81
  await this._remoteSigner.open({
70
82
  topic: this._trustedNetwork.trustGraph.log.log.idString + "/clock", // TODO do better
71
83
  queryType: Uint8Array,
72
84
  responseType: Result,
73
85
  responseHandler:
74
- !properties?.role || properties?.role instanceof Replicator
86
+ !properties?.replicate /* || properties?.replicate instanceof Replicator */ // ?? this feels wrong since the replication duties are dynamic
75
87
  ? async (arr, context) => {
76
- const entry = deserialize(arr, Entry);
77
- if (entry.hash) {
78
- logger.warn("Recieved entry with hash, unexpected");
79
- }
80
-
81
- entry._signatures = undefined; // because we dont want to sign signatures
82
-
83
- const now = this._hlc.now().wallTime;
84
- const cmp = (await entry.getClock()).timestamp.wallTime;
85
- if (abs(now - cmp) > this.maxError) {
86
- logger.info("Recieved an entry with an invalid timestamp");
87
- return new SignError({
88
- message: "Recieved an entry with an invalid timestamp"
88
+ const entry = deserialize(arr, Entry);
89
+ if (entry.hash) {
90
+ logger.warn("Recieved entry with hash, unexpected");
91
+ }
92
+
93
+ entry._signatures = undefined; // because we dont want to sign signatures
94
+
95
+ const now = this._hlc.now().wallTime;
96
+ const cmp = (await entry.getClock()).timestamp.wallTime;
97
+ if (abs(now - cmp) > this.maxError) {
98
+ logger.info("Recieved an entry with an invalid timestamp");
99
+ return new SignError({
100
+ message: "Recieved an entry with an invalid timestamp",
101
+ });
102
+ }
103
+ const signature = await this.node.identity.sign(
104
+ serialize(entry.toSignable()),
105
+ );
106
+ return new Ok({
107
+ signature,
89
108
  });
90
109
  }
91
- const signature = await this.node.identity.sign(
92
- serialize(entry.toSignable())
93
- );
94
- return new Ok({
95
- signature
96
- });
97
- }
98
- : undefined
110
+ : undefined,
99
111
  });
100
112
  }
101
113