@peerbit/shared-log 8.0.7 → 9.0.0-55cebfe

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.
Files changed (79) hide show
  1. package/dist/benchmark/get-samples.d.ts +2 -0
  2. package/dist/benchmark/get-samples.d.ts.map +1 -0
  3. package/dist/benchmark/get-samples.js +69 -0
  4. package/dist/benchmark/get-samples.js.map +1 -0
  5. package/dist/benchmark/index.d.ts +2 -0
  6. package/dist/benchmark/index.d.ts.map +1 -0
  7. package/{lib/esm/__benchmark__ → dist/benchmark}/index.js +16 -16
  8. package/dist/benchmark/index.js.map +1 -0
  9. package/dist/benchmark/replication-prune.d.ts +2 -0
  10. package/dist/benchmark/replication-prune.d.ts.map +1 -0
  11. package/dist/benchmark/replication-prune.js +103 -0
  12. package/dist/benchmark/replication-prune.js.map +1 -0
  13. package/dist/benchmark/replication.d.ts +2 -0
  14. package/dist/benchmark/replication.d.ts.map +1 -0
  15. package/dist/benchmark/replication.js +91 -0
  16. package/dist/benchmark/replication.js.map +1 -0
  17. package/{lib/esm → dist/src}/blocks.d.ts +1 -0
  18. package/dist/src/blocks.d.ts.map +1 -0
  19. package/{lib/esm → dist/src}/blocks.js +1 -1
  20. package/dist/src/blocks.js.map +1 -0
  21. package/{lib/esm → dist/src}/cpu.d.ts +2 -1
  22. package/dist/src/cpu.d.ts.map +1 -0
  23. package/{lib/esm → dist/src}/cpu.js +2 -2
  24. package/dist/src/cpu.js.map +1 -0
  25. package/{lib/esm → dist/src}/exchange-heads.d.ts +2 -1
  26. package/dist/src/exchange-heads.d.ts.map +1 -0
  27. package/{lib/esm → dist/src}/exchange-heads.js +9 -7
  28. package/dist/src/exchange-heads.js.map +1 -0
  29. package/{lib/esm → dist/src}/index.d.ts +64 -54
  30. package/dist/src/index.d.ts.map +1 -0
  31. package/{lib/esm → dist/src}/index.js +569 -399
  32. package/dist/src/index.js.map +1 -0
  33. package/{lib/esm → dist/src}/message.d.ts +1 -0
  34. package/dist/src/message.d.ts.map +1 -0
  35. package/{lib/esm → dist/src}/pid.d.ts +1 -0
  36. package/dist/src/pid.d.ts.map +1 -0
  37. package/{lib/esm → dist/src}/pid.js +20 -20
  38. package/dist/src/pid.js.map +1 -0
  39. package/dist/src/ranges.d.ts +10 -0
  40. package/dist/src/ranges.d.ts.map +1 -0
  41. package/dist/src/ranges.js +645 -0
  42. package/dist/src/ranges.js.map +1 -0
  43. package/dist/src/replication.d.ts +112 -0
  44. package/dist/src/replication.d.ts.map +1 -0
  45. package/dist/src/replication.js +348 -0
  46. package/dist/src/replication.js.map +1 -0
  47. package/dist/src/role.d.ts +2 -0
  48. package/dist/src/role.d.ts.map +1 -0
  49. package/dist/src/role.js +106 -0
  50. package/dist/src/role.js.map +1 -0
  51. package/package.json +70 -43
  52. package/src/blocks.ts +1 -1
  53. package/src/cpu.ts +7 -6
  54. package/src/exchange-heads.ts +19 -19
  55. package/src/index.ts +881 -609
  56. package/src/pid.ts +22 -21
  57. package/src/ranges.ts +692 -148
  58. package/src/replication.ts +271 -19
  59. package/src/role.ts +63 -83
  60. package/LICENSE +0 -202
  61. package/lib/esm/__benchmark__/index.d.ts +0 -1
  62. package/lib/esm/__benchmark__/index.js.map +0 -1
  63. package/lib/esm/blocks.js.map +0 -1
  64. package/lib/esm/cpu.js.map +0 -1
  65. package/lib/esm/exchange-heads.js.map +0 -1
  66. package/lib/esm/index.js.map +0 -1
  67. package/lib/esm/pid.js.map +0 -1
  68. package/lib/esm/ranges.d.ts +0 -12
  69. package/lib/esm/ranges.js +0 -247
  70. package/lib/esm/ranges.js.map +0 -1
  71. package/lib/esm/replication.d.ts +0 -53
  72. package/lib/esm/replication.js +0 -105
  73. package/lib/esm/replication.js.map +0 -1
  74. package/lib/esm/role.d.ts +0 -38
  75. package/lib/esm/role.js +0 -130
  76. package/lib/esm/role.js.map +0 -1
  77. package/src/__benchmark__/index.ts +0 -115
  78. /package/{lib/esm → dist/src}/message.js +0 -0
  79. /package/{lib/esm → dist/src}/message.js.map +0 -0
