UNPKG

bijection

Version:

Node.js utility for mapping the properties of two Objects between each other

78 lines (66 loc) 1.91 kB
bijection ===================== [![NPM version][npm-image]][npm-url] [![Build status][travis-image]][travis-url] [![Dependency Status][daviddm-image]][daviddm-url] Map an input Object `x` to an output Object `y` via a bijective function `f`, i.e. `f: X -> Y` ## Install ```sh $ npm install bijection --save ``` ## Usage ```js var Bijection = require('bijection'); var LegacyAccount = { identity: 'crmacct', attributes: { crmacct_id: 'integer', crmacct_name: 'string' } }; var Account = { identity: 'Account', attributes: { id: 'integer', sobriquet: 'string', } }; var AccountBijection = new Bijection({ domain: Account, codomain: [ LegacyAccount ], mapping: { id: 'crmacct_id', sobriquet: 'crmacct_name' } }); var tjwebbLegacyAccount = AccountBijection.map({ id: 1, sobriquet: 'tjwebb' }); /** * tjwebbLegacyAccount = { * crmacct_id: 1, * crmacct_name: 'tjwebb' * }; */ ``` ## API #### `new Bijection(f)` Create a new bijection between two domains | @param | description |:--|:--| | `f.domain` | The input domain | `f.codomain` | The output domain | `f.mapping` | Declarative object that indicates the mapping from `X -> Y` #### `.map(x)` Map an input Object `x` to an output Object `y` via a bijective function `f`, i.e. `f: X -> Y` | @param | description |:--|:--| | `x` | The input object to map onto codomain `Y` | **@return** | **description** | `y` | A particular image of codomain `Y` resulting from mapping an input `x` onto it ## License MIT [npm-image]: https://img.shields.io/npm/v/bijection.svg?style=flat-square [npm-url]: https://npmjs.org/package/bijection [travis-image]: https://img.shields.io/travis/tjwebb/bijection.svg?style=flat-square [travis-url]: https://travis-ci.org/tjwebb/bijection [daviddm-image]: http://img.shields.io/david/tjwebb/bijection.svg?style=flat-square [daviddm-url]: https://david-dm.org/tjwebb/bijection