@peerbit/log 1.0.14 → 2.0.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.
package/lib/esm/entry.js CHANGED
@@ -9,13 +9,11 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  };
10
10
  var Entry_1;
11
11
  import { HLC, LamportClock as Clock, Timestamp } from "./clock.js";
12
- import { isDefined } from "./is-defined.js";
13
12
  import { variant, field, serialize, deserialize, option, vec, fixedArray, } from "@dao-xyz/borsh";
14
13
  import { DecryptedThing, MaybeEncrypted, X25519PublicKey, SignatureWithKey, AccessError, Ed25519PublicKey, sha256Base64, randomBytes, } from "@peerbit/crypto";
15
14
  import { verify } from "@peerbit/crypto";
16
15
  import { compare, equals } from "@peerbit/uint8arrays";
17
16
  import { NO_ENCODING } from "./encoding.js";
18
- import { StringArray } from "./types.js";
19
17
  import { logger } from "./logger.js";
20
18
  const isMaybeEryptionPublicKey = (o) => {
21
19
  if (!o) {
@@ -65,6 +63,15 @@ export let Payload = class Payload {
65
63
  equals(other) {
66
64
  return equals(this.data, other.data);
67
65
  }
66
+ get isDecoded() {
67
+ return this._value != null;
68
+ }
69
+ get value() {
70
+ if (this._value == null) {
71
+ throw new Error("Value not decoded. Invoke: .getValue once");
72
+ }
73
+ return this._value;
74
+ }
68
75
  getValue(encoding = this.encoding || NO_ENCODING) {
69
76
  if (this._value != undefined) {
70
77
  return this._value;
@@ -85,40 +92,46 @@ export var EntryType;
85
92
  EntryType[EntryType["APPEND"] = 0] = "APPEND";
86
93
  EntryType[EntryType["CUT"] = 1] = "CUT";
87
94
  })(EntryType || (EntryType = {}));
88
- export let Metadata = class Metadata {
89
- gid; // graph id
95
+ export let Meta = class Meta {
90
96
  clock;
91
- maxChainLength; // longest chain/merkle tree path frmo this node. maxChainLength := max ( maxChainLength(this.next) , 1)
97
+ gid; // graph id
98
+ next;
92
99
  type;
100
+ data; // Optional metadata
93
101
  constructor(properties) {
94
102
  if (properties) {
95
103
  this.gid = properties.gid;
96
104
  this.clock = properties.clock;
97
- this.maxChainLength = properties.maxChainLength;
98
105
  this.type = properties.type;
106
+ this.data = properties.data;
107
+ this.next = properties.next;
99
108
  }
100
109
  }
101
110
  };
102
- __decorate([
103
- field({ type: "string" }),
104
- __metadata("design:type", String)
105
- ], Metadata.prototype, "gid", void 0);
106
111
  __decorate([
107
112
  field({ type: Clock }),
108
113
  __metadata("design:type", Clock)
109
- ], Metadata.prototype, "clock", void 0);
114
+ ], Meta.prototype, "clock", void 0);
110
115
  __decorate([
111
- field({ type: "u64" }),
112
- __metadata("design:type", BigInt)
113
- ], Metadata.prototype, "maxChainLength", void 0);
116
+ field({ type: "string" }),
117
+ __metadata("design:type", String)
118
+ ], Meta.prototype, "gid", void 0);
119
+ __decorate([
120
+ field({ type: vec("string") }),
121
+ __metadata("design:type", Array)
122
+ ], Meta.prototype, "next", void 0);
114
123
  __decorate([
115
124
  field({ type: "u8" }),
116
125
  __metadata("design:type", Number)
117
- ], Metadata.prototype, "type", void 0);
118
- Metadata = __decorate([
126
+ ], Meta.prototype, "type", void 0);
127
+ __decorate([
128
+ field({ type: option(Uint8Array) }),
129
+ __metadata("design:type", Uint8Array)
130
+ ], Meta.prototype, "data", void 0);
131
+ Meta = __decorate([
119
132
  variant(0),
120
133
  __metadata("design:paramtypes", [Object])
121
- ], Metadata);
134
+ ], Meta);
122
135
  export let Signatures = class Signatures {
123
136
  signatures;
124
137
  constructor(properties) {
@@ -146,20 +159,20 @@ Signatures = __decorate([
146
159
  variant(0),
147
160
  __metadata("design:paramtypes", [Object])
148
161
  ], Signatures);
149
- const maybeEncrypt = (thing, keypair, reciever) => {
150
- const recievers = reciever
151
- ? Array.isArray(reciever)
152
- ? reciever
153
- : [reciever]
162
+ const maybeEncrypt = (thing, keypair, receiver) => {
163
+ const receivers = receiver
164
+ ? Array.isArray(receiver)
165
+ ? receiver
166
+ : [receiver]
154
167
  : undefined;
155
- if (recievers?.length && recievers?.length > 0) {
168
+ if (receivers?.length && receivers?.length > 0) {
156
169
  if (!keypair) {
157
170
  throw new Error("Keypair not provided");
158
171
  }
159
172
  return new DecryptedThing({
160
173
  data: serialize(thing),
161
174
  value: thing,
162
- }).encrypt(keypair, ...recievers);
175
+ }).encrypt(keypair, ...receivers);
163
176
  }
164
177
  return new DecryptedThing({
165
178
  data: serialize(thing),
@@ -167,9 +180,8 @@ const maybeEncrypt = (thing, keypair, reciever) => {
167
180
  });
168
181
  };
169
182
  export let Entry = Entry_1 = class Entry {
170
- _metadata;
183
+ _meta;
171
184
  _payload;
172
- _next; // Array of hashes (the tree)
173
185
  _reserved;
174
186
  _signatures;
175
187
  hash; // "zd...Foo", we'll set the hash after persisting the entry
@@ -177,11 +189,10 @@ export let Entry = Entry_1 = class Entry {
177
189
  _keychain;
178
190
  _encoding;
179
191
  constructor(obj) {
180
- this._metadata = obj.metadata;
192
+ this._meta = obj.meta;
181
193
  this._payload = obj.payload;
182
194
  this._signatures = obj.signatures;
183
- this._next = obj.next;
184
- this._reserved = obj.reserved || new Uint8Array([0, 0, 0, 0]);
195
+ this._reserved = new Uint8Array([0, 0, 0, 0]);
185
196
  this.createdLocally = obj.createdLocally;
186
197
  }
187
198
  init(props) {
@@ -201,27 +212,21 @@ export let Entry = Entry_1 = class Entry {
201
212
  }
202
213
  return this._encoding;
203
214
  }
204
- get metadata() {
205
- return this._metadata.decrypted.getValue(Metadata);
215
+ get meta() {
216
+ return this._meta.decrypted.getValue(Meta);
206
217
  }
207
- async getMetadata() {
208
- await this._metadata.decrypt(this._keychain);
209
- return this.metadata;
210
- }
211
- get gid() {
212
- return this.metadata.gid;
213
- }
214
- async getGid() {
215
- return (await this.getMetadata()).gid;
218
+ async getMeta() {
219
+ await this._meta.decrypt(this._keychain);
220
+ return this.meta;
216
221
  }
217
222
  async getClock() {
218
- return (await this.getMetadata()).clock;
223
+ return (await this.getMeta()).clock;
219
224
  }
220
- get maxChainLength() {
221
- return this._metadata.decrypted.getValue(Metadata).maxChainLength;
225
+ get gid() {
226
+ return this._meta.decrypted.getValue(Meta).gid;
222
227
  }
223
- async getMaxChainLength() {
224
- return (await this.getMetadata()).maxChainLength;
228
+ async getGid() {
229
+ return (await this.getMeta()).gid;
225
230
  }
226
231
  get payload() {
227
232
  const payload = this._payload.decrypted.getValue(Payload);
@@ -237,7 +242,7 @@ export let Entry = Entry_1 = class Entry {
237
242
  }
238
243
  async getPayloadValue() {
239
244
  const payload = await this.getPayload();
240
- return payload.getValue(this.encoding);
245
+ return payload.isDecoded ? payload.value : payload.getValue(this.encoding);
241
246
  }
242
247
  get publicKeys() {
243
248
  return this.signatures.map((x) => x.publicKey);
@@ -247,11 +252,10 @@ export let Entry = Entry_1 = class Entry {
247
252
  return this.publicKeys;
248
253
  }
249
254
  get next() {
250
- return this._next.decrypted.getValue(StringArray).arr;
255
+ return this.meta.next;
251
256
  }
252
257
  async getNext() {
253
- await this._next.decrypt(this._keychain);
254
- return this.next;
258
+ return (await this.getMeta()).next;
255
259
  }
256
260
  /**
257
261
  * Will only return signatures I can decrypt
@@ -307,8 +311,7 @@ export let Entry = Entry_1 = class Entry {
307
311
  static toSignable(entry) {
308
312
  // TODO fix types
309
313
  const trimmed = new Entry_1({
310
- metadata: entry._metadata,
311
- next: entry._next,
314
+ meta: entry._meta,
312
315
  payload: entry._payload,
313
316
  reserved: entry._reserved,
314
317
  signatures: undefined,
@@ -327,9 +330,8 @@ export let Entry = Entry_1 = class Entry {
327
330
  }
328
331
  equals(other) {
329
332
  return (equals(this._reserved, other._reserved) &&
330
- this._metadata.equals(other._metadata) &&
333
+ this._meta.equals(other._meta) &&
331
334
  this._signatures.equals(other._signatures) &&
332
- this._next.equals(other._next) &&
333
335
  this._payload.equals(other._payload)); // dont compare hashes because the hash is a function of the other properties
334
336
  }
335
337
  async delete(store) {
@@ -342,36 +344,39 @@ export let Entry = Entry_1 = class Entry {
342
344
  return sha256Base64(seed || randomBytes(32));
343
345
  }
344
346
  static async create(properties) {
345
- if (!properties.encoding || !properties.next) {
347
+ if (!properties.encoding || !properties?.meta?.next) {
346
348
  properties = {
347
349
  ...properties,
348
- next: properties.next ? properties.next : [],
350
+ meta: {
351
+ ...properties?.meta,
352
+ next: properties.meta?.next ? properties.meta?.next : [],
353
+ },
349
354
  encoding: properties.encoding ? properties.encoding : NO_ENCODING,
350
355
  };
351
356
  }
352
357
  if (!properties.encoding) {
353
358
  throw new Error("Missing encoding options");
354
359
  }
355
- if (!isDefined(properties.data))
360
+ if (properties.data == null)
356
361
  throw new Error("Entry requires data");
357
- if (!isDefined(properties.next) || !Array.isArray(properties.next))
362
+ if (properties.meta?.next == null || !Array.isArray(properties.meta.next))
358
363
  throw new Error("'next' argument is not an array");
359
364
  // Clean the next objects and convert to hashes
360
- const nexts = properties.next;
365
+ const nexts = properties.meta?.next;
361
366
  const payloadToSave = new Payload({
362
367
  data: properties.encoding.encoder(properties.data),
363
368
  value: properties.data,
364
369
  encoding: properties.encoding,
365
370
  });
366
- let clock = properties.clock;
371
+ let clock = properties.meta?.clock;
367
372
  if (!clock) {
368
373
  const hlc = new HLC();
369
374
  for (const next of nexts) {
370
- hlc.update(next.metadata.clock.timestamp);
375
+ hlc.update(next.meta.clock.timestamp);
371
376
  }
372
- if (properties.encryption?.reciever.signatures &&
373
- properties.encryption?.reciever.metadata) {
374
- throw new Error("Signature is to be encrypted yet the clock is not, which contains the publicKey as id. Either provide a custom Clock value that is not sensitive or set the reciever (encryption target) for the clock");
377
+ if (properties.encryption?.receiver.signatures &&
378
+ properties.encryption?.receiver.meta) {
379
+ throw new Error("Signature is to be encrypted yet the clock is not, which contains the publicKey as id. Either provide a custom Clock value that is not sensitive or set the receiver (encryption target) for the clock");
375
380
  }
376
381
  clock = new Clock({
377
382
  id: properties.identity.publicKey.bytes,
@@ -382,72 +387,55 @@ export let Entry = Entry_1 = class Entry {
382
387
  const cv = clock;
383
388
  // check if nexts, that all nexts are happening BEFORE this clock value (else clock make no sense)
384
389
  for (const n of nexts) {
385
- if (Timestamp.compare(n.metadata.clock.timestamp, cv.timestamp) >= 0) {
390
+ if (Timestamp.compare(n.meta.clock.timestamp, cv.timestamp) >= 0) {
386
391
  throw new Error("Expecting next(s) to happen before entry, got: " +
387
- n.metadata.clock.timestamp +
392
+ n.meta.clock.timestamp +
388
393
  " > " +
389
394
  cv.timestamp);
390
395
  }
391
396
  }
392
397
  }
393
- const payload = await maybeEncrypt(payloadToSave, properties.encryption?.keypair, properties.encryption?.reciever.payload);
398
+ const payload = await maybeEncrypt(payloadToSave, properties.encryption?.keypair, properties.encryption?.receiver.payload);
394
399
  const nextHashes = [];
395
- let gid;
396
400
  let maxChainLength = 0n;
397
- const maxClock = new Timestamp({ wallTime: 0n, logical: 0 });
401
+ let gid = null;
398
402
  if (nexts?.length > 0) {
399
403
  // take min gid as our gid
404
+ if (properties.meta?.gid) {
405
+ throw new Error("Expecting '.meta.gid' property to be undefined if '.meta.next' is provided");
406
+ }
400
407
  for (const n of nexts) {
401
408
  if (!n.hash) {
402
409
  throw new Error("Expecting hash to be defined to next entries");
403
410
  }
404
411
  nextHashes.push(n.hash);
405
- if (maxChainLength < n.maxChainLength ||
406
- maxChainLength == n.maxChainLength) {
407
- maxChainLength = n.maxChainLength;
408
- if (!gid) {
409
- gid = n.metadata.gid;
410
- continue;
411
- }
412
- // replace gid if next is from alonger chain, or from a later time, or same time but "smaller" gid
413
- else if (Timestamp.compare(n.metadata.clock.timestamp, maxClock) > 0 ||
414
- (Timestamp.compare(n.metadata.clock.timestamp, maxClock) == 0 &&
415
- n.metadata.gid < gid)) {
416
- gid = n.metadata.gid;
417
- }
418
- }
419
- }
420
- if (!gid) {
421
- throw new Error("Unexpected behaviour, could not find gid");
412
+ gid =
413
+ gid == null
414
+ ? n.meta.gid
415
+ : n.meta.gid < gid
416
+ ? n.meta.gid
417
+ : gid;
422
418
  }
423
419
  }
424
420
  else {
425
- gid = properties.gid || (await Entry_1.createGid(properties.gidSeed));
421
+ gid =
422
+ properties.meta?.gid ||
423
+ (await Entry_1.createGid(properties.meta?.gidSeed));
426
424
  }
427
425
  maxChainLength += 1n; // include this
428
- const metadataEncrypted = await maybeEncrypt(new Metadata({
429
- maxChainLength,
426
+ const metadataEncrypted = await maybeEncrypt(new Meta({
430
427
  clock,
431
- gid,
432
- type: properties.type ?? EntryType.APPEND,
433
- }), properties.encryption?.keypair, properties.encryption?.reciever.metadata);
434
- const next = nextHashes;
435
- next?.forEach((next) => {
436
- if (typeof next !== "string") {
437
- throw new Error("Unsupported next type");
438
- }
439
- });
440
- const nextEncrypted = await maybeEncrypt(new StringArray({
441
- arr: next,
442
- }), properties.encryption?.keypair, properties.encryption?.reciever.next);
428
+ gid: gid,
429
+ type: properties.meta?.type ?? EntryType.APPEND,
430
+ data: properties.meta?.data,
431
+ next: nextHashes,
432
+ }), properties.encryption?.keypair, properties.encryption?.receiver.meta);
443
433
  // Sign id, encrypted payload, clock, nexts, refs
444
434
  const entry = new Entry_1({
445
435
  payload,
446
- metadata: metadataEncrypted,
436
+ meta: metadataEncrypted,
447
437
  signatures: undefined,
448
438
  createdLocally: true,
449
- next: nextEncrypted, // Array of hashes
450
- /* refs: properties.refs, */
451
439
  });
452
440
  const signers = properties.signers || [
453
441
  properties.identity.sign.bind(properties.identity),
@@ -456,11 +444,11 @@ export let Entry = Entry_1 = class Entry {
456
444
  let signatures = await Promise.all(signers.map((signer) => signer(signable)));
457
445
  signatures = signatures.sort((a, b) => compare(a.signature, b.signature));
458
446
  const encryptedSignatures = [];
459
- const encryptAllSignaturesWithSameKey = isMaybeEryptionPublicKey(properties.encryption?.reciever?.signatures);
447
+ const encryptAllSignaturesWithSameKey = isMaybeEryptionPublicKey(properties.encryption?.receiver?.signatures);
460
448
  for (const signature of signatures) {
461
449
  const encryptionRecievers = encryptAllSignaturesWithSameKey
462
- ? properties.encryption?.reciever?.signatures
463
- : properties.encryption?.reciever?.signatures?.[signature.publicKey.hashcode()];
450
+ ? properties.encryption?.receiver?.signatures
451
+ : properties.encryption?.receiver?.signatures?.[signature.publicKey.hashcode()];
464
452
  const signatureEncrypted = await maybeEncrypt(signature, properties.encryption?.keypair, encryptionRecievers);
465
453
  encryptedSignatures.push(signatureEncrypted);
466
454
  }
@@ -475,6 +463,22 @@ export let Entry = Entry_1 = class Entry {
475
463
  entry.init({ encoding: properties.encoding });
476
464
  return entry;
477
465
  }
466
+ get payloadByteLength() {
467
+ return this._payload.byteLength;
468
+ }
469
+ toShallow() {
470
+ return {
471
+ hash: this.hash,
472
+ payloadByteLength: this._payload.byteLength,
473
+ meta: {
474
+ gid: this.meta.gid,
475
+ data: this.meta.data,
476
+ clock: this.meta.clock,
477
+ next: this.meta.next,
478
+ type: this.meta.type,
479
+ },
480
+ };
481
+ }
478
482
  /**
479
483
  * Get the multihash of an Entry.
480
484
  * @example
@@ -514,8 +518,8 @@ export let Entry = Entry_1 = class Entry {
514
518
  * @returns {number} 1 if a is greater, -1 is b is greater
515
519
  */
516
520
  static compare(a, b) {
517
- const aClock = a.metadata.clock;
518
- const bClock = b.metadata.clock;
521
+ const aClock = a.meta.clock;
522
+ const bClock = b.meta.clock;
519
523
  const distance = Clock.compare(aClock, bClock);
520
524
  if (distance === 0)
521
525
  return aClock.id < bClock.id ? -1 : 1;
@@ -555,22 +559,18 @@ export let Entry = Entry_1 = class Entry {
555
559
  prev = parent;
556
560
  parent = values.find((e) => Entry_1.isDirectParent(prev, e));
557
561
  }
558
- stack = stack.sort((a, b) => Clock.compare(a.metadata.clock, b.metadata.clock));
562
+ stack = stack.sort((a, b) => Clock.compare(a.meta.clock, b.meta.clock));
559
563
  return stack;
560
564
  }
561
565
  };
562
566
  __decorate([
563
567
  field({ type: MaybeEncrypted }),
564
568
  __metadata("design:type", MaybeEncrypted)
565
- ], Entry.prototype, "_metadata", void 0);
569
+ ], Entry.prototype, "_meta", void 0);
566
570
  __decorate([
567
571
  field({ type: MaybeEncrypted }),
568
572
  __metadata("design:type", MaybeEncrypted)
569
573
  ], Entry.prototype, "_payload", void 0);
570
- __decorate([
571
- field({ type: MaybeEncrypted }),
572
- __metadata("design:type", MaybeEncrypted)
573
- ], Entry.prototype, "_next", void 0);
574
574
  __decorate([
575
575
  field({ type: fixedArray("u8", 4) }),
576
576
  __metadata("design:type", Uint8Array)
@@ -580,7 +580,7 @@ __decorate([
580
580
  __metadata("design:type", Signatures)
581
581
  ], Entry.prototype, "_signatures", void 0);
582
582
  __decorate([
583
- field({ type: option("string") }) // we do option because we serialize and store this in a block without the hash, to recieve the hash, which we later set
583
+ field({ type: option("string") }) // we do option because we serialize and store this in a block without the hash, to receive the hash, which we later set
584
584
  ,
585
585
  __metadata("design:type", String)
586
586
  ], Entry.prototype, "hash", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/entry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/entry.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ export class CachedValue {
19
19
  /* export type AppendOptions<T> = {
20
20
  signers?: ((data: Uint8Array) => Promise<SignatureWithKey>)[];
21
21
  nexts?: Entry<T>[];
22
- reciever?: EncryptionTemplateMaybeEncrypted;
22
+ receiver?: EncryptionTemplateMaybeEncrypted;
23
23
  type?: EntryType;
24
24
  };
25
25
  */
@@ -4,6 +4,8 @@ import { HeadsCache } from "./heads-cache.js";
4
4
  import { Blocks } from "@peerbit/blocks-interface";
5
5
  import { Keychain } from "@peerbit/crypto";
6
6
  import { Encoding } from "./encoding.js";
7
+ import { Values } from "./values.js";
8
+ import { EntryIndex } from "./entry-index.js";
7
9
  export type CacheUpdateOptions = {
8
10
  cache?: {
9
11
  update?: false;
@@ -13,11 +15,13 @@ export type CacheUpdateOptions = {
13
15
  reset?: boolean;
14
16
  };
15
17
  };
16
- interface Config {
18
+ interface Log<T> {
17
19
  storage: Blocks;
18
20
  keychain?: Keychain;
19
21
  memory?: SimpleLevel;
20
22
  encoding: Encoding<any>;
23
+ entryIndex: EntryIndex<T>;
24
+ values: Values<T>;
21
25
  }
22
26
  export declare class HeadsIndex<T> {
23
27
  private _id;
@@ -25,9 +29,11 @@ export declare class HeadsIndex<T> {
25
29
  private _gids;
26
30
  private _headsCache;
27
31
  private _config;
32
+ private _onGidRemoved?;
28
33
  constructor(id: Uint8Array);
29
- init(config: Config, options?: {
34
+ init(log: Log<T>, options?: {
30
35
  entries?: Entry<T>[];
36
+ onGidRemoved?: (gid: string[]) => Promise<void> | void;
31
37
  }): Promise<HeadsCache<T> | undefined>;
32
38
  load(options?: {
33
39
  timeout?: number;
@@ -39,7 +45,7 @@ export declare class HeadsIndex<T> {
39
45
  drop(): Promise<void> | undefined;
40
46
  get id(): Uint8Array;
41
47
  get index(): Set<string>;
42
- get gids(): Map<string, number>;
48
+ get gids(): Map<string, Map<string, Entry<T>>>;
43
49
  get size(): number;
44
50
  reset(entries: Entry<T>[], options?: CacheUpdateOptions): Promise<void>;
45
51
  has(cid: string): boolean;
@@ -54,10 +60,9 @@ export declare class HeadsIndex<T> {
54
60
  private _putAll;
55
61
  del(entry: {
56
62
  hash: string;
57
- gid: string;
58
- }, options?: CacheUpdateOptions): Promise<{
59
- removed: boolean;
60
- lastWithGid: boolean;
61
- }>;
63
+ meta: {
64
+ gid: string;
65
+ };
66
+ }, options?: CacheUpdateOptions): Promise<boolean>;
62
67
  }
63
68
  export {};