From d4cef0c9114ec11907b071d91b0c18cae2e786bb Mon Sep 17 00:00:00 2001 From: Valentin Genev Date: Tue, 27 Nov 2018 17:15:36 +0200 Subject: [PATCH] Develop (#8) * added timestamps in the datamodels and notification interval control * removed vsvode env directory from the central repo * Message template changes (#1) * Message template changes * added file ti gitignore * delete package-lock.json * Gitignore .idea * delete file * delete file * delete file * delete file * delete file * delete file * delete file * delete file * delete file * delete file * updated a typo * Fix/config (#4) * added readme.md and config to be available from environmental variables * added config doc * Added database docs (#5) * Added database docs * Added link in readme.md * Fix/env var (#6) * added readme.md and config to be available from environmental variables * added config doc * added config to take envvars for sensitive data, fixed directory name typo * fixed a config issue * added healthcheck * Feature/dockerize (#7) * Added Dockerfile * Added Dockerfile and dockerignore --- .dockerignore | 18 + .gitignore | 4 + Dockerfile | 23 + README.md | 221 ++--- app.js | 8 +- config/custom-environment-variables.json | 6 + config/{config.json => default.json} | 3 +- ...aloop_central-notifications_Db_ver1.0.html | 652 ++++++++++++++ docs/images/1.png | Bin 0 -> 25288 bytes docs/images/2.png | Bin 0 -> 56560 bytes docs/images/3.png | Bin 0 -> 50369 bytes docs/images/4.png | Bin 0 -> 51093 bytes docs/images/5.png | Bin 0 -> 107665 bytes docs/images/6.png | Bin 0 -> 15490 bytes package-lock.json | 826 ++++++++++++++++++ package.json | 4 + src/lib/config.js | 4 + src/lib/database.js | 5 +- src/lib/enum.js | 12 +- src/lib/utility.js | 4 +- src/models/action.js | 7 +- src/models/currentPosition.js | 5 +- src/models/events.js | 7 +- src/models/limits.js | 7 +- src/models/notificationEndpoint.js | 7 +- src/models/rulesEngineRule.js | 84 -- src/{observeables => observables}/actions.js | 10 +- .../centralLedgerAPI.js | 0 src/{observeables => observables}/index.js | 0 .../rules/index.js | 0 .../rules/ndcAdjustment.js | 4 +- .../rules/ndcBreach.js | 7 +- src/playground.js | 224 ----- src/setup.js | 21 +- 34 files changed, 1718 insertions(+), 455 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 config/custom-environment-variables.json rename config/{config.json => default.json} (98%) create mode 100644 docs/database/Mojaloop_central-notifications_Db_ver1.0.html create mode 100644 docs/images/1.png create mode 100644 docs/images/2.png create mode 100644 docs/images/3.png create mode 100644 docs/images/4.png create mode 100644 docs/images/5.png create mode 100644 docs/images/6.png create mode 100644 package-lock.json create mode 100644 src/lib/config.js delete mode 100644 src/models/rulesEngineRule.js rename src/{observeables => observables}/actions.js (95%) rename src/{observeables => observables}/centralLedgerAPI.js (100%) rename src/{observeables => observables}/index.js (100%) rename src/{observeables => observables}/rules/index.js (100%) rename src/{observeables => observables}/rules/ndcAdjustment.js (97%) rename src/{observeables => observables}/rules/ndcBreach.js (96%) delete mode 100644 src/playground.js diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..0648b8b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,18 @@ +deploy/ +coverage/ +node_modules/ +.dockerignore +.editorconfig +.git/ +.gitignore +.istanbul.yml +circle.yml +docker-compose.circle.yml +docker-compose.dev.yml +docker-compose.functional.yml +docker-compose.yml +Dockerfile +LICENSE +README.md + +sonar-project.properties diff --git a/.gitignore b/.gitignore index ad46b30..d5def11 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,8 @@ pids *.pid *.seed *.pid.lock +.vscode +package-lock.json # Directory for instrumented libs generated by jscoverage/JSCover lib-cov @@ -35,12 +37,14 @@ build/Release # Dependency directories node_modules/ jspm_packages/ +package-lock.json # TypeScript v1 declaration files typings/ # Optional npm cache directory .npm +.idea # Optional eslint cache .eslintcache diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6b9bd1a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM mhart/alpine-node:8.9.4 +USER root + +WORKDIR /opt/central-event-processor +COPY src /opt/central-event-processor/src +COPY config /opt/central-event-processor/config +COPY package.json /opt/central-event-processor/ +COPY app.js /opt/central-event-processor/ +COPY docs /opt/central-event-processor/docs + +RUN apk --no-cache add git +RUN apk add --no-cache -t build-dependencies make gcc g++ python libtool autoconf automake \ + && cd $(npm root -g)/npm \ + && npm config set unsafe-perm true \ + && npm install -g node-gyp + +RUN npm install --production && \ + npm uninstall -g npm + +RUN apk del build-dependencies + +EXPOSE 3080 +CMD node app.js diff --git a/README.md b/README.md index ec3991f..69a0301 100644 --- a/README.md +++ b/README.md @@ -1,115 +1,130 @@ +# Notification service + +## Contents + +* 1. [Stories](#Stories) +* 2. [Tasks](#Tasks) +* 3. [Reacts on](#Reactson) +* 4. [Used technologies](#Usedtechnologies) +* 5. [Local storage](#Localstorage) +* 6. [Architecture overview](#Architectureoverview) +* 7. [General process overview](#Generalprocessoverview) + * 7.1. [enums](#enums) + * 7.2. [Rules](#Rules) + * 7.3 [Config](#Config) +* 8. [Limit Adjustment Rules flow](#LimitAdjustmentRulesflow) +* 9. [Limit Position Threshold Breach flow](#LimitPositionThresholdBreachflow) +* 10. [Actions Agent flow](#ActionsAgentflow) +* 11. [Notifier flow (separate service)](#Notifierflowseparateservice) + + + + +## 1. Stories +======= Central Event Processor ==================== stories ------- + * [#517 - Notification for changes to NetDebitCap or Position adjustments](https://github.com/mojaloop/project/issues/517) * [#518 - Notification for approaching Net Debit Cap Threshold](https://github.com/mojaloop/project/issues/518) -tasks --------- -* receive urgent notifications and ?requests? -* sends notifications based on configs to dfsps -* receives config updates -* receives position updates on the smallest period of warnings into the configs for all dfsps (json view) -* logging? what and where? - -reacts on ----------------------- -* notification configs changes - the data won't serve any other purpose but to config notification engines so why not JSON? - * settings for different threshold alarms, channels of delivery etc. -* urgent notifications - kafka msg routed to the engine based on the lowest critical level stored in the central database -* positions/limits/NDC or any other type of changes in sensitive data - why not get it as a big JSON view document with all dfsps - * get it by direct central database access / kafka-admin-topic / http request to central-ledger - -data ----- -* configs -* views -* urgent notifications - -local storage and central database ------------------------------------ -* can we use mysql json data type on central database or string in mysql? -* the view can be generated by running the same query over and over again, which is optimised by sql db enginge. -* central database `limits and threshold` table to store only the value of critical levesl(% of NCP/value?) for urgent notifications and id/address of the latest received config or config itself -* if we decide to have local storage it can be key:value or document storage - * we can use the view idea for reporting on later stage - * we can deliver views for different dashboard apps for admin and troubleshooting purposes to the dfsps. HUB admin might be connected to the central database for live data - * we can use this storage for enums/pointers or other references to the central database to offload it a bit (no updates of pointers for example, no enum queries from different functionalities) - -actors -------------------- -* central-ledger -* notification-router -* notification-engine - -technologies ------------- -* [napajs](https://github.com/Microsoft/napajs) for process management into the notification services -* [node-schedule](https://www.npmjs.com/package/node-schedule) for scheduling tasks - - -connections -------------------- -|central-ledger| connection |notification-router| connection |notification-engine| -|-|-|-|-|-| -|kafka-admin-topic| <->|config||| -|kafka-notification-topic|<->|urgent notificaions||| -|central-database |<-| creating dashboard view||| -||| local storage for configs and view | <->| sends notifications based on delta | -|||napajs? sockets? kafka?| <->| receives and acts on urgent notifications| - -* central-ledger - * API to support setting threshold(s) for Notifications/Alerts (config) - * compare current critical level with new critical level from config and act on it - * produce urgent notifications if critical level is reached - -* notification-router - * connected to central-ledger - * kafka (admin topics) - config changes, json dashboard data? - * kafka notification topic - * local storage - * central database access (for view or maybe view from kafka admin topic? not really time reliable) - * connected to notification-engine for sending urgent messages (napajs/kafka/http) - -* notification-engine(s) - * spawn notification-engine per dfsp as a worker process (napajs) or another docker container (how it will communicate with router in that case) - * connected to the local storage - * without local storage we need connection to the router for requests to the central database or direct connection to the central database - * runs scheduled processes - based on config, requests data received by the router with the dashboard json view and reacts on urgent notifications - * [node-schedule](https://www.npmjs.com/package/node-schedule) - * operates different channels to reach dfsp (email/sms/etc) - -View - example --------------- +## 2. Tasks +* send notifications when current position breaches the limit threshold value after a successful transfer was commited +* send notifications when the limit was adjusted +* make it extendable and flexible + +## 3. Reacts on +* messages consumed from the notification topic +* data read from the central-ledger API + +## 4. Used technologies +* [RxJS](https://github.com/ReactiveX/rxjs) +* [json-rule-engine](https://github.com/cachecontrol/json-rules-engine) +* [mongoose](https://github.com/Automattic/mongoose) + +## 5. Local storage +* Mongo DB +* Mongoose is used for schema validations and ORM functions +* to set up connection the following environmental variables might be used: `CEP_DATABASE_URI` and `CEP_DATABASE_NAME` +* full database documentation can be found [here](docs/database/Mojaloop_central-notifications_Db_ver1.0.html) + +## 6. Architecture overview +![architecture](docs/images/1.png) + + +This is standalone service which is connected to Kafka Notification topic into the mojaloop environemnt and monitors the topic for messages which match certain rules and takes actions accordingly. + +The service is developed using [RxJS](https://github.com/ReactiveX/rxjs) for observing the system and acting accordingly. The decissions for actions are taken by the [json-rule-engine](https://github.com/cachecontrol/json-rules-engine). + +## 7. General process overview +![process](docs/images/2.png) + +The rules validations are triggered upon commited transfers. As soon as a commited transfer notification is produced from the central-ledger to the notification topic, the central-notifications service picks it up, gathers more information, runs few rules validations and acts based on rules engine outcome. + +The data for performing rules validation is requested from the central-ledger admin API calls using observables, available [here](src/observables/centralLedgerAPI.js) some mapping and wiring is done through below [enums](src/lib/enum.js) properties: + +### 7.1. enums ``` -{ - timestamp: - dfspsViews: [ - dfsp1: { - curentNDC: - position: - ...... - - }, - dfsp2: { - - } - ] +const notificationActionMap = { + NET_DEBIT_CAP_THRESHOLD_BREACH_EMAIL: { + enum: 'NET_DEBIT_CAP_THRESHOLD_BREACH_EMAIL', + action: 'sendEmail', + templateType: 'breach', + language: 'en' + }, + NET_DEBIT_CAP_ADJUSTMENT_EMAIL: { + enum: 'NET_DEBIT_CAP_ADJUSTMENT_EMAIL', + action: 'sendEmail', + templateType: 'adjustment', + language: 'en' + } +} + +const limitNotificationMap = { + NET_DEBIT_CAP: { + enum: 'NET_DEBIT_CAP', + NET_DEBIT_CAP_THRESHOLD_BREACH_EMAIL: notificationActionMap.NET_DEBIT_CAP_THRESHOLD_BREACH_EMAIL, + NET_DEBIT_CAP_ADJUSTMENT_EMAIL: notificationActionMap.NET_DEBIT_CAP_ADJUSTMENT_EMAIL + } } ``` -urgent notifications flow overview ----------------------------------- -1. central ledger creates urgent notification on kafka-notification-topic -2. router receives the notification and sends to particular engine -3. engine acts based on config (maybe not send same notificaion more than 3 times in an hour) - -view processing flow overview ------------------------------ -1. router gets the view from central database on given period and stores it into local storage -2. enginge gets the view from local storage on its own period (might be bigger) -3. engine compares old view with the new one and gives delta -4. engine process delta and config and creates actions based on positives -5. engine acts +### 7.2. Rules +Currently two separate Rules are validated: +1. Limit Adjustment Rule [here](src/observables/rules/ndcAdjustment.js) +2. Limit Position Threshold Breach Rule [here](src/observables/rules/ndcBreach.js) +In the current implementation for each separate rule, an observable has to be created, like the couple above, and configured when and how to trigger it into the [setup](src/setup.js) +The Rules outputs should be chained to common Action Agent. + +### 7.3. Config + +The default config is available [here](config/config.json) +To use Environmental Variables for MongoDB URI and database name use: +`CEP_MONGO_URI` and `CEP_MONGO_DATABASE` + +## 8. Limit Adjustment Rules flow +![limitAdjustment](docs/images/3.png) + +This rule is triggered on each limit response from the central-ledger admin API. + + +## 9. Limit Position Threshold Breach flow +![limitPositionThresholdBreach](docs/images/4.png) + +This rule is triggered when all data for the participants in the current transfer is received. + +## 10. Actions Agent flow +![actionAgent](docs/images/5.png) + +The Action Agent - [here](src/observables/actions) - takes care of action preparation regrding the data from central-ledger admin API and various settings. + +## 11. Notifier flow (separate service) +![notifier](docs/images/6.png) + +Email notifier service is a separate app, that observes the same topic for messages with field *from* = `SYSTEM`. Its code is available [here](https://github.com/mojaloop/email-notifier) diff --git a/app.js b/app.js index a4b5502..d4bb467 100644 --- a/app.js +++ b/app.js @@ -21,9 +21,13 @@ * Deon Botha -------------- ******/ - 'use strict' const setup = require('./src/setup').setup +const Logger = require('@mojaloop/central-services-shared').Logger -setup() +try { + setup() +} catch (err) { + Logger.info(`Notifier throws an error ${err}`) +} diff --git a/config/custom-environment-variables.json b/config/custom-environment-variables.json new file mode 100644 index 0000000..a789caf --- /dev/null +++ b/config/custom-environment-variables.json @@ -0,0 +1,6 @@ +{ + "mongo": { + "uri": "CEP_DATABASE_URI", + "database": "CEP_DATABASE_NAME" + } +} \ No newline at end of file diff --git a/config/config.json b/config/default.json similarity index 98% rename from config/config.json rename to config/default.json index 0c456ad..05f3fbf 100644 --- a/config/config.json +++ b/config/default.json @@ -3,6 +3,7 @@ "resetPeriod": 60, "notificationInterval": 3 }, + "healthCheckPort": 3080, "swaggerOptions": { "info": { "title": "Central notification system API Documentation", @@ -11,7 +12,7 @@ "expanded": "full" }, "mongo": { - "url": "localhost:27017", + "uri": "localhost:27017", "database": "mojaloop", "ruleCollection": "Rule", "netDebitCapPositionCollection": "NDCPosition", diff --git a/docs/database/Mojaloop_central-notifications_Db_ver1.0.html b/docs/database/Mojaloop_central-notifications_Db_ver1.0.html new file mode 100644 index 0000000..dfdbfa7 --- /dev/null +++ b/docs/database/Mojaloop_central-notifications_Db_ver1.0.html @@ -0,0 +1,652 @@ + + + + + + + + +

Central Notifications Database Model

Schema for:

Model name: Mojaloop central-notifications
Author: Modusbox
Version: 1.0
File name: MojaloopNotifications.json
File path: /MojaloopNotifications.json
Printed On: Thu Nov 22 2018 16:49:06 GMT+0200 (SAST)
1. Model
1.1 Model Mojaloop central-notifications
1.1.1 Mojaloop central-notifications Entity Relationship Diagram
mojaloop
1.1.2 Mojaloop central-notifications Properties
PropertyValue
Model name Mojaloop central-notifications
Description This is the Mojaloop central-notification system's persistence store design.
Author Modusbox
Version 1.0
DB vendor MongoDB
DB version v4.0
Enable sharding
Comments
1.1.3 Mojaloop central-notifications DB Definitions
2. Databases
2.1 Database mojaloop
mojaloop
2.1.1 mojaloop Properties
PropertyValue
Database namemojaloop
DescriptionThis is the persistence store used in the sendig of notifications as used by the Mojaloop/central-notifications system.
Comments
2.1.2 mojaloop Collections
2.1.2.1 Collection actions
2.1.2.1.1 actions Tree Diagram
actions
type
{_id}
_id
type
{123}
timesTriggered
type
{0/1}
isActive
type
{_id}
triggeredBy
type
{_id}
fromEvent
type
{123}
__v
type
{dt}
createdAt
type
{dt}
updatedAt
type
actions
type
{_id}
_id
type
{123}
timesTriggered
type
{0/1}
isActive
type
{_id}
triggeredBy
type
{_id}
fromEvent
type
{123}
__v
type
{dt}
createdAt
type
{dt}
updatedAt
type
2.1.2.1.2 actions Properties
PropertyValue
Collection nameactions
Id
DescriptionThis document carries the related action to be taken after an event has been triggered
Databasemojaloop
Capped
Size
Max
Storage engine
Validation level
Validation action
Additional properties
Commentsexample : +{ + "_id" : ObjectId("5bf560f9e8fb4292a41501db"), + "timesTriggered" : 2, + "isActive" : false, + "triggeredBy" : ObjectId("5bf5480ba305f9801a6d59e0"), + "fromEvent" : ObjectId("5bf5480ba305f9801a6d59e4"), + "createdAt" : ISODate("2018-11-21T13:43:21.617Z"), + "updatedAt" : ISODate("2018-11-21T13:55:24.791Z"), + "__v" : 0 +} +{ + "_id" : ObjectId("5bf5642be8fb4292a41501e4"), + "timesTriggered" : 2, + "isActive" : true, + "triggeredBy" : ObjectId("5bf5480ba305f9801a6d59e0"), + "fromEvent" : ObjectId("5bf5480ba305f9801a6d59e4"), + "createdAt" : ISODate("2018-11-21T13:56:59.125Z"), + "updatedAt" : ISODate("2018-11-21T14:00:39.129Z"), + "__v" : 0 +}
2.1.2.1.3 actions Fields
FieldTypeReqKeyDescriptionComments
_idobjectIdtrue
timesTriggerednumerictrue
isActivebooleantrue
triggeredByobjectIdtrue
fromEventobjectIdtrue
__vnumerictrue
createdAtdatetrue
updatedAtdatetrue
2.1.2.1.3.1 Field _id
2.1.2.1.3.1.1 _id Tree Diagram
{_id}
_id
type
{_id}
_id
type
2.1.2.1.3.1.2 _id properties
PropertyValue
Name _id
Id
Type objectId
Description
Dependencies
Required true
Primary key true
Foreign collection
Foreign field
Relationship type
Default
Sample
Comments
2.1.2.1.3.2 Field timesTriggered
2.1.2.1.3.2.1 timesTriggered Tree Diagram
{123}
timesTriggered
type
{123}
timesTriggered
type
2.1.2.1.3.2.2 timesTriggered properties
PropertyValue
Name timesTriggered
Id
Type numeric
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Subtype integer32
Unit
Min value
Excl min false
Max value
Excl max false
Multiple of
Divisible by
Enum
Sample 2
Comments
2.1.2.1.3.3 Field isActive
2.1.2.1.3.3.1 isActive Tree Diagram
{0/1}
isActive
type
{0/1}
isActive
type
2.1.2.1.3.3.2 isActive properties
PropertyValue
Name isActive
Id
Type boolean
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Sample true
Comments
2.1.2.1.3.4 Field triggeredBy
2.1.2.1.3.4.1 triggeredBy Tree Diagram
{_id}
triggeredBy
type
{_id}
triggeredBy
type
2.1.2.1.3.4.2 triggeredBy properties
PropertyValue
Name triggeredBy
Id
Type objectId
Description
Dependencies
Required true
Primary key false
Foreign collection ndcpositions
Foreign field _id
Relationship type
Default
Sample
Comments
2.1.2.1.3.5 Field fromEvent
2.1.2.1.3.5.1 fromEvent Tree Diagram
{_id}
fromEvent
type
{_id}
fromEvent
type
2.1.2.1.3.5.2 fromEvent properties
PropertyValue
Name fromEvent
Id
Type objectId
Description
Dependencies
Required true
Primary key false
Foreign collection events
Foreign field _id
Relationship type
Default
Sample
Comments
2.1.2.1.3.6 Field __v
2.1.2.1.3.6.1 __v Tree Diagram
{123}
__v
type
{123}
__v
type
2.1.2.1.3.6.2 __v properties
PropertyValue
Name __v
Id
Type numeric
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Subtype
Unit
Min value
Excl min false
Max value
Excl max false
Multiple of
Divisible by
Enum
Sample 0
Comments
2.1.2.1.3.7 Field createdAt
2.1.2.1.3.7.1 createdAt Tree Diagram
{dt}
createdAt
type
{dt}
createdAt
type
2.1.2.1.3.7.2 createdAt properties
PropertyValue
Name createdAt
Id
Type date
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Sample 2018-11-21T13:56:59.125Z
Comments
2.1.2.1.3.8 Field updatedAt
2.1.2.1.3.8.1 updatedAt Tree Diagram
{dt}
updatedAt
type
{dt}
updatedAt
type
2.1.2.1.3.8.2 updatedAt properties
PropertyValue
Name updatedAt
Id
Type date
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Sample 2018-11-21T14:00:39.129Z
Comments
2.1.2.1.4 actions Indexes
Property _id_
Name _id_
Key _id('ascending')
Hashed
Unique
Drop duplicates
Sparse
Background indexing
Partial filter exp
Expire after (seconds)
Storage engine
Comments
2.1.2.1.5 actions JSON Schema
{
+    "$schema": "http://json-schema.org/draft-04/schema#",
+    "type": "object",
+    "description": "This document carries the related action to be taken after an event has been triggered",
+    "comments": "example :\n{\n\t\"_id\" : ObjectId(\"5bf560f9e8fb4292a41501db\"),\n\t\"timesTriggered\" : 2,\n\t\"isActive\" : false,\n\t\"triggeredBy\" : ObjectId(\"5bf5480ba305f9801a6d59e0\"),\n\t\"fromEvent\" : ObjectId(\"5bf5480ba305f9801a6d59e4\"),\n\t\"createdAt\" : ISODate(\"2018-11-21T13:43:21.617Z\"),\n\t\"updatedAt\" : ISODate(\"2018-11-21T13:55:24.791Z\"),\n\t\"__v\" : 0\n}\n{\n\t\"_id\" : ObjectId(\"5bf5642be8fb4292a41501e4\"),\n\t\"timesTriggered\" : 2,\n\t\"isActive\" : true,\n\t\"triggeredBy\" : ObjectId(\"5bf5480ba305f9801a6d59e0\"),\n\t\"fromEvent\" : ObjectId(\"5bf5480ba305f9801a6d59e4\"),\n\t\"createdAt\" : ISODate(\"2018-11-21T13:56:59.125Z\"),\n\t\"updatedAt\" : ISODate(\"2018-11-21T14:00:39.129Z\"),\n\t\"__v\" : 0\n}",
+    "properties": {
+        "_id": {
+            "type": "string",
+            "primaryKey": true,
+            "pattern": "^[a-fA-F0-9]{24}$"
+        },
+        "timesTriggered": {
+            "type": "integer",
+            "mode": "integer32",
+            "sample": 2
+        },
+        "isActive": {
+            "type": "boolean",
+            "sample": false
+        },
+        "triggeredBy": {
+            "type": "string",
+            "pattern": "^[a-fA-F0-9]{24}$"
+        },
+        "fromEvent": {
+            "type": "string",
+            "pattern": "^[a-fA-F0-9]{24}$"
+        },
+        "__v": {
+            "type": "number",
+            "sample": 0
+        },
+        "createdAt": {
+            "type": "string",
+            "format": "date-time",
+            "sample": "2018-11-21T13:56:59.125Z"
+        },
+        "updatedAt": {
+            "type": "string",
+            "format": "date-time",
+            "sample": "2018-11-21T14:00:39.129Z"
+        }
+    },
+    "required": [
+        "_id",
+        "timesTriggered",
+        "isActive",
+        "triggeredBy",
+        "fromEvent",
+        "__v",
+        "createdAt",
+        "updatedAt"
+    ]
+}
2.1.2.1.6 actions JSON data
{
+    "_id": ObjectId("507f1f77bcf86cd799439011"),
+    "timesTriggered": 2,
+    "isActive": true,
+    "triggeredBy": ObjectId("507f1f77bcf86cd799439011"),
+    "fromEvent": ObjectId("507f1f77bcf86cd799439011"),
+    "__v": 0,
+    "createdAt": "2018-11-21T13:56:59.125Z",
+    "updatedAt": "2018-11-21T14:00:39.129Z"
+}
2.1.2.2 Collection events
2.1.2.2.1 events Tree Diagram
events
type
{_id}
_id
type
{0/1}
isActive
type
{ABC}
name
type
{ABC}
currency
type
{ABC}
notificationEndpointType
type
{ABC}
limitType
type
{ABC}
action
type
{ABC}
templateType
type
{ABC}
language
type
{123}
__v
type
{dt}
createdAt
type
{dt}
updatedAt
type
events
type
{_id}
_id
type
{0/1}
isActive
type
{ABC}
name
type
{ABC}
currency
type
{ABC}
notificationEndpointType
type
{ABC}
limitType
type
{ABC}
action
type
{ABC}
templateType
type
{ABC}
language
type
{123}
__v
type
{dt}
createdAt
type
{dt}
updatedAt
type
2.1.2.2.2 events Properties
PropertyValue
Collection nameevents
Id
DescriptionThis Document carries the detail about the notification type event that was triggered
Databasemojaloop
Capped
Size
Max
Storage engine
Validation level
Validation action
Additional properties
Commentsexample : +{ + "_id" : ObjectId("5bf5480ba305f9801a6d59e1"), + "isActive" : true, + "name" : "dfsp1", + "currency" : "USD", + "notificationEndpointType" : "NET_DEBIT_CAP_BREACH_MAIL", + "limitType" : "NET_DEBIT_CAP", + "action" : "sendEmail", + "templateType" : "breach", + "language" : "en", + "createdAt" : ISODate("2018-11-21T11:56:59.029Z"), + "updatedAt" : ISODate("2018-11-21T11:56:59.029Z"), + "__v" : 0 +}
2.1.2.2.3 events Fields
FieldTypeReqKeyDescriptionComments
_idobjectIdtrue
isActivebooleantrue
namestringtrue
currencystringtrue
notificationEndpointTypestringtrue
limitTypestringtrue
actionstringtrue
templateTypestringtrue
languagestringtrue
__vnumerictrue
createdAtdatetrue
updatedAtdatetrue
2.1.2.2.3.1 Field _id
2.1.2.2.3.1.1 _id Tree Diagram
{_id}
_id
type
{_id}
_id
type
2.1.2.2.3.1.2 _id properties
PropertyValue
Name _id
Id
Type objectId
Description
Dependencies
Required true
Primary key true
Foreign collection
Foreign field
Relationship type
Default
Sample
Comments
2.1.2.2.3.2 Field isActive
2.1.2.2.3.2.1 isActive Tree Diagram
{0/1}
isActive
type
{0/1}
isActive
type
2.1.2.2.3.2.2 isActive properties
PropertyValue
Name isActive
Id
Type boolean
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Sample true
Comments
2.1.2.2.3.3 Field name
2.1.2.2.3.3.1 name Tree Diagram
{ABC}
name
type
{ABC}
name
type
2.1.2.2.3.3.2 name properties
PropertyValue
Name name
Id
Type string
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Min length
Max length
Pattern
Format
Enum
Sample dfsp1
Comments
2.1.2.2.3.4 Field currency
2.1.2.2.3.4.1 currency Tree Diagram
{ABC}
currency
type
{ABC}
currency
type
2.1.2.2.3.4.2 currency properties
PropertyValue
Name currency
Id
Type string
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Min length
Max length
Pattern
Format
Enum
Sample USD
Comments
2.1.2.2.3.5 Field notificationEndpointType
2.1.2.2.3.5.1 notificationEndpointType Tree Diagram
{ABC}
notificationEndpointType
type
{ABC}
notificationEndpointType
type
2.1.2.2.3.5.2 notificationEndpointType properties
PropertyValue
Name notificationEndpointType
Id
Type string
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Min length
Max length
Pattern
Format
Enum
Sample NET_DEBIT_CAP_ADJUSTMENT
Comments
2.1.2.2.3.6 Field limitType
2.1.2.2.3.6.1 limitType Tree Diagram
{ABC}
limitType
type
{ABC}
limitType
type
2.1.2.2.3.6.2 limitType properties
PropertyValue
Name limitType
Id
Type string
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Min length
Max length
Pattern
Format
Enum
Sample NET_DEBIT_CAP
Comments
2.1.2.2.3.7 Field action
2.1.2.2.3.7.1 action Tree Diagram
{ABC}
action
type
{ABC}
action
type
2.1.2.2.3.7.2 action properties
PropertyValue
Name action
Id
Type string
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Min length
Max length
Pattern
Format
Enum
Sample sendEmail
Comments
2.1.2.2.3.8 Field templateType
2.1.2.2.3.8.1 templateType Tree Diagram
{ABC}
templateType
type
{ABC}
templateType
type
2.1.2.2.3.8.2 templateType properties
PropertyValue
Name templateType
Id
Type string
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Min length
Max length
Pattern
Format
Enum
Sample adjustment
Comments
2.1.2.2.3.9 Field language
2.1.2.2.3.9.1 language Tree Diagram
{ABC}
language
type
{ABC}
language
type
2.1.2.2.3.9.2 language properties
PropertyValue
Name language
Id
Type string
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Min length
Max length
Pattern
Format
Enum
Sample en
Comments
2.1.2.2.3.10 Field __v
2.1.2.2.3.10.1 __v Tree Diagram
{123}
__v
type
{123}
__v
type
2.1.2.2.3.10.2 __v properties
PropertyValue
Name __v
Id
Type numeric
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Subtype
Unit
Min value
Excl min false
Max value
Excl max false
Multiple of
Divisible by
Enum
Sample 0
Comments
2.1.2.2.3.11 Field createdAt
2.1.2.2.3.11.1 createdAt Tree Diagram
{dt}
createdAt
type
{dt}
createdAt
type
2.1.2.2.3.11.2 createdAt properties
PropertyValue
Name createdAt
Id
Type date
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Sample 2018-11-21T11:56:59.044Z
Comments
2.1.2.2.3.12 Field updatedAt
2.1.2.2.3.12.1 updatedAt Tree Diagram
{dt}
updatedAt
type
{dt}
updatedAt
type
2.1.2.2.3.12.2 updatedAt properties
PropertyValue
Name updatedAt
Id
Type date
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Sample 2018-11-21T11:56:59.044Z
Comments
2.1.2.2.4 events Indexes
Property _id_ name_1 currency_1
Name _id_ name_1 currency_1
Key _id('ascending') name('ascending') currency('ascending')
Hashed
Unique
Drop duplicates
Sparse
Background indexing true true
Partial filter exp
Expire after (seconds)
Storage engine
Comments
2.1.2.2.5 events JSON Schema
{
+    "$schema": "http://json-schema.org/draft-04/schema#",
+    "type": "object",
+    "description": "This Document carries the detail about the notification type event that was triggered ",
+    "comments": "example :\n{\n\t\"_id\" : ObjectId(\"5bf5480ba305f9801a6d59e1\"),\n\t\"isActive\" : true,\n\t\"name\" : \"dfsp1\",\n\t\"currency\" : \"USD\",\n\t\"notificationEndpointType\" : \"NET_DEBIT_CAP_BREACH_MAIL\",\n\t\"limitType\" : \"NET_DEBIT_CAP\",\n\t\"action\" : \"sendEmail\",\n\t\"templateType\" : \"breach\",\n\t\"language\" : \"en\",\n\t\"createdAt\" : ISODate(\"2018-11-21T11:56:59.029Z\"),\n\t\"updatedAt\" : ISODate(\"2018-11-21T11:56:59.029Z\"),\n\t\"__v\" : 0\n}",
+    "properties": {
+        "_id": {
+            "type": "string",
+            "primaryKey": true,
+            "pattern": "^[a-fA-F0-9]{24}$"
+        },
+        "isActive": {
+            "type": "boolean",
+            "sample": false
+        },
+        "name": {
+            "type": "string",
+            "sample": "dfsp1"
+        },
+        "currency": {
+            "type": "string",
+            "sample": "USD"
+        },
+        "notificationEndpointType": {
+            "type": "string",
+            "sample": "NET_DEBIT_CAP_ADJUSTMENT"
+        },
+        "limitType": {
+            "type": "string",
+            "sample": "NET_DEBIT_CAP"
+        },
+        "action": {
+            "type": "string",
+            "sample": "sendEmail"
+        },
+        "templateType": {
+            "type": "string",
+            "sample": "adjustment"
+        },
+        "language": {
+            "type": "string",
+            "sample": "en"
+        },
+        "__v": {
+            "type": "number",
+            "sample": 0
+        },
+        "createdAt": {
+            "type": "string",
+            "format": "date-time",
+            "sample": "2018-11-21T11:56:59.044Z"
+        },
+        "updatedAt": {
+            "type": "string",
+            "format": "date-time",
+            "sample": "2018-11-21T11:56:59.044Z"
+        }
+    },
+    "required": [
+        "_id",
+        "isActive",
+        "name",
+        "currency",
+        "notificationEndpointType",
+        "limitType",
+        "action",
+        "templateType",
+        "language",
+        "__v",
+        "createdAt",
+        "updatedAt"
+    ]
+}
2.1.2.2.6 events JSON data
{
+    "_id": ObjectId("507f1f77bcf86cd799439011"),
+    "isActive": true,
+    "name": "dfsp1",
+    "currency": "USD",
+    "notificationEndpointType": "NET_DEBIT_CAP_ADJUSTMENT",
+    "limitType": "NET_DEBIT_CAP",
+    "action": "sendEmail",
+    "templateType": "adjustment",
+    "language": "en",
+    "__v": 0,
+    "createdAt": "2018-11-21T11:56:59.044Z",
+    "updatedAt": "2018-11-21T11:56:59.044Z"
+}
2.1.2.3 Collection limits
2.1.2.3.1 limits Tree Diagram
limits
type
{_id}
_id
type
{123}
oldValue
type
{123}
repetitions
type
{123}
threshold
type
{ABC}
name
type
{ABC}
currency
type
{ABC}
type
type
{123}
value
type
{123}
__v
type
{dt}
createdAt
type
{dt}
updatedAt
type
limits
type
{_id}
_id
type
{123}
oldValue
type
{123}
repetitions
type
{123}
threshold
type
{ABC}
name
type
{ABC}
currency
type
{ABC}
type
type
{123}
value
type
{123}
__v
type
{dt}
createdAt
type
{dt}
updatedAt
type
2.1.2.3.2 limits Properties
PropertyValue
Collection namelimits
Id
DescriptionThis document carries the limit detail for a dfsp and currency on which the limit adjustment or net debit cap breach has been triggered
Databasemojaloop
Capped
Size
Max
Storage engineIn-Memory
Validation level
Validation action
Additional properties
Commentsexample : +{ + "_id" : ObjectId("5bf5480ba305f9801a6d59df"), + "oldValue" : 1000, + "repetitions" : 3, + "threshold" : 10, + "name" : "dfsp2", + "currency" : "USD", + "type" : "NET_DEBIT_CAP", + "value" : 1000, + "createdAt" : ISODate("2018-11-21T11:56:59.005Z"), + "updatedAt" : ISODate("2018-11-21T13:42:03.061Z"), + "__v" : 0 +} +{ + "_id" : ObjectId("5bf5480ba305f9801a6d59e0"), + "oldValue" : 1000, + "repetitions" : 3, + "threshold" : 10, + "name" : "dfsp1", + "currency" : "USD", + "type" : "NET_DEBIT_CAP", + "value" : 900, + "createdAt" : ISODate("2018-11-21T11:56:59.007Z"), + "updatedAt" : ISODate("2018-11-21T14:00:39.100Z"), + "__v" : 0 +}
2.1.2.3.3 limits Fields
FieldTypeReqKeyDescriptionComments
_idobjectIdtrue
oldValuenumerictrue
repetitionsnumerictrue
thresholdnumerictrue
namestringtrue
currencystringtrue
typestringtrue
valuenumerictrue
__vnumerictrue
createdAtdatetrue
updatedAtdatetrue
2.1.2.3.3.1 Field _id
2.1.2.3.3.1.1 _id Tree Diagram
{_id}
_id
type
{_id}
_id
type
2.1.2.3.3.1.2 _id properties
PropertyValue
Name _id
Id
Type objectId
Description
Dependencies
Required true
Primary key true
Foreign collection
Foreign field
Relationship type
Default
Sample
Comments
2.1.2.3.3.2 Field oldValue
2.1.2.3.3.2.1 oldValue Tree Diagram
{123}
oldValue
type
{123}
oldValue
type
2.1.2.3.3.2.2 oldValue properties
PropertyValue
Name oldValue
Id
Type numeric
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Subtype integer32
Unit
Min value
Excl min false
Max value
Excl max false
Multiple of
Divisible by
Enum
Sample 1000
Comments
2.1.2.3.3.3 Field repetitions
2.1.2.3.3.3.1 repetitions Tree Diagram
{123}
repetitions
type
{123}
repetitions
type
2.1.2.3.3.3.2 repetitions properties
PropertyValue
Name repetitions
Id
Type numeric
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Subtype integer32
Unit
Min value
Excl min false
Max value
Excl max false
Multiple of
Divisible by
Enum
Sample 3
Comments
2.1.2.3.3.4 Field threshold
2.1.2.3.3.4.1 threshold Tree Diagram
{123}
threshold
type
{123}
threshold
type
2.1.2.3.3.4.2 threshold properties
PropertyValue
Name threshold
Id
Type numeric
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Subtype integer32
Unit
Min value
Excl min false
Max value
Excl max false
Multiple of
Divisible by
Enum
Sample 10
Comments
2.1.2.3.3.5 Field name
2.1.2.3.3.5.1 name Tree Diagram
{ABC}
name
type
{ABC}
name
type
2.1.2.3.3.5.2 name properties
PropertyValue
Name name
Id
Type string
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Min length
Max length
Pattern
Format
Enum
Sample dfsp1
Comments
2.1.2.3.3.6 Field currency
2.1.2.3.3.6.1 currency Tree Diagram
{ABC}
currency
type
{ABC}
currency
type
2.1.2.3.3.6.2 currency properties
PropertyValue
Name currency
Id
Type string
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Min length
Max length
Pattern
Format
Enum
Sample USD
Comments
2.1.2.3.3.7 Field type
2.1.2.3.3.7.1 type Tree Diagram
{ABC}
type
type
{ABC}
type
type
2.1.2.3.3.7.2 type properties
PropertyValue
Name type
Id
Type string
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Min length
Max length
Pattern
Format
Enum
Sample NET_DEBIT_CAP
Comments
2.1.2.3.3.8 Field value
2.1.2.3.3.8.1 value Tree Diagram
{123}
value
type
{123}
value
type
2.1.2.3.3.8.2 value properties
PropertyValue
Name value
Id
Type numeric
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Subtype integer32
Unit
Min value
Excl min false
Max value
Excl max false
Multiple of
Divisible by
Enum
Sample 900
Comments
2.1.2.3.3.9 Field __v
2.1.2.3.3.9.1 __v Tree Diagram
{123}
__v
type
{123}
__v
type
2.1.2.3.3.9.2 __v properties
PropertyValue
Name __v
Id
Type numeric
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Subtype
Unit
Min value
Excl min false
Max value
Excl max false
Multiple of
Divisible by
Enum
Sample 0
Comments
2.1.2.3.3.10 Field createdAt
2.1.2.3.3.10.1 createdAt Tree Diagram
{dt}
createdAt
type
{dt}
createdAt
type
2.1.2.3.3.10.2 createdAt properties
PropertyValue
Name createdAt
Id
Type date
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Sample 2018-11-21T11:56:59.007Z
Comments
2.1.2.3.3.11 Field updatedAt
2.1.2.3.3.11.1 updatedAt Tree Diagram
{dt}
updatedAt
type
{dt}
updatedAt
type
2.1.2.3.3.11.2 updatedAt properties
PropertyValue
Name updatedAt
Id
Type date
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Sample 2018-11-21T14:00:39.100Z
Comments
2.1.2.3.4 limits Indexes
Property _id_ name_1 currency_1
Name _id_ name_1 currency_1
Key _id('ascending') name('ascending') currency('ascending')
Hashed
Unique
Drop duplicates
Sparse
Background indexing true true
Partial filter exp
Expire after (seconds)
Storage engine
Comments
2.1.2.3.5 limits JSON Schema
{
+    "$schema": "http://json-schema.org/draft-04/schema#",
+    "type": "object",
+    "description": "This document carries the limit detail for a dfsp and currency on which the limit adjustment or net debit cap breach has been triggered",
+    "comments": "example :\n{\n\t\"_id\" : ObjectId(\"5bf5480ba305f9801a6d59df\"),\n\t\"oldValue\" : 1000,\n\t\"repetitions\" : 3,\n\t\"threshold\" : 10,\n\t\"name\" : \"dfsp2\",\n\t\"currency\" : \"USD\",\n\t\"type\" : \"NET_DEBIT_CAP\",\n\t\"value\" : 1000,\n\t\"createdAt\" : ISODate(\"2018-11-21T11:56:59.005Z\"),\n\t\"updatedAt\" : ISODate(\"2018-11-21T13:42:03.061Z\"),\n\t\"__v\" : 0\n}\n{\n\t\"_id\" : ObjectId(\"5bf5480ba305f9801a6d59e0\"),\n\t\"oldValue\" : 1000,\n\t\"repetitions\" : 3,\n\t\"threshold\" : 10,\n\t\"name\" : \"dfsp1\",\n\t\"currency\" : \"USD\",\n\t\"type\" : \"NET_DEBIT_CAP\",\n\t\"value\" : 900,\n\t\"createdAt\" : ISODate(\"2018-11-21T11:56:59.007Z\"),\n\t\"updatedAt\" : ISODate(\"2018-11-21T14:00:39.100Z\"),\n\t\"__v\" : 0\n}",
+    "properties": {
+        "_id": {
+            "type": "string",
+            "primaryKey": true,
+            "pattern": "^[a-fA-F0-9]{24}$"
+        },
+        "oldValue": {
+            "type": "integer",
+            "mode": "integer32",
+            "sample": 1000
+        },
+        "repetitions": {
+            "type": "integer",
+            "mode": "integer32",
+            "sample": 3
+        },
+        "threshold": {
+            "type": "integer",
+            "mode": "integer32",
+            "sample": 10
+        },
+        "name": {
+            "type": "string",
+            "sample": "dfsp1"
+        },
+        "currency": {
+            "type": "string",
+            "sample": "USD"
+        },
+        "type": {
+            "type": "string",
+            "sample": "NET_DEBIT_CAP"
+        },
+        "value": {
+            "type": "integer",
+            "mode": "integer32",
+            "sample": 900
+        },
+        "__v": {
+            "type": "number",
+            "sample": 0
+        },
+        "createdAt": {
+            "type": "string",
+            "format": "date-time",
+            "sample": "2018-11-21T11:56:59.007Z"
+        },
+        "updatedAt": {
+            "type": "string",
+            "format": "date-time",
+            "sample": "2018-11-21T14:00:39.100Z"
+        }
+    },
+    "required": [
+        "_id",
+        "oldValue",
+        "repetitions",
+        "threshold",
+        "name",
+        "currency",
+        "type",
+        "value",
+        "__v",
+        "createdAt",
+        "updatedAt"
+    ]
+}
2.1.2.3.6 limits JSON data
{
+    "_id": ObjectId("507f1f77bcf86cd799439011"),
+    "oldValue": 1000,
+    "repetitions": 3,
+    "threshold": 10,
+    "name": "dfsp1",
+    "currency": "USD",
+    "type": "NET_DEBIT_CAP",
+    "value": 900,
+    "__v": 0,
+    "createdAt": "2018-11-21T11:56:59.007Z",
+    "updatedAt": "2018-11-21T14:00:39.100Z"
+}
2.1.2.4 Collection ndcpositions
2.1.2.4.1 ndcpositions Tree Diagram
ndcpositions
type
{_id}
_id
type
{ABC}
name
type
{ABC}
currency
type
{123}
positionValue
type
{123}
percentage
type
{ABC}
transferId
type
{ABC}
messagePayload
type
{123}
__v
type
{dt}
createdAt
type
{dt}
updatedAt
type
ndcpositions
type
{_id}
_id
type
{ABC}
name
type
{ABC}
currency
type
{123}
positionValue
type
{123}
percentage
type
{ABC}
transferId
type
{ABC}
messagePayload
type
{123}
__v
type
{dt}
createdAt
type
{dt}
updatedAt
type
2.1.2.4.2 ndcpositions Properties
PropertyValue
Collection namendcpositions
Id
DescriptionThis document carries the position detail for a dfsp and currency on which the limit adjustment or net debit cap breach has been triggered
Databasemojaloop
Capped
Size
Max
Storage engine
Validation level
Validation action
Additional properties
Commentsexample : +{ + "_id" : ObjectId("5bf558b2a305f9801a6d59fd"), + "name" : "dfsp1", + "currency" : "USD", + "positionValue" : 0, + "percentage" : 100, + "transferId" : "435c6890-376f-4947-9d70-7063dd3745d4", + "messagePayload" : "{\"errorInformation\":{\"errorCode\":3106,\"errorDescription\":\"Modified request\"}}", + "__v" : 0, + "createdAt" : ISODate("2018-11-21T13:08:02.372Z"), + "updatedAt" : ISODate("2018-11-21T13:08:02.372Z") +}
2.1.2.4.3 ndcpositions Fields
FieldTypeReqKeyDescriptionComments
_idobjectIdtrue
namestringtrue
currencystringtrue
positionValuenumerictrue
percentagenumerictrue
transferIdstringtrue
messagePayloadstringtrue
__vnumerictrue
createdAtdatetrue
updatedAtdatetrue
2.1.2.4.3.1 Field _id
2.1.2.4.3.1.1 _id Tree Diagram
{_id}
_id
type
{_id}
_id
type
2.1.2.4.3.1.2 _id properties
PropertyValue
Name _id
Id
Type objectId
Description
Dependencies
Required true
Primary key true
Foreign collection
Foreign field
Relationship type
Default
Sample
Comments
2.1.2.4.3.2 Field name
2.1.2.4.3.2.1 name Tree Diagram
{ABC}
name
type
{ABC}
name
type
2.1.2.4.3.2.2 name properties
PropertyValue
Name name
Id
Type string
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Min length
Max length
Pattern
Format
Enum
Sample dfsp2
Comments
2.1.2.4.3.3 Field currency
2.1.2.4.3.3.1 currency Tree Diagram
{ABC}
currency
type
{ABC}
currency
type
2.1.2.4.3.3.2 currency properties
PropertyValue
Name currency
Id
Type string
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Min length
Max length
Pattern
Format
Enum
Sample USD
Comments
2.1.2.4.3.4 Field positionValue
2.1.2.4.3.4.1 positionValue Tree Diagram
{123}
positionValue
type
{123}
positionValue
type
2.1.2.4.3.4.2 positionValue properties
PropertyValue
Name positionValue
Id
Type numeric
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Subtype
Unit
Min value
Excl min false
Max value
Excl max false
Multiple of
Divisible by
Enum
Sample 0
Comments
2.1.2.4.3.5 Field percentage
2.1.2.4.3.5.1 percentage Tree Diagram
{123}
percentage
type
{123}
percentage
type
2.1.2.4.3.5.2 percentage properties
PropertyValue
Name percentage
Id
Type numeric
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Subtype integer32
Unit
Min value
Excl min false
Max value
Excl max false
Multiple of
Divisible by
Enum
Sample 100
Comments
2.1.2.4.3.6 Field transferId
2.1.2.4.3.6.1 transferId Tree Diagram
{ABC}
transferId
type
{ABC}
transferId
type
2.1.2.4.3.6.2 transferId properties
PropertyValue
Name transferId
Id
Type string
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Min length
Max length
Pattern
Format
Enum
Sample 435c6890-376f-4947-9d70-7063dd3745d4
Comments
2.1.2.4.3.7 Field messagePayload
2.1.2.4.3.7.1 messagePayload Tree Diagram
{ABC}
messagePayload
type
{ABC}
messagePayload
type
2.1.2.4.3.7.2 messagePayload properties
PropertyValue
Name messagePayload
Id
Type string
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Min length
Max length
Pattern
Format
Enum
Sample {"errorInformation":{"errorCode":3106,"errorDescription":"Modified request"}}
Comments
2.1.2.4.3.8 Field __v
2.1.2.4.3.8.1 __v Tree Diagram
{123}
__v
type
{123}
__v
type
2.1.2.4.3.8.2 __v properties
PropertyValue
Name __v
Id
Type numeric
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Subtype
Unit
Min value
Excl min false
Max value
Excl max false
Multiple of
Divisible by
Enum
Sample 0
Comments
2.1.2.4.3.9 Field createdAt
2.1.2.4.3.9.1 createdAt Tree Diagram
{dt}
createdAt
type
{dt}
createdAt
type
2.1.2.4.3.9.2 createdAt properties
PropertyValue
Name createdAt
Id
Type date
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Sample 2018-11-21T14:00:39.205Z
Comments
2.1.2.4.3.10 Field updatedAt
2.1.2.4.3.10.1 updatedAt Tree Diagram
{dt}
updatedAt
type
{dt}
updatedAt
type
2.1.2.4.3.10.2 updatedAt properties
PropertyValue
Name updatedAt
Id
Type date
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Sample 2018-11-21T14:00:39.205Z
Comments
2.1.2.4.4 ndcpositions Indexes
Property _id_ name_1 currency_1 transferId_1
Name _id_ name_1 currency_1 transferId_1
Key _id('ascending') name('ascending') currency('ascending') transferId('ascending')
Hashed
Unique
Drop duplicates
Sparse
Background indexing true true true
Partial filter exp
Expire after (seconds)
Storage engine
Comments
2.1.2.4.5 ndcpositions JSON Schema
{
+    "$schema": "http://json-schema.org/draft-04/schema#",
+    "type": "object",
+    "description": "This document carries the position detail for a dfsp and currency on which the limit adjustment or net debit cap breach has been triggered",
+    "comments": "example : \n{\n\t\"_id\" : ObjectId(\"5bf558b2a305f9801a6d59fd\"),\n\t\"name\" : \"dfsp1\",\n\t\"currency\" : \"USD\",\n\t\"positionValue\" : 0,\n\t\"percentage\" : 100,\n\t\"transferId\" : \"435c6890-376f-4947-9d70-7063dd3745d4\",\n\t\"messagePayload\" : \"{\\\"errorInformation\\\":{\\\"errorCode\\\":3106,\\\"errorDescription\\\":\\\"Modified request\\\"}}\",\n\t\"__v\" : 0,\n\t\"createdAt\" : ISODate(\"2018-11-21T13:08:02.372Z\"),\n\t\"updatedAt\" : ISODate(\"2018-11-21T13:08:02.372Z\")\n}",
+    "properties": {
+        "_id": {
+            "type": "string",
+            "primaryKey": true,
+            "pattern": "^[a-fA-F0-9]{24}$"
+        },
+        "name": {
+            "type": "string",
+            "sample": "dfsp2"
+        },
+        "currency": {
+            "type": "string",
+            "sample": "USD"
+        },
+        "positionValue": {
+            "type": "number",
+            "sample": 0
+        },
+        "percentage": {
+            "type": "integer",
+            "mode": "integer32",
+            "sample": 100
+        },
+        "transferId": {
+            "type": "string",
+            "sample": "435c6890-376f-4947-9d70-7063dd3745d4"
+        },
+        "messagePayload": {
+            "type": "string",
+            "sample": "{\"errorInformation\":{\"errorCode\":3106,\"errorDescription\":\"Modified request\"}}"
+        },
+        "__v": {
+            "type": "number",
+            "sample": 0
+        },
+        "createdAt": {
+            "type": "string",
+            "format": "date-time",
+            "sample": "2018-11-21T14:00:39.205Z"
+        },
+        "updatedAt": {
+            "type": "string",
+            "format": "date-time",
+            "sample": "2018-11-21T14:00:39.205Z"
+        }
+    },
+    "required": [
+        "_id",
+        "name",
+        "currency",
+        "positionValue",
+        "percentage",
+        "transferId",
+        "messagePayload",
+        "__v",
+        "createdAt",
+        "updatedAt"
+    ]
+}
2.1.2.4.6 ndcpositions JSON data
{
+    "_id": ObjectId("507f1f77bcf86cd799439011"),
+    "name": "dfsp2",
+    "currency": "USD",
+    "positionValue": 0,
+    "percentage": 100,
+    "transferId": "435c6890-376f-4947-9d70-7063dd3745d4",
+    "messagePayload": "{'errorInformation':{'errorCode':3106,'errorDescription':'Modified request'}}",
+    "__v": 0,
+    "createdAt": "2018-11-21T14:00:39.205Z",
+    "updatedAt": "2018-11-21T14:00:39.205Z"
+}
2.1.2.5 Collection notificationendpoints
2.1.2.5.1 notificationendpoints Tree Diagram
notificationendpoints
type
{_id}
_id
type
{ABC}
name
type
{ABC}
type
type
{ABC}
value
type
{ABC}
action
type
{123}
__v
type
{dt}
createdAt
type
{dt}
updatedAt
type
notificationendpoints
type
{_id}
_id
type
{ABC}
name
type
{ABC}
type
type
{ABC}
value
type
{ABC}
action
type
{123}
__v
type
{dt}
createdAt
type
{dt}
updatedAt
type
2.1.2.5.2 notificationendpoints Properties
PropertyValue
Collection namenotificationendpoints
Id
DescriptionThis collection carries the contact type and details related to a specific event.
Databasemojaloop
Capped
Size
Max
Storage engine
Validation level
Validation action
Additional properties
Commentsexample : +{ + "_id" : ObjectId("5bf5480aa305f9801a6d59dc"), + "name" : "dfsp1", + "type" : "NET_DEBIT_CAP_BREACH_MAIL", + "value" : "deon.botha@modusbox.com", + "action" : "sendEmail", + "createdAt" : ISODate("2018-11-21T11:56:58.927Z"), + "updatedAt" : ISODate("2018-11-21T14:00:38.989Z"), + "__v" : 0 +} +{ + "_id" : ObjectId("5bf5480aa305f9801a6d59dd"), + "name" : "Hub", + "type" : "NET_DEBIT_CAP_ADJUSTMENT", + "value" : "deon.botha@modusbox.com", + "action" : "sendEmail", + "createdAt" : ISODate("2018-11-21T11:56:58.950Z"), + "updatedAt" : ISODate("2018-11-21T14:00:39.077Z"), + "__v" : 0 +}
2.1.2.5.3 notificationendpoints Fields
FieldTypeReqKeyDescriptionComments
_idobjectIdtrue
namestringtrue
typestringtrue
valuestringtrue
actionstringtrue
__vnumerictrue
createdAtdatetrue
updatedAtdatetrue
2.1.2.5.3.1 Field _id
2.1.2.5.3.1.1 _id Tree Diagram
{_id}
_id
type
{_id}
_id
type
2.1.2.5.3.1.2 _id properties
PropertyValue
Name _id
Id
Type objectId
Description
Dependencies
Required true
Primary key true
Foreign collection
Foreign field
Relationship type
Default
Sample
Comments
2.1.2.5.3.2 Field name
2.1.2.5.3.2.1 name Tree Diagram
{ABC}
name
type
{ABC}
name
type
2.1.2.5.3.2.2 name properties
PropertyValue
Name name
Id
Type string
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Min length
Max length
Pattern
Format
Enum
Sample Hub
Comments
2.1.2.5.3.3 Field type
2.1.2.5.3.3.1 type Tree Diagram
{ABC}
type
type
{ABC}
type
type
2.1.2.5.3.3.2 type properties
PropertyValue
Name type
Id
Type string
Description
Dependencies
Required true
Primary key false
Foreign collection events
Foreign field notificationEndpointType
Relationship type
Default
Min length
Max length
Pattern
Format
Enum
Sample NET_DEBIT_CAP_BREACH_MAIL
Comments
2.1.2.5.3.4 Field value
2.1.2.5.3.4.1 value Tree Diagram
{ABC}
value
type
{ABC}
value
type
2.1.2.5.3.4.2 value properties
PropertyValue
Name value
Id
Type string
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Min length
Max length
Pattern
Format
Enum
Sample deon.botha@modusbox.com
Comments
2.1.2.5.3.5 Field action
2.1.2.5.3.5.1 action Tree Diagram
{ABC}
action
type
{ABC}
action
type
2.1.2.5.3.5.2 action properties
PropertyValue
Name action
Id
Type string
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Min length
Max length
Pattern
Format
Enum
Sample sendEmail
Comments
2.1.2.5.3.6 Field __v
2.1.2.5.3.6.1 __v Tree Diagram
{123}
__v
type
{123}
__v
type
2.1.2.5.3.6.2 __v properties
PropertyValue
Name __v
Id
Type numeric
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Subtype
Unit
Min value
Excl min false
Max value
Excl max false
Multiple of
Divisible by
Enum
Sample 0
Comments
2.1.2.5.3.7 Field createdAt
2.1.2.5.3.7.1 createdAt Tree Diagram
{dt}
createdAt
type
{dt}
createdAt
type
2.1.2.5.3.7.2 createdAt properties
PropertyValue
Name createdAt
Id
Type date
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Sample 2018-11-21T11:56:58.957Z
Comments
2.1.2.5.3.8 Field updatedAt
2.1.2.5.3.8.1 updatedAt Tree Diagram
{dt}
updatedAt
type
{dt}
updatedAt
type
2.1.2.5.3.8.2 updatedAt properties
PropertyValue
Name updatedAt
Id
Type date
Description
Dependencies
Required true
Primary key false
Foreign collection
Foreign field
Relationship type
Default
Sample 2018-11-21T14:00:39.074Z
Comments
2.1.2.5.4 notificationendpoints Indexes
Property _id_ name_1 type_1
Name _id_ name_1 type_1
Key _id('ascending') name('ascending') type('ascending')
Hashed
Unique
Drop duplicates
Sparse
Background indexing true true
Partial filter exp
Expire after (seconds)
Storage engine
Comments
2.1.2.5.5 notificationendpoints JSON Schema
{
+    "$schema": "http://json-schema.org/draft-04/schema#",
+    "type": "object",
+    "description": "This collection carries the contact type and details related to a specific event.",
+    "comments": "example : \n{\n\t\"_id\" : ObjectId(\"5bf5480aa305f9801a6d59dc\"),\n\t\"name\" : \"dfsp1\",\n\t\"type\" : \"NET_DEBIT_CAP_BREACH_MAIL\",\n\t\"value\" : \"deon.botha@modusbox.com\",\n\t\"action\" : \"sendEmail\",\n\t\"createdAt\" : ISODate(\"2018-11-21T11:56:58.927Z\"),\n\t\"updatedAt\" : ISODate(\"2018-11-21T14:00:38.989Z\"),\n\t\"__v\" : 0\n}\n{\n\t\"_id\" : ObjectId(\"5bf5480aa305f9801a6d59dd\"),\n\t\"name\" : \"Hub\",\n\t\"type\" : \"NET_DEBIT_CAP_ADJUSTMENT\",\n\t\"value\" : \"deon.botha@modusbox.com\",\n\t\"action\" : \"sendEmail\",\n\t\"createdAt\" : ISODate(\"2018-11-21T11:56:58.950Z\"),\n\t\"updatedAt\" : ISODate(\"2018-11-21T14:00:39.077Z\"),\n\t\"__v\" : 0\n}",
+    "properties": {
+        "_id": {
+            "type": "string",
+            "primaryKey": true,
+            "pattern": "^[a-fA-F0-9]{24}$"
+        },
+        "name": {
+            "type": "string",
+            "sample": "Hub"
+        },
+        "type": {
+            "type": "string",
+            "sample": "NET_DEBIT_CAP_BREACH_MAIL"
+        },
+        "value": {
+            "type": "string",
+            "sample": "deon.botha@modusbox.com"
+        },
+        "action": {
+            "type": "string",
+            "sample": "sendEmail"
+        },
+        "__v": {
+            "type": "number",
+            "sample": 0
+        },
+        "createdAt": {
+            "type": "string",
+            "format": "date-time",
+            "sample": "2018-11-21T11:56:58.957Z"
+        },
+        "updatedAt": {
+            "type": "string",
+            "format": "date-time",
+            "sample": "2018-11-21T14:00:39.074Z"
+        }
+    },
+    "required": [
+        "_id",
+        "name",
+        "type",
+        "value",
+        "action",
+        "__v",
+        "createdAt",
+        "updatedAt"
+    ]
+}
2.1.2.5.6 notificationendpoints JSON data
{
+    "_id": ObjectId("507f1f77bcf86cd799439011"),
+    "name": "Hub",
+    "type": "NET_DEBIT_CAP_BREACH_MAIL",
+    "value": "deon.botha@modusbox.com",
+    "action": "sendEmail",
+    "__v": 0,
+    "createdAt": "2018-11-21T11:56:58.957Z",
+    "updatedAt": "2018-11-21T14:00:39.074Z"
+}
3. Relationships
3.1 Relationship Actions to triggered event
3.1.1 Actions to triggered event Diagram
Parent TableParent field
events _id
Child TableChild field
actions fromEvent
3.1.2 Actions to triggered event Properties
PropertyValue
Name Actions to triggered event
Description Relation links the actions detail to the triggered event.
Parent Collectionevents
Parent field_id
Parent Cardinality 1
Child Collectionactions
Child fieldfromEvent
Child Cardinality n
Comments
3.2 Relationship Limit to Action relation
3.2.1 Limit to Action relation Diagram
Parent TableParent field
limits _id
Child TableChild field
actions triggeredBy
3.2.2 Limit to Action relation Properties
PropertyValue
Name Limit to Action relation
Description Relation links to the limit document into the DB which has triggered the action.
Parent Collectionlimits
Parent field_id
Parent Cardinality 1
Child Collectionactions
Child fieldtriggeredBy
Child Cardinality n
Comments
3.3 Relationship NDC position to Actions relation
3.3.1 NDC position to Actions relation Diagram
Parent TableParent field
ndcpositions _id
Child TableChild field
actions triggeredBy
3.3.2 NDC position to Actions relation Properties
PropertyValue
Name NDC position to Actions relation
Description Relation links to the position document into the DB which has triggered the action.
Parent Collectionndcpositions
Parent field_id
Parent Cardinality 1
Child Collectionactions
Child fieldtriggeredBy
Child Cardinality 1
Comments
3.4 Relationship Notificationendpoint detail related to the event
3.4.1 Notificationendpoint detail related to the event Diagram
Parent TableParent field
events notificationEndpointType
Child TableChild field
notificationendpoints type
3.4.2 Notificationendpoint detail related to the event Properties
PropertyValue
Name Notificationendpoint detail related to the event
Description Relation links the contact method and detail detail to be used in this event.
Parent Collectionevents
Parent fieldnotificationEndpointType
Parent Cardinality 1
Child Collectionnotificationendpoints
Child fieldtype
Child Cardinality 1
Comments
+ + + + + + \ No newline at end of file diff --git a/docs/images/1.png b/docs/images/1.png new file mode 100644 index 0000000000000000000000000000000000000000..cd970b4b2d21372089226c6cc8a8e64e2a7a0758 GIT binary patch literal 25288 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 literal 0 HcmV?d00001 diff --git a/docs/images/3.png b/docs/images/3.png new file mode 100644 index 0000000000000000000000000000000000000000..4739f35ec265f63de5e87bb423a0098ec1d9250a GIT binary patch literal 50369 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 H9lrQKnm;U( literal 0 HcmV?d00001 diff --git a/docs/images/4.png b/docs/images/4.png new file mode 100644 index 0000000000000000000000000000000000000000..a6bdb7e893d51c873d33e731c50d8cc049838e24 GIT binary patch literal 51093 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

pAR>FB`WnVAM!m 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 SJNHn)p97lu8kuU=SN;#g+xX4^ literal 0 HcmV?d00001 diff --git a/docs/images/6.png b/docs/images/6.png new file mode 100644 index 0000000000000000000000000000000000000000..00091e17db6396d7e9a843f42e7fb960766ccae3 GIT binary patch literal 15490 zcmeIZbyStz*Dj1GDBU1kk^&;3fSU%3E&f*@{6x*JJpknS$&-mvM~ z-`e8y{CwZ|@$m<+?|a?rUTdxy*SzN3LCT7c@UW?{(a_NFo;;ROMMFbZ zLPNVEc>@z%v0;((K|^CedmNo%Vbeqw4 zwke1tT|$B8i;(><(xyz|dsu`-L_~cXag4!pL4kpR8T7bHGT_JY2ORZB;QIgjqft}# zt3<3TNvtaNYd*2IQpUkZ}?|1)lMK`7D%#_&A_4ZfP;vy@`sFyfdh!}CtSlyY{qNq%x~ShzV1H=GK26!h(aTtK~-}|4THTu zvNwLEf^DF4F*1;nw7;gpnj+v1D!Q5u3*fls8~dp1U>v>mnb1BH7~0F9At2HisEI(n zxU1G?O49oUQE->i!IzLQ>#a;Ce^AAzYov^cP5o`AA9=~HB&Dhx@-81&rrz`=4E&^n zh98_(H%a#9r@@1&@A2BWnXem=ih@CFTr*E(=HJc*nT5#vrpsXLS7R{>e9ImRgAa~V zliay~SR#ZW{#c7esHWRxH|sGcdV`sNOxa5f1$JvUcgSErr*ChBwY)zKi(ZTT1G~wO zi`(ZxCdwIu%K6bMoEiph)04~VQG}K}b?ebY6zET@`K+H)J*Sn*czo|ov+$z8uN~50 z=k4uV$vZ$v1RkNDT$1`-(D;~&*T`ap8n6_ z5h!_U_MEVZmg`zCt2;ivxfYeZiS|R5Wifz~Tf?$yJnsz@U1t#I$xRDH@OLdLmI-8$ zC;kMP8o5BK%clfWM%|(>`#rB}BLk*$$|479I5e-1F9OZ&uO81k$FAG@^CDo@X81Q@ z;7{O^_iroz_oKv(EA~IGT<^4-Ay$lk$iG=WeV9v+X|Iz)JzOSfIqGFM^hxnM87I4*8p|2-D(jfsWeRM;pq~qB;Ss|!tq7bd zulB%J$z(z*DDV-KNX8Ubsv%ELBR9cY8ds89BJxM=u9CuD#(a2^`XN_nU~O-FhPvet z&&XxT^3OX)u$6*?WcY%NEuW^U&=}{LO_0CB`|YI8ue0A_fZ%!1+`>+J>(7?1A|X#i zXn~#@X5B8yLgF*+&RJ=3>qCAO8dckxwO48^#^~l;doEKh&JC8Zd{o`Zb{@omn!{`*?rHn)4nH?kg!3jz9nSN96p~I@bE5%n%dc2j%eB2YNah) z%xV&>X^ottK1eSK0Vy9GC0Anmt{E*vXt%iaWU#nhMj;VX zW{-^>+M3SnjL9}?W1MPl!r1pJH(Z{kzBhZx2f<2Wj1D}V_l8TWG1;7K3$_;N%}?qy zL>i_Ns$Gkcq1+mT3;5diW*;MSKXVutVjFpvkm7{fi z(v`B=kWz5sVa-SB>SLVpr7LjYHm!Z65iu40XYboOC(gUl6)dHP`Y(9ahhHYAu8+nI zF#5iOet({#2EUG-eJy>Y@FLTxtY)NbjZjLqD3&4KfocbeE$dchvVGwZO6N2#8l7*X zAs_42<8p7LDmw2NVRzdz_aWV#z3(}QW}xXKoAK$UTCt;uD8ym!Zy)_3&*k%|Tuz!Y z!Zn=I5nCw;d(CA439~3=hU`<}EZxVqkrhk=u?yq6bw>vC#AlkwPf(W@QAZgA{vU8- zCbiCEudWQNsEKmI^g&4VtwghvruLAUhJhxVc`b7XqjkZAdn8qXFX}tG>j}{KOeBh)~7wg-IL1d>(SI_7rn3?|?sRM++7LP72Fn%o^cx4n4(k1IPFTUsxlbP~e`jfwm! z&_Rqlqu&rsxHr|PW^LG`mh40stY(Gp+WdCgg>$T!`*gz%W|}ns(}YTGyC~+oK~Ay@ zu^@{*w!mG4Eu%jhcFkMA^l77(_(qbmMsJdU&a@2|s!5?ETuysr_=7GZ+#pZklF2R!*lhPTe*b1#OB|AxgsjwY{QMoX`!K36ZVMbO9N?| z(B1Ly{a1XCZ$>Vk|Hx*To^*@`@gjgt;OrPj(El~-7=$20nD9X7fNo|ar5n~UQphB- zJmUx>aXTaZ9HfpAMMAPJqMa_dn||wpMU^q)XT^8lbULFJ_Xd)eDKDM;)Afw%-CHHg z`ypQ$eg~k`Bey(Dx<(S&9_1~>wesL7*0Y+28WaWZA5(SR=KV$a4ezeYO8O%ZL!#z? zE<6Md$=Vc$LJ_#2zHx3bmuAY@7lnyh}Ra3kX(vEOj2t*GVJ zj)&;l#si2#tXIBCLd7^wq_rO2;HE_t-JiqO-9`-JiZ}{ejTm)))`y~3yCMks%Ca{x z#qldMC_eJ4iwBw)3Op@CngG=h#34{3#ma>ne-j4uja;;{I0I7C?1PW!vV zqQt2mDlj(~v(E+9;iiP1OUcO0hs*^nh5R4=Y1>1nm5 zqW?C>}6#~`0=P~ zeW%jtkrcF)y1QHOsM_@f)4&}MY*!DUdPJXg1mfn}uTDCkXGP02Z{jM2#$ORssc-V6 zPDfKKRCc)A3SUTq^(CcRkOWLsKcq~}x(el?Nk7Je`B*#)AkN;yRT5pdFiy(GQrFfW zY-<2{gq+AUMXcwlTJJhD6ZZRzkn{*VC2t>9dB5nqdXQDoS(xLwmTi(+gM+YOur=zQ z%ZyVtSlFb*wpZ?MGN2N{y&Wba|CI&Or8+WL&;%DymCO$hWamoegFO_293#s}X;*cu zgxp~L0ACN`w2@O6yeC)Z570))O%`D|y>)}#ge_qGySwo@ED7dUCpcpw%b5{Aea<#2 zcQX}WI$IiqY6_(3u!+INc(#1l+dS>IA?;;ICNJXN#yhMb&Lg()2O7o-R}4O#y&T+p z;5yU{zoqe?9T6zO*8rB9!=l?zozSo@EXyA6l@LplVlV8zJy-da7oQ;1kT{K#!55o( zta`jVm&r1dQ0lEIYs4KBgG_8gmh@9_Ht*-2WF?L~k|8Ar$Dcw5GrQH2tN%`qo=8PY z#sp#lO%|pu_xyJ!QNYZsCQn#a_5sY5Rc}%AXNxPgUyu2B21=M&_y1sm)qF9EeM73d zHODkEvOck$Nqp-A8IQi5za124=V%xt&ggbtv`ARD9nX~y;i9S$FJkzriNrVbPg#$w z9qEy+_TJGx+1^gAKCY6$tNGzO#Usl}FhK@VoK-_IyotBE`3woY z40{3=A8k1L-p-kuUd30kThCCZg7e0~2QNIX679nmG$MNCNjI)^TGHSecwl%`Z&Ngq zbd6Q)cjWAkVSEk_>l}<)5d5HY>x1p|hmPDO!V$6?jET=Fqb9cJO-xmOHYeTw4H*?L z(pCGGUGIMG9(lM zK43^bMTeWg{OFLEzn@H~c<@HgLk<%uGIS}kK$GmQFU`&_v{TXbUim6kwdrw>7mIoK z_nOYTPqbMpGL}iYTy8!#9^f5s80bWNuDqxm8FlJW8(FlrjM2uf6h8j39p?4s*nK(F z*==8C+iB#Ce%dQxZ;aZe{arLWLjrFi_LU(kea+1|bF`WV>mp?;A%cgvmUl^M37o%g zPP^{3yR9qCl#Oeu$&|fU$<60@CpLX}yK;_$6Az!lL{7rm4L8IpVk3smG`olUxpGKD z)14YhVU{L!+DwP5c@q*GsnU19B$yi~;gCJc!yIu`?ut_mS-R6jmw;HKT#@pN;7lI3 zn;mnxnH8inR43;loGPiHo-RtB@rrvh&WR-$4{C!atR?}lm=%EyH;(jO6+73S9`4q} z6-sq03Po-LIl&K>uf1qRqmvL}7hMkyExW8UdQ5h+ILw0mtcLt8H6x0z`S#-~)hzYZ zUbqemIYQSet2aycZzxTPi3>uU)>B~Xc`1Qnr{8*}?c~UPm5F*rW-IX2`7lXE-}~QZ zf#4;+Iep%`c^~5cHDK&OJwR2}hw4satocOntn=NXeL>mY)>BVe5r}M3{goe?(JFb@ zm!WdEPE!NM)`}6BQCbs@Skx|`gUzgUc#E7yWl1b@AjkYRly^&A=p>nObQR>MDeE@z zcNN2Xjz!5HnHVm=!)Z0YXatg4;}`o-IRbegP}Ezhjwnb8aD5mMZQ~Ek4=dR^^vFN{ zzIcMx|vQkBE{Sqxu1J##eMc7!_s(^wxuw} zUk;z%d_`Lx@K&#fHD_7cK!e&n^^C|{_(uO(Q03q#nM5E2A z>r(4z+z_L$cQSj|69Bkfs72}O=9Bv79rZ-7))-NI_iQ1;b*Ziv6PbT4P!{Nwwg z)E`ze1shU``1I#XefHA|hx?P~zB@J@56oNO0)3kNUY_FyRXiSp9#aa(UemS-dqdP+ zaO2WYYcqyd8IRR#%-3Jd)jT*Af#F`gj0JtiFpJk?W#clYRX6)i;+R(EJ?fZfVaa{7 z^(5_{s|E*-uw7n1|Gg6aM(Q?dbnUb-3T)PrVS^iJ-Z)hTr^v0H4XLWur9Xblz8*QeBjS}WEM=IC3l6%Br z<)Cpz%N)Xuuyn~i8}W6hqMIr?DePUHZitnK0ujnh8qvYt&CE)Y{@%oi&LH1ON%p1# z*44^16tgHStCb~eUn{|4Bw@a3va&zBOqcLQnu>n2b}~$cb6km&U+VsFdw*0P8fP-)l#?iSYK%Yk zdc`>n>>>Wc31LVx3Wmf%0$#nH<5-z!ZW|sUm89Q3 z6+8eR@$ljCY-1Iwr81CTr*qbBpG}mLHra>*d zM}fLvlCvnuz1lH;4bf{Ye=c%|#JK{%xXv*pzH z)Urlf0aAkr9u#J|55bThrK*nk9jd_t+SqZ?ySDRlg35uJ7mO-netzCLPOWeO_sj8o zkkH5f87`)y?g-!_x@_M|)>k5Xviy<7TQ^}38FeOpBY^Y>EKQ$7KAUsme;_Oeh^Eg6 zPg3>r58d^h0mM@Q5Dx_%xSpOD8MWe@#rZeCruKngW-d-it3~4I^FuW!GteG>)^lOek z%W_ui7c8W!@q*N>rX@XouIrHng%!%aHEoKpuFAmBi`hwc(a+hMr$TY`B8!fIJrRpv zcIlr5Pzuiz3ixF+*0kxP*Q4>tSS-){*EJ&gNk7LDTa@99WTr&jODwVBpM3@hh0d~w zpB z&h-+WLzP_%^QIyvXedp{QrFn{w9LJ}Y6pDp7m5-Zzb-Z|Hit1rFe2~%@GRRLwnmwqKMmOJMHLuMNaq=vCo5LfL!2Q^WjdR}oMImfac% zMt<1L8ZxDGKZ+5&6E+n3Pc4+^O}rXyQP?NQ@G9(ubobt2@4q<4%%+ilrhdY2;0%W| z<+iesIVq;5iQ}?jj#i-|6R+sWO3HvID<|q$dmADH9x`Hfbt=^D4x=(KG73rS8^Qz3=+8@*bigQc zVF$!&qAYj$v}m2Vy&Bta3jdS`c}o_qoi?h})$ln4%La zXU|KIDSpw=_3+7Efr}hiJ;)$ai4I?3oV+${LcInwifY8g*fj3$vDlEL!B&?Jc zCo$xtTq1BQ8-~oeU5qwi0;P%qnU3@@?!(xusY2RehZe{Igc2le2(v`J?jP#=l-*Yy z{z@P>Zz%DLH+IX8sfrN1AM=APL-vc8&DW0R1zHDT^V*I*0}HQcD<wDE@(H2%IlT^!i`wEUT_xE&F>5=) zQUbNjEaeb^r-IaBMkzo_s-#VFxskWib*z^w3$lf^ff9+Rbj+b zEZ>YU1)9Z|@~P~NZx4h|_S}S>oV%C91?D|q*K$5iP{L*t&9DQ98~rI^n5-zt?UTXK zpm?MMcULUd=@iLT{ahztJCxlns;`?IhgQpp?6cdnFFw`B#mdx1`K59Oeu{_9WzJhX zXqI3~c%-wvET&|*bPCxYMNB#B7(tU!;TBUIqB0xuqV8Ia7*ldV;7{mJxQyey{}v!Y zx+(W>F8?Q&{g-6mgY?CR{-2$I^d*RMEz#UB3Je-C-OtzcTTNng{WY?mG17(4&(kA? zx<%Hx+|TCeA3^9^vox~p#!O=7*7cDh_pC;}xnGpMJlvX+&b0h5$$vVU3!>}(&a4l? zuYS2Z%{#61;j-_^=PKsI8rO!hBf3m?Hf_DAsqfn~8HJ1b(_g>?j>^4G@1MZ~#D8B2 zrM~|QIBnT`Uz)*q`$_v&gT7>0p^Kw=hQ!YAXlOK|s9u1Gc4Ii|6D>NN>Z?U5nZi!xj`7?jDT zX8+m7Xra+Gg66+48&5t4(0krw`}&$#QFLEj=XIYf^lYc~(QZw+_=ONpsqGJ z>bFQZypf>Cg$^u)U-WYt0Er#VEA`7ldhMDGFnx z$2(x-i>xqAx+A(gyu!|R>2J^)Mtd|qQtJ;Q z+3d-Be!~9p*d3Yr#?3&p*EeDQTnRlumIpt`G^)#$MCaNId3+k#^?n%5{SFEI2Mln zXMW6$sW&st7!*3*N?s=e(ACr!!@v9Rz@`z_^`w(hGTx2I{Eq0w;+2R(K(JZ77ujhw_uhD5D#Kkk8RB1zi;E-W9Y& zq1}M;1RWQJ_VX=oyZJNj*-Q#WcRYAZvlm1jhI$;A1#)G+l+B;q-$$&k!5(bvYmy(^ zOZV<8$$oQ*N+otEQNGHU!}?r(vf)djD3Q{4bNn!*0q0J&H;JNt)jxvUwzv!e0a*bm-tN zf4SP9T5-19u`~R_Hgv;nc|Ny%x?wR!KP*))=2!F!n+RP+WBY#}+650a;@y9lUvtpl zG@=`zsqf*mFf-GUonITgo>ztMwpmJHQ!$4*wkSh)-6Pp=-dRRKq`yI}1I!vMjW2vH z;dF8t-YZS;B>O5Fo$Cst`<7!uBVz!~yBD@K8W!C1zW)e=c6BauvF{PREK|e}u=bGs z^^tkEnbYaVwTIvj-Eh8sxSFCcMvx48xY)_cE)YZ~|J7I|e-Fgxi%lg~jE(~qa3B7tQ5EM06LUh{5=%;s6yGkG zv2UZ~L{b4C+yX}0^rjX;tK+(wiZbLvvpy!8H zR2wZa!GXE1aiENZ00Kwbsy(&QaUL^4jSqXUCB&s&a-)^r3&IzROXm)ktUg})QbZB) zLo&gP5T!bbiH!s5|2Q`L`G=Fx`Ou^Om|9Qn@H)KiVS=gg3>l$PKb&CD1}_=-erY8`FNtx=z5v$ z3_jyE@H_15gEv2Ug4lO2YbAYWgX>NpsafoZF+v^p?qWxwVKX*BHVV$>G7&A8rIjVy zonOtlZ)v1%0Be_Vej*dm`scgH`L@3MP|pkTe8!WsD%a4p!>M5ncugV$t4C} z;)Fk<#_-mZeX91-^l8Qzk4}1+>bQ6ED`k4)-Uw3I?669vz%1x!B4_2C2dVZS>5-y^ z(%`cA7fl?*X-eOVkQ&=Tu0C@NT*vkWj7MkF`hTnYBKI{XnV^>`V0{c^DI^o{&;sP&iE?7RK09M8j=XB`j!y@iawVL4pdJ?0*asICqNvHufg7%bIXB@nhq`9 zOe*vf+u_d&lO}Z>+3TJaDkK>t=qk)O(mjb=E*Y#EW~(CFwl082b#jHqIbCRD3lgA# ziQ>2a?2q3V%uJ*P`fa>@v>8J`=Si?*5|8m=dW1n_<$l*<{utI{vEM0# zors>3vH;m<3~J|k-(kqL;j?QS{&kvJZqQxjbw_~y5!-aI_+*Ts&ZH$po=6cn=q{Du z;1~1u;@fRh7rVqxB)?gkKh}ti_CLx38n4DPaSh3&{Yp?$Z@;PBdDbNSgg@XCyhCoG z!24_A<;wU-Y3s<`Uk>Utrz?MG2%u4Bzv zb5r7DRr2U8hG!0y^kt5gZOv@k)+TAeX7B>qeZs%@^)EvI|DD|bu8VhMp8MVYcJ*^| z;&-k-t((|v2lST!jrOv!;1Zez{E1RD<;=-_fBNBYS}y@Ds@LHEsz=T?M+>i_s769` z@VmA9>jRS*8B&+a=07vfwS5r*g+>%Y7}0YxINn_ZYz{`5^#p5`K=Naw%U(f5IdtdO zumr#w(Ol1&s%|B>{d40@3+1cVzUf2RnjL?`59{#~tkaER0$;*Wx9yspm6Y(m(MdxI z{?yI~+CH;CSjO);z*YofM4^P24IbK`yT05v0^k-!ni7WewqI=3TPJ=31#in>-$m5>*Gel48kfwg3*=? zrl+2)Z1`I$0^JwqGf3K0RV+6iekscIWNlb^^bpQ!gFms zaKa(GH_B|Lf|nD#=<=&~v7NUju|}NcT5*M`g|hrd?F-``P-<(gdQu$fI!NO>@yZb!U7(7x`*WhVl)&;sk{N z`CWj#I5ir|(x?ECw$N#PIAU0u6!TI|k~hu|XIlO7s9EvLY27vo+l={+y5H3LATPF& z(Yn(i7wdHwIHly$Uzi%(+JD?;^J9BYRZW1GV3-9vTjH3~+bIo|Ki({c# z@2l`uud`P6n2sVjs^IJN?u3>jdCi`un*m_i1^`4C$uUuJTuQ{?5G8*4)6rJ=MBVvB z1)>}1Kffx-0Is9p{8{(*8U9w~I?vc5Vd%BXR~4MJ+^@Z&Fz{Q6#$F|S(hXBb?%qMZ zbLT?0fw)re}FNLBMK2CM|On zG#3JV&Ay`Nz9Z}YizMNP@N#@(l|xV8gl%1DagP}FZOuHIW6_*If6#*jdU#bn=(;R^ z68aU$4Bs12>fm7+%o^fEDdw-N?7WY<*nRIV!8~>{P+E)tTIZWeo^%Cu$6xB|i5}6s z1v#OHGlvY~GDBcD+p3tyr*U0Lf*vo%n8Xl2xl?<@gfF~6cs4b2{&hn&aOt17qI4bT zX{2t8)=>jRtv5*dI(U4{x-ShEqxo(tjSpZmw45o87Lx+#8VXzKZdc(Z3tu|lTVIx4 zMge(HXgzUnEHxw*wDMiW7eWK909dk${^ca?3odlgJi5Un`d+%u97dZIbw?NnqecYN z*zcqO_yn7e;Ho=YykkG8@~EB1XPm}mAp#^{_l;vD2T3j+%X6{4B!W2~0MjVQyQ(VwP==|1UV_Jv%oFSH+(dQ;m}NIFvv2CV1T(P`?~`+>*PE;lK_sRY@%CU(9Gj>Tt* zf&BekW;*PnE~d)$OGQnA*I%c9i9A1C#`?vG04$V2b1+#^2gBNBs$@o53-`MNe{R9J z-(~Abvie%vnNo)2^3`}RQu=-Xm%&kmtL@#0{~(0GBJBrgy9a&V0#+yj>7MO07wR7H zf;WO>q`;Ga3t>kCx8;?@&jo;EgN&K z?IR$EfQt3;YDN3eBad2(I<$oHgTG}lYB;eQcP?=Qwhkzf0iWS=o-xP#Qbkn*seY0`3-JxsooKI9W_FM zA)+)D^l_q&y&&G>U<^=0?@@{l^Ei0^O_c*Y{*R_|l}|ZS^Hjs7z%?`wzwtqM2>?So z|E!R_2T=gf2I}r6aDAhtmN9?bO+!WY!>Kn3;2PT2_hq_x$8KR@`M~WQqfAu%sGh(M zT>r`AgURseY0|Uo|JY~2SBIY*P(Y`G#p3*CrGej%(Zxjd<6@&7(BnL>;j-6 z%Atw;bH}1I_|t7ou&kw7f{R%KxDWlA1elrjk3%G;=cJ}{ui(cZyVM?)7XTRn5X4!9 zyEX^n>Z0gZ_JYf??RLQX&4U7Qq%LOH%hQ9+UMJucWOOg(_t69}RZ!rsfiJh7_B^%T z_`VE7xyGPBe&4ow2Qy4$jU6~<>PB8T;6s6gGT1I1D_;$W`M`=r;UKz7fzV+M7;QqS zSwJj*0ueFi&kD*cM|f!Leq8x|%Bn5>AiBQy!50CpOUC0;ZAnR6Y2VPGSidookWYBj z_hyagPd@{JEM0zqM&$#Fj}|(dbTo;%ORkzpisCJSv+Sb0+<)SCz_Y@?fM{zbKvg6c z^bG|DuhYIJL~)E`sf1lPm*W^t0Ble~#jlE;7HSZ8Iqpx|T}AB=lnJE&iqCC%wI>$t z3(WNOhjmDgu~gsj`EYT3-4T0GYX8aOXI6i?HH@hq&jWt=dZr{-Jfw+a~4iQ z;f@&%tz^dGLY~vQ~jeZ zexJnU@nC;(7bDQn0A-Qc%DfE+^u_%V{Z^J3op<`DrTUEu_or@E(Ih8b#v{^asPc#B z{C&@>Ub}2w@3eDSt7tMWjuViS%khr*ze^H;+b-&0q~iPo;550&cdF`6t9TViK)87z zb~Jl+j3u<`bh|Em!lnwZmBta*bNkSf0LVRj<742%KM+gZYO0b9l`I64-9{1phK>Gs z5jd(SZdUwaUYsdb-VoS$s~?44p!GyqJI{NwZ7roU<6Fd9C1ykyZ~`PDV2HgpiUPk~hImq^MF&b0y&EQWVur%N6)VZ_!7w<1 z9nB+WbN=z~j%;+$*(*BGIlrUanG+vl+z+{7+{VJQVX+#xF z{=)DrV{&(Dd{M*Kvh!O&TJZ8FCJI00fB>IxzVXT)c$i-u`WJlIe(1HQQ`^7T#E-E+ zBIqBZ?@0+*WGX$cbEj(H4A8t$Q9r-#LPXDPQ?MEoAV$lqsXajio~@cW=dr0fcRm}^ zKPT%JJ=AeOC{AdOeFY0bmEqc$!<$fLwf!MYBXAffP|1={lstQBT{2&tH^==@8~^ka z2hv9?`?5+S9G~0NC9` zLE13krJE>Zkq&d^L=_uQ)eY2yoS(2gf$|yx%DIT*6MNL9utDQ6)^EG}U;lF4|MZIm zL4@drAdSu?ZT|gDJn(&orp(q7_hW}MahJi~(lDc%d*HjpXisDnW%8t6zWaXwE`F9} literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..0f5d463 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,826 @@ +{ + "name": "central-notification", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@mojaloop/central-services-error-handling": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/@mojaloop/central-services-error-handling/-/central-services-error-handling-0.5.1.tgz", + "integrity": "sha512-IdDCVdD5RfNi/n5xUJBlm5u4kp8WI+Qaq0lB2cdPtuC+gMx2BmuDIQPCQj7RRKAeOe1fx1qIgS+WXVgEStqhGw==", + "requires": { + "@mojaloop/central-services-shared": "0.4.0" + }, + "dependencies": { + "@mojaloop/central-services-shared": { + "version": "0.4.0", + "resolved": "http://registry.npmjs.org/@mojaloop/central-services-shared/-/central-services-shared-0.4.0.tgz", + "integrity": "sha512-bqPVrgxgxdKH5G+oLnGEXf5JiCUWvJj1InIxhhbF7jsu9+7h9HBK2+zBwThzXFLEcq/SouZ+fKgpLrTAQEr7fA==", + "requires": { + "winston": "^2.4.0" + } + } + } + }, + "@mojaloop/central-services-shared": { + "version": "3.7.1-snapshot", + "resolved": "https://registry.npmjs.org/@mojaloop/central-services-shared/-/central-services-shared-3.7.1-snapshot.tgz", + "integrity": "sha1-yN7Yg5Ihdar5OlF1WRUJYZ1VzXs=", + "requires": { + "async": "2.6.0", + "bluebird": "3.5.1", + "debug": "3.1.0", + "events": "3.0.0", + "node-rdkafka": "2.4.2", + "winston": "2.4.0" + }, + "dependencies": { + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "requires": { + "lodash": "^4.14.0" + } + }, + "winston": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.0.tgz", + "integrity": "sha1-gIBQuT1SZh7Z+2wms/DIJnCLCu4=", + "requires": { + "async": "~1.0.0", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "stack-trace": "0.0.x" + }, + "dependencies": { + "async": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/async/-/async-1.0.0.tgz", + "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" + } + } + } + } + }, + "ajv": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", + "integrity": "sha1-z5fNreccY5mpLG1sQXc4EpG3gaE=", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "async": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/async/-/async-1.0.0.tgz", + "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha1-8OAD2cqef1nHpQiUXXsu+aBKVC8=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bindings": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz", + "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==" + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha1-2VUfnemPH82h5oPRfukaBgLuLrk=" + }, + "brackets2dots": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brackets2dots/-/brackets2dots-1.1.0.tgz", + "integrity": "sha1-Pz1AN1/GYM4P0AT6J9Z7NPlGmsM=" + }, + "bson": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.0.tgz", + "integrity": "sha1-vuV9H7aodxNHGvTjK8rjbegUtbA=" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + }, + "colors": { + "version": "1.0.3", + "resolved": "http://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" + }, + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha1-LR0kMXr7ir6V1tLAsHtXgTU52Cg=", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "config": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/config/-/config-3.0.0.tgz", + "integrity": "sha1-pxzbsi0iXfnv8guVF41lpjxFI2c=", + "requires": { + "json5": "^1.0.1" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "curry2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/curry2/-/curry2-1.0.3.tgz", + "integrity": "sha1-OBkdVfEGC/6kfKCACThbuHj2YS8=", + "requires": { + "fast-bind": "^1.0.0" + } + }, + "cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw=" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "dotsplit.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/dotsplit.js/-/dotsplit.js-1.1.0.tgz", + "integrity": "sha1-JaI56r6SKpH/pdKhctbJ+4JFHgI=" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha1-mgoN+vYok9krh1uPJpjKQRSXPog=" + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" + }, + "fast-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-bind/-/fast-bind-1.0.0.tgz", + "integrity": "sha1-f6llLLMyX1zR4lLWy08WDeGnbnU=" + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha1-HvievT5JllV2de7ZiTEQ3DUPoIA=", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "healthcheck-server": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/healthcheck-server/-/healthcheck-server-1.0.0.tgz", + "integrity": "sha512-J7iXk7xbB5vKaJSDz9tXRj763T1SdoGEVpvYDhdVS+4Pw+Qr+1fHS+upcS7HxBnlA0DYALfD1V6Sf/8L/hdcXA==" + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "json-rules-engine": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/json-rules-engine/-/json-rules-engine-2.3.0.tgz", + "integrity": "sha1-BS3CsRWzNNxRe269eZ0wMBufeCk=", + "requires": { + "clone": "^2.1.1", + "debug": "^3.1.0", + "lodash.isobjectlike": "^4.0.0", + "object-hash": "^1.2.0", + "selectn": "^1.1.2" + } + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json5": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kareem": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.0.tgz", + "integrity": "sha1-7zPELpAk3OUR7q9EDNaE868fx2k=" + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha1-s56mIp72B+zYniyN8SU2iRysm40=" + }, + "lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, + "lodash.isobjectlike": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isobjectlike/-/lodash.isobjectlike-4.0.0.tgz", + "integrity": "sha1-dCxfxlrdJ5JNPSQZFoGqmheytg0=" + }, + "memory-pager": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.1.0.tgz", + "integrity": "sha1-kwiRXg6XKEn++65vi8ldazUOc0Q=", + "optional": true + }, + "mime-db": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha1-C2oM5v2+lXbiXx8tL96IMNwK0Ng=" + }, + "mime-types": { + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha1-KJlaoey3cHQv5q5+WPkYHHRLP5Y=", + "requires": { + "mime-db": "~1.37.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "moment": { + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", + "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=" + }, + "mongodb": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.1.8.tgz", + "integrity": "sha512-yNKwYxQ6m00NV6+pMoWoheFTHSQVv1KkSrfOhRDYMILGWDYtUtQRqHrFqU75rmPIY8hMozVft8zdC4KYMWaM3Q==", + "requires": { + "mongodb-core": "3.1.7", + "safe-buffer": "^5.1.2" + } + }, + "mongodb-core": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.1.7.tgz", + "integrity": "sha512-YffpSrLmgFNmrvkGx+yX00KyBNk64C0BalfEn6vHHkXtcMUGXw8nxrMmhq5eXPLLlYeBpD/CsgNxE2Chf0o4zQ==", + "requires": { + "bson": "^1.1.0", + "require_optional": "^1.0.1", + "safe-buffer": "^5.1.2", + "saslprep": "^1.0.0" + } + }, + "mongoose": { + "version": "5.3.12", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.3.12.tgz", + "integrity": "sha512-PjiYpvITCjOLe70gHMksjZU31AQlu9bgbqFWE0AQCtliGxtfo2ds1XcNTgqNVRbyrMA/w6lX0aqFEevF9+xqhQ==", + "requires": { + "async": "2.6.1", + "bson": "~1.1.0", + "kareem": "2.3.0", + "lodash.get": "4.4.2", + "mongodb": "3.1.8", + "mongodb-core": "3.1.7", + "mongoose-legacy-pluralize": "1.0.2", + "mpath": "0.5.1", + "mquery": "3.2.0", + "ms": "2.0.0", + "regexp-clone": "0.0.1", + "safe-buffer": "5.1.2", + "sliced": "1.0.1" + }, + "dependencies": { + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "requires": { + "lodash": "^4.17.10" + } + } + } + }, + "mongoose-legacy-pluralize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", + "integrity": "sha1-O6n5H6UHtRhtOZ+0CFS/8Y+1Y+Q=" + }, + "mongoose-unique-validator": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mongoose-unique-validator/-/mongoose-unique-validator-2.0.2.tgz", + "integrity": "sha1-qYDmhjgVfNj86obXVO6yz2fmu3Y=", + "requires": { + "lodash.foreach": "^4.1.0", + "lodash.get": "^4.0.2" + } + }, + "mpath": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.5.1.tgz", + "integrity": "sha1-FxMVAfH/nm5PvI/6h1qnBltXdas=" + }, + "mquery": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.0.tgz", + "integrity": "sha1-4nZHKr1RCWhqFesqjgdh24E8gcw=", + "requires": { + "bluebird": "3.5.1", + "debug": "3.1.0", + "regexp-clone": "0.0.1", + "safe-buffer": "5.1.2", + "sliced": "1.0.1" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "mustache": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-3.0.1.tgz", + "integrity": "sha1-hzhV8jqoqVsVD7ltmDbtvFodJIo=" + }, + "nan": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", + "integrity": "sha1-kOIrzLjKV+pM03zIPTgZtS7qZ2Y=" + }, + "node-rdkafka": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/node-rdkafka/-/node-rdkafka-2.4.2.tgz", + "integrity": "sha1-kCKPj7HhCHVVvqgwaZ/VL6p8mk0=", + "requires": { + "bindings": "1.x", + "nan": "2.x" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=" + }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha1-/eRSCYqVHLFF8Dm7fUVUSd3BJt8=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha1-YPWA02AXC7cip5fMcEQR5tqFDGc=" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=" + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0=", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "regexp-clone": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz", + "integrity": "sha1-p8LgmJH9vzj7sQ03b7cwA+aKxYk=" + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha1-nC/KT301tZLv5Xx/ClXoEFIST+8=", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.2.tgz", + "integrity": "sha1-0epG1lSm7k+O5qT+oQGMIpEZBLQ=", + "requires": { + "bluebird": "^3.5.0", + "request-promise-core": "1.1.1", + "stealthy-require": "^1.1.0", + "tough-cookie": ">=2.3.3" + } + }, + "request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "requires": { + "lodash": "^4.13.1" + } + }, + "require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha1-TPNaQkf2TKPfjC7yCMxJSxyo/C4=", + "requires": { + "resolve-from": "^2.0.0", + "semver": "^5.1.0" + } + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + }, + "rxjs": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", + "integrity": "sha1-PGp/pCDoRKgTkPsRWKnsYU9LrVU=", + "requires": { + "tslib": "^1.9.0" + } + }, + "rxjs-compat": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/rxjs-compat/-/rxjs-compat-6.3.3.tgz", + "integrity": "sha1-KrO5rA2sDAc3SdVf75wD6h3yBFw=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" + }, + "saslprep": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.2.tgz", + "integrity": "sha1-2lq5NubqC7rpEf/sd1NL43DJ9S0=", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, + "selectn": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/selectn/-/selectn-1.1.2.tgz", + "integrity": "sha1-/IrNkd8/RaywGJHGdzrlKYUdaxc=", + "requires": { + "brackets2dots": "^1.1.0", + "curry2": "^1.0.0", + "debug": "^2.5.2", + "dotsplit.js": "^1.0.3" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha1-fnQlb7qknHWqfHogXMInmcrIAAQ=" + }, + "sliced": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", + "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" + }, + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", + "optional": true, + "requires": { + "memory-pager": "^1.0.2" + } + }, + "sshpk": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz", + "integrity": "sha1-yUbWvZsaOdDoY1dj9SQtbtbctik=", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha1-U/Nto/R3g7CSWvoG/587FlKA94E=", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha1-1+TdeSRdhUKMTX5IIqeZF5VMooY=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", + "requires": { + "punycode": "^2.1.0" + } + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE=" + }, + "uuid4": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/uuid4/-/uuid4-1.1.4.tgz", + "integrity": "sha1-gPoGGHSREL24qkfMLMIWfGMx9Os=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "winston": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.4.tgz", + "integrity": "sha1-oB5NHQoQPPTq2m/B+IazEQ1xw0s=", + "requires": { + "async": "~1.0.0", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "stack-trace": "0.0.x" + } + } + } +} diff --git a/package.json b/package.json index 4701768..63d9f59 100644 --- a/package.json +++ b/package.json @@ -6,10 +6,14 @@ "dependencies": { "@mojaloop/central-services-error-handling": "0.5.1", "@mojaloop/central-services-shared": "^3.7.1-snapshot", + "config": "^3.0.0", + "healthcheck-server": "^1.0.0", "json-rules-engine": "^2.3.0", + "moment": "^2.22.2", "mongoose": "^5.3.8", "mongoose-unique-validator": "^2.0.2", "mustache": "^3.0.0", + "rc": "^1.2.8", "request": "^2.88.0", "request-promise": "^4.2.2", "rxjs": "^6.3.3", diff --git a/src/lib/config.js b/src/lib/config.js new file mode 100644 index 0000000..b11e286 --- /dev/null +++ b/src/lib/config.js @@ -0,0 +1,4 @@ +// const RC = require('rc')('CEP', require('../../config/default.json')) +const config = require('config') + +module.exports = config diff --git a/src/lib/database.js b/src/lib/database.js index 7aaf318..067fd64 100644 --- a/src/lib/database.js +++ b/src/lib/database.js @@ -28,17 +28,18 @@ * @module src/lib/database */ const Mongoose = require('mongoose') -const config = require('../../config/config') +const config = require('../lib/config') const Logger = require('@mojaloop/central-services-shared').Logger const setupDb = () => { const db = Mongoose.connection Mongoose.Promise = global.Promise - Mongoose.connect(`mongodb://${config.mongo.url}/${config.mongo.database}`) + Mongoose.connect(`mongodb://${config.mongo.uri}/${config.mongo.database}`) db.on('error', console.error.bind(console, 'connection error')) db.once('open', function callback () { Logger.info('Connection with database succeeded.') }) + return db } exports.db = setupDb diff --git a/src/lib/enum.js b/src/lib/enum.js index 111dc08..2ea1ff0 100644 --- a/src/lib/enum.js +++ b/src/lib/enum.js @@ -46,14 +46,14 @@ const transferEventType = { } const notificationActionMap = { - NET_DEBIT_CAP_BREACH_MAIL: { - enum: 'NET_DEBIT_CAP_BREACH_MAIL', + NET_DEBIT_CAP_THRESHOLD_BREACH_EMAIL: { + enum: 'NET_DEBIT_CAP_THRESHOLD_BREACH_EMAIL', action: 'sendEmail', templateType: 'breach', language: 'en' }, - NET_DEBIT_CAP_ADJUSTMENT: { - enum: 'NET_DEBIT_CAP_ADJUSTMENT', + NET_DEBIT_CAP_ADJUSTMENT_EMAIL: { + enum: 'NET_DEBIT_CAP_ADJUSTMENT_EMAIL', action: 'sendEmail', templateType: 'adjustment', language: 'en' @@ -63,8 +63,8 @@ const notificationActionMap = { const limitNotificationMap = { NET_DEBIT_CAP: { enum: 'NET_DEBIT_CAP', - NET_DEBIT_CAP_BREACH_MAIL: notificationActionMap.NET_DEBIT_CAP_BREACH_MAIL, - NET_DEBIT_CAP_ADJUSTMENT: notificationActionMap.NET_DEBIT_CAP_ADJUSTMENT + NET_DEBIT_CAP_THRESHOLD_BREACH_EMAIL: notificationActionMap.NET_DEBIT_CAP_THRESHOLD_BREACH_EMAIL, + NET_DEBIT_CAP_ADJUSTMENT_EMAIL: notificationActionMap.NET_DEBIT_CAP_ADJUSTMENT_EMAIL } } diff --git a/src/lib/utility.js b/src/lib/utility.js index 6b826fc..134df0e 100644 --- a/src/lib/utility.js +++ b/src/lib/utility.js @@ -35,9 +35,9 @@ * @module src/lib/utility */ -const Config = require('../../config/config') +const Config = require('../lib/config') const Mustache = require('mustache') -const KafkaConfig = Config.KAFKA +const KafkaConfig = require('../../config/default.json').KAFKA const Logger = require('@mojaloop/central-services-shared').Logger const Uuid = require('uuid4') const Kafka = require('./kafka') diff --git a/src/models/action.js b/src/models/action.js index a9b8c5e..b756399 100644 --- a/src/models/action.js +++ b/src/models/action.js @@ -25,7 +25,7 @@ 'use strict' const mongoose = require('mongoose') -const config = require('../../config/config') +const config = require('../lib/config') // as soon as threshold is breached we creat action // as soon as the position is fixed isActive becomes false @@ -34,12 +34,11 @@ const config = require('../../config/config') // scheduler will check after an hour if this action is still active and if its active will clear timerTriggered field. const actionSchema = new mongoose.Schema({ - triggeredBy: { type: mongoose.Schema.Types.ObjectId, ref: 'currentPossitionSchema' }, // this will show event in the past + triggeredBy: { type: mongoose.Schema.Types.ObjectId }, // this will show event in the past timesTriggered: { type: Number, default: 1 }, fromEvent: { type: mongoose.Schema.Types.ObjectId, ref: 'eventSchema' }, - createdDate: { type: Date, default: Date.now }, isActive: { type: Boolean, default: true } -}) +}, { timestamps: true }) const actionModel = mongoose.model(config.mongo.actionCollection, actionSchema) diff --git a/src/models/currentPosition.js b/src/models/currentPosition.js index 93cc3c1..69b4b88 100644 --- a/src/models/currentPosition.js +++ b/src/models/currentPosition.js @@ -28,7 +28,7 @@ * @module src/models/netDebitCapView */ const mongoose = require('mongoose') -const config = require('../../config/config') +const config = require('../lib/config') /** * @const currentPossitionSchema @@ -42,11 +42,10 @@ const currentPositionSchema = new mongoose.Schema({ name: { type: String, required: true, index: true }, currency: { type: String, required: true, index: true }, positionValue: { type: Number, required: true }, - createdDate: { type: Date, default: Date.now }, percentage: { type: Number }, transferId: { type: String, required: true, index: true }, messagePayload: { type: String, required: true } // create schema later -}) +}, { timestamps: true }) const currentPositionModel = mongoose.model(config.mongo.netDebitCapPositionCollection, currentPositionSchema) diff --git a/src/models/events.js b/src/models/events.js index 4d8afd5..ae44f90 100644 --- a/src/models/events.js +++ b/src/models/events.js @@ -28,8 +28,8 @@ * @module src/models/netDebitCapView */ const mongoose = require('mongoose') -const config = require('../../config/config') -const getActions = require('../observeables/actions').getActions +const config = require('../lib/config') +const getActions = require('../observables/actions').getActions /** * @const limitSchema * @@ -48,9 +48,8 @@ const eventSchema = new mongoose.Schema({ action: { type: String, required: true, enum: actions }, // always sendToKafkaTopic templateType: { type: String, required: true }, language: { type: String, required: true }, - createdDate: { type: Date, default: Date.now }, isActive: { type: Boolean, default: true } -}) +}, { timestamps: true }) const eventModel = mongoose.model(config.mongo.eventCollection, eventSchema) diff --git a/src/models/limits.js b/src/models/limits.js index a220718..13d5ca2 100644 --- a/src/models/limits.js +++ b/src/models/limits.js @@ -28,7 +28,7 @@ * @module src/models/netDebitCapView */ const mongoose = require('mongoose') -const config = require('../../config/config') +const config = require('../lib/config') /** * @const limitSchema @@ -45,9 +45,8 @@ const limitSchema = new mongoose.Schema({ type: { type: String, required: true }, value: { type: Number, required: true }, repetitions: { type: Number, default: 3 }, - threshold: { type: Number, required: true, default: 10 }, - createdDate: { type: Date, default: Date.now } -}) + threshold: { type: Number, required: true, default: 10 } +}, { timestamps: true }) // we need returned createdDate from central-ledger as well diff --git a/src/models/notificationEndpoint.js b/src/models/notificationEndpoint.js index 943dadb..2d7d291 100644 --- a/src/models/notificationEndpoint.js +++ b/src/models/notificationEndpoint.js @@ -28,7 +28,7 @@ * @module src/models/notificationEndpoint */ const mongoose = require('mongoose') -const config = require('../../config/config') +const config = require('../lib/config') /** * @const notificationEndpointSchema @@ -42,9 +42,8 @@ const notificationEndpointSchema = new mongoose.Schema({ name: { type: String, required: true, index: true }, type: { type: String, required: true, index: true }, action: { type: String }, - value: { type: String, required: true }, - createdDate: { type: Date, default: Date.now } -}) + value: { type: String, required: true } +}, { timestamps: true }) // we need returned createdDate from central-ledger as well diff --git a/src/models/rulesEngineRule.js b/src/models/rulesEngineRule.js deleted file mode 100644 index 6d3c6c1..0000000 --- a/src/models/rulesEngineRule.js +++ /dev/null @@ -1,84 +0,0 @@ -/***** - License - -------------- - Copyright © 2017 Bill & Melinda Gates Foundation - The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - Contributors - -------------- - This is the official list of the Mojaloop project contributors for this file. - Names of the original copyright holders (individuals or organizations) - should be listed with a '*' in the first column. People who have - contributed from an organization can be listed under the organization - that actually holds the copyright for their contributions (see the - Gates Foundation organization for an example). Those individuals should have - their names indented and be marked with a '-'. Email address can be added - optionally within square brackets . - * Gates Foundation - - Name Surname - * Rajiv Mothilal - * Miguel de Barros - -------------- - ******/ - -'use strict' - -/** - * @module src/models/rulesEngineRule - */ - -// const dbConnection = require('../../lib/database').db -const mongoose = require('mongoose') -const uniqueValidator = require('mongoose-unique-validator') -const config = require('../../config/config') - -/** - * @const eventSchema - * - * @description This is the Mongoose database schema definition for the "Event" JSON Doc. - * This event gets fired when the rules engine evaluates a truthy to the facts that this event is linked to. - * - * @link https://mongoosejs.com , https://github.com/Automattic/mongoose, https://www.npmjs.com/package/json-rules-engine - */ -const eventSchema = new mongoose.Schema({ - event: { - type: { type: String, required: true }, - params: { - message: { type: String, required: true } - } - } -}, { _id: false }) - -const Event = mongoose.model('Event', eventSchema) - -/** - * @const ruleSchema - * - * @description This is the Mongoose database schema definition for the "Rule" JSON Doc. - * This is the rule for the rules engine that gets persisted to the Mongo DB database as a JSON doc - * - * * @link https://mongoosejs.com , https://github.com/Automattic/mongoose, https://www.npmjs.com/package/json-rules-engine - */ -const ruleSchema = new mongoose.Schema({ - conditions: { - any: [{ - all: [{ - fact: { type: String, required: true }, - operator: { type: String, required: true }, - value: { type: Number, required: true }, - path: String - }] - }] - }, - event: { type: mongoose.Schema.Types.Mixed, ref: 'Event' } -}) - -ruleSchema.plugin(uniqueValidator, { message: 'Error, expected {PATH} to be unique.' }) - -const Rule = mongoose.model(config.mongo.ruleCollection, ruleSchema) - -module.exports = { - Rule, - Event -} diff --git a/src/observeables/actions.js b/src/observables/actions.js similarity index 95% rename from src/observeables/actions.js rename to src/observables/actions.js index 45e1fef..234df9f 100644 --- a/src/observeables/actions.js +++ b/src/observables/actions.js @@ -27,7 +27,8 @@ const Rx = require('rxjs') const Utility = require('../lib/utility') const Uuid = require('uuid4') -const Config = require('../../config/config.json') +const moment = require('moment') +const Config = require('../lib/config') const Enum = require('../lib/enum') const TransferEventType = Enum.transferEventType const TransferEventAction = Enum.transferEventAction @@ -92,8 +93,8 @@ const actionObservable = ({ action, params, message }) => { } let actionResult let previousAction = await ActionModel.findOne({ fromEvent: params.fromEvent, isActive: true }) - let recepientDetails = await NotificationModel.findOne({ name: params.dfsp, action: params.action, type: params.notificationEndpointType }) // bug - let hubDetails = await NotificationModel.findOne({ name: 'Hub', action: params.action, type: params.notificationEndpointType }) // bug + let recepientDetails = await NotificationModel.findOne({ name: params.dfsp, action: params.action, type: params.notificationEndpointType }) + let hubDetails = await NotificationModel.findOne({ name: 'Hub', action: params.action, type: params.notificationEndpointType }) let messageDetails = Object.assign({}, params, { notificationInterval, resetPeriod }) const payload = { from: 'SYSTEM', @@ -103,7 +104,8 @@ const actionObservable = ({ action, params, message }) => { messageDetails } if (previousAction) { - if (previousAction.timesTriggered < params.repetitionsAllowed) { // TODO add notificationInterval in the mix condition for repeating event + if ((previousAction.timesTriggered < params.repetitionsAllowed) && + (moment(previousAction.updatedAt).add(notificationInterval, 'minutes') < moment.now())) { actionResult = await actionBuilder(action)({ payload }) previousAction.timesTriggered++ previousAction.save() diff --git a/src/observeables/centralLedgerAPI.js b/src/observables/centralLedgerAPI.js similarity index 100% rename from src/observeables/centralLedgerAPI.js rename to src/observables/centralLedgerAPI.js diff --git a/src/observeables/index.js b/src/observables/index.js similarity index 100% rename from src/observeables/index.js rename to src/observables/index.js diff --git a/src/observeables/rules/index.js b/src/observables/rules/index.js similarity index 100% rename from src/observeables/rules/index.js rename to src/observables/rules/index.js diff --git a/src/observeables/rules/ndcAdjustment.js b/src/observables/rules/ndcAdjustment.js similarity index 97% rename from src/observeables/rules/ndcAdjustment.js rename to src/observables/rules/ndcAdjustment.js index d2760ab..27dd498 100644 --- a/src/observeables/rules/ndcAdjustment.js +++ b/src/observables/rules/ndcAdjustment.js @@ -65,13 +65,15 @@ const createRules = async (limit) => { dfsp: name, limitType: type, value: limit.value, + currency: limit.currency, triggeredBy: limit._id, repetitionsAllowed: limit.repetitions, fromEvent: dbEvent.id, action: dbEvent.action, notificationEndpointType: dbEvent.notificationEndpointType, templateType: dbEvent.templateType, - language: dbEvent.language + language: dbEvent.language, + messageSubject: `${type} LIMIT ADJUSTMENT` } } let adjustmentRule = new RuleEngine.Rule({ conditions, event }) diff --git a/src/observeables/rules/ndcBreach.js b/src/observables/rules/ndcBreach.js similarity index 96% rename from src/observeables/rules/ndcBreach.js rename to src/observables/rules/ndcBreach.js index c228063..c366cfb 100644 --- a/src/observeables/rules/ndcBreach.js +++ b/src/observables/rules/ndcBreach.js @@ -19,7 +19,7 @@ - Name Surname * Valentin Genev * Deon Botha - -------------- + -------------- ******/ 'use strict' @@ -42,7 +42,7 @@ const createRules = async (position) => { name: position.name, currency: position.currency, limitType: Enums.limitNotificationMap.NET_DEBIT_CAP.enum, - notificationEndpointType: Enums.limitNotificationMap.NET_DEBIT_CAP.NET_DEBIT_CAP_BREACH_MAIL.enum, + notificationEndpointType: Enums.limitNotificationMap.NET_DEBIT_CAP.NET_DEBIT_CAP_THRESHOLD_BREACH_EMAIL.enum, isActive: true }) ]) @@ -69,7 +69,8 @@ const createRules = async (position) => { action: dbEvent.action, notificationEndpointType: dbEvent.notificationEndpointType, templateType: dbEvent.templateType, - language: dbEvent.language + language: dbEvent.language, + messageSubject: `${limit.type} BREACH CONDITION REACHED` } } diff --git a/src/playground.js b/src/playground.js deleted file mode 100644 index d3e14c0..0000000 --- a/src/playground.js +++ /dev/null @@ -1,224 +0,0 @@ - -const Rx = require('rxjs') -const { zipAll, zip, take, concat, combineLatest, mergeMap, share, concatMap, map, switchAll, switchMapTo, concatAll, concatMapTo, combineAll, pipe, switchMap, publish, multicast } = require('rxjs/operators') -const request = require('request-promise') - -let counter = 0 - -const requestLimitPerName = async (name) => { - try { - console.log(++counter) - const limit = await request({ uri: `http://localhost:3001/participants/${name}/limits`, json: true }) - return limit - } catch (e) { - throw e - } -} - -const getLimitPerNameObservable = (name) => { - return Rx.Observable.create(async observer => { - const limitResponse = await requestLimitPerName(name) - let result = {} - result[name] = limitResponse - observer.next(result) - observer.complete() - }) -} - -const subject = new Rx.Subject() -// const stream = Rx.from(['dfsp1', 'dfsp2']).pipe(mergeMap(getLimitPerNameObservable)) -const getLimitPerNameSubject = (name) => { - let c = getLimitPerNameObservable(name).pipe(share()) - c.subscribe(c => console.log('cunt')) - return Rx.Observable.create(observer => { c.subscribe(v => observer.next(v)) }) -} - -const getLimitPerNameObserver = () => { - let a = {} - return { - next: value => { console.log(value) }, - error: (error) => { console.error(error) }, - complete: () => { return a } - } -} -// getLimitPerNameSubject('dfsp1').connect() - -// const allDfsps = ['dfsp1', 'dfsp2'].map(name => getLimitPerNameSubject(name)) -// const allDfspsObservable = Rx.forkJoin(allDfsps) -// allDfspsObservable.subscribe(getLimitPerNameObserver()) -// const stream = Rx.from(['dfsp1', 'dfsp2']).pipe(mergeMap(getLimitPerNameSubject), share()) - -getLimitPerNameSubject('dfsp1').subscribe(v => console.log(v)) - -// stream.subscribe(subject) - -// subject.subscribe(a => { console.log(a) }, e => { throw e }, () => { console.log('d')}) - -// v => console.log(v), - // err => { throw err }, - // () => console.log('done')) - -// const combineTwoLimitsObserver() - -// stream.subscribe(subject) - -// const source = stream.pipe(zipAll(getLimitPerNameObservable), publish()) -// source.connect() -// stream.connect() -// stream.subscribe(subject) -// subject.subscribe(getLimitPerNameObserver()) - -// const observer = () => { -// { -// let a = {} -// return { -// next: (v) => { -// a = Object.assign(a, v) -// }, -// error: (e) => { console.error(e) }, -// complete: () => { return JSON.stringify(a) } -// } -// } -// } - -// let a = subject.subscribe(observer()) -// subject.subscribe(combineTwoLimitsObserver) -// const task = function (action) { -// console.log(action) -// if (action) { -// this.schedule() -// } -// } - -// let a = { -// isActive: true -// } - -// const task = function (a) { -// if (a.isActive) { -// console.log('isActive') -// // this.schedule(a, 1000) -// } -// } - -// Rx.asyncScheduler.schedule(task, 1000, a) - -// const interval = Rx.interval -// const { switchMap, concat, concatMap, pipe} = require('rxjs/operators') -// const obs1 = interval(1000, 4) - -// const obs2 = (v) => { -// return Rx.Observable.create(async observer => { -// observer.next(v * 2) -// }) -// } - -// const obs3 = obs1.pipe(switchMap(obs2)) - -// const subs = obs3.subscribe(d => console.log(d)) - -// const from = Rx.from - -// // subject.subscribe({ -// // next: v => console.log('A', v) -// // }) - -// // subject.subscribe({ -// // next: v => console.log('B', v) -// // }) - -// // observable.subscribe(subject) - -// // ==================================================================== - -// // const RuleEngine = require('json-rules-engine') -// // let engine = new RuleEngine.Engine() - -// // let conditions = { -// // any: [{ -// // fact: 'a', -// // operator: 'equal', -// // value: 1 -// // }] -// // } - -// // let event = { -// // type: 'a-is-here', -// // params: { -// // message: 'the position is under the threshold! RING THE ALARM!', -// // action: a => { -// // console.log('action', a) -// // } -// // } -// // } - -// // let conditions2 = { -// // any: [{ -// // fact: 'a', -// // operator: 'equal', -// // value: 1 -// // }] -// // } - -// // let event2 = { -// // type: 'b-is-here', -// // params: { -// // message: 'the position is under the threshold! RING THE ALARM!' -// // } -// // } - -// // let rule = new RuleEngine.Rule({ conditions, event }) -// // let rule2 = new RuleEngine.Rule({ conditions: conditions2, event: event2 }) - -// // engine.addRule(rule) -// // engine.addRule(rule2) - -// // const f = async () => { -// // let events = await engine.run({a: 1}) -// // for (let event of events) { -// // if (event.params.action) { -// // event.params.action('1') -// // } -// // } -// // } -// // f() - -// const dictionary = { - -// produceToKafkaTopic: (topic, message) => { -// console.log(topic, message) -// }, - -// sendRequest: ({ url, payload }) => { -// if (payload === 'error') throw new Error('this is an error') -// return { url, payload } -// }, - -// sendEmail: (emailAddress, subject, body) => { -// return console.log('bla') -// } -// } - -// const actionBuilder = (action) => { -// return dictionary[action] -// } - -// const actionObserver = (action, params) => { -// return Rx.Observable.create(async observer => { -// try { -// let actionResult = await actionBuilder(action)(params) -// observer.next(actionResult) -// observer.complete() -// } catch (err) { -// observer.error(err) -// } -// }) -// } - -// const actionObservable = actionObserver('sendRequest', { url: 'url', payload: 'error' }) - -// actionObservable.subscribe({ -// next: v => console.log(v), -// error: err => console.error(err), -// complete: () => console.log('done') -// }) diff --git a/src/setup.js b/src/setup.js index 99c2c66..45154bb 100644 --- a/src/setup.js +++ b/src/setup.js @@ -36,14 +36,27 @@ const { filter, switchMap, share } = require('rxjs/operators') const Enum = require('./lib/enum') const TransferEventType = Enum.transferEventType const TransferEventAction = Enum.transferEventAction -const Observables = require('./observeables') +const Observables = require('./observables') +const createHealtcheck = require('healthcheck-server') +const Config = require('./lib/config') const setup = async () => { - await require('./lib/database').db() + let db = await require('./lib/database').db() + await Consumer.registerNotificationHandler() + const topicName = Utility.transformGeneralTopicName(Utility.ENUMS.NOTIFICATION, Utility.ENUMS.EVENT) const consumer = Consumer.getConsumer(topicName) + createHealtcheck({ + port: Config.get('healthCheckPort'), + path: '/healthcheck', + status: ({cpu, memory}) => { + if (db.readyState && consumer._status.running) return true + else return false + } + }) + const topicObservable = Rx.Observable.create((observer) => { consumer.on('message', async (data) => { observer.next(data) @@ -92,7 +105,7 @@ const setup = async () => { } const generalObservable = topicObservable - .pipe(filter(data => data.value.metadata.event.action === 'prepare'), + .pipe(filter(data => data.value.metadata.event.action === 'commit'), switchMap(Observables.CentralLedgerAPI.getDfspNotificationEndpointsObservable), switchMap(getLimitObservable), switchMap(Observables.CentralLedgerAPI.getPositionsObservable), @@ -108,7 +121,7 @@ const setup = async () => { } Logger.info(actionResult) }, - error: err => Logger.info('err', err), + error: err => Logger.info('Error occured: ', err), completed: (value) => Logger.info('completed with value', value) }) }