Security News
pnpm 10.0.0 Blocks Lifecycle Scripts by Default
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
@finnair/diff
Advanced tools
@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
.
Install v-validation using yarn
:
yarn add @finnair/diff
Or npm
:
npm install @finnair/diff
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));
VersionInfo.matches
and matchesAny
can be used to trigger functionality based on what has changed. Use PathMatcher
to specify paths of interest.
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.
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.
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.
FAQs
Object Diff Based on Paths And Valudes of an Object
We found that @finnair/diff demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Research
Security News
Socket researchers have discovered multiple malicious npm packages targeting Solana private keys, abusing Gmail to exfiltrate the data and drain Solana wallets.