@peerbit/log 1.0.2

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 (92) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +11 -0
  3. package/lib/esm/change.d.ts +5 -0
  4. package/lib/esm/change.js +2 -0
  5. package/lib/esm/change.js.map +1 -0
  6. package/lib/esm/clock.d.ts +87 -0
  7. package/lib/esm/clock.js +260 -0
  8. package/lib/esm/clock.js.map +1 -0
  9. package/lib/esm/difference.d.ts +1 -0
  10. package/lib/esm/difference.js +20 -0
  11. package/lib/esm/difference.js.map +1 -0
  12. package/lib/esm/encoding.d.ts +7 -0
  13. package/lib/esm/encoding.js +20 -0
  14. package/lib/esm/encoding.js.map +1 -0
  15. package/lib/esm/entry-index.d.ts +21 -0
  16. package/lib/esm/entry-index.js +63 -0
  17. package/lib/esm/entry-index.js.map +1 -0
  18. package/lib/esm/entry-with-refs.d.ts +5 -0
  19. package/lib/esm/entry-with-refs.js +2 -0
  20. package/lib/esm/entry-with-refs.js.map +1 -0
  21. package/lib/esm/entry.d.ts +179 -0
  22. package/lib/esm/entry.js +591 -0
  23. package/lib/esm/entry.js.map +1 -0
  24. package/lib/esm/find-uniques.d.ts +1 -0
  25. package/lib/esm/find-uniques.js +12 -0
  26. package/lib/esm/find-uniques.js.map +1 -0
  27. package/lib/esm/heads-cache.d.ts +64 -0
  28. package/lib/esm/heads-cache.js +317 -0
  29. package/lib/esm/heads-cache.js.map +1 -0
  30. package/lib/esm/heads.d.ts +63 -0
  31. package/lib/esm/heads.js +143 -0
  32. package/lib/esm/heads.js.map +1 -0
  33. package/lib/esm/hrtime.d.ts +5 -0
  34. package/lib/esm/hrtime.js +71 -0
  35. package/lib/esm/hrtime.js.map +1 -0
  36. package/lib/esm/index.d.ts +11 -0
  37. package/lib/esm/index.js +11 -0
  38. package/lib/esm/index.js.map +1 -0
  39. package/lib/esm/is-defined.d.ts +1 -0
  40. package/lib/esm/is-defined.js +2 -0
  41. package/lib/esm/is-defined.js.map +1 -0
  42. package/lib/esm/log-errors.d.ts +5 -0
  43. package/lib/esm/log-errors.js +6 -0
  44. package/lib/esm/log-errors.js.map +1 -0
  45. package/lib/esm/log-sorting.d.ts +44 -0
  46. package/lib/esm/log-sorting.js +86 -0
  47. package/lib/esm/log-sorting.js.map +1 -0
  48. package/lib/esm/log.d.ts +205 -0
  49. package/lib/esm/log.js +1004 -0
  50. package/lib/esm/log.js.map +1 -0
  51. package/lib/esm/logger.d.ts +2 -0
  52. package/lib/esm/logger.js +4 -0
  53. package/lib/esm/logger.js.map +1 -0
  54. package/lib/esm/package.json +3 -0
  55. package/lib/esm/snapshot.d.ts +22 -0
  56. package/lib/esm/snapshot.js +83 -0
  57. package/lib/esm/snapshot.js.map +1 -0
  58. package/lib/esm/trim.d.ts +49 -0
  59. package/lib/esm/trim.js +203 -0
  60. package/lib/esm/trim.js.map +1 -0
  61. package/lib/esm/types.d.ts +6 -0
  62. package/lib/esm/types.js +23 -0
  63. package/lib/esm/types.js.map +1 -0
  64. package/lib/esm/utils.d.ts +2 -0
  65. package/lib/esm/utils.js +3 -0
  66. package/lib/esm/utils.js.map +1 -0
  67. package/lib/esm/values.d.ts +33 -0
  68. package/lib/esm/values.js +141 -0
  69. package/lib/esm/values.js.map +1 -0
  70. package/package.json +79 -0
  71. package/src/change.ts +2 -0
  72. package/src/clock.ts +280 -0
  73. package/src/difference.ts +22 -0
  74. package/src/encoding.ts +27 -0
  75. package/src/entry-index.ts +78 -0
  76. package/src/entry-with-refs.ts +6 -0
  77. package/src/entry.ts +749 -0
  78. package/src/find-uniques.ts +14 -0
  79. package/src/heads-cache.ts +400 -0
  80. package/src/heads.ts +208 -0
  81. package/src/hrtime.ts +78 -0
  82. package/src/index.ts +11 -0
  83. package/src/is-defined.ts +1 -0
  84. package/src/log-errors.ts +9 -0
  85. package/src/log-sorting.ts +108 -0
  86. package/src/log.ts +1262 -0
  87. package/src/logger.ts +3 -0
  88. package/src/snapshot.ts +103 -0
  89. package/src/trim.ts +269 -0
  90. package/src/types.ts +12 -0
  91. package/src/utils.ts +2 -0
  92. package/src/values.ts +193 -0
