@finnair/diff v9.2.0
Diff & VersionInfo
@finnair/diff library offers paths and values (Map<Path, any>) based configurable object difference utility. Use Diff class to analyze differences of two objects, or Versioninfo to compare and transform two versions of the same object.
Diff supports only primitive, array and plain object values.
JSON serialization of VersionInfo offers nice representation of the new version (current) with changedPaths and configurable set of old values (previous). Old values are useful for example in cases where natural identifier of an object changes and the old identifier is needed for targeting an update. VersionInfo is great for change based triggers configurable by a PathMatcher.
Getting Started
Install v-validation using yarn:
yarn add @finnair/diffOr npm:
npm install @finnair/diffFeatures
Changeset
Diff.changeset<T>(a:T, b: T) analyzes changes between a and b and returns a Map<string, Change> of changed paths to Change objects. A Change object contains a path (as Path), oldValue and newValue. Changeset can be used to patch/revert changes with Path.set:
const diff = new Diff();
const a = {...};
const b = {...};
// patch a into b - for revert, use set change.oldValue
diff.changeset(a, b).forEach((change) => change.path.set(a, change.newValue));Change Triggering
VersionInfo.matches and matchesAny can be used to trigger functionality based on what has changed. Use PathMatcher to specify paths of interest.
Filtering
Diff has a configurable filter that can be used to include/exclude properties/values. This can be used to for example exclude metadata fields from changeset. The default filter excludes undefined values.
Mapping/Transforming
VersionInfo supports both sync and async transformations. Both old and new values are transformed and the resulting VersionInfo reflects the changes of transformed objects. This helps in conversions from internal to external model.
Nice JSON
VersionInfo is designed to be serialized as JSON. It contains the current value, changedPaths and configurable old values as previous. Only matching previous values are included and only if they have changed.
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
10 months ago
10 months ago
10 months ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago