@cr_docs_t/dts 0.28.0 → 0.29.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.
@@ -143,5 +143,6 @@ export declare class FTree {
143
143
  * @param saveData - a Uint8Array containing the serialized tree data to load
144
144
  */
145
145
  load(saveData: Uint8Array): void;
146
+ getNodes(): Map<string, FNode[]>;
146
147
  }
147
148
  //# sourceMappingURL=FTree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FTree.d.ts","sourceRoot":"","sources":["../../../src/dts/FugueTree/FTree.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC;AAEjC;;;GAGG;AACH,MAAM,MAAM,EAAE,GAAG;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,WAAW,KAAK;IAClB,EAAE,EAAE,EAAE,CAAC;IACP,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,EAAE,KAAK,EAAE,CAAC;IACtB,aAAa,EAAE,KAAK,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,qBAAa,KAAK;IAGd,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAGrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8B;;IAgBpD;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK;IAStB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IAiC9F;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;;;;OAKG;IACH,OAAO,CAAC,MAAM;IAiDd;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM;IAU1B;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ5C;;;;;;OAMG;IACH,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK;IAkC7C;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM;IAoCpC;;;;;OAKG;IACH,kBAAkB,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK;IAMtC;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI;IAoB5C;;;OAGG;IACF,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAmChD;;;;;OAKG;IACH,IAAI,IAAI,UAAU;IAqBlB;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,EAAE,UAAU;CAiF5B"}
1
+ {"version":3,"file":"FTree.d.ts","sourceRoot":"","sources":["../../../src/dts/FugueTree/FTree.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC;AAEjC;;;GAGG;AACH,MAAM,MAAM,EAAE,GAAG;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,WAAW,KAAK;IAClB,EAAE,EAAE,EAAE,CAAC;IACP,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,EAAE,KAAK,EAAE,CAAC;IACtB,aAAa,EAAE,KAAK,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,qBAAa,KAAK;IAGd,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAGrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8B;;IAgBpD;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK;IAStB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IAiC9F;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;;;;OAKG;IACH,OAAO,CAAC,MAAM;IAiDd;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM;IAU1B;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ5C;;;;;;OAMG;IACH,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK;IAkC7C;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM;IAoCpC;;;;;OAKG;IACH,kBAAkB,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK;IAMtC;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI;IAoB5C;;;OAGG;IACF,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAiChD;;;;;OAKG;IACH,IAAI,IAAI,UAAU;IAqBlB;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,EAAE,UAAU;IA2EzB,QAAQ;CAGX"}
@@ -317,9 +317,7 @@ export class FTree {
317
317
  */
318
318
  *traverse(node) {
319
319
  let current = node;
320
- // Stack records the next child to visit for that node.
321
- // We don't need to store node because we can infer it from the
322
- // current node's parent etc.
320
+ // Stack based inorder traversal
323
321
  const S = [{ side: "L", childIndex: 0 }];
324
322
  while (true) {
325
323
  const top = S[S.length - 1];
@@ -377,7 +375,7 @@ export class FTree {
377
375
  return nodeSave;
378
376
  });
379
377
  }
380
- return new Uint8Array(Buffer.from(JSON.stringify(save)));
378
+ return new TextEncoder().encode(JSON.stringify(save)); //allows us to encode from the frontend
381
379
  }
382
380
  /**
383
381
  * Load the tree from a Uint8Array containing serialized tree data in the format produced by the save() method.
@@ -387,8 +385,7 @@ export class FTree {
387
385
  */
388
386
  load(saveData) {
389
387
  const save = JSON.parse(new TextDecoder().decode(saveData));
390
- // First create all nodes without pointers to other nodes (parent, children,
391
- // rightOrigin).
388
+ // Create nodes without pointers
392
389
  for (const [sender, bySenderSave] of Object.entries(save)) {
393
390
  if (sender === "") {
394
391
  // Root node. Just set its size.
@@ -406,7 +403,7 @@ export class FTree {
406
403
  rightChildren: [],
407
404
  })));
408
405
  }
409
- // Next, fill in the parent and rightOrigin pointers.
406
+ // Fill in the parent and rightOrigin pointers.
410
407
  for (const [sender, bySender] of this.nodes) {
411
408
  if (sender === "")
412
409
  continue;
@@ -422,14 +419,8 @@ export class FTree {
422
419
  }
423
420
  }
424
421
  }
