@arcmantle/chronicle 1.0.4 → 1.0.5

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 (48) hide show
  1. package/dist/api-methods.d.ts +201 -0
  2. package/dist/api-methods.d.ts.map +1 -1
  3. package/dist/api-methods.js +5 -5
  4. package/dist/api-methods.js.map +1 -1
  5. package/dist/api.d.ts +8 -2
  6. package/dist/api.d.ts.map +1 -1
  7. package/dist/api.js +45 -15
  8. package/dist/api.js.map +1 -1
  9. package/dist/chronicle.d.ts +1 -5
  10. package/dist/chronicle.d.ts.map +1 -1
  11. package/dist/chronicle.js +2 -36
  12. package/dist/chronicle.js.map +1 -1
  13. package/dist/collection-adapters.d.ts.map +1 -1
  14. package/dist/collection-adapters.js +2 -1
  15. package/dist/collection-adapters.js.map +1 -1
  16. package/dist/config.d.ts +6 -2
  17. package/dist/config.d.ts.map +1 -1
  18. package/dist/config.js +20 -3
  19. package/dist/config.js.map +1 -1
  20. package/dist/grouping.d.ts.map +1 -1
  21. package/dist/grouping.js +2 -1
  22. package/dist/grouping.js.map +1 -1
  23. package/dist/history-recorder.d.ts.map +1 -1
  24. package/dist/history-recorder.js +3 -2
  25. package/dist/history-recorder.js.map +1 -1
  26. package/dist/history.d.ts +3 -4
  27. package/dist/history.d.ts.map +1 -1
  28. package/dist/history.js +18 -23
  29. package/dist/history.js.map +1 -1
  30. package/dist/proxy-cache.js +1 -1
  31. package/dist/proxy-cache.js.map +1 -1
  32. package/dist/proxy-factory.js +1 -1
  33. package/dist/proxy-factory.js.map +1 -1
  34. package/dist/snapshot-diff.d.ts.map +1 -1
  35. package/dist/snapshot-diff.js +1 -1
  36. package/dist/snapshot-diff.js.map +1 -1
  37. package/package.json +1 -1
  38. package/src/api-methods.ts +253 -29
  39. package/src/api.ts +54 -22
  40. package/src/chronicle.ts +2 -42
  41. package/src/collection-adapters.ts +2 -1
  42. package/src/config.ts +31 -5
  43. package/src/grouping.ts +2 -1
  44. package/src/history-recorder.ts +3 -2
  45. package/src/history.ts +30 -37
  46. package/src/proxy-cache.ts +1 -1
  47. package/src/proxy-factory.ts +1 -1
  48. package/src/snapshot-diff.ts +2 -1
