@linxomni/oms-entitylog-client-node
v1.5.4
Published
SDK Entity log
Downloads
2
Readme
Entitylog Client for nodeJS
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 @linxomni/oms-entitylog-client-node
Usage
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 Passwordusername
: 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
- Removelib/
directorynpm 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-confignpm 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.