package/package.json CHANGED
@@ -1,45 +1,72 @@
1
1
  {
2
- "name": "@peerbit/shared-log",
3
- "version": "8.0.7",
4
- "description": "Shared log",
5
- "type": "module",
6
- "sideEffects": false,
7
- "module": "lib/esm/index.js",
8
- "types": "lib/esm/index.d.ts",
9
- "exports": {
10
- "import": "./lib/esm/index.js",
11
- "require": "./lib/cjs/index.js"
12
- },
13
- "files": [
14
- "lib",
15
- "src",
16
- "!src/**/__tests__",
17
- "!lib/**/__tests__",
18
- "LICENSE"
19
- ],
20
- "publishConfig": {
21
- "access": "public"
22
- },
23
- "scripts": {
24
- "clean": "shx rm -rf lib/*",
25
- "build": "yarn clean && tsc -p tsconfig.json",
26
- "test": "node ../../../../node_modules/.bin/jest test -c ../../../../jest.config.ts --runInBand --forceExit",
27
- "test:unit": "node ../../../../node_modules/.bin/jest test -c ../../../../jest.config.unit.ts --runInBand --forceExit",
28
- "test:integration": "node ../node_modules/.bin/jest test -c ../../../../jest.config.integration.ts --runInBand --forceExit"
29
- },
30
- "author": "dao.xyz",
31
- "license": "MIT",
32
- "dependencies": {
33
- "@dao-xyz/borsh": "^5.2.1",
34
- "@peerbit/log": "3.0.34",
35
- "@peerbit/logger": "1.0.2",
36
- "@peerbit/program": "4.0.7",
37
- "@peerbit/rpc": "4.0.7",
38
- "@peerbit/time": "2.0.6",
39
- "p-debounce": "^4.0.0"
40
- },
41
- "devDependencies": {
42
- "@peerbit/test-utils": "^2.0.33"
43
- },
44
- "gitHead": "fcd486b9a5c3b7d94e2ae14f1b06ab2a0f7841ad"
2
+ "name": "@peerbit/shared-log",
3
+ "version": "9.0.0-55cebfe",
4
+ "description": "Shared log",
5
+ "sideEffects": false,
6
+ "type": "module",
7
+ "types": "./dist/src/index.d.ts",
8
+ "typesVersions": {
9
+ "*": {
10
+ "*": [
11
+ "*",
12
+ "dist/*",
13
+ "dist/src/*",
14
+ "dist/src/*/index"
15
+ ],
16
+ "src/*": [
17
+ "*",
18
+ "dist/*",
19
+ "dist/src/*",
20
+ "dist/src/*/index"
21
+ ]
22
+ }
23
+ },
24
+ "files": [
25
+ "src",
26
+ "dist",
27
+ "!dist/e2e",
28
+ "!dist/test",
29
+ "!**/*.tsbuildinfo"
30
+ ],
31
+ "exports": {
32
+ ".": {
33
+ "types": "./dist/src/index.d.ts",
34
+ "import": "./dist/src/index.js"
35
+ }
36
+ },
37
+ "eslintConfig": {
38
+ "extends": "peerbit",
39
+ "parserOptions": {
40
+ "project": true,
41
+ "sourceType": "module"
42
+ },
43
+ "ignorePatterns": [
44
+ "!.aegir.js",
45
+ "test/ts-use",
46
+ "*.d.ts"
47
+ ]
48
+ },
49
+ "publishConfig": {
50
+ "access": "public"
51
+ },
52
+ "scripts": {
53
+ "clean": "aegir clean",
54
+ "build": "aegir build --no-bundle",
55
+ "test": "aegir test --target node",
56
+ "lint": "aegir lint"
57
+ },
58
+ "author": "dao.xyz",
59
+ "license": "MIT",
60
+ "dependencies": {
61
+ "@dao-xyz/borsh": "^5.2.3",
62
+ "@peerbit/logger": "1.0.3-55cebfe",
63
+ "@peerbit/program": "5.0.0-55cebfe",
64
+ "@peerbit/log": "4.0.0-55cebfe",
65
+ "@peerbit/rpc": "5.0.0-55cebfe",
66
+ "@peerbit/time": "2.0.7-55cebfe",
67
+ "p-debounce": "^4.0.0"
68
+ },
69
+ "devDependencies": {
70
+ "@peerbit/test-utils": "2.0.34-55cebfe"
71
+ }
45
72
  }