package/dist/grouping.js CHANGED
@@ -1,4 +1,5 @@
1
- import { clearLastUngrouped, getLastUngrouped, getOptions, nextGroupId, setLastUngrouped } from "./history.js";
1
+ import { getOptions } from "./config.js";
2
+ import { clearLastUngrouped, getLastUngrouped, nextGroupId, setLastUngrouped } from "./history.js";
2
3
  /**
3
4
  * Compute the active group ID for a change.
4
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"grouping.js","sourceRoot":"","sources":["../src/grouping.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAG/G;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CACnC,IAAY,EACZ,cAA+E,EAC/E,cAA4B,IAAI,CAAC,GAAG,EAC3B,EAAE;IACX,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QACxC,OAAO,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,EAAE,CAAC;IAEhD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI;eACrC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAE3D,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YACpB,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YAEjD,OAAO,IAAI,CAAC,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9B,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAE7C,OAAO,GAAG,CAAC;IACZ,CAAC;IAED,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEzB,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC"}
1
+ {"version":3,"file":"grouping.js","sourceRoot":"","sources":["../src/grouping.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGnG;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CACnC,IAAY,EACZ,cAA+E,EAC/E,cAA4B,IAAI,CAAC,GAAG,EAC3B,EAAE;IACX,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QACxC,OAAO,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,EAAE,CAAC;IAEhD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI;eACrC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAE3D,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YACpB,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YAEjD,OAAO,IAAI,CAAC,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9B,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAE7C,OAAO,GAAG,CAAC;IACZ,CAAC;IAED,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEzB,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"history-recorder.d.ts","sourceRoot":"","sources":["../src/history-recorder.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,SAAS,GACrB,MAAM,MAAM,EACZ,MAAM,MAAM,EAAE,EACd,UAAU,GAAG,EACb,UAAU,GAAG,EACb,eAAe,OAAO,EACtB,SAAS,MAAM,KACb,IA2CF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GACxB,MAAM,MAAM,EACZ,MAAM,MAAM,EAAE,EACd,UAAU,GAAG,EACb,SAAS,MAAM,KACb,IAuBF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,GACpC,MAAM,MAAM,EACZ,UAAU,MAAM,EAAE,EAClB,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC;CAAE,EAAE,EACzC,SAAS,MAAM,KACb,IAoBF,CAAC"}
1
+ {"version":3,"file":"history-recorder.d.ts","sourceRoot":"","sources":["../src/history-recorder.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,SAAS,GACrB,MAAM,MAAM,EACZ,MAAM,MAAM,EAAE,EACd,UAAU,GAAG,EACb,UAAU,GAAG,EACb,eAAe,OAAO,EACtB,SAAS,MAAM,KACb,IA2CF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GACxB,MAAM,MAAM,EACZ,MAAM,MAAM,EAAE,EACd,UAAU,GAAG,EACb,SAAS,MAAM,KACb,IAuBF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,GACpC,MAAM,MAAM,EACZ,UAAU,MAAM,EAAE,EAClB,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC;CAAE,EAAE,EACzC,SAAS,MAAM,KACb,IAoBF,CAAC"}
@@ -1,4 +1,5 @@
1
- import { ensureHistory, getOptions, trimHistoryByGroups } from "./history.js";
1
+ import { getOptions } from "./config.js";
2
+ import { ensureHistory, trimHistoryByGroups } from "./history.js";
2
3
  import { cloneWithOptions } from "./snapshot-diff.js";
3
4
  import { clearRedoCache, isSuspended } from "./undo-redo.js";
4
5
  /**
@@ -32,7 +33,7 @@ export const recordSet = (root, path, oldValue, newValue, existedBefore, groupId
32
33
  if (!cfg?.filter || cfg.filter(rec))
33
34
  history.push(rec);
34
35
  // Optional compaction: merge consecutive sets on the same path within the same group
35
- if (cfg && cfg.compactConsecutiveSamePath && history.length >= 2) {
36
+ if (cfg && cfg.compactSamePath && history.length >= 2) {
36
37
  const a = history[history.length - 2];
37
38
  const b = history[history.length - 1];
38
39
  const sameGroup = (a.groupId ?? `__g#${history.length - 2}`) === (b.groupId ?? `__g#${history.length - 1}`);
@@ -1 +1 @@
1
- {"version":3,"file":"history-recorder.js","sourceRoot":"","sources":["../src/history-recorder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"history-recorder.js","sourceRoot":"","sources":["../src/history-recorder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7D;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACxB,IAAY,EACZ,IAAc,EACd,QAAa,EACb,QAAa,EACb,aAAsB,EACtB,OAAe,EACR,EAAE;IACT,IAAI,WAAW,CAAC,IAAI,CAAC;QACpB,OAAO;IAER,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACpC,cAAc,CAAC,IAAI,CAAC,CAAC;IACrB,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAE7B,MAAM,GAAG,GAAiB;QACzB,IAAI,EAAO,IAAI,CAAC,KAAK,EAAE;QACvB,IAAI,EAAO,KAAK;QAChB,QAAQ,EAAG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC3C,QAAQ,EAAG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC3C,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,aAAa;QACb,OAAO;KACP,CAAC;IAEF,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEnB,qFAAqF;IACrF,IAAI,GAAG,IAAI,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QACvC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QACvC,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,OAAQ,OAAO,CAAC,MAAM,GAAG,CAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,OAAQ,OAAO,CAAC,MAAM,GAAG,CAAE,EAAE,CAAC,CAAC;QAChH,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChG,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC;QACtD,0DAA0D;QAC1D,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,OAAO,KAAK,QAAQ,CAAC;QAC1C,IAAI,SAAS,IAAI,QAAQ,IAAI,QAAQ,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;YACzE,+FAA+F;YAC/F,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;YACxB,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;YAC1B,OAAO,CAAC,GAAG,EAAE,CAAC;QACf,CAAC;IACF,CAAC;IAED,6DAA6D;IAC7D,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;QAC5C,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC3B,IAAY,EACZ,IAAc,EACd,QAAa,EACb,OAAe,EACR,EAAE;IACT,IAAI,WAAW,CAAC,IAAI,CAAC;QACpB,OAAO;IAER,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACpC,cAAc,CAAC,IAAI,CAAC,CAAC;IACrB,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAE7B,MAAM,GAAG,GAAiB;QACzB,IAAI,EAAO,IAAI,CAAC,KAAK,EAAE;QACvB,IAAI,EAAO,QAAQ;QACnB,QAAQ,EAAG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC3C,QAAQ,EAAG,SAAS;QACpB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,OAAO;KACP,CAAC;IAEF,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEnB,6DAA6D;IAC7D,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;QAC5C,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACvC,IAAY,EACZ,QAAkB,EAClB,OAAyC,EACzC,OAAe,EACR,EAAE;IACT,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAC5C,OAAO;IAER,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAE7B,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QAChD,MAAM,GAAG,GAAiB;YACzB,IAAI,EAAO,CAAE,GAAG,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAE;YACzC,IAAI,EAAO,QAAQ;YACnB,QAAQ,EAAG,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC;YACzC,QAAQ,EAAG,SAAS;YACpB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,OAAO;SACP,CAAC;QAEF,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;AACF,CAAC,CAAC"}
package/dist/history.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { ChangeRecord } from './types.ts';
2
- export interface ChronicleOptions {
2
+ export interface ChronicleHistoryOptions {
3
3
  /**
4
4
  * When enabled, consecutive ungrouped changes (those not in a batch or transaction)
5
5
  * are merged into a single undo group. If mergeWindowMs is also set, only changes
@@ -27,7 +27,7 @@ export interface ChronicleOptions {
27
27
  *
28
28
  * @default true
29
29
  */
