json-diff-ts 5.0.0-alpha.2 → 5.0.0-alpha.4
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/README.md +137 -137
- package/dist/index.cjs +188 -152
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +58 -58
- package/dist/index.d.ts +58 -58
- package/dist/index.js +173 -137
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
package/dist/index.d.cts
CHANGED
|
@@ -151,7 +151,7 @@ declare const comparisonToFlatList: (node: IComparisonEnrichedNode, options?: {
|
|
|
151
151
|
includeUnchanged?: boolean;
|
|
152
152
|
}) => IFlatChange[];
|
|
153
153
|
|
|
154
|
-
type
|
|
154
|
+
type AtomPathSegment = {
|
|
155
155
|
type: 'root';
|
|
156
156
|
} | {
|
|
157
157
|
type: 'property';
|
|
@@ -168,7 +168,7 @@ type DeltaPathSegment = {
|
|
|
168
168
|
value: unknown;
|
|
169
169
|
};
|
|
170
170
|
/**
|
|
171
|
-
* Format a value as a canonical JSON
|
|
171
|
+
* Format a value as a canonical JSON Atom filter literal.
|
|
172
172
|
* Strings → single-quoted with doubled-quote escaping.
|
|
173
173
|
* Numbers, booleans, null → plain JSON representation.
|
|
174
174
|
*/
|
|
@@ -179,127 +179,127 @@ declare function formatFilterLiteral(value: unknown): string;
|
|
|
179
179
|
*/
|
|
180
180
|
declare function parseFilterLiteral(s: string): unknown;
|
|
181
181
|
/**
|
|
182
|
-
* Parse a JSON
|
|
183
|
-
* Follows the grammar from the JSON
|
|
182
|
+
* Parse a JSON Atom Path string into an array of typed segments.
|
|
183
|
+
* Follows the grammar from the JSON Atom spec Section 5.1.
|
|
184
184
|
*/
|
|
185
|
-
declare function
|
|
185
|
+
declare function parseAtomPath(path: string): AtomPathSegment[];
|
|
186
186
|
/**
|
|
187
|
-
* Build a canonical JSON
|
|
187
|
+
* Build a canonical JSON Atom Path string from an array of segments.
|
|
188
188
|
*/
|
|
189
|
-
declare function
|
|
189
|
+
declare function buildAtomPath(segments: AtomPathSegment[]): string;
|
|
190
190
|
|
|
191
|
-
type
|
|
192
|
-
interface
|
|
193
|
-
op:
|
|
191
|
+
type AtomOp = 'add' | 'remove' | 'replace';
|
|
192
|
+
interface IAtomOperation {
|
|
193
|
+
op: AtomOp;
|
|
194
194
|
path: string;
|
|
195
195
|
value?: any;
|
|
196
196
|
oldValue?: any;
|
|
197
197
|
[key: string]: any;
|
|
198
198
|
}
|
|
199
|
-
interface
|
|
200
|
-
format: 'json-
|
|
199
|
+
interface IJsonAtom {
|
|
200
|
+
format: 'json-atom';
|
|
201
201
|
version: number;
|
|
202
|
-
operations:
|
|
202
|
+
operations: IAtomOperation[];
|
|
203
203
|
[key: string]: any;
|
|
204
204
|
}
|
|
205
|
-
interface
|
|
205
|
+
interface AtomOptions extends Options {
|
|
206
206
|
/** Include oldValue for reversibility. Default: true */
|
|
207
207
|
reversible?: boolean;
|
|
208
208
|
}
|
|
209
|
-
declare function
|
|
209
|
+
declare function validateAtom(atom: unknown): {
|
|
210
210
|
valid: boolean;
|
|
211
211
|
errors: string[];
|
|
212
212
|
};
|
|
213
213
|
/**
|
|
214
|
-
* Compute a canonical JSON
|
|
215
|
-
* This is the spec-conformant
|
|
214
|
+
* Compute a canonical JSON Atom between two objects.
|
|
215
|
+
* This is the spec-conformant atom producer.
|
|
216
216
|
*/
|
|
217
|
-
declare function
|
|
217
|
+
declare function diffAtom(oldObj: any, newObj: any, options?: AtomOptions): IJsonAtom;
|
|
218
218
|
/**
|
|
219
|
-
* Convert an existing v4 changeset or atomic changes to a JSON
|
|
219
|
+
* Convert an existing v4 changeset or atomic changes to a JSON Atom document.
|
|
220
220
|
* Best-effort bridge — filter literals will always be string-quoted.
|
|
221
|
-
* Use `
|
|
221
|
+
* Use `diffAtom()` for canonical spec-conformant output.
|
|
222
222
|
*/
|
|
223
|
-
declare function
|
|
223
|
+
declare function toAtom(changeset: Changeset | IAtomicChange[], options?: {
|
|
224
224
|
reversible?: boolean;
|
|
225
|
-
}):
|
|
225
|
+
}): IJsonAtom;
|
|
226
226
|
/**
|
|
227
|
-
* Convert a JSON
|
|
228
|
-
* Returns IAtomicChange[] — one atom per
|
|
229
|
-
* Use `unatomizeChangeset(
|
|
227
|
+
* Convert a JSON Atom document to v4 atomic changes.
|
|
228
|
+
* Returns IAtomicChange[] — one atom per atom operation.
|
|
229
|
+
* Use `unatomizeChangeset(fromAtom(atom))` if you need a hierarchical Changeset.
|
|
230
230
|
*/
|
|
231
|
-
declare function
|
|
231
|
+
declare function fromAtom(atom: IJsonAtom): IAtomicChange[];
|
|
232
232
|
/**
|
|
233
|
-
* Compute the inverse of a JSON
|
|
233
|
+
* Compute the inverse of a JSON Atom document (spec Section 9.2).
|
|
234
234
|
* Requires all replace/remove operations to have oldValue.
|
|
235
235
|
*/
|
|
236
|
-
declare function
|
|
236
|
+
declare function invertAtom(atom: IJsonAtom): IJsonAtom;
|
|
237
237
|
/**
|
|
238
|
-
* Apply a JSON
|
|
238
|
+
* Apply a JSON Atom document to an object.
|
|
239
239
|
* Processes operations sequentially. Handles root operations directly.
|
|
240
240
|
* Returns the result (MUST use return value for root primitive replacements).
|
|
241
241
|
*/
|
|
242
|
-
declare function
|
|
242
|
+
declare function applyAtom(obj: any, atom: IJsonAtom): any;
|
|
243
243
|
/**
|
|
244
|
-
* Revert a JSON
|
|
244
|
+
* Revert a JSON Atom by computing its inverse and applying it.
|
|
245
245
|
* Requires all replace/remove operations to have oldValue.
|
|
246
246
|
*/
|
|
247
|
-
declare function
|
|
247
|
+
declare function revertAtom(obj: any, atom: IJsonAtom): any;
|
|
248
248
|
|
|
249
249
|
/**
|
|
250
250
|
* Returns a copy of the operation containing only spec-defined keys
|
|
251
251
|
* (`op`, `path`, `value`, `oldValue`). Complement of `operationExtensions`.
|
|
252
252
|
*/
|
|
253
|
-
declare function operationSpecDict(op:
|
|
253
|
+
declare function operationSpecDict(op: IAtomOperation): IAtomOperation;
|
|
254
254
|
/**
|
|
255
255
|
* Returns a record of non-spec keys from the operation (extension properties).
|
|
256
256
|
* Complement of `operationSpecDict`.
|
|
257
257
|
*/
|
|
258
|
-
declare function operationExtensions(op:
|
|
258
|
+
declare function operationExtensions(op: IAtomOperation): Record<string, any>;
|
|
259
259
|
/**
|
|
260
260
|
* Returns the terminal property name from the operation's path, or `null`
|
|
261
261
|
* for root, index, and filter segments.
|
|
262
262
|
*/
|
|
263
|
-
declare function leafProperty(op:
|
|
263
|
+
declare function leafProperty(op: IAtomOperation): string | null;
|
|
264
264
|
/**
|
|
265
|
-
* Returns a copy of the
|
|
265
|
+
* Returns a copy of the atom with only spec-defined keys in the envelope
|
|
266
266
|
* and each operation. Strips all extension properties.
|
|
267
267
|
*/
|
|
268
|
-
declare function
|
|
268
|
+
declare function atomSpecDict(atom: IJsonAtom): IJsonAtom;
|
|
269
269
|
/**
|
|
270
|
-
* Returns a record of non-spec keys from the
|
|
271
|
-
* Complement of `
|
|
270
|
+
* Returns a record of non-spec keys from the atom envelope.
|
|
271
|
+
* Complement of `atomSpecDict`.
|
|
272
272
|
*/
|
|
273
|
-
declare function
|
|
273
|
+
declare function atomExtensions(atom: IJsonAtom): Record<string, any>;
|
|
274
274
|
/**
|
|
275
|
-
* Transforms each operation in the
|
|
276
|
-
* Returns a new
|
|
275
|
+
* Transforms each operation in the atom using the provided function.
|
|
276
|
+
* Returns a new atom (immutable). Preserves all envelope properties.
|
|
277
277
|
*/
|
|
278
|
-
declare function
|
|
278
|
+
declare function atomMap(atom: IJsonAtom, fn: (op: IAtomOperation, index: number) => IAtomOperation): IJsonAtom;
|
|
279
279
|
/**
|
|
280
|
-
* Returns a new
|
|
281
|
-
* operation. Immutable — the original
|
|
280
|
+
* Returns a new atom with the given extension properties merged onto every
|
|
281
|
+
* operation. Immutable — the original atom is not modified.
|
|
282
282
|
*/
|
|
283
|
-
declare function
|
|
283
|
+
declare function atomStamp(atom: IJsonAtom, extensions: Record<string, any>): IJsonAtom;
|
|
284
284
|
/**
|
|
285
|
-
* Groups operations in the
|
|
286
|
-
* mapping each key to a sub-
|
|
287
|
-
* Each sub-
|
|
285
|
+
* Groups operations in the atom by the result of `keyFn`. Returns a record
|
|
286
|
+
* mapping each key to a sub-atom containing only the matching operations.
|
|
287
|
+
* Each sub-atom preserves all envelope properties.
|
|
288
288
|
*/
|
|
289
|
-
declare function
|
|
290
|
-
interface
|
|
291
|
-
/** Pre-computed final state. When provided with
|
|
289
|
+
declare function atomGroupBy(atom: IJsonAtom, keyFn: (op: IAtomOperation) => string): Record<string, IJsonAtom>;
|
|
290
|
+
interface SquashAtomsOptions extends AtomOptions {
|
|
291
|
+
/** Pre-computed final state. When provided with atoms, used instead of computing. */
|
|
292
292
|
target?: any;
|
|
293
|
-
/** Verify that `target` matches sequential application of
|
|
293
|
+
/** Verify that `target` matches sequential application of atoms. Default: true. */
|
|
294
294
|
verifyTarget?: boolean;
|
|
295
295
|
}
|
|
296
296
|
/**
|
|
297
|
-
* Compacts multiple
|
|
298
|
-
* equivalent to applying all
|
|
297
|
+
* Compacts multiple atoms into a single net-effect atom. The result is
|
|
298
|
+
* equivalent to applying all atoms sequentially, but expressed as a single
|
|
299
299
|
* `source → final` diff.
|
|
300
300
|
*
|
|
301
|
-
* Envelope extensions from all input
|
|
301
|
+
* Envelope extensions from all input atoms are merged (last-wins on conflict).
|
|
302
302
|
*/
|
|
303
|
-
declare function
|
|
303
|
+
declare function squashAtoms(source: any, atoms: IJsonAtom[], options?: SquashAtomsOptions): IJsonAtom;
|
|
304
304
|
|
|
305
|
-
export { type
|
|
305
|
+
export { type AtomOp, type AtomOptions, type AtomPathSegment, type Changeset, CompareOperation, type EmbeddedObjKeysMapType, type EmbeddedObjKeysType, type IAtomOperation, type IAtomicChange, type IChange, type IComparisonDict, type IComparisonEnrichedNode, type IFlatChange, type IJsonAtom, Operation, type Options, type SquashAtomsOptions, applyAtom, applyChangelist, applyChangeset, atomExtensions, atomGroupBy, atomMap, atomSpecDict, atomStamp, atomizeChangeset, buildAtomPath, compare, comparisonToDict, comparisonToFlatList, createContainer, createValue, diff, diffAtom, enrich, formatFilterLiteral, fromAtom, getTypeOfObj, invertAtom, leafProperty, operationExtensions, operationSpecDict, parseAtomPath, parseFilterLiteral, revertAtom, revertChangeset, squashAtoms, toAtom, unatomizeChangeset, validateAtom };
|
package/dist/index.d.ts
CHANGED
|
@@ -151,7 +151,7 @@ declare const comparisonToFlatList: (node: IComparisonEnrichedNode, options?: {
|
|
|
151
151
|
includeUnchanged?: boolean;
|
|
152
152
|
}) => IFlatChange[];
|
|
153
153
|
|
|
154
|
-
type
|
|
154
|
+
type AtomPathSegment = {
|
|
155
155
|
type: 'root';
|
|
156
156
|
} | {
|
|
157
157
|
type: 'property';
|
|
@@ -168,7 +168,7 @@ type DeltaPathSegment = {
|
|
|
168
168
|
value: unknown;
|
|
169
169
|
};
|
|
170
170
|
/**
|
|
171
|
-
* Format a value as a canonical JSON
|
|
171
|
+
* Format a value as a canonical JSON Atom filter literal.
|
|
172
172
|
* Strings → single-quoted with doubled-quote escaping.
|
|
173
173
|
* Numbers, booleans, null → plain JSON representation.
|
|
174
174
|
*/
|
|
@@ -179,127 +179,127 @@ declare function formatFilterLiteral(value: unknown): string;
|
|
|
179
179
|
*/
|
|
180
180
|
declare function parseFilterLiteral(s: string): unknown;
|
|
181
181
|
/**
|
|
182
|
-
* Parse a JSON
|
|
183
|
-
* Follows the grammar from the JSON
|
|
182
|
+
* Parse a JSON Atom Path string into an array of typed segments.
|
|
183
|
+
* Follows the grammar from the JSON Atom spec Section 5.1.
|
|
184
184
|
*/
|
|
185
|
-
declare function
|
|
185
|
+
declare function parseAtomPath(path: string): AtomPathSegment[];
|
|
186
186
|
/**
|
|
187
|
-
* Build a canonical JSON
|
|
187
|
+
* Build a canonical JSON Atom Path string from an array of segments.
|
|
188
188
|
*/
|
|
189
|
-
declare function
|
|
189
|
+
declare function buildAtomPath(segments: AtomPathSegment[]): string;
|
|
190
190
|
|
|
191
|
-
type
|
|
192
|
-
interface
|
|
193
|
-
op:
|
|
191
|
+
type AtomOp = 'add' | 'remove' | 'replace';
|
|
192
|
+
interface IAtomOperation {
|
|
193
|
+
op: AtomOp;
|
|
194
194
|
path: string;
|
|
195
195
|
value?: any;
|
|
196
196
|
oldValue?: any;
|
|
197
197
|
[key: string]: any;
|
|
198
198
|
}
|
|
199
|
-
interface
|
|
200
|
-
format: 'json-
|
|
199
|
+
interface IJsonAtom {
|
|
200
|
+
format: 'json-atom';
|
|
201
201
|
version: number;
|
|
202
|
-
operations:
|
|
202
|
+
operations: IAtomOperation[];
|
|
203
203
|
[key: string]: any;
|
|
204
204
|
}
|
|
205
|
-
interface
|
|
205
|
+
interface AtomOptions extends Options {
|
|
206
206
|
/** Include oldValue for reversibility. Default: true */
|
|
207
207
|
reversible?: boolean;
|
|
208
208
|
}
|
|
209
|
-
declare function
|
|
209
|
+
declare function validateAtom(atom: unknown): {
|
|
210
210
|
valid: boolean;
|
|
211
211
|
errors: string[];
|
|
212
212
|
};
|
|
213
213
|
/**
|
|
214
|
-
* Compute a canonical JSON
|
|
215
|
-
* This is the spec-conformant
|
|
214
|
+
* Compute a canonical JSON Atom between two objects.
|
|
215
|
+
* This is the spec-conformant atom producer.
|
|
216
216
|
*/
|
|
217
|
-
declare function
|
|
217
|
+
declare function diffAtom(oldObj: any, newObj: any, options?: AtomOptions): IJsonAtom;
|
|
218
218
|
/**
|
|
219
|
-
* Convert an existing v4 changeset or atomic changes to a JSON
|
|
219
|
+
* Convert an existing v4 changeset or atomic changes to a JSON Atom document.
|
|
220
220
|
* Best-effort bridge — filter literals will always be string-quoted.
|
|
221
|
-
* Use `
|
|
221
|
+
* Use `diffAtom()` for canonical spec-conformant output.
|
|
222
222
|
*/
|
|
223
|
-
declare function
|
|
223
|
+
declare function toAtom(changeset: Changeset | IAtomicChange[], options?: {
|
|
224
224
|
reversible?: boolean;
|
|
225
|
-
}):
|
|
225
|
+
}): IJsonAtom;
|
|
226
226
|
/**
|
|
227
|
-
* Convert a JSON
|
|
228
|
-
* Returns IAtomicChange[] — one atom per
|
|
229
|
-
* Use `unatomizeChangeset(
|
|
227
|
+
* Convert a JSON Atom document to v4 atomic changes.
|
|
228
|
+
* Returns IAtomicChange[] — one atom per atom operation.
|
|
229
|
+
* Use `unatomizeChangeset(fromAtom(atom))` if you need a hierarchical Changeset.
|
|
230
230
|
*/
|
|
231
|
-
declare function
|
|
231
|
+
declare function fromAtom(atom: IJsonAtom): IAtomicChange[];
|
|
232
232
|
/**
|
|
233
|
-
* Compute the inverse of a JSON
|
|
233
|
+
* Compute the inverse of a JSON Atom document (spec Section 9.2).
|
|
234
234
|
* Requires all replace/remove operations to have oldValue.
|
|
235
235
|
*/
|
|
236
|
-
declare function
|
|
236
|
+
declare function invertAtom(atom: IJsonAtom): IJsonAtom;
|
|
237
237
|
/**
|
|
238
|
-
* Apply a JSON
|
|
238
|
+
* Apply a JSON Atom document to an object.
|
|
239
239
|
* Processes operations sequentially. Handles root operations directly.
|
|
240
240
|
* Returns the result (MUST use return value for root primitive replacements).
|
|
241
241
|
*/
|
|
242
|
-
declare function
|
|
242
|
+
declare function applyAtom(obj: any, atom: IJsonAtom): any;
|
|
243
243
|
/**
|
|
244
|
-
* Revert a JSON
|
|
244
|
+
* Revert a JSON Atom by computing its inverse and applying it.
|
|
245
245
|
* Requires all replace/remove operations to have oldValue.
|
|
246
246
|
*/
|
|
247
|
-
declare function
|
|
247
|
+
declare function revertAtom(obj: any, atom: IJsonAtom): any;
|
|
248
248
|
|
|
249
249
|
/**
|
|
250
250
|
* Returns a copy of the operation containing only spec-defined keys
|
|
251
251
|
* (`op`, `path`, `value`, `oldValue`). Complement of `operationExtensions`.
|
|
252
252
|
*/
|
|
253
|
-
declare function operationSpecDict(op:
|
|
253
|
+
declare function operationSpecDict(op: IAtomOperation): IAtomOperation;
|
|
254
254
|
/**
|
|
255
255
|
* Returns a record of non-spec keys from the operation (extension properties).
|
|
256
256
|
* Complement of `operationSpecDict`.
|
|
257
257
|
*/
|
|
258
|
-
declare function operationExtensions(op:
|
|
258
|
+
declare function operationExtensions(op: IAtomOperation): Record<string, any>;
|
|
259
259
|
/**
|
|
260
260
|
* Returns the terminal property name from the operation's path, or `null`
|
|
261
261
|
* for root, index, and filter segments.
|
|
262
262
|
*/
|
|
263
|
-
declare function leafProperty(op:
|
|
263
|
+
declare function leafProperty(op: IAtomOperation): string | null;
|
|
264
264
|
/**
|
|
265
|
-
* Returns a copy of the
|
|
265
|
+
* Returns a copy of the atom with only spec-defined keys in the envelope
|
|
266
266
|
* and each operation. Strips all extension properties.
|
|
267
267
|
*/
|
|
268
|
-
declare function
|
|
268
|
+
declare function atomSpecDict(atom: IJsonAtom): IJsonAtom;
|
|
269
269
|
/**
|
|
270
|
-
* Returns a record of non-spec keys from the
|
|
271
|
-
* Complement of `
|
|
270
|
+
* Returns a record of non-spec keys from the atom envelope.
|
|
271
|
+
* Complement of `atomSpecDict`.
|
|
272
272
|
*/
|
|
273
|
-
declare function
|
|
273
|
+
declare function atomExtensions(atom: IJsonAtom): Record<string, any>;
|
|
274
274
|
/**
|
|
275
|
-
* Transforms each operation in the
|
|
276
|
-
* Returns a new
|
|
275
|
+
* Transforms each operation in the atom using the provided function.
|
|
276
|
+
* Returns a new atom (immutable). Preserves all envelope properties.
|
|
277
277
|
*/
|
|
278
|
-
declare function
|
|
278
|
+
declare function atomMap(atom: IJsonAtom, fn: (op: IAtomOperation, index: number) => IAtomOperation): IJsonAtom;
|
|
279
279
|
/**
|
|
280
|
-
* Returns a new
|
|
281
|
-
* operation. Immutable — the original
|
|
280
|
+
* Returns a new atom with the given extension properties merged onto every
|
|
281
|
+
* operation. Immutable — the original atom is not modified.
|
|
282
282
|
*/
|
|
283
|
-
declare function
|
|
283
|
+
declare function atomStamp(atom: IJsonAtom, extensions: Record<string, any>): IJsonAtom;
|
|
284
284
|
/**
|
|
285
|
-
* Groups operations in the
|
|
286
|
-
* mapping each key to a sub-
|
|
287
|
-
* Each sub-
|
|
285
|
+
* Groups operations in the atom by the result of `keyFn`. Returns a record
|
|
286
|
+
* mapping each key to a sub-atom containing only the matching operations.
|
|
287
|
+
* Each sub-atom preserves all envelope properties.
|
|
288
288
|
*/
|
|
289
|
-
declare function
|
|
290
|
-
interface
|
|
291
|
-
/** Pre-computed final state. When provided with
|
|
289
|
+
declare function atomGroupBy(atom: IJsonAtom, keyFn: (op: IAtomOperation) => string): Record<string, IJsonAtom>;
|
|
290
|
+
interface SquashAtomsOptions extends AtomOptions {
|
|
291
|
+
/** Pre-computed final state. When provided with atoms, used instead of computing. */
|
|
292
292
|
target?: any;
|
|
293
|
-
/** Verify that `target` matches sequential application of
|
|
293
|
+
/** Verify that `target` matches sequential application of atoms. Default: true. */
|
|
294
294
|
verifyTarget?: boolean;
|
|
295
295
|
}
|
|
296
296
|
/**
|
|
297
|
-
* Compacts multiple
|
|
298
|
-
* equivalent to applying all
|
|
297
|
+
* Compacts multiple atoms into a single net-effect atom. The result is
|
|
298
|
+
* equivalent to applying all atoms sequentially, but expressed as a single
|
|
299
299
|
* `source → final` diff.
|
|
300
300
|
*
|
|
301
|
-
* Envelope extensions from all input
|
|
301
|
+
* Envelope extensions from all input atoms are merged (last-wins on conflict).
|
|
302
302
|
*/
|
|
303
|
-
declare function
|
|
303
|
+
declare function squashAtoms(source: any, atoms: IJsonAtom[], options?: SquashAtomsOptions): IJsonAtom;
|
|
304
304
|
|
|
305
|
-
export { type
|
|
305
|
+
export { type AtomOp, type AtomOptions, type AtomPathSegment, type Changeset, CompareOperation, type EmbeddedObjKeysMapType, type EmbeddedObjKeysType, type IAtomOperation, type IAtomicChange, type IChange, type IComparisonDict, type IComparisonEnrichedNode, type IFlatChange, type IJsonAtom, Operation, type Options, type SquashAtomsOptions, applyAtom, applyChangelist, applyChangeset, atomExtensions, atomGroupBy, atomMap, atomSpecDict, atomStamp, atomizeChangeset, buildAtomPath, compare, comparisonToDict, comparisonToFlatList, createContainer, createValue, diff, diffAtom, enrich, formatFilterLiteral, fromAtom, getTypeOfObj, invertAtom, leafProperty, operationExtensions, operationSpecDict, parseAtomPath, parseFilterLiteral, revertAtom, revertChangeset, squashAtoms, toAtom, unatomizeChangeset, validateAtom };
|