425
- // Finally, call insertIntoSiblings on each node to fill in the children
426
- // arrays.
427
- // We must be careful to wait until after doing so for node.rightOrigin
428
- // and its ancestors, since insertIntoSiblings references the existing list order
429
- // on node.rightOrigin.
430
- // Nodes go from "pending" -> "ready" (rightOrigin valid) ->
431
- // "valid" (insertIntoSiblings called).
432
- // readyNodes is a stack; pendingNodes maps from a node to its dependencies.
422
+ // Call insertIntoSiblings on each node to fill in the children arrays. Making sure to buffer nodes
423
+ // until their rightOrigin exists because insertIntoSiblings uses it to maintain sibling order
433
424
  const readyNodes = [];
434
425
  const pendingNodes = new Map();
435
426
  for (const [sender, bySender] of this.nodes) {
@@ -454,7 +445,6 @@ export class FTree {
454
445
  while (readyNodes.length !== 0) {
455
446
  const node = readyNodes.pop();
456
447
  this.insertIntoSiblings(node);
457
- // node's dependencies are now ready.
458
448
  const deps = pendingNodes.get(node);
459
449
  if (deps !== undefined)
460
450
  readyNodes.push(...deps);
@@ -464,4 +454,7 @@ export class FTree {
464
454
  throw new Error("Failed to validate all nodes");
465
455
  }
466
456
  }
457
+ getNodes() {
458
+ return this.nodes;
459
+ }
467
460
  }
@@ -1,5 +1,5 @@
1
1
  import { FugueMessage } from "../../types/FugueTree/Message.js";
2
- import { FNode, ID } from "./FTree.js";
2
+ import { FNode, FTree, ID } from "./FTree.js";
3
3
  /**
4
4
  * A Fugue Tree CRDT, with insert and delete operations.
5
5
  */
@@ -123,5 +123,6 @@ export declare class FugueTree {
123
123
  * @returns the index of the given node in the visible string
124
124
  */
125
125
  getVisibleIndex(node: FNode): number;
126
+ getState(): FTree;
126
127
  }
127
128
  //# sourceMappingURL=FugueTree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FugueTree.d.ts","sourceRoot":"","sources":["../../../src/dts/FugueTree/FugueTree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAa,MAAM,kCAAkC,CAAC;AAG3E,OAAO,EAAE,KAAK,EAAS,EAAE,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,qBAAa,SAAS;IAClB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,IAAI,CAAQ;IACpB,EAAE,EAAE,SAAS,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,SAAS,SAAmB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,4BAAmC;IAE9C,QAAQ,CAAC,SAAS,OAAO;gBAEb,EAAE,EAAE,SAAS,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAO1E;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAIlB;;;OAGG;IACH,OAAO,CAAC,SAAS;IAQjB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IA+ClB;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IA+B5C;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAOnC;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAsBlB;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IA4B5C;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM;IAKpB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IA8BnB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAkBtB;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,EAAE,GAAG,YAAY,EAAE;IAuB1D;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAS1B;;;OAGG;IACH,MAAM,IAAI,MAAM;IAIhB;;;OAGG;IACH,OAAO,IAAI,MAAM;IAWjB;;;OAGG;IACH,IAAI,IAAI,UAAU;IAKlB;;;OAGG;IACH,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAK5B;;;;;OAKG;IACH,SAAS,IAAI,MAAM;IAInB;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,EAAE;IAId;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,KAAK;CAG9B"}
1
+ {"version":3,"file":"FugueTree.d.ts","sourceRoot":"","sources":["../../../src/dts/FugueTree/FugueTree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAa,MAAM,kCAAkC,CAAC;AAG3E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,qBAAa,SAAS;IAClB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,IAAI,CAAQ;IACpB,EAAE,EAAE,SAAS,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,SAAS,SAAmB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,4BAAmC;IAE9C,QAAQ,CAAC,SAAS,OAAO;gBAEb,EAAE,EAAE,SAAS,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAO1E;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAIlB;;;OAGG;IACH,OAAO,CAAC,SAAS;IAQjB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IA+ClB;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IA+B5C;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAOnC;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAsBlB;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IA4B5C;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM;IAKpB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAgCnB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAkBtB;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,EAAE,GAAG,YAAY,EAAE;IAuB1D;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAS1B;;;OAGG;IACH,MAAM,IAAI,MAAM;IAIhB;;;OAGG;IACH,OAAO,IAAI,MAAM;IAWjB;;;OAGG;IACH,IAAI,IAAI,UAAU;IAKlB;;;OAGG;IACH,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAK5B;;;;;OAKG;IACH,SAAS,IAAI,MAAM;IAInB;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,EAAE;IAId;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,KAAK;IAI3B,QAAQ;CAGX"}
@@ -207,6 +207,7 @@ export class FugueTree {
207
207
  return true;
208
208
  }
209
209
  catch (e) {
210
+ //console.log('Error from insert -> ', e);
210
211
  return false;
211
212
  }
212
213
  case Operation.DELETE:
@@ -220,6 +221,7 @@ export class FugueTree {
220
221
  return true;
221
222
  }
222
223
  catch (e) {
224
+ //console.log('Error from delete -> ', e);
223
225
  return false;
224
226
  }
225
227
  default:
@@ -348,4 +350,7 @@ export class FugueTree {
348
350
  getVisibleIndex(node) {
349
351
  return this.tree.getVisibleIndex(node);
350
352
  }
353
+ getState() {
354
+ return this.tree;
355
+ }
351
356
  }
@@ -1 +1 @@
1
- {"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../../../../src/dts/Serailizers/Fugue/State.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,iBAAS,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,eAAe,CAAC,CAKzE;AAED,iBAAS,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAIhF;AAED,eAAO,MAAM,oBAAoB;;;CAGhC,CAAC"}
1
+ {"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../../../../src/dts/Serailizers/Fugue/State.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,iBAAS,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,eAAe,CAAC,CAKzE;AAED,iBAAS,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAIhF;AAED,eAAO,MAAM,oBAAoB;;;CAGhC,CAAC"}
@@ -1,14 +1,13 @@
1
1
  import { encode, decode } from "@msgpack/msgpack";
2
- import { compress, decompress } from "lz4js";
3
2
  function serialize(state) {
4
3
  // const flat = state.flatMap((c) => c.map((n) => [n.position, n.value]));
5
4
  const bin = encode(state);
6
- const com = compress(bin);
7
- return com;
5
+ // const com = compress(bin);
6
+ return bin;
8
7
  }
9
8
  function deserialize(compressed) {
10
- const raw = decompress(compressed);
11
- const state = decode(raw);
9
+ // const raw = decompress(compressed);
10
+ const state = decode(compressed);
12
11
  return state;
13
12
  }
14
13
  export const FugueStateSerializer = {
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/treesitter/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAI1D,eAAO,MAAM,SAAS,GAAU,qBAAqB,MAAM,EAAE,eAAe,MAAM;YAF/C,MAAM;WAAS,KAAK;EA8BtD,CAAC"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/treesitter/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAI1D,eAAO,MAAM,SAAS,GAAU,qBAAqB,MAAM,EAAE,eAAe,MAAM;YAF/C,MAAM;WAAS,KAAK;EA6BtD,CAAC"}
@@ -7,7 +7,6 @@ export const newParser = async (treeSitterLatexPath, queryFilePath) => {
7
7
  try {
8
8
  await Parser.init({
9
9
  locateFile: (name, dir) => {
10
- console.log({ name, dir });
11
10
  // return `/${name}`;
12
11
  return "/tree-sitter.wasm";
13
12
  },
@@ -24,7 +24,6 @@ export interface FugueMessage extends BaseFugueMessage<Operation.INSERT | Operat
24
24
  }
25
25
  export interface FugueJoinMessage extends BaseFugueMessage<Operation.INITIAL_SYNC> {
26
26
  state: Uint8Array<ArrayBufferLike> | null;
27
- bufferedOperations?: Buffer<ArrayBuffer>[];
28
27
  }
29
28
  export interface FugueRejectMessage extends BaseFugueMessage<Operation.REJECT> {
30
29
  documentID: string;
@@ -36,6 +35,7 @@ export interface FugueLeaveMessage extends BaseFugueMessage<Operation.LEAVE> {
36
35
  }
37
36
  export interface FugueUserJoinMessage extends BaseFugueMessage<Operation.USER_JOIN> {
38
37
  collaborators: string[];
38
+ offlineState?: Uint8Array<ArrayBufferLike>;
39
39
  }
40
40
  export type FugueMessageType = FugueMessage | FugueJoinMessage | FugueRejectMessage | FugueLeaveMessage | FugueUserJoinMessage;
41
41
  export type FugueMutationMessageTypes = Extract<FugueMessageType, FugueMessage | FugueJoinMessage>;
@@ -1 +1 @@
1
- {"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../../src/types/FugueTree/Message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAEzD,oBAAY,SAAS;IACjB,MAAM,IAAA;IACN,MAAM,IAAA;IACN,YAAY,IAAA;IACZ,SAAS,IAAA;IACT,MAAM,IAAA;IACN,KAAK,IAAA;CACR;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAiBvD;AAED,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC;AAG1B,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC7D,SAAS,EAAE,CAAC,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAa,SAAQ,gBAAgB,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IACvF,EAAE,EAAE,EAAE,CAAC;IACP,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,CAAC,EAAE,EAAE,CAAC;IACZ,WAAW,CAAC,EAAE,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB,CAAC,SAAS,CAAC,YAAY,CAAC;IAC9E,KAAK,EAAE,UAAU,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;IAE1C,kBAAkB,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;CAE9C;AAED,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC;IACxE,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB,CAAC,SAAS,CAAC,SAAS,CAAC;IAC/E,aAAa,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,MAAM,gBAAgB,GACtB,YAAY,GACZ,gBAAgB,GAChB,kBAAkB,GAClB,iBAAiB,GACjB,oBAAoB,CAAC;AAE3B,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC,gBAAgB,EAAE,YAAY,GAAG,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../../src/types/FugueTree/Message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAEzD,oBAAY,SAAS;IACjB,MAAM,IAAA;IACN,MAAM,IAAA;IACN,YAAY,IAAA;IACZ,SAAS,IAAA;IACT,MAAM,IAAA;IACN,KAAK,IAAA;CACR;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAiBvD;AAED,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC;AAG1B,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC7D,SAAS,EAAE,CAAC,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAa,SAAQ,gBAAgB,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IACvF,EAAE,EAAE,EAAE,CAAC;IACP,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,CAAC,EAAE,EAAE,CAAC;IACZ,WAAW,CAAC,EAAE,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB,CAAC,SAAS,CAAC,YAAY,CAAC;IAC9E,KAAK,EAAE,UAAU,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;CAE7C;AAED,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC;IACxE,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB,CAAC,SAAS,CAAC,SAAS,CAAC;IAC/E,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;CAC9C;AAED,MAAM,MAAM,gBAAgB,GACtB,YAAY,GACZ,gBAAgB,GAChB,kBAAkB,GAClB,iBAAiB,GACjB,oBAAoB,CAAC;AAE3B,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC,gBAAgB,EAAE,YAAY,GAAG,gBAAgB,CAAC,CAAC"}
@@ -1,2 +1,7 @@
1
+ import { FNode, FTree } from "../dts";
1
2
  export declare function randomString(length?: number): string;
3
+ /**
4
+ * Provides a list of ndes that are in tree A that are not in tree B
5
+ */
6
+ export declare function diff(treeA: FTree, treeB: FTree): FNode[];
2
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,MAAM,GAAE,MAAW,GAAG,MAAM,CAIxD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEtC,wBAAgB,YAAY,CAAC,MAAM,GAAE,MAAW,GAAG,MAAM,CAIxD;AAWD;;GAEG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,CAgBxD"}
@@ -4,3 +4,26 @@ export function randomString(length = 10) {
4
4
  res[i] = String.fromCharCode(97 + Math.floor(Math.random() * 26));
5
5
  return res.join("");
6
6
  }
7
+ function buildValueSet(nodes) {
8
+ const set = new Map();
9
+ for (const node of nodes) {
10
+ set.set(JSON.stringify(node.id), node);
11
+ }
12
+ return set;
13
+ }
14
+ /**
15
+ * Provides a list of ndes that are in tree A that are not in tree B
16
+ */
17
+ export function diff(treeA, treeB) {
18
+ const nodesA = Array.from(treeA.getNodes().values()).flat();
19
+ const nodesB = Array.from(treeB.getNodes().values()).flat();
20
+ const setA = buildValueSet(nodesA);
21
+ const setB = buildValueSet(nodesB);
22
+ const nodeDiff = [];
23
+ for (const [key, node] of setA.entries()) {
24
+ if (!setB.has(key)) {
25
+ nodeDiff.push(node);
26
+ }
27
+ }
28
+ return nodeDiff;
29
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cr_docs_t/dts",
3
- "version": "0.28.0",
3
+ "version": "0.29.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",