30
- compactConsecutiveSamePath?: boolean;
30
+ compactSamePath?: boolean;
31
31
  /**
32
32
  * Maximum number of history records to retain. When the limit is exceeded, entire
33
33
  * undo groups are trimmed from the front of history to keep groups coherent. This
@@ -74,13 +74,12 @@ export interface ChronicleOptions {
74
74
  */
75
75
  cacheProxies?: boolean;
76
76
  }
77
+ export declare const defaultHistoryOptions: ChronicleHistoryOptions;
77
78
  export declare const ensureHistory: (root: object) => ChangeRecord[];
78
79
  export declare const historyGet: (root: object) => ChangeRecord[] | undefined;
79
80
  export declare const historyDelete: (root: object) => void;
80
81
  export declare const trimHistoryByGroups: (history: ChangeRecord[], max: number) => void;
81
82
  export declare const nextGroupId: (root: object) => string;
82
- export declare const getOptions: (root: object) => ChronicleOptions;
83
- export declare const setOptions: (root: object, options: ChronicleOptions) => void;
84
83
  export declare const getLastUngrouped: (root: object) => {
85
84
  id: string;
86
85
  at: number;
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAU/C,MAAM,WAAW,gBAAgB;IAChC;;;;;;;OAOG;IACH,cAAc,CAAC,EAAc,OAAO,CAAC;IACrC;;;;;;;OAOG;IACH,aAAa,CAAC,EAAe,MAAM,CAAC;IACpC;;;;;;;;OAQG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC;;;;;;OAMG;IACH,UAAU,CAAC,EAAkB,MAAM,CAAC;IACpC;;;;;OAKG;IACH,MAAM,CAAC,EAAsB,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC;IAC/D;;;;;OAKG;IACH,KAAK,CAAC,EAAuB,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;IACjD;;;;;OAKG;IACH,OAAO,CAAC,EAAqB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;IACzE;;;;;OAKG;IACH,UAAU,CAAC,EAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,GAAG,SAAS,CAAC;IACrE;;;;;;;OAOG;IACH,YAAY,CAAC,EAAgB,OAAO,CAAC;CACrC;AAID,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,YAAY,EAQxD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,YAAY,EAAE,GAAG,SAAmC,CAAC;AAC/F,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,IAAsC,CAAC;AAIpF,eAAO,MAAM,mBAAmB,GAAI,SAAS,YAAY,EAAE,EAAE,KAAK,MAAM,KAAG,IAqB1E,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,MAK1C,CAAC;AAUF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,gBASzC,CAAC;AACF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,SAAS,gBAAgB,KAAG,IAA4C,CAAC;AAElH,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;CAAE,GAAG,SAAoC,CAAC;AACnH,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,EAAE,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;CAAE,KAAG,IAAuC,CAAC;AACxH,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,KAAG,IAAuC,CAAC"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAU/C,MAAM,WAAW,uBAAuB;IACvC;;;;;;;OAOG;IACH,cAAc,CAAC,EAAG,OAAO,CAAC;IAC1B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAI,MAAM,CAAC;IACzB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;OAMG;IACH,UAAU,CAAC,EAAO,MAAM,CAAC;IACzB;;;;;OAKG;IACH,MAAM,CAAC,EAAW,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC;IACpD;;;;;OAKG;IACH,KAAK,CAAC,EAAY,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;IACtC;;;;;OAKG;IACH,OAAO,CAAC,EAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;IAC9D;;;;;OAKG;IACH,UAAU,CAAC,EAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,GAAG,SAAS,CAAC;IAC1D;;;;;;;OAOG;IACH,YAAY,CAAC,EAAK,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,qBAAqB,EAAE,uBAMnC,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,YAAY,EAQxD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,YAAY,EAAE,GAAG,SAAmC,CAAC;AAC/F,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,IAAsC,CAAC;AAIpF,eAAO,MAAM,mBAAmB,GAAI,SAAS,YAAY,EAAE,EAAE,KAAK,MAAM,KAAG,IA4B1E,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,MAK1C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;CAAE,GAAG,SAAoC,CAAC;AACnH,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,EAAE,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;CAAE,KAAG,IAAuC,CAAC;AACxH,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,KAAG,IAAuC,CAAC"}
package/dist/history.js CHANGED
@@ -3,34 +3,46 @@ const historyCache = new WeakMap();
3
3
  // Group/merge state per root