package/src/blocks.ts CHANGED
@@ -2,7 +2,7 @@ import { field, variant } from "@dao-xyz/borsh";
2
2
  import {
3
3
  BlockRequest,
4
4
  BlockResponse,
5
- BlockMessage as IBlockMessage
5
+ BlockMessage as IBlockMessage,
6
6
  } from "@peerbit/blocks";
7
7
  import { TransportMessage } from "./message.js";
8
8
 
package/src/cpu.ts CHANGED
@@ -11,15 +11,16 @@ export interface CPUUsage {
11
11
  */
12
12
 
13
13
  export class CPUUsageIntervalLag implements CPUUsage {
14
- dt: number[];
15
- interval: ReturnType<typeof setInterval>;
16
- sum: number;
14
+ dt: number[] = [];
15
+ interval?: ReturnType<typeof setInterval>;
16
+ sum: number = 0;
17
+
17
18
  constructor(
18
19
  readonly properties: {
19
20
  windowSize: number;
20
21
  intervalTime: number;
21
22
  upperBoundLag: number;
22
- } = { windowSize: 50, intervalTime: 100, upperBoundLag: 1000 }
23
+ } = { windowSize: 50, intervalTime: 100, upperBoundLag: 1000 },
23
24
  ) {}
24
25
  private mean() {
25
26
  return this.sum / this.dt.length;
@@ -29,14 +30,14 @@ export class CPUUsageIntervalLag implements CPUUsage {
29
30
  return (
30
31
  Math.min(
31
32
  Math.max(this.mean() - this.properties.intervalTime, 0),
32
- this.properties.upperBoundLag
33
+ this.properties.upperBoundLag,
33
34
  ) / this.properties.upperBoundLag
34
35
  ); // 1 if lagging more than MAX_INTERVAL seconds
35
36
  }
36
37
 
37
38
  start() {
38
39
  this.dt = new Array<number>(this.properties.windowSize).fill(
39
- this.properties.intervalTime
40
+ this.properties.intervalTime,
40
41
  );
41
42
  this.sum = this.properties.windowSize * this.properties.intervalTime;
42
43
 
@@ -1,9 +1,9 @@
1
- import { variant, field, vec, fixedArray } from "@dao-xyz/borsh";
2
- import { Entry, EntryType, ShallowEntry } from "@peerbit/log";
1
+ import { field, fixedArray, variant, vec } from "@dao-xyz/borsh";
2
+ import { Cache } from "@peerbit/cache";
3
+ import { Entry, EntryType, type ShallowEntry } from "@peerbit/log";
3
4
  import { Log } from "@peerbit/log";
4
5
  import { logger as loggerFn } from "@peerbit/logger";
5
6
  import { TransportMessage } from "./message.js";
6
- import { Cache } from "@peerbit/cache";
7
7
 
8
8
  const logger = loggerFn({ module: "exchange-heads" });
9
9
 
@@ -91,7 +91,7 @@ const MAX_EXCHANGE_MESSAGE_SIZE = 1e5; // 100kb. Too large size might not be fas
91
91
  export const createExchangeHeadsMessages = async (
92
92
  log: Log<any>,
93
93
  heads: Entry<any>[],
94
- gidParentCache: Cache<Entry<any>[]>
94
+ gidParentCache: Cache<Entry<any>[]>,
95
95
  ): Promise<ExchangeHeadsMessage<any>[]> => {
96
96
  const messages: ExchangeHeadsMessage<any>[] = [];
97
97
  let size = 0;
@@ -117,8 +117,8 @@ export const createExchangeHeadsMessages = async (
117
117
  current.push(
118
118
  new EntryWithRefs({
119
119
  entry: fromHead,
120
- gidRefrences: refs.map((x) => x.meta.gid)
121
- })
120
+ gidRefrences: refs.map((x) => x.meta.gid),
121
+ }),
122
122
  );
123
123
 
124
124
  size += fromHead.size;
@@ -126,8 +126,8 @@ export const createExchangeHeadsMessages = async (
126
126
  size = 0;
127
127
  messages.push(
128
128
  new ExchangeHeadsMessage({
129
- heads: current
130
- })
129
+ heads: current,
130
+ }),
131
131
  );
132
132
  current = [];
133
133
  continue;
@@ -136,8 +136,8 @@ export const createExchangeHeadsMessages = async (
136
136
  if (current.length > 0) {
137
137
  messages.push(
138
138
  new ExchangeHeadsMessage({
139
- heads: current
140
- })
139
+ heads: current,
140
+ }),
141
141
  );
142
142
  }
143
143
  return messages;
@@ -146,7 +146,7 @@ export const createExchangeHeadsMessages = async (
146
146
  export const allEntriesWithUniqueGids = async (
147
147
  log: Log<any>,
148
148
  entry: Entry<any>,
149
- gidParentCache: Cache<Entry<any>[]>
149
+ gidParentCache: Cache<Entry<any>[]>,
150
150
  ): Promise<Entry<any>[]> => {
151
151
  const cachedValue = gidParentCache.get(entry.hash);
152
152
  if (cachedValue != null) {
@@ -154,23 +154,23 @@ export const allEntriesWithUniqueGids = async (
154
154
  }
155
155
 
156
156
  // TODO optimize this
157
- const map: Map<string, ShallowEntry> = new Map();
158
- let curr: ShallowEntry[] = [entry];
157
+ const map: Map<string, ShallowEntry | Entry<any>> = new Map();
158
+ let curr: (Entry<any> | ShallowEntry)[] = [entry];
159
159
  while (curr.length > 0) {
160
- const nexts: ShallowEntry[] = [];
160
+ const nexts: (Entry<any> | ShallowEntry)[] = [];
161
161
  for (const element of curr) {
162
162
  if (!map.has(element.meta.gid)) {
163
163
  map.set(element.meta.gid, element);
164
164
  if (element.meta.type === EntryType.APPEND) {
165
165
  for (const next of element.meta.next) {
166
- const indexedEntry = log.entryIndex.getShallow(next);
166
+ const indexedEntry = await log.entryIndex.getShallow(next);
167
167
  if (!indexedEntry) {
168
168
  logger.error(
169
169
  "Failed to find indexed entry for hash when fetching references: " +
170
- next
170
+ next,
171
171
  );
172
172
  } else {
173
- nexts.push(indexedEntry);
173
+ nexts.push(indexedEntry.value);
174
174
  }
175
175
  }
176
176
  }
@@ -180,8 +180,8 @@ export const allEntriesWithUniqueGids = async (
180
180
  }
181
181
  const value = [
182
182
  ...(await Promise.all(
183
- [...map.values()].map((x) => log.entryIndex.get(x.hash))
184
- ))
183
+ [...map.values()].map((x) => log.entryIndex.get(x.hash)),
184
+ )),
185
185
  ].filter((x) => !!x) as Entry<any>[];
186
186
  gidParentCache.add(entry.hash, value);
187
187
  return value;