0.0.1 • Published 8 months ago

derived-props v0.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

derived-props

NPM version build status Test coverage npm download

Calculate derived properties.

This package allows to calculate new properties based on existing one based on a jpath that will ignore arrays indices.

Installation

$ npm i derived-props

Usage

import { appendDerivedProperties } from 'derived-props';

  const data = {
    propertyName: 'John',
    originalX: 30,
    data: {
      originalX: [1, 2, 3],
      y: [2, 3, 4],
    },
    ranges: [
      { originalFrom: 1, originalTo: 2 },
      { originalFrom: 3, originalTo: 4 },
    ],
  };

  const shift = 2;
  const callback = (value) => value + shift;

  // In this mapping we ignore the arrays indices
  // In this case we use the same callback for all the properties but they could be different
  const appenders = {
    'ranges.originalFrom': {
      propertyName: 'from',
      callback,
    },
    'ranges.originalTo': {
      propertyName: 'to',
      callback,
    },
    'data.originalX': {
      propertyName: 'x',
      callback,
    },
    originalX: {
      propertyName: 'x',
      callback,
    },
  };

  appendDerivedProperties(data, appenders);

/* result is ...
  {
    propertyName: 'John',
    originalX: 30,
    data: { originalX: [1, 2, 3], y: [2, 3, 4], x: [3, 4, 5] },
    ranges: [
      { originalFrom: 1, originalTo: 2, from: 3, to: 4 },
      { originalFrom: 3, originalTo: 4, from: 5, to: 6 },
    ],
    x: 32,
  }
*/

License

MIT