4
4
  const groupCounter = new WeakMap();
5
5
  const lastUngrouped = new WeakMap();
6
- const optionsCache = new WeakMap();
6
+ export const defaultHistoryOptions = {
7
+ mergeUngrouped: true,
8
+ mergeWindowMs: 300,
9
+ compactSamePath: true,
10
+ maxHistory: 1000,
11
+ cacheProxies: true,
12
+ };
7
13
  export const ensureHistory = (root) => {
8
- let h = historyCache.get(root);
9
- if (!h) {
10
- h = [];
11
- historyCache.set(root, h);
14
+ let hist = historyCache.get(root);
15
+ if (!hist) {
16
+ hist = [];
17
+ historyCache.set(root, hist);
12
18
  }
13
- return h;
19
+ return hist;
14
20
  };
15
21
  export const historyGet = (root) => historyCache.get(root);
16
22
  export const historyDelete = (root) => { historyCache.delete(root); };
17
23
  // Trim history by removing whole groups from the front until length <= max.
18
24
  // This keeps undoGroups coherent and avoids splitting groups.
19
25
  export const trimHistoryByGroups = (history, max) => {
26
+ // Validate max is a non-negative number
20
27
  if (!(typeof max === 'number') || max < 0)
21
28
  return;
29
+ // Nothing to trim if we're already under the limit
22
30
  if (history.length <= max)
23
31
  return;
32
+ // Count how many records to remove by walking through complete groups
24
33
  let removeCount = 0;
25
34
  let i = 0;
26
35
  while (history.length - removeCount > max && i < history.length) {
27
36
  const gid = history[i].groupId ?? `__g#${i}`;
37
+ // Find end of current group by scanning forward while groupId matches
28
38
  let j = i;
29
39
  while (j < history.length && (history[j].groupId ?? `__g#${j}`) === gid)
30
40
  j++;
41
+ // Accumulate group size and advance to next group
31
42
  removeCount += (j - i);
32
43
  i = j;
33
44
  }
45
+ // Remove entire groups from the front
34
46
  if (removeCount > 0)
35
47
  history.splice(0, removeCount);
36
48
  };
@@ -39,23 +51,6 @@ export const nextGroupId = (root) => {
39
51
  groupCounter.set(root, n);
40
52
  return `g${n}`;
41
53
  };
42
- const defaultOptions = {
43
- mergeUngrouped: true,
44
- mergeWindowMs: 300,
45
- compactConsecutiveSamePath: true,
46
- maxHistory: 1000,
47
- cacheProxies: true,
48
- };
49
- export const getOptions = (root) => {
50
- const opts = optionsCache.get(root);
51
- if (!opts)
52
- return defaultOptions;
53
- return {
54
- ...defaultOptions,
55
- ...opts,
56
- };
57
- };
58
- export const setOptions = (root, options) => { optionsCache.set(root, options); };
59
54
  export const getLastUngrouped = (root) => lastUngrouped.get(root);
60
55
  export const setLastUngrouped = (root, v) => { lastUngrouped.set(root, v); };
61
56
  export const clearLastUngrouped = (root) => { lastUngrouped.delete(root); };
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { getOptions } from "./history.js";
1
+ import { getOptions } from "./config.js";
2
2
  import { pathKeyOf } from "./path-key.js";
3
3
  /**
4
4
  * Per-root proxy cache: Map<pathKey, proxy>
@@ -1 +1 @@
1
- {"version":3,"file":"proxy-cache.js","sourceRoot":"","sources":["../src/proxy-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C;;;GAGG;AACH,MAAM,UAAU,GAAsC,IAAI,OAAO,EAAE,CAAC;AAGpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,OAAe,EAAmB,EAAE;IAC3E,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAErC,OAAO,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC,CAAC;AAGF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,KAAU,EAAQ,EAAE;IAC5E,IAAI,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,GAAG,IAAI,GAAG,EAAe,CAAC;QACjC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC,CAAC;AAGF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,QAAkB,EAAE,eAAyB,EAAQ,EAAE;IACjG,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,CAAC,YAAY;QACrB,OAAO;IAER,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,OAAO;QACX,OAAO;IAER,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC;YAC5C,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC;gBACtD,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACF,CAAC;AACF,CAAC,CAAC;AAGF;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAQ,EAAE;IAC3C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,OAAO;QACV,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC,CAAC"}
1
+ {"version":3,"file":"proxy-cache.js","sourceRoot":"","sources":["../src/proxy-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C;;;GAGG;AACH,MAAM,UAAU,GAAsC,IAAI,OAAO,EAAE,CAAC;AAGpE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,OAAe,EAAmB,EAAE;IAC3E,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAErC,OAAO,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC,CAAC;AAGF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,KAAU,EAAQ,EAAE;IAC5E,IAAI,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,GAAG,IAAI,GAAG,EAAe,CAAC;QACjC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC,CAAC;AAGF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,QAAkB,EAAE,eAAyB,EAAQ,EAAE;IACjG,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,CAAC,YAAY;QACrB,OAAO;IAER,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,OAAO;QACX,OAAO;IAER,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC;YAC5C,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC;gBACtD,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACF,CAAC;AACF,CAAC,CAAC;AAGF;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAQ,EAAE;IAC3C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,OAAO;QACV,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { captureShrinkRemovals, deleteIndex, isArrayIndexDeletion } from "./array-mutations.js";
2
2
  import { adaptMapMethod, adaptSetMethod } from "./collection-adapters.js";
3
+ import { getOptions } from "./config.js";
3
4
  import { computeActiveGroupId } from "./grouping.js";
4
- import { getOptions } from "./history.js";
5
5
  import { recordArrayShrinkDeletes, recordDelete, recordSet } from "./history-recorder.js";
6
6
  import { computeAffectedListeners } from "./listener-affinity.js";
7
7
  import { getListenerBucket } from "./listener-trie.js";
@@ -1 +1 @@
1
- {"version":3,"file":"proxy-factory.js","sourceRoot":"","sources":["../src/proxy-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxy-factory.js","sourceRoot":"","sources":["../src/proxy-factory.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot-diff.d.ts","sourceRoot":"","sources":["../src/snapshot-diff.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,eAAO,MAAM,qBAAqB,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAiB,CAAC;AAGzE,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,GAAG,CAAC,KAAG,CAOnC,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,MAAM,MAAM,EAAE,GAAG,CAAC,KAAG,CAUxD,CAAC;AAIF,eAAO,MAAM,UAAU,GACtB,GAAG,GAAG,EACN,GAAG,GAAG,EACN,MAAM,MAAM,EAAE,EACd,KAAK,UAAU,EAAE,EACjB,MAAM,MAAM,EACZ,YAAY,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,KACjC,IAmDF,CAAC"}
1
+ {"version":3,"file":"snapshot-diff.d.ts","sourceRoot":"","sources":["../src/snapshot-diff.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,eAAO,MAAM,qBAAqB,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAiB,CAAC;AAGzE,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,GAAG,CAAC,KAAG,CAOnC,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,MAAM,MAAM,EAAE,GAAG,CAAC,KAAG,CAUxD,CAAC;AAIF,eAAO,MAAM,UAAU,GACtB,GAAG,GAAG,EACN,GAAG,GAAG,EACN,MAAM,MAAM,EAAE,EACd,KAAK,UAAU,EAAE,EACjB,MAAM,MAAM,EACZ,YAAY,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,KACjC,IAmDF,CAAC"}
@@ -1,4 +1,4 @@
1
- import { getOptions } from "./history.js";
1
+ import { getOptions } from "./config.js";
2
2
  import { normalizeKey } from "./path.js";
3
3
  // Original snapshot for diff/isPristine
4
4
  export const originalSnapshotCache = new WeakMap();
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot-diff.js","sourceRoot":"","sources":["../src/snapshot-diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snapshot-diff.js","sourceRoot":"","sources":["../src/snapshot-diff.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcmantle/chronicle",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "A library for managing changes over time with undo/redo functionality",
5
5
  "repository": {
6
6
  "type": "git",
@@ -19,40 +19,264 @@ const isObject = (v: unknown): v is Record<string, unknown> => typeof v === 'obj
19
19
 
20
20
 
21
21
  export interface ChronicleApiMethods {
22
+ /**
23
+ * Subscribe to changes at a specific path in the object. The listener is called whenever
24
+ * the selected property or any of its descendants change. Returns an unsubscribe function.
25
+ *
26
+ * @param object - The chronicled object to listen to
27
+ * @param selector - Function that selects the path to watch (e.g., `obj => obj.user.name`)
28
+ * @param listener - Callback invoked on changes with (path, newValue, oldValue, meta)
29
+ * @returns Unsubscribe function to stop listening
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * const unsubscribe = chronicle.listen(state, s => s.count, (path, newVal, oldVal) => {
34
+ * console.log(`count changed from ${oldVal} to ${newVal}`);
35
+ * });
36
+ * ```
37
+ */
22
38
  listen<T extends object>(object: T, selector: PathSelector<T>, listener: ChangeListener): () => void;
39
+ /**
40
+ * Subscribe to changes at a specific path with listener options like debouncing or throttling.
41
+ *
42
+ * @param object - The chronicled object to listen to
43
+ * @param selector - Function that selects the path to watch
44
+ * @param listener - Callback invoked on changes
45
+ * @param options - Listener configuration (once, debounceMs, throttleMs, schedule)
46
+ * @returns Unsubscribe function
47
+ */
23
48
  // eslint-disable-next-line @typescript-eslint/unified-signatures
24
49
  listen<T extends object>(object: T, selector: PathSelector<T>, listener: ChangeListener, options: ListenerOptions): () => void;
50
+ /**
51
+ * Subscribe to changes at a specific path with a traversal mode.
52
+ *
53
+ * @param object - The chronicled object to listen to
54
+ * @param selector - Function that selects the path to watch
55
+ * @param listener - Callback invoked on changes
56
+ * @param mode - Path matching mode: 'exact' (only this path), 'up' (ancestors), 'down' (descendants)
57
+ * @returns Unsubscribe function
58
+ */
25
59
  // eslint-disable-next-line @typescript-eslint/unified-signatures
26
60
  listen<T extends object>(object: T, selector: PathSelector<T>, listener: ChangeListener, mode: PathMode): () => void;
61
+ /**
62
+ * Subscribe to changes at a specific path with both traversal mode and listener options.
63
+ *
64
+ * @param object - The chronicled object to listen to
65
+ * @param selector - Function that selects the path to watch
66
+ * @param listener - Callback invoked on changes
67
+ * @param mode - Path matching mode: 'exact', 'up', or 'down'
68
+ * @param options - Listener configuration (once, debounceMs, throttleMs, schedule)
69
+ * @returns Unsubscribe function
70
+ */
27
71
  // eslint-disable-next-line @stylistic/max-len, @typescript-eslint/unified-signatures
28
72
  listen<T extends object>(object: T, selector: PathSelector<T>, listener: ChangeListener, mode: PathMode, options: ListenerOptions): () => void;
29
- onAny: (obj: object, listener: ChangeListener, options?: ListenerOptions) => () => void;
30
- pause: (obj: object) => void;
31
- resume: (obj: object) => void;
32
- flush: (obj: object) => void;
33
- getHistory: (obj: object) => ChangeRecord[];
73
+
74
+ /**
75
+ * Subscribe to all changes on the object, regardless of path. Useful for broad monitoring.
76
+ *
77
+ * @param obj - The chronicled object to listen to
78
+ * @param listener - Callback invoked on any change with (path, newValue, oldValue, meta)
79
+ * @param options - Optional listener configuration (once, debounceMs, throttleMs, schedule)
80
+ * @returns Unsubscribe function to stop listening
81
+ */
82
+ onAny: (obj: object, listener: ChangeListener, options?: ListenerOptions) => () => void;
83
+
84
+ /**
85
+ * Temporarily pause change notifications for this object. Changes still occur and are
86
+ * recorded in history, but listeners won't be notified until resume() is called.
87
+ *
88
+ * @param obj - The chronicled object to pause
89
+ */
90
+ pause: (obj: object) => void;
91
+
92
+ /**
93
+ * Resume change notifications that were paused. Accumulated changes are not batched;
94
+ * call flush() if you want to trigger pending notifications immediately.
95
+ *
96
+ * @param obj - The chronicled object to resume
97
+ */
98
+ resume: (obj: object) => void;
99
+
100
+ /**
101
+ * Immediately flush any pending change notifications that are scheduled asynchronously.
102
+ * Useful when you need synchronous notification delivery.
103
+ *
104
+ * @param obj - The chronicled object to flush
105
+ */
106
+ flush: (obj: object) => void;
107
+
108
+ /**
109
+ * Get a copy of the complete change history for this object. Each record contains
110
+ * path, type, oldValue, newValue, timestamp, and groupId for undo/redo operations.
111
+ *
112
+ * @param obj - The chronicled object
113
+ * @returns Array of change records (copy, safe to modify)
114
+ */
115
+ getHistory: (obj: object) => ChangeRecord[];
116
+
117
+ /**
118
+ * Clear all change history and redo cache. The object's current state is preserved,
119
+ * but undo/redo will no longer work until new changes are made.
120
+ *
121
+ * @param obj - The chronicled object
122
+ */
34
123
  clearHistory: (obj: object) => void;
35
- reset: (obj: object) => void;
124
+
125
+ /**
126
+ * Reset the object to its pristine state (the state when first chronicled or when
127
+ * markPristine was last called). This is an un-doable operation.
128
+ *
129
+ * @param obj - The chronicled object to reset
130
+ */
131
+ reset: (obj: object) => void;
132
+
133
+ /**
134
+ * Mark the current state as the new pristine baseline. Clears history and resets the
135
+ * snapshot used for diff() and reset(). Useful after saving to server or committing changes.
136
+ *
137
+ * @param obj - The chronicled object
138
+ */
36
139
  markPristine: (obj: object) => void;
37
- diff: (obj: object) => DiffRecord[];
38
- isPristine: (obj: object) => boolean;
39
- snapshot: <T extends object>(obj: T) => T;
40
- unwrap: <T extends object>(obj: T) => T;
41
- merge: (obj: object, incomingObject: object, resolutions?: ConflictResolutions) => MergeResult;
42
- mark: (obj: object) => number;
43
- undo: (obj: object, steps?: number) => void;
44
- undoSince: (obj: object, historyLengthBefore: number) => void;
45
- undoGroups: (obj: object, groups?: number) => void;
46
- canUndo: (obj: object) => boolean;
47
- canRedo: (obj: object) => boolean;
48
- clearRedo: (obj: object) => void;
49
- redo: (obj: object, steps?: number) => void;
50
- redoGroups: (obj: object, groups?: number) => void;
51
- configure: (obj: object, options: ConfigureOptions) => void;
140
+
141
+ /**
142
+ * Get the differences between the current state and the pristine state. Returns an array
143
+ * of changes showing what was added, removed, or modified.
144
+ *
145
+ * @param obj - The chronicled object
146
+ * @returns Array of diff records with path, kind ('added'|'removed'|'changed'), and values
147
+ */
148
+ diff: (obj: object) => DiffRecord[];
149
+
150
+ /**
151
+ * Check if the object has any changes from its pristine state. Returns true if the object
152
+ * matches its original or last markPristine() state.
153
+ *
154
+ * @param obj - The chronicled object
155
+ * @returns True if no changes exist, false otherwise
156
+ */
157
+ isPristine: (obj: object) => boolean;
158
+
159
+ /**
160
+ * Create a deep clone snapshot of the current state. The snapshot is a plain object,
161
+ * not a chronicle proxy, and can be serialized or stored independently.
162
+ *
163
+ * @param obj - The chronicled object
164
+ * @returns Deep clone of the current state
165
+ */
166
+ snapshot: <T extends object>(obj: T) => T;
167
+
168
+ /**
169
+ * Get the original unwrapped object (removes the chronicle proxy). Use with caution:
170
+ * changes to the unwrapped object won't be tracked or trigger listeners.
171
+ *
172
+ * @param obj - The chronicled object
173
+ * @returns The underlying object without proxy wrapper
174
+ */
175
+ unwrap: <T extends object>(obj: T) => T;
176
+
177
+ /**
178
+ * Perform a three-way merge between the pristine state (base), current state (ours),
179
+ * and incoming changes (theirs). Detects conflicts and allows resolution strategies.
180
+ * Useful for syncing local changes with server updates.
181
+ *
182
+ * @param obj - The chronicled object
183
+ * @param incomingObject - The incoming state to merge
184
+ * @param resolutions - Optional conflict resolution strategies per path
185
+ * @returns Merge result with success status, conflicts array, and count of applied changes
186
+ */
187
+ merge: (obj: object, incomingObject: object, resolutions?: ConflictResolutions) => MergeResult;
188
+
189
+ /**
190
+ * Get a marker representing the current history length. Use with undoSince() to undo
191
+ * changes made after this point. Useful for transaction-like rollback behavior.
192
+ *
193
+ * @param obj - The chronicled object
194
+ * @returns Current history length (marker value)
195
+ */
196
+ mark: (obj: object) => number;
197
+
198
+ /**
199
+ * Undo the last N changes (or all changes if steps not specified). Changes are undone
200
+ * individually. For grouped operations, use undoGroups() instead.
201
+ *
202
+ * @param obj - The chronicled object
203
+ * @param steps - Number of changes to undo (default: all)
204
+ */
205
+ undo: (obj: object, steps?: number) => void;
206
+
207
+ /**
208
+ * Undo all changes made since the specified marker. The marker should come from mark().
209
+ * This undoes everything after that point in history.
210
+ *
211
+ * @param obj - The chronicled object
212
+ * @param historyLengthBefore - The marker value from mark()
213
+ */
214
+ undoSince: (obj: object, historyLengthBefore: number) => void;
215
+
216
+ /**
217
+ * Undo the last N undo groups (batches/transactions). Unlike undo() which works on
218
+ * individual changes, this respects the grouping from batches and transactions.
219
+ *
220
+ * @param obj - The chronicled object
221
+ * @param groups - Number of groups to undo (default: 1)
222
+ */
223
+ undoGroups: (obj: object, groups?: number) => void;
224
+
225
+ /**
226
+ * Check if undo is available (history has changes that can be undone).
227
+ *
228
+ * @param obj - The chronicled object
229
+ * @returns True if undo is possible, false otherwise
230
+ */
231
+ canUndo: (obj: object) => boolean;
232
+
233
+ /**
234
+ * Check if redo is available (there are undone changes that can be reapplied).
235
+ *
236
+ * @param obj - The chronicled object
237
+ * @returns True if redo is possible, false otherwise
238
+ */
239
+ canRedo: (obj: object) => boolean;
240
+
241
+ /**
242
+ * Clear the redo cache, making undone changes un-re-doable. The object's current state
243
+ * and undo history are preserved.
244
+ *
245
+ * @param obj - The chronicled object
246
+ */
247
+ clearRedo: (obj: object) => void;
248
+
249
+ /**
250
+ * Redo the last N undone changes (or all undone changes if steps not specified).
251
+ * Changes are redone individually.
252
+ *
253
+ * @param obj - The chronicled object
254
+ * @param steps - Number of changes to redo (default: all)
255
+ */
256
+ redo: (obj: object, steps?: number) => void;
257
+
258
+ /**
259
+ * Redo the last N undo groups. Unlike redo() which works on individual changes,
260
+ * this respects the grouping from batches and transactions.
261
+ *
262
+ * @param obj - The chronicled object
263
+ * @param groups - Number of groups to redo (default: 1)
264
+ */
265
+ redoGroups: (obj: object, groups?: number) => void;
266
+
267
+ /**
268
+ * Configure chronicle options for this object. Options include history limits, merge
269
+ * behavior, custom clone/compare functions, and proxy caching. Can be called multiple
270
+ * times; new options are merged with existing ones.
271
+ *
272
+ * @param obj - The chronicled object
273
+ * @param options - Configuration options to apply
274
+ */
275
+ configure: (obj: object, options: ConfigureOptions) => void;
52
276
  }
