With this package you will easily accomplish integrations with Entity-log, this package provides three main methods of integration. Entity Service
npm install --save @linxomni/oms-entitylog-client-node
const EntityLogClient = require('@linxomni/oms-entitylog-client-node')
const entityLogClient = new EntityLogClient({})
or
const {entityLogClient} = require('@linxomni/oms-entitylog-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
Adds a new entity log.
Update last entity log
Returns the logs in the entity and id conditions using the default transform.
returns logs under custom filter conditions.
delete the entity cache of remote config.
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
Returns entity-log settings object (passed when it was instantiated)
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
}, [])
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.
-
npm run clean
- Removelib/
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.