package/LICENSE ADDED
@@ -0,0 +1,23 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016-2018 Protocol Labs Inc.
4
+ Copyright (c) 2018-2019 Haja Networks Oy
5
+ Copyright (c) 2022 dao.xyz
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in all
15
+ copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ [Forked from](https://github.com/orbitdb/ipfs-log)
2
+
3
+ Additional features
4
+ + Binary ser/der
5
+ + Log "cutting"
6
+ + Typescript
7
+ + Graph ids (gid)
8
+
9
+ Other changes
10
+ + Removal of entry refs (improve load speeds can be achieved in other way)
11
+ + ESM only
@@ -0,0 +1,5 @@
1
+ import { Entry } from "./entry";
2
+ export type Change<T> = {
3
+ added: Entry<T>[];
4
+ removed: Entry<T>[];
5
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=change.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change.js","sourceRoot":"","sources":["../../src/change.ts"],"names":[],"mappings":""}
@@ -0,0 +1,87 @@
1
+ /**
2
+ The MIT License (MIT)
3
+
4
+ Copyright (c) 2021 Martin Heidegger
5
+ Copyright (c) 2022 dao.xyz
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in all
15
+ copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ SOFTWARE.
24
+ */
25
+ export declare function fromBits(low: any, high: any, unsigned: any, target?: any): any;
26
+ export declare class Timestamp {
27
+ wallTime: bigint;
28
+ logical: number;
29
+ constructor(properties?: {
30
+ wallTime: bigint;
31
+ logical?: number;
32
+ });
33
+ static compare(a: Timestamp, b: Timestamp): 1 | 0 | -1;
34
+ static bigger(a: Timestamp, b: Timestamp): Timestamp;
35
+ static smaller(a: Timestamp, b: Timestamp): Timestamp;
36
+ compare(other: Timestamp): 1 | 0 | -1;
37
+ clone(): Timestamp;
38
+ toString(): string;
39
+ }
40
+ export declare class HLC {
41
+ maxOffset: bigint;
42
+ wallTimeUpperBound: bigint;
43
+ toleratedForwardClockJump: bigint;
44
+ last: Timestamp;
45
+ wallTime: () => bigint;
46
+ constructor(properties?: {
47
+ wallTime?: () => bigint;
48
+ maxOffset?: bigint;
49
+ wallTimeUpperBound?: bigint;
50
+ toleratedForwardClockJump?: bigint;
51
+ last?: Timestamp;
52
+ });
53
+ now(): Timestamp;
54
+ validateOffset(offset: bigint): void;
55
+ update(other: Timestamp): Timestamp;
56
+ }
57
+ export declare class ClockOffsetError extends Error {
58
+ offset: bigint;
59
+ maxOffset: bigint;
60
+ constructor(offset: bigint, maxOffset: bigint);
61
+ }
62
+ export declare class WallTimeOverflowError extends Error {
63
+ time: bigint;
64
+ maxTime: bigint;
65
+ constructor(time: bigint, maxTime: bigint);
66
+ }
67
+ export declare class ForwardJumpError extends Error {
68
+ timejump: bigint;
69
+ tolerance: bigint;
70
+ constructor(timejump: bigint, tolerance: bigint);
71
+ }
72
+ export declare class LamportClock {
73
+ id: Uint8Array;
74
+ timestamp: Timestamp;
75
+ constructor(properties?: {
76
+ id: Uint8Array;
77
+ timestamp?: Timestamp | number;
78
+ });
79
+ clone(): LamportClock;
80
+ equals(other: LamportClock): boolean;
81
+ /**
82
+ * Not optimized, dont use for performance critical things
83
+ * @returns
84
+ */
85
+ advance(): LamportClock;
86
+ static compare(a: LamportClock, b: LamportClock): number;
87
+ }
@@ -0,0 +1,260 @@
1
+ /**
2
+ The MIT License (MIT)
3
+
4
+ Copyright (c) 2021 Martin Heidegger
5
+ Copyright (c) 2022 dao.xyz
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in all
15
+ copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ SOFTWARE.
24
+ */
25
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
26
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
27
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
28
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
29
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
30
+ };
31
+ var __metadata = (this && this.__metadata) || function (k, v) {
32
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
33
+ };
34
+ var Timestamp_1, LamportClock_1;
35
+ import { field, variant } from "@dao-xyz/borsh";
36
+ import { compare, equals } from "@peerbit/uint8arrays";
37
+ import hrtime from "./hrtime.js";
38
+ const hrTimeNow = hrtime.bigint();
39
+ const startTime = BigInt(Date.now()) * BigInt(1e6) - hrTimeNow;
40
+ const bigintTime = () => startTime + hrtime.bigint();
41
+ export function fromBits(low, high, unsigned, target) {
42
+ if (target === undefined || target === null) {
43
+ return {
44
+ low: low | 0,
45
+ high: high | 0,
46
+ unsigned: !!unsigned,
47
+ };
48
+ }
49
+ target.low = low | 0;
50
+ target.high = high | 0;
51
+ target.unsigned = !!unsigned;
52
+ return target;
53
+ }
54
+ const n1e6 = BigInt(1e6);
55
+ const UINT64_MAX = 18446744073709551615n;
56
+ const UINT32_MAX = 0xffffffff;
57
+ function bigIntCoerce(input, fallback) {
58
+ if (typeof input === "bigint")
59
+ return input;
60
+ if (typeof input === "number" || typeof input === "string")
61
+ return BigInt(input);
62
+ return fallback;
63
+ }
64
+ export let Timestamp = Timestamp_1 = class Timestamp {
65
+ wallTime;
66
+ logical;
67
+ constructor(properties) {
68
+ if (properties) {
69
+ this.wallTime = properties.wallTime;
70
+ this.logical = properties.logical || 0;
71
+ }
72
+ }
73
+ static compare(a, b) {
74
+ if (a.wallTime > b.wallTime)
75
+ return 1;
76
+ if (a.wallTime < b.wallTime)
77
+ return -1;
78
+ if (a.logical > b.logical)
79
+ return 1;
80
+ if (a.logical < b.logical)
81
+ return -1;
82
+ return 0;
83
+ }
84
+ static bigger(a, b) {
85
+ return a.compare(b) === -1 ? b : a;
86
+ }
87
+ static smaller(a, b) {
88
+ return a.compare(b) === 1 ? b : a;
89
+ }
90
+ compare(other) {
91
+ return Timestamp_1.compare(this, other);
92
+ }
93
+ clone() {
94
+ return new Timestamp_1({
95
+ wallTime: this.wallTime,
96
+ logical: this.logical,
97
+ });
98
+ }
99
+ toString() {
100
+ return `Timestamp: wallTime: ${this.wallTime}, logical: ${this.logical}`;
101
+ }
102
+ };
103
+ __decorate([
104
+ field({ type: "u64" }),
105
+ __metadata("design:type", BigInt)
106
+ ], Timestamp.prototype, "wallTime", void 0);
107
+ __decorate([
108
+ field({ type: "u32" }),
109
+ __metadata("design:type", Number)
110
+ ], Timestamp.prototype, "logical", void 0);
111
+ Timestamp = Timestamp_1 = __decorate([
112
+ variant(0),
113
+ __metadata("design:paramtypes", [Object])
114
+ ], Timestamp);
115
+ export class HLC {
116
+ maxOffset;
117
+ wallTimeUpperBound;
118
+ toleratedForwardClockJump;
119
+ last;
120
+ wallTime;
121
+ constructor(properties = {}) {
122
+ this.wallTime = properties.wallTime || bigintTime;
123
+ this.maxOffset = bigIntCoerce(properties.maxOffset, 0n);
124
+ this.wallTimeUpperBound = bigIntCoerce(properties.wallTimeUpperBound, 0n);
125
+ this.toleratedForwardClockJump = bigIntCoerce(properties.toleratedForwardClockJump, 0n);
126
+ this.last = new Timestamp({ wallTime: this.wallTime() });
127
+ if (properties.last) {
128
+ this.last = Timestamp.bigger(properties.last, this.last);
129
+ }
130
+ }
131
+ now() {
132
+ return this.update(this.last);
133
+ }
134
+ validateOffset(offset) {
135
+ if (this.toleratedForwardClockJump > 0n &&
136
+ -offset > this.toleratedForwardClockJump) {
137
+ throw new ForwardJumpError(-offset, this.toleratedForwardClockJump);
138
+ }
139
+ if (this.maxOffset > 0n && offset > this.maxOffset) {
140
+ throw new ClockOffsetError(offset, this.maxOffset);
141
+ }
142
+ }
143
+ update(other) {
144
+ const last = Timestamp.bigger(other, this.last);
145
+ let wallTime = this.wallTime();
146
+ const offset = last.wallTime - wallTime;
147
+ this.validateOffset(offset);
148
+ let logical;
149
+ if (offset < 0n) {
150
+ logical = 0;
151
+ }
152
+ else {
153
+ wallTime = last.wallTime;
154
+ logical = last.logical + 1;
155
+ if (logical > UINT32_MAX) {
156
+ wallTime += 1n;
157
+ logical = 0;
158
+ }
159
+ }
160
+ const maxWallTime = this.wallTimeUpperBound > 0n ? this.wallTimeUpperBound : UINT64_MAX;
161
+ if (wallTime > maxWallTime) {
162
+ throw new WallTimeOverflowError(wallTime, maxWallTime);
163
+ }
164
+ this.last = new Timestamp({ wallTime, logical });
165
+ return this.last;
166
+ }
167
+ }
168
+ export class ClockOffsetError extends Error {
169
+ offset;
170
+ maxOffset;
171
+ constructor(offset, maxOffset) {
172
+ super(`The received time is ${offset / n1e6}ms ahead of the wall time, exceeding the 'maxOffset' limit of ${maxOffset / n1e6}ms.`);
173
+ this.offset = offset;
174
+ this.maxOffset = maxOffset;
175
+ }
176
+ }
177
+ export class WallTimeOverflowError extends Error {
178
+ time;
179
+ maxTime;
180
+ constructor(time, maxTime) {
181
+ super(`The wall time ${time / n1e6}ms exceeds the max time of ${maxTime / n1e6}ms.`);
182
+ this.time = time;
183
+ this.maxTime = maxTime;
184
+ }
185
+ }
186
+ export class ForwardJumpError extends Error {
187
+ timejump;
188
+ tolerance;
189
+ constructor(timejump, tolerance) {
190
+ super(`Detected a forward time jump of ${timejump / n1e6}ms, which exceed the allowed tolerance of ${tolerance / n1e6}ms.`);
191
+ this.timejump = timejump;
192
+ this.tolerance = tolerance;
193
+ }
194
+ }
195
+ export let LamportClock = LamportClock_1 = class LamportClock {
196
+ id;
197
+ timestamp;
198
+ constructor(properties) {
199
+ if (properties) {
200
+ this.id = properties.id;
201
+ if (!properties.timestamp) {
202
+ this.timestamp = new Timestamp({
203
+ wallTime: bigintTime(),
204
+ logical: 0,
205
+ });
206
+ }
207
+ else {
208
+ if (typeof properties.timestamp === "number") {
209
+ this.timestamp = new Timestamp({
210
+ wallTime: bigintTime(),
211
+ logical: properties.timestamp,
212
+ });
213
+ }
214
+ else {
215
+ this.timestamp = properties.timestamp;
216
+ }
217
+ }
218
+ }
219
+ }
220
+ clone() {
221
+ return new LamportClock_1({
222
+ id: this.id,
223
+ timestamp: this.timestamp.clone(),
224
+ });
225
+ }
226
+ equals(other) {
227
+ return (equals(this.id, other.id) && this.timestamp.compare(other.timestamp) === 0);
228
+ }
229
+ /**
230
+ * Not optimized, dont use for performance critical things
231
+ * @returns
232
+ */
233
+ advance() {
234
+ const h = new HLC();
235
+ h.update(new Timestamp(this.timestamp));
236
+ return new LamportClock_1({ id: this.id, timestamp: h.now() });
237
+ }
238
+ static compare(a, b) {
239
+ // Calculate the "distance" based on the clock, ie. lower or greater
240
+ const timestamp = a.timestamp.compare(b.timestamp);
241
+ if (timestamp !== 0)
242
+ return timestamp;
243
+ // If the sequence number is the same (concurrent events),
244
+ // and the IDs are different, take the one with a "lower" id
245
+ return compare(a.id, b.id);
246
+ }
247
+ };
248
+ __decorate([
249
+ field({ type: Uint8Array }),
250
+ __metadata("design:type", Uint8Array)
251
+ ], LamportClock.prototype, "id", void 0);
252
+ __decorate([
253
+ field({ type: Timestamp }),
254
+ __metadata("design:type", Timestamp)
255
+ ], LamportClock.prototype, "timestamp", void 0);
256
+ LamportClock = LamportClock_1 = __decorate([
257
+ variant(0),
258
+ __metadata("design:paramtypes", [Object])
259
+ ], LamportClock);
260
+ //# sourceMappingURL=clock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clock.js","sourceRoot":"","sources":["../../src/clock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;;;;;;;;;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;AAClC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC/D,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;AAErD,MAAM,UAAU,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAO;IACpD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE;QAC5C,OAAO;YACN,GAAG,EAAE,GAAG,GAAG,CAAC;YACZ,IAAI,EAAE,IAAI,GAAG,CAAC;YACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACpB,CAAC;KACF;IACD,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACrB,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;IACvB,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC7B,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACzB,MAAM,UAAU,GAAG,qBAAqB,CAAC;AACzC,MAAM,UAAU,GAAG,UAAU,CAAC;AAE9B,SAAS,YAAY,CAAC,KAAK,EAAE,QAAQ;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;QACzD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,OAAO,QAAQ,CAAC;AACjB,CAAC;AAGM,WAAM,SAAS,iBAAf,MAAM,SAAS;IAErB,QAAQ,CAAS;IAGjB,OAAO,CAAS;IAEhB,YAAY,UAAmD;QAC9D,IAAI,UAAU,EAAE;YACf,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;YACpC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;SACvC;IACF,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,CAAY,EAAE,CAAY;QACxC,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ;YAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ;YAAE,OAAO,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;YAAE,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;YAAE,OAAO,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,CAAC;IACV,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,CAAY,EAAE,CAAY;QACvC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,CAAC,OAAO,CAAC,CAAY,EAAE,CAAY;QACxC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,CAAC,KAAgB;QACvB,OAAO,WAAS,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,KAAK;QACJ,OAAO,IAAI,WAAS,CAAC;YACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;SACrB,CAAC,CAAC;IACJ,CAAC;IAED,QAAQ;QACP,OAAO,wBAAwB,IAAI,CAAC,QAAQ,cAAc,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1E,CAAC;CACD,CAAA;AAxCA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;2CACN;AAGjB;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;0CACP;AALJ,SAAS;IADrB,OAAO,CAAC,CAAC,CAAC;;GACE,SAAS,CA0CrB;AAED,MAAM,OAAO,GAAG;IACf,SAAS,CAAS;IAClB,kBAAkB,CAAS;IAC3B,yBAAyB,CAAS;IAClC,IAAI,CAAY;IAChB,QAAQ,CAAe;IACvB,YACC,aAMI,EAAE;QAEN,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC,UAAU,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,yBAAyB,GAAG,YAAY,CAC5C,UAAU,CAAC,yBAAyB,EACpC,EAAE,CACF,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI,UAAU,CAAC,IAAI,EAAE;YACpB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACzD;IACF,CAAC;IAED,GAAG;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,cAAc,CAAC,MAAc;QAC5B,IACC,IAAI,CAAC,yBAAyB,GAAG,EAAE;YACnC,CAAC,MAAM,GAAG,IAAI,CAAC,yBAAyB,EACvC;YACD,MAAM,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;SACpE;QACD,IAAI,IAAI,CAAC,SAAS,GAAG,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;YACnD,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SACnD;IACF,CAAC;IAED,MAAM,CAAC,KAAgB;QACtB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,OAAe,CAAC;QACpB,IAAI,MAAM,GAAG,EAAE,EAAE;YAChB,OAAO,GAAG,CAAC,CAAC;SACZ;aAAM;YACN,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YACzB,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YAC3B,IAAI,OAAO,GAAG,UAAU,EAAE;gBACzB,QAAQ,IAAI,EAAE,CAAC;gBACf,OAAO,GAAG,CAAC,CAAC;aACZ;SACD;QACD,MAAM,WAAW,GAChB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC;QACrE,IAAI,QAAQ,GAAG,WAAW,EAAE;YAC3B,MAAM,IAAI,qBAAqB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;SACvD;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;CACD;AAED,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAC1C,MAAM,CAAS;IACf,SAAS,CAAS;IAClB,YAAY,MAAc,EAAE,SAAiB;QAC5C,KAAK,CACJ,wBACC,MAAM,GAAG,IACV,iEACC,SAAS,GAAG,IACb,KAAK,CACL,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;CACD;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC/C,IAAI,CAAS;IACb,OAAO,CAAS;IAChB,YAAY,IAAY,EAAE,OAAe;QACxC,KAAK,CACJ,iBAAiB,IAAI,GAAG,IAAI,8BAC3B,OAAO,GAAG,IACX,KAAK,CACL,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;CACD;AAED,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAC1C,QAAQ,CAAS;IACjB,SAAS,CAAS;IAClB,YAAY,QAAgB,EAAE,SAAiB;QAC9C,KAAK,CACJ,mCACC,QAAQ,GAAG,IACZ,6CAA6C,SAAS,GAAG,IAAI,KAAK,CAClE,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;CACD;AAGM,WAAM,YAAY,oBAAlB,MAAM,YAAY;IAExB,EAAE,CAAa;IAGf,SAAS,CAAY;IAErB,YAAY,UAA+D;QAC1E,IAAI,UAAU,EAAE;YACf,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;gBAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC;oBAC9B,QAAQ,EAAE,UAAU,EAAE;oBACtB,OAAO,EAAE,CAAC;iBACV,CAAC,CAAC;aACH;iBAAM;gBACN,IAAI,OAAO,UAAU,CAAC,SAAS,KAAK,QAAQ,EAAE;oBAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC;wBAC9B,QAAQ,EAAE,UAAU,EAAE;wBACtB,OAAO,EAAE,UAAU,CAAC,SAAS;qBAC7B,CAAC,CAAC;iBACH;qBAAM;oBACN,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;iBACtC;aACD;SACD;IACF,CAAC;IAED,KAAK;QACJ,OAAO,IAAI,cAAY,CAAC;YACvB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;SACjC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAmB;QACzB,OAAO,CACN,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAC1E,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,OAAO;QACN,MAAM,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QACpB,CAAC,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACxC,OAAO,IAAI,cAAY,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,CAAe,EAAE,CAAe;QAC9C,oEAAoE;QAEpE,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,SAAS,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAEtC,0DAA0D;QAC1D,4DAA4D;QAC5D,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;CACD,CAAA;AA3DA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;8BACxB,UAAU;wCAAC;AAGf;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;8BAChB,SAAS;+CAAC;AALT,YAAY;IADxB,OAAO,CAAC,CAAC,CAAC;;GACE,YAAY,CA6DxB"}
@@ -0,0 +1 @@
1
+ export declare const difference: (a: any, b: any, key: string) => any;
@@ -0,0 +1,20 @@
1
+ export const difference = (a, b, key) => {
2
+ // Indices for quick lookups
3
+ const processed = {};
4
+ const existing = {};
5
+ // Create an index of the first collection
6
+ const addToIndex = (e) => (existing[key ? e[key] : e] = true);
7
+ a.forEach(addToIndex);
8
+ // Reduce to entries that are not in the first collection
9
+ const reducer = (res, entry) => {
10
+ const isInFirst = existing[key ? entry[key] : entry] !== undefined;
11
+ const hasBeenProcessed = processed[key ? entry[key] : entry] !== undefined;
12
+ if (!isInFirst && !hasBeenProcessed) {
13
+ res.push(entry);
14
+ processed[key ? entry[key] : entry] = true;
15
+ }
16
+ return res;
17
+ };
18
+ return b.reduce(reducer, []);
19
+ };
20
+ //# sourceMappingURL=difference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"difference.js","sourceRoot":"","sources":["../../src/difference.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAM,EAAE,CAAM,EAAE,GAAW,EAAE,EAAE;IACzD,4BAA4B;IAC5B,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAE5C,0CAA0C;IAC1C,MAAM,UAAU,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACnE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAEtB,yDAAyD;IACzD,MAAM,OAAO,GAAG,CAAC,GAAQ,EAAE,KAAU,EAAE,EAAE;QACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;QACnE,MAAM,gBAAgB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;QAC3E,IAAI,CAAC,SAAS,IAAI,CAAC,gBAAgB,EAAE;YACpC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;SAC3C;QACD,OAAO,GAAG,CAAC;IACZ,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { AbstractType } from "@dao-xyz/borsh";
2
+ export interface Encoding<T> {
3
+ encoder: (data: T) => Uint8Array;
4
+ decoder: (bytes: Uint8Array) => T;
5
+ }
6
+ export declare const NO_ENCODING: Encoding<any>;
7
+ export declare const BORSH_ENCODING: <T>(clazz: AbstractType<T>) => Encoding<T>;
@@ -0,0 +1,20 @@
1
+ import { deserialize, serialize } from "@dao-xyz/borsh";
2
+ export const NO_ENCODING = {
3
+ encoder: (obj) => {
4
+ if (obj instanceof Uint8Array === false) {
5
+ throw new Error("With NO_ENCODING only Uint8arrays are allowed, recieved: " +
6
+ (typeof obj === "object" ? obj.constructor.name : typeof obj));
7
+ }
8
+ return obj;
9
+ },
10
+ decoder: (bytes) => {
11
+ return bytes;
12
+ },
13
+ };
14
+ export const BORSH_ENCODING = (clazz) => {
15
+ return {
16
+ decoder: (bytes) => deserialize(bytes, clazz),
17
+ encoder: (data) => serialize(data),
18
+ };
19
+ };
20
+ //# sourceMappingURL=encoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../src/encoding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAMtE,MAAM,CAAC,MAAM,WAAW,GAAkB;IACzC,OAAO,EAAE,CAAC,GAAe,EAAE,EAAE;QAC5B,IAAI,GAAG,YAAY,UAAU,KAAK,KAAK,EAAE;YACxC,MAAM,IAAI,KAAK,CACd,2DAA2D;gBAC1D,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAC9D,CAAC;SACF;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;IACD,OAAO,EAAE,CAAC,KAAiB,EAAE,EAAE;QAC9B,OAAO,KAAK,CAAC;IACd,CAAC;CACD,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAI,KAAsB,EAAe,EAAE;IACxE,OAAO;QACN,OAAO,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;QACzD,OAAO,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;KACvC,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { Cache } from "@peerbit/cache";
2
+ import { Entry } from "./entry.js";
3
+ import { Blocks } from "@peerbit/blocks-interface";
4
+ export declare class EntryIndex<T> {
5
+ _cache: Cache<Entry<T> | null>;
6
+ _store: Blocks;
7
+ _init: (entry: Entry<T>) => void;
8
+ _index: Set<string>;
9
+ constructor(properties: {
10
+ store: Blocks;
11
+ init: (entry: Entry<T>) => void;
12
+ cache: Cache<Entry<T>>;
13
+ });
14
+ set(v: Entry<T>, toMultihash?: boolean): Promise<void>;
15
+ get(k: string, options?: {
16
+ replicate?: boolean;
17
+ timeout?: number;
18
+ }): Promise<Entry<T> | undefined>;
19
+ private getFromStore;
20
+ delete(k: string): Promise<void>;
21
+ }
@@ -0,0 +1,63 @@
1
+ import { Entry } from "./entry.js";
2
+ import { deserialize } from "@dao-xyz/borsh";
3
+ import { logger } from "./logger.js";
4
+ export class EntryIndex {
5
+ _cache;
6
+ _store;
7
+ _init;
8
+ _index;
9
+ constructor(properties) {
10
+ this._cache = properties.cache;
11
+ this._store = properties.store;
12
+ this._init = properties.init;
13
+ this._index = new Set();
14
+ }
15
+ async set(v, toMultihash = true) {
16
+ if (toMultihash) {
17
+ const existingHash = v.hash;
18
+ v.hash = undefined;
19
+ try {
20
+ const hash = await Entry.toMultihash(this._store, v);
21
+ v.hash = existingHash;
22
+ if (v.hash === undefined) {
23
+ v.hash = hash; // can happen if you sync entries that you load directly from ipfs
24
+ }
25
+ else if (existingHash !== v.hash) {
26
+ logger.error("Head hash didn't match the contents");
27
+ throw new Error("Head hash didn't match the contents");
28
+ }
29
+ }
30
+ catch (error) {
31
+ logger.error(error);
32
+ throw error;
33
+ }
34
+ }
35
+ this._cache.add(v.hash, v);
36
+ this._index.add(v.hash);
37
+ }
38
+ async get(k, options) {
39
+ if (this._index.has(k)) {
40
+ let mem = this._cache.get(k);
41
+ if (mem === undefined) {
42
+ mem = await this.getFromStore(k, options);
43
+ if (mem) {
44
+ this._init(mem);
45
+ mem.hash = k;
46
+ }
47
+ this._cache.add(k, mem);
48
+ }
49
+ return mem ? mem : undefined;
50
+ }
51
+ return undefined;
52
+ }
53
+ async getFromStore(k, options) {
54
+ const value = await this._store.get(k, options);
55
+ return value ? deserialize(value, Entry) : null;
56
+ }
57
+ async delete(k) {
58
+ this._cache.del(k);
59
+ this._index.delete(k);
60
+ return this._store.rm(k);
61
+ }
62
+ }
63
+ //# sourceMappingURL=entry-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-index.js","sourceRoot":"","sources":["../../src/entry-index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Entry } from "./entry.js";
2
+ export interface EntryWithRefs<T> {
3
+ entry: Entry<T>;
4
+ references: Entry<T>[];
5
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=entry-with-refs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-with-refs.js","sourceRoot":"","sources":["../../src/entry-with-refs.ts"],"names":[],"mappings":""}