53
277
 
54
278
  export const createApiMethods = (deps: ApiDeps): ChronicleApiMethods => {
55
- // listen/onAny --------------------------------------------------------------
279
+ // listen/onAny
56
280
  const listen: ChronicleApiMethods['listen'] = (
57
281
  object,
58
282
  selector,
@@ -106,7 +330,7 @@ export const createApiMethods = (deps: ApiDeps): ChronicleApiMethods => {
106
330
  return listen(obj, s => s, listener, options!);
107
331
  };
108
332
 
109
- // pause/resume/flush --------------------------------------------------------
333
+ // pause/resume/flush
110
334
  const pause: ChronicleApiMethods['pause'] = (obj) => {
111
335
  const root = deps.getRoot(obj);
112
336
  schedulePause(root);
@@ -122,7 +346,7 @@ export const createApiMethods = (deps: ApiDeps): ChronicleApiMethods => {
122
346
  scheduleFlush(root);
123
347
  };
124
348
 
125
- // history ------------------------------------------------------------------
349
+ // history
126
350
  const getHistory: ChronicleApiMethods['getHistory'] = (obj) => {
127
351
  const root = deps.getRoot(obj);
128
352
 
@@ -136,7 +360,7 @@ export const createApiMethods = (deps: ApiDeps): ChronicleApiMethods => {
136
360
  clearRedoCache(root);
137
361
  };
138
362
 
139
- // reset/markPristine/diff/pristine ----------------------------------------
363
+ // reset/markPristine/diff/pristine
140
364
  const markPristine: ChronicleApiMethods['markPristine'] = (obj) => {
141
365
  const root = deps.getRoot(obj);
142
366
  originalSnapshotCache.set(root, cloneWithOptions(root, root));
@@ -206,7 +430,7 @@ export const createApiMethods = (deps: ApiDeps): ChronicleApiMethods => {
206
430
 
207
431
  const diff: ChronicleApiMethods['diff'] = (obj) => {
208
432
  const root = deps.getRoot(obj);
209
- const original = originalSnapshotCache.get(root) ?? cloneWithOptions(root, root as any);
433
+ const original = originalSnapshotCache.get(root) ?? cloneWithOptions(root, root);
210
434
  const out: DiffRecord[] = [];
211
435
  diffValues(original, root, [], out, root);
212
436
 
@@ -222,13 +446,13 @@ export const createApiMethods = (deps: ApiDeps): ChronicleApiMethods => {
222
446
  const snapshot: ChronicleApiMethods['snapshot'] = (obj) => {
223
447
  const root = deps.getRoot(obj);
224
448
 
225
- return cloneWithOptions(root, root) as any;
449
+ return cloneWithOptions(root, root) as typeof obj;
226
450
  };
227
451
 
228
452
  const unwrap: ChronicleApiMethods['unwrap'] = (obj) => {
229
453
  const root = deps.getRoot(obj);
230
454
 
231
- return root as any;
455
+ return root as typeof obj;
232
456
  };
233
457
 
234
458
  const merge: ChronicleApiMethods['merge'] = (obj, incomingObject, resolutions?) => {
@@ -237,7 +461,7 @@ export const createApiMethods = (deps: ApiDeps): ChronicleApiMethods => {
237
461
  return threeWayMerge(root, obj, incomingObject, resolutions);
238
462
  };
239
463
 
240
- // marks/undo/redo -----------------------------------------------------------
464
+ // marks/undo/redo
241
465
  const mark: ChronicleApiMethods['mark'] = (obj) => {
242
466
  const root = deps.getRoot(obj);
243
467
  const history = historyGet(root);