@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.
- package/dist/api-methods.d.ts +201 -0
- package/dist/api-methods.d.ts.map +1 -1
- package/dist/api-methods.js +5 -5
- package/dist/api-methods.js.map +1 -1
- package/dist/api.d.ts +8 -2
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +45 -15
- package/dist/api.js.map +1 -1
- package/dist/chronicle.d.ts +1 -5
- package/dist/chronicle.d.ts.map +1 -1
- package/dist/chronicle.js +2 -36
- package/dist/chronicle.js.map +1 -1
- package/dist/collection-adapters.d.ts.map +1 -1
- package/dist/collection-adapters.js +2 -1
- package/dist/collection-adapters.js.map +1 -1
- package/dist/config.d.ts +6 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +20 -3
- package/dist/config.js.map +1 -1
- package/dist/grouping.d.ts.map +1 -1
- package/dist/grouping.js +2 -1
- package/dist/grouping.js.map +1 -1
- package/dist/history-recorder.d.ts.map +1 -1
- package/dist/history-recorder.js +3 -2
- package/dist/history-recorder.js.map +1 -1
- package/dist/history.d.ts +3 -4
- package/dist/history.d.ts.map +1 -1
- package/dist/history.js +18 -23
- package/dist/history.js.map +1 -1
- package/dist/proxy-cache.js +1 -1
- package/dist/proxy-cache.js.map +1 -1
- package/dist/proxy-factory.js +1 -1
- package/dist/proxy-factory.js.map +1 -1
- package/dist/snapshot-diff.d.ts.map +1 -1
- package/dist/snapshot-diff.js +1 -1
- package/dist/snapshot-diff.js.map +1 -1
- package/package.json +1 -1
- package/src/api-methods.ts +253 -29
- package/src/api.ts +54 -22
- package/src/chronicle.ts +2 -42
- package/src/collection-adapters.ts +2 -1
- package/src/config.ts +31 -5
- package/src/grouping.ts +2 -1
- package/src/history-recorder.ts +3 -2
- package/src/history.ts +30 -37
- package/src/proxy-cache.ts +1 -1
- package/src/proxy-factory.ts +1 -1
- package/src/snapshot-diff.ts +2 -1
package/dist/api-methods.d.ts
CHANGED
|
@@ -4,32 +4,233 @@ export interface ApiDeps {
|
|
|
4
4
|
getRoot: (obj: object) => object;
|
|
5
5
|
}
|
|
6
6
|
export interface ChronicleApiMethods {
|
|
7
|
+
/**
|
|
8
|
+
* Subscribe to changes at a specific path in the object. The listener is called whenever
|
|
9
|
+
* the selected property or any of its descendants change. Returns an unsubscribe function.
|
|
10
|
+
*
|
|
11
|
+
* @param object - The chronicled object to listen to
|
|
12
|
+
* @param selector - Function that selects the path to watch (e.g., `obj => obj.user.name`)
|
|
13
|
+
* @param listener - Callback invoked on changes with (path, newValue, oldValue, meta)
|
|
14
|
+
* @returns Unsubscribe function to stop listening
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* const unsubscribe = chronicle.listen(state, s => s.count, (path, newVal, oldVal) => {
|
|
19
|
+
* console.log(`count changed from ${oldVal} to ${newVal}`);
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
7
23
|
listen<T extends object>(object: T, selector: PathSelector<T>, listener: ChangeListener): () => void;
|
|
24
|
+
/**
|
|
25
|
+
* Subscribe to changes at a specific path with listener options like debouncing or throttling.
|
|
26
|
+
*
|
|
27
|
+
* @param object - The chronicled object to listen to
|
|
28
|
+
* @param selector - Function that selects the path to watch
|
|
29
|
+
* @param listener - Callback invoked on changes
|
|
30
|
+
* @param options - Listener configuration (once, debounceMs, throttleMs, schedule)
|
|
31
|
+
* @returns Unsubscribe function
|
|
32
|
+
*/
|
|
8
33
|
listen<T extends object>(object: T, selector: PathSelector<T>, listener: ChangeListener, options: ListenerOptions): () => void;
|
|
34
|
+
/**
|
|
35
|
+
* Subscribe to changes at a specific path with a traversal mode.
|
|
36
|
+
*
|
|
37
|
+
* @param object - The chronicled object to listen to
|
|
38
|
+
* @param selector - Function that selects the path to watch
|
|
39
|
+
* @param listener - Callback invoked on changes
|
|
40
|
+
* @param mode - Path matching mode: 'exact' (only this path), 'up' (ancestors), 'down' (descendants)
|
|
41
|
+
* @returns Unsubscribe function
|
|
42
|
+
*/
|
|
9
43
|
listen<T extends object>(object: T, selector: PathSelector<T>, listener: ChangeListener, mode: PathMode): () => void;
|
|
44
|
+
/**
|
|
45
|
+
* Subscribe to changes at a specific path with both traversal mode and listener options.
|
|
46
|
+
*
|
|
47
|
+
* @param object - The chronicled object to listen to
|
|
48
|
+
* @param selector - Function that selects the path to watch
|
|
49
|
+
* @param listener - Callback invoked on changes
|
|
50
|
+
* @param mode - Path matching mode: 'exact', 'up', or 'down'
|
|
51
|
+
* @param options - Listener configuration (once, debounceMs, throttleMs, schedule)
|
|
52
|
+
* @returns Unsubscribe function
|
|
53
|
+
*/
|
|
10
54
|
listen<T extends object>(object: T, selector: PathSelector<T>, listener: ChangeListener, mode: PathMode, options: ListenerOptions): () => void;
|
|
55
|
+
/**
|
|
56
|
+
* Subscribe to all changes on the object, regardless of path. Useful for broad monitoring.
|
|
57
|
+
*
|
|
58
|
+
* @param obj - The chronicled object to listen to
|
|
59
|
+
* @param listener - Callback invoked on any change with (path, newValue, oldValue, meta)
|
|
60
|
+
* @param options - Optional listener configuration (once, debounceMs, throttleMs, schedule)
|
|
61
|
+
* @returns Unsubscribe function to stop listening
|
|
62
|
+
*/
|
|
11
63
|
onAny: (obj: object, listener: ChangeListener, options?: ListenerOptions) => () => void;
|
|
64
|
+
/**
|
|
65
|
+
* Temporarily pause change notifications for this object. Changes still occur and are
|
|
66
|
+
* recorded in history, but listeners won't be notified until resume() is called.
|
|
67
|
+
*
|
|
68
|
+
* @param obj - The chronicled object to pause
|
|
69
|
+
*/
|
|
12
70
|
pause: (obj: object) => void;
|
|
71
|
+
/**
|
|
72
|
+
* Resume change notifications that were paused. Accumulated changes are not batched;
|
|
73
|
+
* call flush() if you want to trigger pending notifications immediately.
|
|
74
|
+
*
|
|
75
|
+
* @param obj - The chronicled object to resume
|
|
76
|
+
*/
|
|
13
77
|
resume: (obj: object) => void;
|
|
78
|
+
/**
|
|
79
|
+
* Immediately flush any pending change notifications that are scheduled asynchronously.
|
|
80
|
+
* Useful when you need synchronous notification delivery.
|
|
81
|
+
*
|
|
82
|
+
* @param obj - The chronicled object to flush
|
|
83
|
+
*/
|
|
14
84
|
flush: (obj: object) => void;
|
|
85
|
+
/**
|
|
86
|
+
* Get a copy of the complete change history for this object. Each record contains
|
|
87
|
+
* path, type, oldValue, newValue, timestamp, and groupId for undo/redo operations.
|
|
88
|
+
*
|
|
89
|
+
* @param obj - The chronicled object
|
|
90
|
+
* @returns Array of change records (copy, safe to modify)
|
|
91
|
+
*/
|
|
15
92
|
getHistory: (obj: object) => ChangeRecord[];
|
|
93
|
+
/**
|
|
94
|
+
* Clear all change history and redo cache. The object's current state is preserved,
|
|
95
|
+
* but undo/redo will no longer work until new changes are made.
|
|
96
|
+
*
|
|
97
|
+
* @param obj - The chronicled object
|
|
98
|
+
*/
|
|
16
99
|
clearHistory: (obj: object) => void;
|
|
100
|
+
/**
|
|
101
|
+
* Reset the object to its pristine state (the state when first chronicled or when
|
|
102
|
+
* markPristine was last called). This is an un-doable operation.
|
|
103
|
+
*
|
|
104
|
+
* @param obj - The chronicled object to reset
|
|
105
|
+
*/
|
|
17
106
|
reset: (obj: object) => void;
|
|
107
|
+
/**
|
|
108
|
+
* Mark the current state as the new pristine baseline. Clears history and resets the
|
|
109
|
+
* snapshot used for diff() and reset(). Useful after saving to server or committing changes.
|
|
110
|
+
*
|
|
111
|
+
* @param obj - The chronicled object
|
|
112
|
+
*/
|
|
18
113
|
markPristine: (obj: object) => void;
|
|
114
|
+
/**
|
|
115
|
+
* Get the differences between the current state and the pristine state. Returns an array
|
|
116
|
+
* of changes showing what was added, removed, or modified.
|
|
117
|
+
*
|
|
118
|
+
* @param obj - The chronicled object
|
|
119
|
+
* @returns Array of diff records with path, kind ('added'|'removed'|'changed'), and values
|
|
120
|
+
*/
|
|
19
121
|
diff: (obj: object) => DiffRecord[];
|
|
122
|
+
/**
|
|
123
|
+
* Check if the object has any changes from its pristine state. Returns true if the object
|
|
124
|
+
* matches its original or last markPristine() state.
|
|
125
|
+
*
|
|
126
|
+
* @param obj - The chronicled object
|
|
127
|
+
* @returns True if no changes exist, false otherwise
|
|
128
|
+
*/
|
|
20
129
|
isPristine: (obj: object) => boolean;
|
|
130
|
+
/**
|
|
131
|
+
* Create a deep clone snapshot of the current state. The snapshot is a plain object,
|
|
132
|
+
* not a chronicle proxy, and can be serialized or stored independently.
|
|
133
|
+
*
|
|
134
|
+
* @param obj - The chronicled object
|
|
135
|
+
* @returns Deep clone of the current state
|
|
136
|
+
*/
|
|
21
137
|
snapshot: <T extends object>(obj: T) => T;
|
|
138
|
+
/**
|
|
139
|
+
* Get the original unwrapped object (removes the chronicle proxy). Use with caution:
|
|
140
|
+
* changes to the unwrapped object won't be tracked or trigger listeners.
|
|
141
|
+
*
|
|
142
|
+
* @param obj - The chronicled object
|
|
143
|
+
* @returns The underlying object without proxy wrapper
|
|
144
|
+
*/
|
|
22
145
|
unwrap: <T extends object>(obj: T) => T;
|
|
146
|
+
/**
|
|
147
|
+
* Perform a three-way merge between the pristine state (base), current state (ours),
|
|
148
|
+
* and incoming changes (theirs). Detects conflicts and allows resolution strategies.
|
|
149
|
+
* Useful for syncing local changes with server updates.
|
|
150
|
+
*
|
|
151
|
+
* @param obj - The chronicled object
|
|
152
|
+
* @param incomingObject - The incoming state to merge
|
|
153
|
+
* @param resolutions - Optional conflict resolution strategies per path
|
|
154
|
+
* @returns Merge result with success status, conflicts array, and count of applied changes
|
|
155
|
+
*/
|
|
23
156
|
merge: (obj: object, incomingObject: object, resolutions?: ConflictResolutions) => MergeResult;
|
|
157
|
+
/**
|
|
158
|
+
* Get a marker representing the current history length. Use with undoSince() to undo
|
|
159
|
+
* changes made after this point. Useful for transaction-like rollback behavior.
|
|
160
|
+
*
|
|
161
|
+
* @param obj - The chronicled object
|
|
162
|
+
* @returns Current history length (marker value)
|
|
163
|
+
*/
|
|
24
164
|
mark: (obj: object) => number;
|
|
165
|
+
/**
|
|
166
|
+
* Undo the last N changes (or all changes if steps not specified). Changes are undone
|
|
167
|
+
* individually. For grouped operations, use undoGroups() instead.
|
|
168
|
+
*
|
|
169
|
+
* @param obj - The chronicled object
|
|
170
|
+
* @param steps - Number of changes to undo (default: all)
|
|
171
|
+
*/
|
|
25
172
|
undo: (obj: object, steps?: number) => void;
|
|
173
|
+
/**
|
|
174
|
+
* Undo all changes made since the specified marker. The marker should come from mark().
|
|
175
|
+
* This undoes everything after that point in history.
|
|
176
|
+
*
|
|
177
|
+
* @param obj - The chronicled object
|
|
178
|
+
* @param historyLengthBefore - The marker value from mark()
|
|
179
|
+
*/
|
|
26
180
|
undoSince: (obj: object, historyLengthBefore: number) => void;
|
|
181
|
+
/**
|
|
182
|
+
* Undo the last N undo groups (batches/transactions). Unlike undo() which works on
|
|
183
|
+
* individual changes, this respects the grouping from batches and transactions.
|
|
184
|
+
*
|
|
185
|
+
* @param obj - The chronicled object
|
|
186
|
+
* @param groups - Number of groups to undo (default: 1)
|
|
187
|
+
*/
|
|
27
188
|
undoGroups: (obj: object, groups?: number) => void;
|
|
189
|
+
/**
|
|
190
|
+
* Check if undo is available (history has changes that can be undone).
|
|
191
|
+
*
|
|
192
|
+
* @param obj - The chronicled object
|
|
193
|
+
* @returns True if undo is possible, false otherwise
|
|
194
|
+
*/
|
|
28
195
|
canUndo: (obj: object) => boolean;
|
|
196
|
+
/**
|
|
197
|
+
* Check if redo is available (there are undone changes that can be reapplied).
|
|
198
|
+
*
|
|
199
|
+
* @param obj - The chronicled object
|
|
200
|
+
* @returns True if redo is possible, false otherwise
|
|
201
|
+
*/
|
|
29
202
|
canRedo: (obj: object) => boolean;
|
|
203
|
+
/**
|
|
204
|
+
* Clear the redo cache, making undone changes un-re-doable. The object's current state
|
|
205
|
+
* and undo history are preserved.
|
|
206
|
+
*
|
|
207
|
+
* @param obj - The chronicled object
|
|
208
|
+
*/
|
|
30
209
|
clearRedo: (obj: object) => void;
|
|
210
|
+
/**
|
|
211
|
+
* Redo the last N undone changes (or all undone changes if steps not specified).
|
|
212
|
+
* Changes are redone individually.
|
|
213
|
+
*
|
|
214
|
+
* @param obj - The chronicled object
|
|
215
|
+
* @param steps - Number of changes to redo (default: all)
|
|
216
|
+
*/
|
|
31
217
|
redo: (obj: object, steps?: number) => void;
|
|
218
|
+
/**
|
|
219
|
+
* Redo the last N undo groups. Unlike redo() which works on individual changes,
|
|
220
|
+
* this respects the grouping from batches and transactions.
|
|
221
|
+
*
|
|
222
|
+
* @param obj - The chronicled object
|
|
223
|
+
* @param groups - Number of groups to redo (default: 1)
|
|
224
|
+
*/
|
|
32
225
|
redoGroups: (obj: object, groups?: number) => void;
|
|
226
|
+
/**
|
|
227
|
+
* Configure chronicle options for this object. Options include history limits, merge
|
|
228
|
+
* behavior, custom clone/compare functions, and proxy caching. Can be called multiple
|
|
229
|
+
* times; new options are merged with existing ones.
|
|
230
|
+
*
|
|
231
|
+
* @param obj - The chronicled object
|
|
232
|
+
* @param options - Configuration options to apply
|
|
233
|
+
*/
|
|
33
234
|
configure: (obj: object, options: ConfigureOptions) => void;
|
|
34
235
|
}
|
|
35
236
|
export declare const createApiMethods: (deps: ApiDeps) => ChronicleApiMethods;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-methods.d.ts","sourceRoot":"","sources":["../src/api-methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAiB,MAAM,aAAa,CAAC;AAQnE,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAItJ,MAAM,WAAW,OAAO;IACvB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CACjC;AAMD,MAAM,WAAW,mBAAmB;IACnC,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,GAAG,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"api-methods.d.ts","sourceRoot":"","sources":["../src/api-methods.ts"],"names":[],"mappings":"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"}
|
package/dist/api-methods.js
CHANGED
|
@@ -9,7 +9,7 @@ import { threeWayMerge } from "./three-way-merge.js";
|
|
|
9
9
|
import { canRedo as coreCanRedo, canUndo as coreCanUndo, clearRedoCache, redo as coreRedo, redoGroups as coreRedoGroups, resumeWrites, suspendWrites, undo as coreUndo, undoGroups as coreUndoGroups, undoSince as coreUndoSince } from "./undo-redo.js";
|
|
10
10
|
const isObject = (v) => typeof v === 'object' && v !== null;
|
|
11
11
|
export const createApiMethods = (deps) => {
|
|
12
|
-
// listen/onAny
|
|
12
|
+
// listen/onAny
|
|
13
13
|
const listen = (object, selector, listener, modeOrOptions, maybeOptions) => {
|
|
14
14
|
const segs = nameofSegments(selector);
|
|
15
15
|
const root = deps.getRoot(object);
|
|
@@ -47,7 +47,7 @@ export const createApiMethods = (deps) => {
|
|
|
47
47
|
const onAny = (obj, listener, options) => {
|
|
48
48
|
return listen(obj, s => s, listener, options);
|
|
49
49
|
};
|
|
50
|
-
// pause/resume/flush
|
|
50
|
+
// pause/resume/flush
|
|
51
51
|
const pause = (obj) => {
|
|
52
52
|
const root = deps.getRoot(obj);
|
|
53
53
|
schedulePause(root);
|
|
@@ -60,7 +60,7 @@ export const createApiMethods = (deps) => {
|
|
|
60
60
|
const root = deps.getRoot(obj);
|
|
61
61
|
scheduleFlush(root);
|
|
62
62
|
};
|
|
63
|
-
// history
|
|
63
|
+
// history
|
|
64
64
|
const getHistory = (obj) => {
|
|
65
65
|
const root = deps.getRoot(obj);
|
|
66
66
|
return (historyGet(root) ?? []).slice();
|
|
@@ -71,7 +71,7 @@ export const createApiMethods = (deps) => {
|
|
|
71
71
|
clearLastUngrouped(root);
|
|
72
72
|
clearRedoCache(root);
|
|
73
73
|
};
|
|
74
|
-
// reset/markPristine/diff/pristine
|
|
74
|
+
// reset/markPristine/diff/pristine
|
|
75
75
|
const markPristine = (obj) => {
|
|
76
76
|
const root = deps.getRoot(obj);
|
|
77
77
|
originalSnapshotCache.set(root, cloneWithOptions(root, root));
|
|
@@ -152,7 +152,7 @@ export const createApiMethods = (deps) => {
|
|
|
152
152
|
const root = deps.getRoot(obj);
|
|
153
153
|
return threeWayMerge(root, obj, incomingObject, resolutions);
|
|
154
154
|
};
|
|
155
|
-
// marks/undo/redo
|
|
155
|
+
// marks/undo/redo
|
|
156
156
|
const mark = (obj) => {
|
|
157
157
|
const root = deps.getRoot(obj);
|
|
158
158
|
const history = historyGet(root);
|
package/dist/api-methods.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-methods.js","sourceRoot":"","sources":["../src/api-methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,aAAa,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5H,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,IAAI,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,KAAK,IAAI,aAAa,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACvI,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,IAAI,WAAW,EAAE,cAAc,EAAE,IAAI,IAAI,QAAQ,EAAE,UAAU,IAAI,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,IAAI,QAAQ,EAAE,UAAU,IAAI,cAAc,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAQzP,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAgC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"api-methods.js","sourceRoot":"","sources":["../src/api-methods.ts"],"names":[],"mappings":"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"}
|
package/dist/api.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { type ChronicleApiMethods } from './api-methods.ts';
|
|
2
|
+
import { type BatchAPI } from './batch-transaction.ts';
|
|
3
|
+
import { type ConfigureOptions } from './config.ts';
|
|
1
4
|
export interface ChronicleCoreDeps {
|
|
2
5
|
getBatchFrames: (root: object) => {
|
|
3
6
|
marker: number;
|
|
@@ -5,8 +8,11 @@ export interface ChronicleCoreDeps {
|
|
|
5
8
|
}[] | undefined;
|
|
6
9
|
}
|
|
7
10
|
export interface ChronicleCore {
|
|
8
|
-
chronicle:
|
|
11
|
+
chronicle: Chronicle;
|
|
9
12
|
getRoot: (obj: object) => object;
|
|
10
13
|
}
|
|
11
|
-
export
|
|
14
|
+
export interface Chronicle extends Omit<BatchAPI, 'getBatchFrames'>, ChronicleApiMethods {
|
|
15
|
+
<T extends object>(object: T, options?: ConfigureOptions): T;
|
|
16
|
+
}
|
|
17
|
+
export declare const createChronicle: () => Chronicle;
|
|
12
18
|
//# sourceMappingURL=api.d.ts.map
|
package/dist/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAoB,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,KAAK,QAAQ,EAA0B,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,KAAK,gBAAgB,EAAiB,MAAM,aAAa,CAAC;AAMnE,MAAM,WAAW,iBAAiB;IACjC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;KAAE,EAAE,GAAG,SAAS,CAAC;CAChF;AAED,MAAM,WAAW,aAAa;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAI,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CACnC;AAGD,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,mBAAmB;IACvF,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,CAAC,CAAC;CAC7D;AAGD,eAAO,MAAM,eAAe,QAAO,SA6DlC,CAAC"}
|
package/dist/api.js
CHANGED
|
@@ -1,30 +1,60 @@
|
|
|
1
|
+
import { createApiMethods } from "./api-methods.js";
|
|
2
|
+
import { createBatchTransaction } from "./batch-transaction.js";
|
|
3
|
+
import { configureRoot } from "./config.js";
|
|
1
4
|
import { createProxyFactory } from "./proxy-factory.js";
|
|
2
5
|
import { cloneWithOptions, originalSnapshotCache } from "./snapshot-diff.js";
|
|
3
|
-
export const
|
|
6
|
+
export const createChronicle = () => {
|
|
4
7
|
const proxyToRoot = new WeakMap();
|
|
5
8
|
let proxyFactory;
|
|
6
|
-
const chronicle = (object => {
|
|
7
|
-
const
|
|
9
|
+
const chronicle = ((object, options) => {
|
|
10
|
+
const alreadyProxied = proxyToRoot.has(object);
|
|
11
|
+
const root = proxyToRoot.get(object) ?? object;
|
|
8
12
|
if (!proxyFactory) {
|
|
9
13
|
proxyFactory = createProxyFactory({
|
|
10
|
-
getBatchFrames: (r) =>
|
|
14
|
+
getBatchFrames: (r) => batchApi.getBatchFrames(r),
|
|
11
15
|
setProxyRoot: (proxy, r) => proxyToRoot.set(proxy, r),
|
|
12
16
|
});
|
|
13
17
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
if (!originalSnapshotCache.has(existingRoot)) {
|
|
17
|
-
originalSnapshotCache.set(existingRoot, cloneWithOptions(existingRoot, existingRoot));
|
|
18
|
-
}
|
|
19
|
-
return object;
|
|
20
|
-
}
|
|
21
|
-
const root = object;
|
|
22
|
-
const { createProxy } = proxyFactory;
|
|
18
|
+
if (options)
|
|
19
|
+
configureRoot(root, options);
|
|
23
20
|
if (!originalSnapshotCache.has(root))
|
|
24
21
|
originalSnapshotCache.set(root, cloneWithOptions(root, root));
|
|
25
|
-
|
|
22
|
+
if (alreadyProxied)
|
|
23
|
+
return object;
|
|
24
|
+
return proxyFactory.createProxy(root, [], root);
|
|
26
25
|
});
|
|
27
26
|
const getRoot = (obj) => proxyToRoot.get(obj) ?? obj;
|
|
28
|
-
|
|
27
|
+
const batchApi = createBatchTransaction({ chronicle, getRoot });
|
|
28
|
+
const api = createApiMethods({ getRoot });
|
|
29
|
+
chronicle.listen = api.listen;
|
|
30
|
+
chronicle.onAny = api.onAny;
|
|
31
|
+
chronicle.pause = api.pause;
|
|
32
|
+
chronicle.resume = api.resume;
|
|
33
|
+
chronicle.flush = api.flush;
|
|
34
|
+
chronicle.getHistory = api.getHistory;
|
|
35
|
+
chronicle.clearHistory = api.clearHistory;
|
|
36
|
+
chronicle.reset = api.reset;
|
|
37
|
+
chronicle.markPristine = api.markPristine;
|
|
38
|
+
chronicle.undo = api.undo;
|
|
39
|
+
chronicle.undoSince = api.undoSince;
|
|
40
|
+
chronicle.diff = api.diff;
|
|
41
|
+
chronicle.isPristine = api.isPristine;
|
|
42
|
+
chronicle.snapshot = api.snapshot;
|
|
43
|
+
chronicle.unwrap = api.unwrap;
|
|
44
|
+
chronicle.merge = api.merge;
|
|
45
|
+
chronicle.mark = api.mark;
|
|
46
|
+
chronicle.undoGroups = api.undoGroups;
|
|
47
|
+
chronicle.canUndo = api.canUndo;
|
|
48
|
+
chronicle.canRedo = api.canRedo;
|
|
49
|
+
chronicle.clearRedo = api.clearRedo;
|
|
50
|
+
chronicle.redo = api.redo;
|
|
51
|
+
chronicle.redoGroups = api.redoGroups;
|
|
52
|
+
chronicle.configure = api.configure;
|
|
53
|
+
chronicle.transaction = batchApi.transaction;
|
|
54
|
+
chronicle.batch = batchApi.batch;
|
|
55
|
+
chronicle.beginBatch = (obj) => batchApi.beginBatch(getRoot(obj));
|
|
56
|
+
chronicle.commitBatch = (obj) => batchApi.commitBatch(getRoot(obj));
|
|
57
|
+
chronicle.rollbackBatch = (obj) => batchApi.rollbackBatch(getRoot(obj));
|
|
58
|
+
return chronicle;
|
|
29
59
|
};
|
|
30
60
|
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAiB,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAyB,aAAa,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAkB7E,MAAM,CAAC,MAAM,eAAe,GAAG,GAAc,EAAE;IAC9C,MAAM,WAAW,GAA4B,IAAI,OAAO,EAAE,CAAC;IAC3D,IAAI,YAAsC,CAAC;IAE3C,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,OAAQ,EAAE,EAAE;QACvC,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;QAC/C,IAAI,CAAC,YAAY,EAAE,CAAC;YACnB,YAAY,GAAG,kBAAkB,CAAC;gBACjC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;gBACjD,YAAY,EAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;aACvD,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,OAAO;YACV,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE9B,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC;YACnC,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAE/D,IAAI,cAAc;YACjB,OAAO,MAAM,CAAC;QAEf,OAAO,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC,CAAc,CAAC;IAEhB,MAAM,OAAO,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;IACrE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1C,SAAS,CAAC,MAAM,GAAU,GAAG,CAAC,MAAM,CAAC;IACrC,SAAS,CAAC,KAAK,GAAW,GAAG,CAAC,KAAK,CAAC;IACpC,SAAS,CAAC,KAAK,GAAW,GAAG,CAAC,KAAK,CAAC;IACpC,SAAS,CAAC,MAAM,GAAU,GAAG,CAAC,MAAM,CAAC;IACrC,SAAS,CAAC,KAAK,GAAW,GAAG,CAAC,KAAK,CAAC;IACpC,SAAS,CAAC,UAAU,GAAM,GAAG,CAAC,UAAU,CAAC;IACzC,SAAS,CAAC,YAAY,GAAI,GAAG,CAAC,YAAY,CAAC;IAC3C,SAAS,CAAC,KAAK,GAAW,GAAG,CAAC,KAAK,CAAC;IACpC,SAAS,CAAC,YAAY,GAAI,GAAG,CAAC,YAAY,CAAC;IAC3C,SAAS,CAAC,IAAI,GAAY,GAAG,CAAC,IAAI,CAAC;IACnC,SAAS,CAAC,SAAS,GAAO,GAAG,CAAC,SAAS,CAAC;IACxC,SAAS,CAAC,IAAI,GAAY,GAAG,CAAC,IAAI,CAAC;IACnC,SAAS,CAAC,UAAU,GAAM,GAAG,CAAC,UAAU,CAAC;IACzC,SAAS,CAAC,QAAQ,GAAQ,GAAG,CAAC,QAAQ,CAAC;IACvC,SAAS,CAAC,MAAM,GAAU,GAAG,CAAC,MAAM,CAAC;IACrC,SAAS,CAAC,KAAK,GAAW,GAAG,CAAC,KAAK,CAAC;IACpC,SAAS,CAAC,IAAI,GAAY,GAAG,CAAC,IAAI,CAAC;IACnC,SAAS,CAAC,UAAU,GAAM,GAAG,CAAC,UAAU,CAAC;IACzC,SAAS,CAAC,OAAO,GAAS,GAAG,CAAC,OAAO,CAAC;IACtC,SAAS,CAAC,OAAO,GAAS,GAAG,CAAC,OAAO,CAAC;IACtC,SAAS,CAAC,SAAS,GAAO,GAAG,CAAC,SAAS,CAAC;IACxC,SAAS,CAAC,IAAI,GAAY,GAAG,CAAC,IAAI,CAAC;IACnC,SAAS,CAAC,UAAU,GAAM,GAAG,CAAC,UAAU,CAAC;IACzC,SAAS,CAAC,SAAS,GAAO,GAAG,CAAC,SAAS,CAAC;IACxC,SAAS,CAAC,WAAW,GAAK,QAAQ,CAAC,WAAW,CAAC;IAC/C,SAAS,CAAC,KAAK,GAAW,QAAQ,CAAC,KAAK,CAAC;IACzC,SAAS,CAAC,UAAU,GAAM,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,SAAS,CAAC,WAAW,GAAK,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACtE,SAAS,CAAC,aAAa,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAExE,OAAO,SAAS,CAAC;AAClB,CAAC,CAAC"}
|
package/dist/chronicle.d.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import { type BatchAPI } from './batch-transaction.ts';
|
|
3
|
-
interface Chronicle extends Omit<BatchAPI, 'getBatchFrames'>, ChronicleApiMethods {
|
|
4
|
-
<T extends object>(object: T): T;
|
|
5
|
-
}
|
|
1
|
+
import { type Chronicle } from './api.ts';
|
|
6
2
|
declare const chronicle: Chronicle;
|
|
7
3
|
export { chronicle };
|
|
8
4
|
export type { Chronicle };
|
package/dist/chronicle.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chronicle.d.ts","sourceRoot":"","sources":["../src/chronicle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chronicle.d.ts","sourceRoot":"","sources":["../src/chronicle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,UAAU,CAAC;AAG3D,QAAA,MAAM,SAAS,EAAE,SAA6B,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,YAAY,EAAE,SAAS,EAAE,CAAC"}
|
package/dist/chronicle.js
CHANGED
|
@@ -1,38 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { createBatchTransaction } from "./batch-transaction.js";
|
|
4
|
-
const core = createChronicleCore({ getBatchFrames: r => batchApi.getBatchFrames(r) });
|
|
5
|
-
const chronicle = core.chronicle;
|
|
6
|
-
const batchApi = createBatchTransaction(core);
|
|
7
|
-
const api = createApiMethods({ getRoot: core.getRoot });
|
|
8
|
-
chronicle.listen = api.listen;
|
|
9
|
-
chronicle.onAny = api.onAny;
|
|
10
|
-
chronicle.pause = api.pause;
|
|
11
|
-
chronicle.resume = api.resume;
|
|
12
|
-
chronicle.flush = api.flush;
|
|
13
|
-
chronicle.getHistory = api.getHistory;
|
|
14
|
-
chronicle.clearHistory = api.clearHistory;
|
|
15
|
-
chronicle.reset = api.reset;
|
|
16
|
-
chronicle.markPristine = api.markPristine;
|
|
17
|
-
chronicle.undo = api.undo;
|
|
18
|
-
chronicle.undoSince = api.undoSince;
|
|
19
|
-
chronicle.diff = api.diff;
|
|
20
|
-
chronicle.isPristine = api.isPristine;
|
|
21
|
-
chronicle.snapshot = api.snapshot;
|
|
22
|
-
chronicle.unwrap = api.unwrap;
|
|
23
|
-
chronicle.merge = api.merge;
|
|
24
|
-
chronicle.mark = api.mark;
|
|
25
|
-
chronicle.undoGroups = api.undoGroups;
|
|
26
|
-
chronicle.canUndo = api.canUndo;
|
|
27
|
-
chronicle.canRedo = api.canRedo;
|
|
28
|
-
chronicle.clearRedo = api.clearRedo;
|
|
29
|
-
chronicle.redo = api.redo;
|
|
30
|
-
chronicle.redoGroups = api.redoGroups;
|
|
31
|
-
chronicle.configure = api.configure;
|
|
32
|
-
chronicle.transaction = batchApi.transaction;
|
|
33
|
-
chronicle.batch = batchApi.batch;
|
|
34
|
-
chronicle.beginBatch = (obj) => batchApi.beginBatch(core.getRoot(obj));
|
|
35
|
-
chronicle.commitBatch = (obj) => batchApi.commitBatch(core.getRoot(obj));
|
|
36
|
-
chronicle.rollbackBatch = (obj) => batchApi.rollbackBatch(core.getRoot(obj));
|
|
1
|
+
import { createChronicle } from "./api.js";
|
|
2
|
+
const chronicle = createChronicle();
|
|
37
3
|
export { chronicle };
|
|
38
4
|
//# sourceMappingURL=chronicle.js.map
|
package/dist/chronicle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chronicle.js","sourceRoot":"","sources":["../src/chronicle.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"chronicle.js","sourceRoot":"","sources":["../src/chronicle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3D,MAAM,SAAS,GAAc,eAAe,EAAE,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-adapters.d.ts","sourceRoot":"","sources":["../src/collection-adapters.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"collection-adapters.d.ts","sourceRoot":"","sources":["../src/collection-adapters.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,qBAAqB;IACrC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;KAAE,EAAE,GAAG,SAAS,CAAC;CAChF;AA+BD;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GAC1B,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EACrB,aAAa,MAAM,EAAE,EACrB,YAAY,MAAM,EAClB,MAAM,qBAAqB,EAC3B,QAAQ,MAAM,KACZ,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,SA0E9B,CAAC;AAGF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GAC1B,QAAQ,GAAG,CAAC,GAAG,CAAC,EAChB,aAAa,MAAM,EAAE,EACrB,YAAY,MAAM,EAClB,MAAM,qBAAqB,EAC3B,QAAQ,MAAM,KACZ,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,SAyE9B,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { getOptions } from "./config.js";
|
|
1
2
|
import { computeActiveGroupId } from "./grouping.js";
|
|
2
|
-
import { ensureHistory,
|
|
3
|
+
import { ensureHistory, trimHistoryByGroups } from "./history.js";
|
|
3
4
|
import { computeAffectedListeners } from "./listener-affinity.js";
|
|
4
5
|
import { notifyListeners } from "./schedule-queue.js";
|
|
5
6
|
import { clearRedoCache, isSuspended } from "./undo-redo.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-adapters.js","sourceRoot":"","sources":["../src/collection-adapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"collection-adapters.js","sourceRoot":"","sources":["../src/collection-adapters.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import type
|
|
2
|
-
export
|
|
1
|
+
import { type ChronicleHistoryOptions } from './history.ts';
|
|
2
|
+
export interface ChronicleOptions extends ChronicleHistoryOptions {
|
|
3
|
+
}
|
|
4
|
+
export declare const getOptions: (root: object) => ChronicleOptions;
|
|
5
|
+
export declare const setOptions: (root: object, options: ChronicleOptions) => void;
|
|
6
|
+
export type ConfigureOptions = Partial<ChronicleOptions>;
|
|
3
7
|
/**
|
|
4
8
|
* Configure per-root observe behavior by merging options and managing mergeUngrouped window reset.
|
|
5
9
|
*/
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,uBAAuB,EAA6C,MAAM,cAAc,CAAC;AAGvG,MAAM,WAAW,gBAAiB,SAAQ,uBAAuB;CAEhE;AASD,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,gBASzC,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,SAAS,gBAAgB,KAAG,IAEpE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAGzD;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,EAAE,SAAS,gBAAgB,KAAG,IAMvE,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -1,11 +1,28 @@
|
|
|
1
|
-
import { clearLastUngrouped,
|
|
1
|
+
import { clearLastUngrouped, defaultHistoryOptions } from "./history.js";
|
|
2
|
+
const optionsCache = new WeakMap();
|
|
3
|
+
const defaultOptions = {
|
|
4
|
+
...defaultHistoryOptions,
|
|
5
|
+
// Future default options can be added here
|
|
6
|
+
};
|
|
7
|
+
export const getOptions = (root) => {
|
|
8
|
+
const opts = optionsCache.get(root);
|
|
9
|
+
if (!opts)
|
|
10
|
+
return defaultOptions;
|
|
11
|
+
return {
|
|
12
|
+
...defaultOptions,
|
|
13
|
+
...opts,
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export const setOptions = (root, options) => {
|
|
17
|
+
optionsCache.set(root, options);
|
|
18
|
+
};
|
|
2
19
|
/**
|
|
3
20
|
* Configure per-root observe behavior by merging options and managing mergeUngrouped window reset.
|
|
4
21
|
*/
|
|
5
22
|
export const configureRoot = (root, options) => {
|
|
6
|
-
const prev = getOptions(root)
|
|
23
|
+
const prev = getOptions(root);
|
|
7
24
|
setOptions(root, { ...prev, ...options });
|
|
8
|
-
if (
|
|
25
|
+
if (options.mergeUngrouped === false)
|
|
9
26
|
clearLastUngrouped(root);
|
|
10
27
|
};
|
|
11
28
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAOvG,MAAM,YAAY,GAAsC,IAAI,OAAO,EAAE,CAAC;AAEtE,MAAM,cAAc,GAAqB;IACxC,GAAG,qBAAqB;IACxB,2CAA2C;CAC3C,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAoB,EAAE;IAC5D,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI;QACR,OAAO,cAAc,CAAC;IAEvB,OAAO;QACN,GAAG,cAAc;QACjB,GAAG,IAAI;KACP,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,OAAyB,EAAQ,EAAE;IAC3E,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC,CAAC;AAKF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,OAAyB,EAAQ,EAAE;IAC9E,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,UAAU,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAE1C,IAAI,OAAO,CAAC,cAAc,KAAK,KAAK;QACnC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC,CAAC"}
|
package/dist/grouping.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grouping.d.ts","sourceRoot":"","sources":["../src/grouping.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"grouping.d.ts","sourceRoot":"","sources":["../src/grouping.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,GAChC,MAAM,MAAM,EACZ,gBAAgB,CAAC,IAAI,EAAE,MAAM,KAAK;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;CAAE,EAAE,GAAG,SAAS,EAC/E,cAAa,MAAM,MAAiB,KAClC,MA2BF,CAAC"}
|