1.5.3 • Published 4 years ago

oms-entity-log-client-node v1.5.3

Weekly downloads
1
License
ISC
Repository
github
Last release
4 years ago

oms-entity-log-client-node

With this package you will easily accomplish integrations with Entity-log, this package provides three main methods of integration. Entity Service

Installation

npm install --save oms-entity-log-client-node

Usage

const EntityLogClient = require('oms-entity-log-client-node')
const entityLogClient = new EntityLogClient({})

or

const {entityLogClient} = require('oms-entity-log-client-node')

entityLogClient({
  application: 'APPLICATION-NAME',
  client: 'CLIENT-ID',
  transformer: <function to custom transformation>,
  host: 'http://HOSTNAME',
  httpClient: <object with functions>
  password: 'entity-log-HTTP-BASIC-PASSWORD',
  username: 'entity-log-HTTP-BASIC-USERNAME'
})

Where:

  • application: Application (hello-world, chubaca...)
  • client: Client (centauro, riachuelo, rihappy...)
  • transformer: (response) => {custom transformation} (optional)
  • host: Remote config host url (http://homolog-oms-entity-log.omniplat.internal/v1/)
  • httpClient: Object which implements a custom http client (optional)
  • password: HTTP Basic Auth Password
  • username: HTTP Basic Auth Username

Available methods

push (string entity, string id, object data, object user = {}, array tags = []) : boolean

Adds a new entity log.

update (string entity, string id, object data, object user = {}, array tags = []) : boolean

Update last entity log

get (string entity, string id, int perPage = 10, int page = 1) : object

Returns the logs in the entity and id conditions using the default transform.

search (string/object query) : object

returns logs under custom filter conditions.

deleteCache (undefined) : object

delete the entity cache of remote config.

Example

Search between dates: $and[createdAt][$gte]=2019-05-17T21:32:41.494Z&$and[createdAt][$lt]=2019-05-17T21:32:42.349Z

Search for a specific entity: $or[entity][$eq][]=entity-name

Search for a specific tag: $or[tags][$eq][]=blackfriday

getSettings () : object

Returns entity-log settings object (passed when it was instantiated)

Custom Transform

By default the deep-diff package is used to perform entity comparison.

However it is possible to pass a custom function to perform the comparison.

The default function consists of:

(response) => response.docs.reduce((result, log) => {
  const item = {
    id: log.id,
    entity: log.entity,
    createdAt: log.createdAt
    diff: diff(log.old || {}, log.new)
  }

  if (log.old !== undefined && item.diff !== undefined) result.push(item)

  return result
}, [])

Custom HTTP Client

Internally, this lib uses axios to execute HTTP requests. If you want to implement a custom http client yourself, create one that respect the same method signatures and outputs as axios.

For instance, only axios.get () is used. It should use the following signature:

  • Method: get(url : string, { auth: { username : string, password : string } } : object)
  • Output: { status : integer, data : object }

For more info, check axios documentation.

Commands

  • npm run clean - Remove lib/ directory
  • npm test - Run tests with linting and coverage results.
  • npm test:only - Run tests without linting or coverage.
  • npm test:watch - You can even re-run tests on file changes!
  • npm test:prod - Run tests with minified code.
  • npm run lint - Run ESlint with airbnb-config
  • npm run cover - Get coverage report for your code.
  • npm run build - Babel will transpile ES6 => ES5 and minify the code.
  • npm run prepublish - Hook for npm. Do all the checks before publishing your module.
1.5.3

4 years ago

1.5.2

4 years ago

1.5.1

5 years ago

1.5.0

5 years ago

1.4.0

5 years ago

1.3.0

5 years ago

1.2.0

5 years ago

1.1.0

5 years ago

1.0.0

5 years ago