diff --git a/.gitignore b/.gitignore index 37d7e73..a3a167d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ node_modules .env +Logs +.env.dev \ No newline at end of file diff --git a/app.js b/app.js index 8ccfdd6..15d3498 100644 --- a/app.js +++ b/app.js @@ -2,12 +2,13 @@ const express = require("express"); const app = express(); const cors = require("cors"); require("dotenv").config(); +const logger = require("./utils/logger"); const { configLoader } = require("./configs/index"); configLoader .init() .then((data) => { - console.log("Config loaded successfully."); + logger.info("Config loaded successfully."); app.use(cors()); @@ -19,7 +20,7 @@ configLoader app.use(router); app.listen(PORT, () => { - console.log("server listening at port " + PORT); + logger.info("server listening at port " + PORT); }); }) .catch((e) => { diff --git a/configs/index.js b/configs/index.js index 607ab00..d298975 100644 --- a/configs/index.js +++ b/configs/index.js @@ -2,6 +2,7 @@ const fs = require("fs"); const yaml = require("yaml"); const path = require("path"); const $RefParser = require("@apidevtools/json-schema-ref-parser"); +const logger = require("../utils/logger"); class ConfigLoader { constructor() { @@ -18,7 +19,6 @@ class ConfigLoader { this.config = schema; - console.log("schema", schema); return schema; } catch (e) { throw new Error(e); diff --git a/configs/index.yaml b/configs/index.yaml index e5b5429..f0af548 100644 --- a/configs/index.yaml +++ b/configs/index.yaml @@ -1,18 +1,5 @@ server: port: 80 - variables: - dev: - callbackUrl: "https://2273-59-145-217-117.ngrok-free.app" - stagingGatewayurl: "https://staging.gateway.proteantech.in/" - signingPrivateKey: "Un205TSOdDXTq8E+N/sJOLJ8xalnzZ1EUP1Wcv23sKx70fOfFd4Q2bzfpzPQ+6XZhZv65SH7Pr6YMk8SuFHpxQ==" - bapId: "mobility-staging.ondc.org" - uniqueKeyId: "UK-MOBILITY" - prod: - callbackUrl: "https://2273-59-145-217-117.ngrok-free.app" - stagingGatewayurl: "https://staging.gateway.proteantech.in/" - signingPrivateKey: "Un205TSOdDXTq8E+N/sJOLJ8xalnzZ1EUP1Wcv23sKx70fOfFd4Q2bzfpzPQ+6XZhZv65SH7Pr6YMk8SuFHpxQ==" - bapId: "mobility-staging.ondc.org" - uniqueKeyId: "UK-MOBILITY" flows: - summary: Metro - Station Code Based Flow id: metro-flow-1 @@ -55,7 +42,7 @@ flows: $ref: ./configs/metro-flow-2/protocolMapping.yaml calls: $ref: ./configs/metro-flow-2/protocolCalls.yaml - - summary: on demand complete flow + - summary: On-Demand - Assign driver on on-confirm domain: ONDC:TRV10 id: ondemand-flow-1 input: diff --git a/configs/ondemand-flow-1/input.yaml b/configs/ondemand-flow-1/input.yaml index e9599a6..e31ebc9 100644 --- a/configs/ondemand-flow-1/input.yaml +++ b/configs/ondemand-flow-1/input.yaml @@ -3,10 +3,14 @@ search: key: "startCoordinates" type: "text" errorText: "Start Coordinates is required" + required: true + summary: Vehicle category for which ticket needs to be booked - name: "End Coordinates" key: "endCoordinates" type: "text" errorText: "End Coordinates is required" + required: true + summary: Vehicle category for which ticket needs to be booked - name: "Payment Tags" key: "paymentTagsSearch" type: "multiline" @@ -18,38 +22,54 @@ search: DELAY_INTEREST: 2.5 STATIC_TERMS: "https://bap.credit.becknprotocol.io/personal-banking/loans/personal-loan" errorText: "Payment tags is required" + required: true + summary: Vehicle category for which ticket needs to be booked select: - name: "BPP URI" key: "bpp_uri" type: "text" error: "BPP URI is required" + required: true + summary: Vehicle category for which ticket needs to be booked - name: "BPP ID" key: "bpp_id" type: "text" error: "BPP ID is required" + required: true + summary: Vehicle category for which ticket needs to be booked - name: "Item id" key: "itemId" type: "text" errorText: "Item id is required" + required: true + summary: Vehicle category for which ticket needs to be booked - name: "Provider Id" key: "providerId" type: "text" errorText: "Provider Id is required" + required: true + summary: Vehicle category for which ticket needs to be booked init: - name: "Name" key: "name" type: "text" errorText: "Name is required" + required: true + summary: Vehicle category for which ticket needs to be booked - name: "Phone" key: "phone" type: "text" errorText: "Phone is required" + required: true + summary: Vehicle category for which ticket needs to be booked - name: "Collected By" key: "collectedBy" type: "text" errorText: "Collected By is required" + required: true + summary: Vehicle category for which ticket needs to be booked - name: "Payment Status" key: "paymentStatus" type: "select" @@ -59,6 +79,8 @@ init: - key: "NOT-PAID" value: "NOT-PAID" errorText: "Please select a field" + required: true + summary: Vehicle category for which ticket needs to be booked - name: "Payment Type" key: "paymentType" type: "select" @@ -74,18 +96,26 @@ init: - key: "ON-ORDER" value: "ON-ORDER" errorText: "Please select a field" + required: true + summary: Vehicle category for which ticket needs to be booked - name: "Bank Code" key: "bankCode" type: "text" errorText: "Bank Code is required" + required: true + summary: Vehicle category for which ticket needs to be booked - name: "Bank Account Number" key: "bankAccountNumber" type: "text" errorText: "Bank Account Number is required" + required: true + summary: Vehicle category for which ticket needs to be booked - name: "Virtual Payment Address" key: "virtualPaymentAddress" type: "text" errorText: "Virtual Payment Address is required" + required: true + summary: Vehicle category for which ticket needs to be booked - name: "Payment Tags" key: "paymentTagsInit" type: "multiline" @@ -97,20 +127,28 @@ init: DELAY_INTEREST: 2.5 STATIC_TERMS: "https://bap.credit.becknprotocol.io/personal-banking/loans/personal-loan" errorText: "Payment Tags is required" + required: true + summary: Vehicle category for which ticket needs to be booked confirm: - name: "Payment Id" key: "paymentId" type: "text" errorText: "Payment Id is required" + required: true + summary: Vehicle category for which ticket needs to be booked - name: "Payment Status" key: "paymentStatusConfirm" type: "text" errorText: "Payment Status is required" + required: true + summary: Vehicle category for which ticket needs to be booked - name: "Payment Type" key: "paymentTypeConfirm" type: "text" errorText: "Payment Type is required" + required: true + summary: Vehicle category for which ticket needs to be booked - name: "Payment Tags" key: "paymentTagsConfirm" type: "multiline" @@ -122,9 +160,13 @@ confirm: DELAY_INTEREST: 2.5 STATIC_TERMS: "https://bap.credit.becknprotocol.io/personal-banking/loans/personal-loan" errorText: "Payment Tags is required" + required: true + summary: Vehicle category for which ticket needs to be booked status: - name: "Order Id" key: "orderId" type: "text" errorText: "Order Id is required" + required: true + summary: Vehicle category for which ticket needs to be booked diff --git a/configs/ondemand-flow-1/protocolCalls.yaml b/configs/ondemand-flow-1/protocolCalls.yaml index 2c26309..0d6a431 100644 --- a/configs/ondemand-flow-1/protocolCalls.yaml +++ b/configs/ondemand-flow-1/protocolCalls.yaml @@ -6,6 +6,8 @@ search: nextRequest: "on_search" preRequest: null isCollapsed: false + protocol: + $ref: ./protocolMapping.yaml#/protocol/status on_search: type: "on_search" @@ -15,6 +17,8 @@ on_search: nextRequest: "select" preRequest: "search" isCollapsed: false + protocol: + $ref: ./protocolMapping.yaml#/protocol/status select: type: "select" @@ -24,6 +28,8 @@ select: nextRequest: "on_select" preRequest: "on_search" isCollapsed: false + protocol: + $ref: ./protocolMapping.yaml#/protocol/status on_select: type: "on_select" @@ -33,6 +39,8 @@ on_select: nextRequest: "init" preRequest: "select" isCollapsed: false + protocol: + $ref: ./protocolMapping.yaml#/protocol/status init: type: "init" @@ -42,6 +50,8 @@ init: nextRequest: "on_init" preRequest: "on_select" isCollapsed: false + protocol: + $ref: ./protocolMapping.yaml#/protocol/status on_init: type: "on_init" @@ -51,6 +61,8 @@ on_init: nextRequest: "confirm" preRequest: "init" isCollapsed: false + protocol: + $ref: ./protocolMapping.yaml#/protocol/status confirm: type: "confirm" @@ -60,6 +72,8 @@ confirm: nextRequest: "on_confirm" preRequest: "on_init" isCollapsed: false + protocol: + $ref: ./protocolMapping.yaml#/protocol/status on_confirm: type: "on_confirm" @@ -69,6 +83,8 @@ on_confirm: nextRequest: "on_update" preRequest: "confirm" isCollapsed: false + protocol: + $ref: ./protocolMapping.yaml#/protocol/status on_update: type: "on_update" @@ -78,6 +94,8 @@ on_update: nextRequest: "status" preRequest: "on_confirm" isCollapsed: false + protocol: + $ref: ./protocolMapping.yaml#/protocol/status status: type: "status" @@ -87,6 +105,8 @@ status: nextRequest: "on_status" preRequest: "on_update" isCollapsed: false + protocol: + $ref: ./protocolMapping.yaml#/protocol/status on_status: type: "on_status" @@ -96,3 +116,5 @@ on_status: nextRequest: null preRequest: "status" isCollapsed: false + protocol: + $ref: ./protocolMapping.yaml#/protocol/status diff --git a/header.js b/header.js deleted file mode 100644 index aa1ed6d..0000000 --- a/header.js +++ /dev/null @@ -1,95 +0,0 @@ -const { createAuthorizationHeader } = require("ondc-crypto-sdk-nodejs"); - -const body = { - context: { - bap_id: "mobility-staging.ondc.org", - bap_uri: "https://2273-59-145-217-117.ngrok-free.app", - location: { country: { code: "IND" }, city: { code: "std:011" } }, - transaction_id: "fc6029ea-7bfe-4d2f-ad5c-afeab8f08296", - message_id: "5b7d1718-5807-4f5c-b478-54f4eff7ff41", - timestamp: "2024-01-12T04:21:51.682Z", - domain: "ONDC:TRV11", - version: "2.0.0", - ttl: "PT10M", - action: "search", - }, - message: { - intent: { - fulfillment: { vehicle: { category: "METRO" } }, - payment: { - tags: [ - { - descriptor: { code: "BUYER_FINDER_FEES" }, - list: [ - { - descriptor: { code: "BUYER_FINDER_FEES_TYPE" }, - value: "percent-annualized", - }, - { - descriptor: { code: "BUYER_FINDER_FEES_PERCENTAGE" }, - value: "1", - }, - ], - }, - { - descriptor: { code: "SETTLEMENT_TERMS" }, - list: [ - { descriptor: { code: "DELAY_INTEREST" }, value: "2.5" }, - { - descriptor: { code: "STATIC_TERMS" }, - value: - "https://bap.credit.becknprotocol.io/personal-banking/loans/personal-loan", - }, - ], - }, - ], - }, - }, - }, -}; - -const selectbody = { - context: { - location: { country: { code: "IND" }, city: { code: "std:011" } }, - domain: "ONDC:TRV11", - action: "select", - version: "2.0.0", - bap_id: "api.example-bap.com", - bap_uri: "https://2273-59-145-217-117.ngrok-free.app", - bpp_id: "api.example-bpp.com", - bpp_uri: "https://api.example-bpp.com/ondc/metro", - transaction_id: "fc6029ea-7bfe-4d2f-ad5c-afeab8f08296", - message_id: "69411a94-7099-44dd-a977-eaaae2a17bea", - timestamp: "2021-03-23T10:00:40.065Z", - ttl: "PT30S", - }, - message: { - order: { - items: [{ id: "I1", quantity: { selected: { count: 2 } } }], - provider: { id: "P1" }, - }, - }, -}; - -const createHeader = async (message) => { - const SIGNING_PRIVATE_KEY = - "Un205TSOdDXTq8E+N/sJOLJ8xalnzZ1EUP1Wcv23sKx70fOfFd4Q2bzfpzPQ+6XZhZv65SH7Pr6YMk8SuFHpxQ=="; - const BAP_ID = "mobility-staging.ondc.org"; - const UNIQUE_KEY_ID = "UK-MOBILITY"; - - const header = await createAuthorizationHeader({ - message: message, - privateKey: SIGNING_PRIVATE_KEY, - bapId: BAP_ID, // Subscriber ID that you get after registering to ONDC Network - bapUniqueKeyId: UNIQUE_KEY_ID, // Unique Key Id or uKid that you get after registering to ONDC Network - }); - - console.log("heasder", header); - return header; -}; - -module.exports = { - createHeader, -}; - -// createHeader(); diff --git a/package-lock.json b/package-lock.json index 08aef01..bc3b1ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,12 @@ "node-cache": "^5.1.2", "ondc-crypto-sdk-nodejs": "^1.0.2", "uuid": "^9.0.1", + "winston": "^3.11.0", + "winston-daily-rotate-file": "^5.0.0", "yaml": "^2.3.4" + }, + "devDependencies": { + "nodemon": "^3.1.0" } }, "node_modules/@apidevtools/json-schema-ref-parser": { @@ -39,6 +44,24 @@ "url": "https://github.com/sponsors/philsturgeon" } }, + "node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "dependencies": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, "node_modules/@jsdevtools/ono": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", @@ -62,6 +85,17 @@ "@types/lodash": "*" } }, + "node_modules/@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -74,6 +108,19 @@ "node": ">= 0.6" } }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -84,6 +131,11 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -99,6 +151,21 @@ "proxy-from-env": "^1.1.0" } }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -122,6 +189,28 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -142,6 +231,30 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", @@ -150,6 +263,46 @@ "node": ">=0.8" } }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -161,6 +314,12 @@ "node": ">= 0.8" } }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -254,6 +413,11 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -316,6 +480,31 @@ "node": ">= 0.10.0" } }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, + "node_modules/file-stream-rotator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.6.1.tgz", + "integrity": "sha512-u+dBid4PvZw17PmDeRcNOtCP9CCK/9lRN2w+r1xIS7yOL9JFrIBKTvrYsxT4P0pGtThYTn++QS5ChHaUov3+zQ==", + "dependencies": { + "moment": "^2.29.1" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/finalhandler": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", @@ -333,6 +522,11 @@ "node": ">= 0.8" } }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, "node_modules/follow-redirects": { "version": "1.15.3", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", @@ -381,6 +575,20 @@ "node": ">= 0.6" } }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -400,6 +608,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -411,6 +631,15 @@ "node": ">= 0.4.0" } }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/has-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", @@ -459,6 +688,12 @@ "node": ">=0.10.0" } }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -472,6 +707,64 @@ "node": ">= 0.10" } }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -483,6 +776,11 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, "node_modules/libsodium": { "version": "0.7.13", "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.13.tgz", @@ -506,6 +804,39 @@ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" }, + "node_modules/logform": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", + "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", + "dependencies": { + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/logform/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -557,6 +888,26 @@ "node": ">= 0.6" } }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "engines": { + "node": "*" + } + }, "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -581,6 +932,81 @@ "node": ">= 8.0.0" } }, + "node_modules/nodemon": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.0.tgz", + "integrity": "sha512-xqlktYlDMCepBJd43ZQhjWwMw2obW/JRvkrLxq5RCNcuDDX1DbcPT+qT1IlIIdf+DhnWs90JpTMe+Y5KxOchvA==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -589,6 +1015,14 @@ "node": ">=0.10.0" } }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, "node_modules/object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -618,6 +1052,14 @@ "uuid": "^9.0.0" } }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dependencies": { + "fn.name": "1.x.x" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -631,6 +1073,18 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -648,6 +1102,12 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, "node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -684,6 +1144,31 @@ "node": ">= 0.8" } }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -703,11 +1188,34 @@ } ] }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "engines": { + "node": ">=10" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -768,6 +1276,34 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "engines": { + "node": "*" + } + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -776,6 +1312,43 @@ "node": ">= 0.8" } }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -784,6 +1357,26 @@ "node": ">=0.6" } }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "engines": { + "node": ">= 14.0.0" + } + }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -796,6 +1389,12 @@ "node": ">= 0.6" } }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -804,6 +1403,11 @@ "node": ">= 0.8" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -832,6 +1436,63 @@ "node": ">= 0.8" } }, + "node_modules/winston": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.11.0.tgz", + "integrity": "sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==", + "dependencies": { + "@colors/colors": "^1.6.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-daily-rotate-file": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-5.0.0.tgz", + "integrity": "sha512-JDjiXXkM5qvwY06733vf09I2wnMXpZEhxEVOSPenZMii+g7pcDcTBt2MRugnoi8BwVSuCT2jfRXBUy+n1Zz/Yw==", + "dependencies": { + "file-stream-rotator": "^0.6.1", + "object-hash": "^3.0.0", + "triple-beam": "^1.4.1", + "winston-transport": "^4.7.0" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "winston": "^3" + } + }, + "node_modules/winston-transport": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.0.tgz", + "integrity": "sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==", + "dependencies": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/yaml": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", @@ -854,6 +1515,21 @@ "lodash.clonedeep": "^4.5.0" } }, + "@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==" + }, + "@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "requires": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, "@jsdevtools/ono": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", @@ -877,6 +1553,17 @@ "@types/lodash": "*" } }, + "@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, "accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -886,6 +1573,16 @@ "negotiator": "0.6.3" } }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -896,6 +1593,11 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -911,6 +1613,18 @@ "proxy-from-env": "^1.1.0" } }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, "body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -930,6 +1644,25 @@ "unpipe": "1.0.0" } }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, "bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -944,11 +1677,67 @@ "get-intrinsic": "^1.0.2" } }, + "chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, "clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" }, + "color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "requires": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "requires": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -957,6 +1746,12 @@ "delayed-stream": "~1.0.0" } }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, "content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -1022,6 +1817,11 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, + "enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -1075,6 +1875,28 @@ "vary": "~1.1.2" } }, + "fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, + "file-stream-rotator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.6.1.tgz", + "integrity": "sha512-u+dBid4PvZw17PmDeRcNOtCP9CCK/9lRN2w+r1xIS7yOL9JFrIBKTvrYsxT4P0pGtThYTn++QS5ChHaUov3+zQ==", + "requires": { + "moment": "^2.29.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, "finalhandler": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", @@ -1089,6 +1911,11 @@ "unpipe": "~1.0.0" } }, + "fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, "follow-redirects": { "version": "1.15.3", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", @@ -1114,6 +1941,13 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -1130,6 +1964,15 @@ "has-symbols": "^1.0.3" } }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -1138,6 +1981,12 @@ "function-bind": "^1.1.1" } }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, "has-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", @@ -1168,6 +2017,12 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -1178,6 +2033,46 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -1186,6 +2081,11 @@ "argparse": "^2.0.1" } }, + "kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, "libsodium": { "version": "0.7.13", "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.13.tgz", @@ -1209,6 +2109,35 @@ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" }, + "logform": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", + "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", + "requires": { + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -1242,6 +2171,20 @@ "mime-db": "1.52.0" } }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==" + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -1260,11 +2203,66 @@ "clone": "2.x" } }, + "nodemon": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.0.tgz", + "integrity": "sha512-xqlktYlDMCepBJd43ZQhjWwMw2obW/JRvkrLxq5RCNcuDDX1DbcPT+qT1IlIIdf+DhnWs90JpTMe+Y5KxOchvA==", + "dev": true, + "requires": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, + "object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" + }, "object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -1288,6 +2286,14 @@ "uuid": "^9.0.0" } }, + "one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "requires": { + "fn.name": "1.x.x" + } + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -1298,6 +2304,12 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, "proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -1312,6 +2324,12 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, "qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -1336,16 +2354,49 @@ "unpipe": "1.0.0" } }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, + "safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==" + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, "send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -1399,16 +2450,83 @@ "object-inspect": "^1.9.0" } }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "requires": { + "is-arrayish": "^0.3.1" + } + }, + "simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "requires": { + "semver": "^7.5.3" + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==" + }, "statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, "toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "requires": { + "nopt": "~1.0.10" + } + }, + "triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==" + }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -1418,11 +2536,22 @@ "mime-types": "~2.1.24" } }, + "undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -1438,6 +2567,51 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" }, + "winston": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.11.0.tgz", + "integrity": "sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==", + "requires": { + "@colors/colors": "^1.6.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + } + }, + "winston-daily-rotate-file": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-5.0.0.tgz", + "integrity": "sha512-JDjiXXkM5qvwY06733vf09I2wnMXpZEhxEVOSPenZMii+g7pcDcTBt2MRugnoi8BwVSuCT2jfRXBUy+n1Zz/Yw==", + "requires": { + "file-stream-rotator": "^0.6.1", + "object-hash": "^3.0.0", + "triple-beam": "^1.4.1", + "winston-transport": "^4.7.0" + } + }, + "winston-transport": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.0.tgz", + "integrity": "sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==", + "requires": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "yaml": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", diff --git a/package.json b/package.json index 37abc47..a8f60d7 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "start-dev": "nodemon -r dotenv/config app.js dotenv_config_path=.env.dev dotenv_config_debug=true" }, "author": "", "license": "ISC", @@ -18,6 +18,11 @@ "node-cache": "^5.1.2", "ondc-crypto-sdk-nodejs": "^1.0.2", "uuid": "^9.0.1", + "winston": "^3.11.0", + "winston-daily-rotate-file": "^5.0.0", "yaml": "^2.3.4" + }, + "devDependencies": { + "nodemon": "^3.1.0" } -} +} \ No newline at end of file diff --git a/router/route.js b/router/route.js index be7245a..e77ff29 100644 --- a/router/route.js +++ b/router/route.js @@ -13,23 +13,14 @@ const { deleteCache, verifyHeader, insertSession, - createHeaderFromId, handleRequestForJsonMapper } = require("../utils/utils"); const {createBecknObject} = require('../utils/buildPayload') -const {apiResponse} = require("../utils/response") -const {createHeader} = require("../header") const {extractPath} = require("../utils/buildPayload") const {configLoader} = require("../configs/index") +const logger = require("../utils/logger") -// console.log("config>>>>", JSON.stringify(configLoader.getConfig(), null, 2)) -//router.get("*",async(req,res)=>{ -// console.log(req.url) -// res.send("server working") - -//}) - router.post("/createHeader", async function (req,res) { try { const response = await generateHeader(req.body) @@ -37,7 +28,7 @@ router.post("/createHeader", async function (req,res) { res.setHeader("Access-Control-Expose-Headers","*") return res.send(req.body) } catch (error) { - console.error(error); + logger.error("/createHeader - ",error); res.status(500).send("an error occurred") } @@ -69,17 +60,11 @@ router.post("/:method",async(req,res)=>{ const response = await axios.post(`${url}${method}`,body,header) - // if(original_uri[original_uri.length-1]!="/"){ //"add / if not exists in bap uri" - // original_uri=original_uri+"/" - // } - // axios.post(`${original_uri}${response.data.context.action}`,response.data,{headers:{Authorization:await generateHeader(response.data)}}).catch((err)=>{ //hit back on original uri - // console.log(original_uri+"is incorrect") - // }) - res.status(response.status).send(response.data) }catch(err){ + logger.error("/:method - ",err?.response?.data ? err?.response?.data :err.message) res.status(err?.response?.status || 500).send(err?.response?.data ? err?.response?.data :err.message) } }) @@ -90,14 +75,14 @@ router.get("/cache",async(req,res)=>{ res.send(response) } catch(err){ - console.log(err) + logger.error("/cache - ",err) } }) router.post("/ondc/:method", async (req, res) => { let body = req.body; - console.log("message recieved", body) + logger.info("/ondc/:method message recieved - ", body) if (process.env.ENABLE_SIGNATURE_VALIDATION === "true") { const isValid = await verifyHeader(req, process.env.LOOKUP_URL) @@ -111,8 +96,8 @@ router.post("/ondc/:method", async (req, res) => { }, }; res.status(200).json(ack); - console.log(req.body.context, "recieved context"); - console.log(ack, "response"); + logger.info("/ondc/:method - ",req.body.context, "recieved context"); + logger.info("/ondc/:method - ",ack, "response"); } else { const nack = { message: { @@ -142,23 +127,22 @@ router.post("/ondc/:method", async (req, res) => { router.delete("/cache",(req,res)=>{ try { const transactionId = req.query.transactionid; - console.log("83",transactionId) const deleted = deleteCache(transactionId); if (deleted) { - console.log("87",transactionId) res.send({ message: 'Response data for the transaction ID has been deleted' }); } else { res.send({ message: 'TransactionId not found in cache' }); } } catch (err) { - console.log(err); + logger.error("/cache - ",err); res.status(500).send('Internal Server Error'); } }) -// JSON mapper + +// JSON mapper Api router.post("/mapper/session", (req, res) => { const { version, @@ -181,7 +165,7 @@ router.post("/mapper/session", (req, res) => { }); } - console.log("body>>>>>", req.body) + logger.info("body>>>>> /mapper/session - ", req.body) try { const { @@ -208,12 +192,11 @@ router.post("/mapper/session", (req, res) => { additioalFlows: filteredAdditionalFlows }; - // console.log("crfeating session", session) insertSession(session); res.send({ sucess: true, data: session }); } catch (e) { - console.log("Error while creating session", e); + logger.error("Error while creating session - ", e); res.status(500).send("Internal Server Error"); } }); @@ -259,7 +242,7 @@ router.post("/mapper/extractPath", (req, res) => { res.send({ response }); } catch (e) { - console.log("Error while extracting path", e); + logger.info("Error while extracting path - ", e); res.status(400).send({ error: true, data: e }); } }); @@ -358,27 +341,14 @@ router.post("/mapper/:config", async (req, res) => { } session = {...session, ...payload} - // const header = {}; - // header.headers = { ...header.headers, "Content-Type": "text/plain;charset=utf-8" }; - // const response = await axios.post( - // `http://localhost:5500/${session.protocolCalls[config].type}`, - // JSON.stringify(becknPayload, null, 2), - // header - // ); - - const CALLBACK_URL = process.env.callbackUrl - const STAGING_GATEWAY_URL = "https://staging.gateway.proteantech.in/" - const SIGNING_PRIVATE_KEY = - "Un205TSOdDXTq8E+N/sJOLJ8xalnzZ1EUP1Wcv23sKx70fOfFd4Q2bzfpzPQ+6XZhZv65SH7Pr6YMk8SuFHpxQ=="; - const BAP_ID = "mobility-staging.ondc.org"; - const UNIQUE_KEY_ID = "UK-MOBILITY"; + const type = session.protocolCalls[config].type - becknPayload.context.bap_uri=`${CALLBACK_URL}/ondc` + becknPayload.context.bap_uri=`${callbackUrl}/ondc` let url ; if(type == 'search'){ - url = STAGING_GATEWAY_URL + url = GATEWAY_URL }else{ url = becknPayload.context.bpp_uri } @@ -387,16 +357,16 @@ router.post("/mapper/:config", async (req, res) => { url=url+"/" } - console.log("becknPayload", JSON.stringify(becknPayload)) + logger.info("becknPayload /mapper/:config - ", becknPayload) - const signedHeader = await createHeader(becknPayload) - console.log("SignedHeader", signedHeader) + const signedHeader = await generateHeader(becknPayload) + logger.info("SignedHeader /mapper/:config - ", signedHeader) const header ={headers:{Authorization: signedHeader}} const response = await axios.post(`${url}${type}`,becknPayload,header) - console.log("res>>>>>>", response.data) + logger.info("res>>>>>> /mapper/:config - ", response.data) session.protocolCalls[config] = { ...session.protocolCalls[config], @@ -420,7 +390,7 @@ router.post("/mapper/:config", async (req, res) => { // } res.status(200).send({response: response.data, session}) } catch (e) { - console.log("Error while sending request", e); + logger.error("Error while sending request - ", e); return res.status(500).send({data: "Error while sending reques", e}); } }); diff --git a/test.js b/test.js deleted file mode 100644 index 592ec7e..0000000 --- a/test.js +++ /dev/null @@ -1,15 +0,0 @@ -const cache = require("node-cache") - -const myCache = new cache( { stdTTL: 100, checkperiod: 120 } ); - -const success = myCache.set( "myKey", {name:"ahsan"}, 1 ); - -setTimeout(() => { - console.log(myCache.get("myKey")) -}, 500); // Wait for 2 seconds (2000 milliseconds) - - setTimeout(() => { - console.log(myCache.get("myKey"),"@") -}, 5000); // Wait for 2 seconds (2000 milliseconds) - - diff --git a/test_server.js b/test_server.js deleted file mode 100644 index 63118ca..0000000 --- a/test_server.js +++ /dev/null @@ -1,19 +0,0 @@ -const express = require("express") -const app = express() -require('dotenv').config() -const router = require("./router/route" -) - -app.use(express.json()) - - -app.use("*",(req,res)=>{ - console.log("req received") - console.log(req.body) - res.send("hello") -}) - -app.listen(80,()=>{ -console.log("server listening at port 5500") - -}) diff --git a/utils/buildPayload.js b/utils/buildPayload.js index 4f48997..6ad8f3a 100644 --- a/utils/buildPayload.js +++ b/utils/buildPayload.js @@ -2,6 +2,7 @@ const fs = require("fs"); const path = require("path"); const yaml = require("js-yaml"); const { v4: uuidv4 } = require("uuid"); +const logger = require("./logger") const getYamlConfig = (configName) => { const yamlConfig = fs.readFileSync( @@ -247,7 +248,7 @@ const createBusinessPayload = (myconfig, obj) => { return payload; } catch (e) { - console.log("error while creating bussniss payload", e); + logger.info("error while creating bussniss payload", e); return payload; } }; @@ -302,7 +303,7 @@ const extractPath = (path, obj) => { return payload; } catch (e) { - console.log("error while creating bussniss payload", e); + logger.info("error while creating bussniss payload", e); return payload; } }; diff --git a/utils/logger.js b/utils/logger.js new file mode 100644 index 0000000..68f2baa --- /dev/null +++ b/utils/logger.js @@ -0,0 +1,47 @@ +const winston = require('winston'); +require('winston-daily-rotate-file'); + +// const config = require('../config.json'); +// let environment = process.env.NODE_ENV || 'development'; +let environment = process.env.env || "development"; +environment = environment.trim(); + +const logger = winston.createLogger({ + level: process.env.log_level, + format: winston.format.combine( + winston.format.timestamp({ + format: 'YYYY-MM-DD HH:mm:ss' + }), + winston.format.json() + ), + defaultMeta: { service: process.env.app_name }, + transports: [ + // - Write to all logs with level `info` and below to `combined.log` + // - Write all logs error (and below) to `error.log`. + new winston.transports.File({ filename: 'Logs/error.log', level: 'error' }), + new winston.transports.File({ filename: 'Logs/combined.log' }), + new winston.transports.DailyRotateFile({ + filename: process.env.app_name + '-%DATE%.log', + dirname: 'Logs/', + datePattern: 'YYYY-MM-DD', + maxFiles: '1d' + }) + ] +}); + +// +// If we're not in production then log to the `console` with the format: +// `${info.level}: ${info.message} JSON.stringify({ ...rest }) ` +// +if (process.env.env !== 'production') { + logger.add(new winston.transports.Console({ + format: winston.format.combine( + winston.format.timestamp({ + format: 'YYYY-MM-DD HH:mm:ss' + }), + winston.format.simple() + ) + })); +} + +module.exports = logger; \ No newline at end of file diff --git a/utils/response.js b/utils/response.js deleted file mode 100644 index f008016..0000000 --- a/utils/response.js +++ /dev/null @@ -1,1832 +0,0 @@ -const apiResponse = (config, transactionId, messageId) => { - const data = { - search: { - context: { - action: "on_search", - bap_id: "example-bap.com", - bap_uri: "https://example-bap.com/prod/trv10", - bpp_id: "example-bpp.com", - bpp_uri: "https://example-bpp.com/prod/seller", - domain: "ONDC:TRV10", - location: { - city: { - code: "std:080", - }, - country: { - code: "IND", - }, - }, - message_id: messageId, - timestamp: "2023-12-09T13:41:16.161Z", - transaction_id: transactionId, - ttl: "PT30S", - version: "2.0.0", - }, - message: { - catalog: { - descriptor: { - name: "Mobility Servies BPP", - }, - providers: [ - { - fulfillments: [ - { - id: "F1", - stops: [ - { - location: { - gps: "13.008935, 77.644408", - }, - type: "START", - }, - { - location: { - gps: "12.971186, 77.586812", - }, - type: "END", - }, - ], - type: "DELIVERY", - vehicle: { - category: "AUTO_RICKSHAW", - }, - }, - { - id: "F2", - stops: [ - { - location: { - gps: "13.008935, 77.644408", - }, - type: "START", - }, - { - location: { - gps: "12.971186, 77.586812", - }, - type: "END", - }, - ], - type: "DELIVERY", - vehicle: { - category: "CAB", - }, - }, - ], - id: "P1", - items: [ - { - descriptor: { - code: "RIDE", - name: "Auto Ride", - }, - fulfillment_ids: ["F1"], - id: "I1", - location_ids: ["L1", "L3"], - price: { - currency: "INR", - maximum_value: "176", - minimum_value: "136", - value: "146", - }, - }, - { - descriptor: { - code: "RIDE", - name: "CAB Economy Ride", - }, - fulfillment_ids: ["F2"], - id: "I2", - location_ids: ["L2", "L4"], - price: { - currency: "INR", - maximum_value: "236", - minimum_value: "206", - value: "206", - }, - }, - ], - locations: [ - { - gps: "12.916468,77.608998", - id: "L1", - }, - { - gps: "12.916714,77.609298", - id: "L2", - }, - { - gps: "12.916573,77.615216", - id: "L3", - }, - { - gps: "12.906857,77.604456", - id: "L4", - }, - ], - payments: [ - { - collected_by: "BPP", - tags: [ - { - descriptor: { - code: "BUYER_FINDER_FEES", - }, - display: false, - list: [ - { - descriptor: { - code: "BUYER_FINDER_FEES_PERCENTAGE", - }, - value: "1", - }, - ], - }, - { - descriptor: { - code: "SETTLEMENT_TERMS", - }, - display: false, - list: [ - { - descriptor: { - code: "SETTLEMENT_WINDOW", - }, - value: "PT60M", - }, - { - descriptor: { - code: "SETTLEMENT_BASIS", - }, - value: "DELIVERY", - }, - { - descriptor: { - code: "MANDATORY_ARBITRATION", - }, - value: "true", - }, - { - descriptor: { - code: "COURT_JURISDICTION", - }, - value: "New Delhi", - }, - { - descriptor: { - code: "STATIC_TERMS", - }, - value: - "https://example-test-bpp.com/static-terms.txt", - }, - ], - }, - ], - }, - ], - }, - ], - }, - }, - }, - select: { - context: { - action: "on_select", - bap_id: "example-bap.com", - bap_uri: "https://example-bap.com/prod/trv10", - bpp_id: "example-bpp.com", - bpp_uri: "https://example-bpp.com/prod/seller", - domain: "ONDC:TRV10", - location: { - city: { - code: "std:080", - }, - country: { - code: "IND", - }, - }, - message_id: messageId, - timestamp: "2023-12-09T13:49:26.132Z", - transaction_id: transactionId, - ttl: "PT30S", - version: "2.0.0", - }, - message: { - order: { - fulfillments: [ - { - id: "F1", - stops: [ - { - location: { - gps: "13.008935, 77.644408", - }, - type: "START", - }, - { - location: { - gps: "12.971186, 77.586812", - }, - type: "END", - }, - ], - tags: [ - { - descriptor: { - code: "ROUTE_INFO", - name: "Route Information", - }, - display: true, - list: [ - { - descriptor: { - code: "ENCODED_POLYLINE", - name: "Path", - }, - value: "_p~iF~ps|U_ulLnnqC_mqNvxq`@", - }, - { - descriptor: { - code: "WAYPOINTS", - name: "Waypoints", - }, - value: - '[{"gps":"12.909982, 77.611822"},{"gps":"12.909982,77.611822"},{"gps":"12.909982,77.611822"},{"gps":"12.909982, 77.611822"}]', - }, - ], - }, - ], - type: "DELIVERY", - vehicle: { - category: "AUTO_RICKSHAW", - }, - }, - ], - items: [ - { - descriptor: { - code: "RIDE", - name: "Auto Ride", - }, - fulfillment_ids: ["F1"], - id: "I1", - location_ids: ["L1", "L3"], - price: { - currency: "INR", - maximum_value: "176", - minimum_value: "136", - value: "146", - }, - tags: [ - { - descriptor: { - code: "FARE_POLICY", - name: "Daytime Charges", - }, - display: true, - list: [ - { - descriptor: { - code: "MIN_FARE", - }, - value: "30", - }, - { - descriptor: { - code: "MIN_FARE_DISTANCE_KM", - }, - value: "2", - }, - { - descriptor: { - code: "PER_KM_CHARGE", - }, - value: "15", - }, - { - descriptor: { - code: "PICKUP_CHARGE", - }, - value: "10", - }, - { - descriptor: { - code: "WAITING_CHARGE_PER_MIN", - }, - value: "2", - }, - { - descriptor: { - code: "NIGHT_CHARGE_MULTIPLIER", - }, - value: "1.5", - }, - { - descriptor: { - code: "NIGHT_SHIFT_START_TIME", - }, - value: "22:00:00", - }, - { - descriptor: { - code: "NIGHT_SHIFT_END_TIME", - }, - value: "05:00:00", - }, - ], - }, - { - descriptor: { - code: "INFO", - name: "General Information", - }, - display: true, - list: [ - { - descriptor: { - code: "DISTANCE_TO_NEAREST_DRIVER_METER", - }, - value: "661", - }, - { - descriptor: { - code: "ETA_TO_NEAREST_DRIVER_MIN", - }, - value: "3", - }, - ], - }, - ], - }, - ], - provider: { - id: "P1", - }, - quote: { - breakup: [ - { - price: { - currency: "INR", - value: "30", - }, - title: "BASE_FARE", - }, - { - price: { - currency: "INR", - value: "116", - }, - title: "DISTANCE_FARE", - }, - ], - price: { - currency: "INR", - value: "146", - }, - ttl: "P200s", - }, - }, - }, - }, - init: { - context: { - action: "on_init", - bap_id: "example-bap.com", - bap_uri: "https://example-bap.com/prod/trv10", - bpp_id: "example-bpp.com", - bpp_uri: "https://example-bpp.com/prod/seller", - domain: "ONDC:TRV10", - location: { - city: { - code: "std:080", - }, - country: { - code: "IND", - }, - }, - message_id: messageId, - timestamp: "2023-12-09T14:11:32.859Z", - transaction_id: transactionId, - ttl: "PT30S", - version: "2.0.0", - }, - message: { - order: { - cancellation_terms: [ - { - cancellation_fee: { - percentage: "0", - }, - fulfillment_state: { - descriptor: { - code: "RIDE_ASSIGNED", - }, - }, - reason_required: true, - }, - { - cancellation_fee: { - amount: { - currency: "INR", - value: "30", - }, - }, - fulfillment_state: { - descriptor: { - code: "RIDE_ENROUTE_PICKUP", - }, - }, - reason_required: true, - }, - { - cancellation_fee: { - amount: { - currency: "INR", - value: "50", - }, - }, - fulfillment_state: { - descriptor: { - code: "RIDE_ARRIVED_PICKUP", - }, - }, - reason_required: true, - }, - { - cancellation_fee: { - percentage: "100", - }, - fulfillment_state: { - descriptor: { - code: "RIDE_STARTED", - }, - }, - reason_required: true, - }, - ], - fulfillments: [ - { - id: "F1", - stops: [ - { - location: { - gps: "13.008935, 77.644408", - }, - type: "START", - }, - { - location: { - gps: "12.971186, 77.586812", - }, - type: "END", - }, - ], - tags: [ - { - descriptor: { - code: "ROUTE_INFO", - name: "Route Information", - }, - display: true, - list: [ - { - descriptor: { - code: "ENCODED_POLYLINE", - name: "Path", - }, - value: "_p~iF~ps|U_ulLnnqC_mqNvxq`@", - }, - { - descriptor: { - code: "WAYPOINTS", - name: "Waypoints", - }, - value: - '[{"gps":"12.909982, 77.611822"},{"gps":"12.909982,77.611822"},{"gps":"12.909982,77.611822"},{"gps":"12.909982, 77.611822"}]', - }, - ], - }, - ], - type: "DELIVERY", - vehicle: { - category: "AUTO_RICKSHAW", - }, - }, - ], - items: [ - { - descriptor: { - code: "RIDE", - name: "Auto Ride", - }, - fulfillment_ids: ["F1"], - id: "I1", - location_ids: ["L1", "L3"], - payment_ids: ["PA1"], - price: { - currency: "INR", - maximum_value: "176", - minimum_value: "136", - value: "146", - }, - tags: [ - { - descriptor: { - code: "FARE_POLICY", - name: "Daytime Charges", - }, - display: true, - list: [ - { - descriptor: { - code: "MIN_FARE", - }, - value: "30", - }, - { - descriptor: { - code: "MIN_FARE_DISTANCE_KM", - }, - value: "2", - }, - { - descriptor: { - code: "PER_KM_CHARGE", - }, - value: "15", - }, - { - descriptor: { - code: "PICKUP_CHARGE", - }, - value: "10", - }, - { - descriptor: { - code: "WAITING_CHARGE_PER_MIN", - }, - value: "2", - }, - { - descriptor: { - code: "NIGHT_CHARGE_MULTIPLIER", - }, - value: "1.5", - }, - { - descriptor: { - code: "NIGHT_SHIFT_START_TIME", - }, - value: "22:00:00", - }, - { - descriptor: { - code: "NIGHT_SHIFT_END_TIME", - }, - value: "05:00:00", - }, - ], - }, - { - descriptor: { - code: "INFO", - name: "General Information", - }, - display: true, - list: [ - { - descriptor: { - code: "DISTANCE_TO_NEAREST_DRIVER_METER", - }, - value: "661", - }, - { - descriptor: { - code: "ETA_TO_NEAREST_DRIVER_MIN", - }, - value: "3", - }, - ], - }, - ], - }, - ], - payments: [ - { - collected_by: "BPP", - id: "PA1", - params: { - bank_account_number: "xxxxxxxxxxxxxx", - bank_code: "XXXXXXXX", - virtual_payment_address: "9988199772@okicic", - }, - status: "NOT-PAID", - tags: [ - { - descriptor: { - code: "BUYER_FINDER_FEES", - }, - display: false, - list: [ - { - descriptor: { - code: "BUYER_FINDER_FEES_PERCENTAGE", - }, - value: "1", - }, - ], - }, - { - descriptor: { - code: "SETTLEMENT_TERMS", - }, - display: false, - list: [ - { - descriptor: { - code: "DELAY_INTEREST", - }, - value: "5", - }, - { - descriptor: { - code: "SETTLEMENT_TYPE", - }, - value: "RSF", - }, - { - descriptor: { - code: "SETTLEMENT_WINDOW", - }, - value: "PT2D", - }, - { - descriptor: { - code: "SETTLEMENT_BASIS", - }, - value: "DELIVERY", - }, - { - descriptor: { - code: "MANDATORY_ARBITRATION", - }, - value: "true", - }, - { - descriptor: { - code: "COURT_JURISDICTION", - }, - value: "New Delhi", - }, - { - descriptor: { - code: "STATIC_TERMS", - }, - value: "https://example-test-bpp.com/static-terms.txt", - }, - { - descriptor: { - code: "SETTLEMENT_AMOUNT", - }, - value: "1.46", - }, - ], - }, - ], - type: "ON-FULFILLMENT", - }, - ], - provider: { - id: "P1", - }, - quote: { - breakup: [ - { - price: { - currency: "INR", - value: "30", - }, - title: "BASE_FARE", - }, - { - price: { - currency: "INR", - value: "116", - }, - title: "DISTANCE_FARE", - }, - ], - price: { - currency: "INR", - value: "146", - }, - ttl: "PT30S", - }, - }, - }, - }, - confirm: { - context: { - action: "on_confirm", - bap_id: "example-bap.com", - bap_uri: "https://example-bap.com/prod/trv10", - bpp_id: "example-bpp.com", - bpp_uri: "https://example-bpp.com/prod/seller", - domain: "ONDC:TRV10", - location: { - city: { - code: "std:080", - }, - country: { - code: "IND", - }, - }, - message_id: messageId, - timestamp: "2023-12-10T08:03:34.294Z", - transaction_id: transactionId, - ttl: "PT30S", - version: "2.0.0", - }, - message: { - order: { - cancellation_terms: [ - { - cancellation_fee: { - percentage: "0", - }, - fulfillment_state: { - descriptor: { - code: "RIDE_ASSIGNED", - }, - }, - reason_required: true, - }, - { - cancellation_fee: { - amount: { - currency: "INR", - value: "30", - }, - }, - fulfillment_state: { - descriptor: { - code: "RIDE_ENROUTE_PICKUP", - }, - }, - reason_required: true, - }, - { - cancellation_fee: { - amount: { - currency: "INR", - value: "50", - }, - }, - fulfillment_state: { - descriptor: { - code: "RIDE_ARRIVED_PICKUP", - }, - }, - reason_required: true, - }, - { - cancellation_fee: { - percentage: "100", - }, - fulfillment_state: { - descriptor: { - code: "RIDE_STARTED", - }, - }, - reason_required: true, - }, - ], - fulfillments: [ - { - agent: { - contact: { - phone: "9856798567", - }, - person: { - name: "Jason Roy", - }, - }, - customer: { - contact: { - phone: "9876556789", - }, - person: { - name: "Joe Adams", - }, - }, - id: "F1", - state: { - descriptor: { - code: "RIDE_ASSIGNED", - }, - }, - stops: [ - { - authorization: { - token: "234234", - type: "OTP", - }, - location: { - gps: "13.008935, 77.644408", - }, - type: "START", - }, - { - location: { - gps: "12.971186, 77.586812", - }, - type: "END", - }, - ], - tags: [ - { - descriptor: { - code: "ROUTE_INFO", - name: "Route Information", - }, - display: true, - list: [ - { - descriptor: { - code: "ENCODED_POLYLINE", - name: "Path", - }, - value: "_p~iF~ps|U_ulLnnqC_mqNvxq`@", - }, - { - descriptor: { - code: "WAYPOINTS", - name: "Waypoints", - }, - value: - '[{"gps":"12.909982, 77.611822"},{"gps":"12.909982,77.611822"},{"gps":"12.909982,77.611822"},{"gps":"12.909982, 77.611822"}]', - }, - ], - }, - ], - type: "DELIVERY", - vehicle: { - category: "AUTO_RICKSHAW", - make: "Bajaj", - model: "Compact RE", - registration: "KA-01-AD-9876", - }, - }, - ], - id: "O1", - items: [ - { - descriptor: { - code: "RIDE", - name: "Auto Ride", - }, - fulfillment_ids: ["F1"], - id: "I1", - location_ids: ["L1", "L3"], - payment_ids: ["PA1"], - price: { - currency: "INR", - maximum_value: "176", - minimum_value: "136", - value: "146", - }, - tags: [ - { - descriptor: { - code: "FARE_POLICY", - name: "Daytime Charges", - }, - display: true, - list: [ - { - descriptor: { - code: "MIN_FARE", - }, - value: "30", - }, - { - descriptor: { - code: "MIN_FARE_DISTANCE_KM", - }, - value: "2", - }, - { - descriptor: { - code: "PER_KM_CHARGE", - }, - value: "15", - }, - { - descriptor: { - code: "PICKUP_CHARGE", - }, - value: "10", - }, - { - descriptor: { - code: "WAITING_CHARGE_PER_MIN", - }, - value: "2", - }, - { - descriptor: { - code: "NIGHT_CHARGE_MULTIPLIER", - }, - value: "1.5", - }, - { - descriptor: { - code: "NIGHT_SHIFT_START_TIME", - }, - value: "22:00:00", - }, - { - descriptor: { - code: "NIGHT_SHIFT_END_TIME", - }, - value: "05:00:00", - }, - ], - }, - { - descriptor: { - code: "INFO", - name: "General Information", - }, - display: true, - list: [ - { - descriptor: { - code: "DISTANCE_TO_NEAREST_DRIVER_METER", - }, - value: "661", - }, - { - descriptor: { - code: "ETA_TO_NEAREST_DRIVER_MIN", - }, - value: "3", - }, - ], - }, - ], - }, - ], - payments: [ - { - collected_by: "BPP", - id: "PA1", - params: { - bank_account_number: "xxxxxxxxxxxxxx", - bank_code: "XXXXXXXX", - virtual_payment_address: "9988199772@okicic", - }, - status: "NOT-PAID", - tags: [ - { - descriptor: { - code: "BUYER_FINDER_FEES", - }, - display: false, - list: [ - { - descriptor: { - code: "BUYER_FINDER_FEES_PERCENTAGE", - }, - value: "1", - }, - ], - }, - { - descriptor: { - code: "SETTLEMENT_TERMS", - }, - display: false, - list: [ - { - descriptor: { - code: "DELAY_INTEREST", - }, - value: "5", - }, - { - descriptor: { - code: "SETTLEMENT_TYPE", - }, - value: "RSF", - }, - { - descriptor: { - code: "SETTLEMENT_WINDOW", - }, - value: "PT2D", - }, - { - descriptor: { - code: "SETTLEMENT_BASIS", - }, - value: "DELIVERY", - }, - { - descriptor: { - code: "MANDATORY_ARBITRATION", - }, - value: "true", - }, - { - descriptor: { - code: "COURT_JURISDICTION", - }, - value: "New Delhi", - }, - { - descriptor: { - code: "STATIC_TERMS", - }, - value: "https://example-test-bpp.com/static-terms.txt", - }, - { - descriptor: { - code: "SETTLEMENT_AMOUNT", - }, - value: "1.46", - }, - ], - }, - ], - type: "ON-FULFILLMENT", - }, - ], - provider: { - id: "P1", - }, - quote: { - breakup: [ - { - price: { - currency: "INR", - value: "30", - }, - title: "BASE_FARE", - }, - { - price: { - currency: "INR", - value: "116", - }, - title: "DISTANCE_FARE", - }, - ], - price: { - currency: "INR", - value: "146", - }, - ttl: "PT30S", - }, - status: "ACTIVE", - created_at: "2023-12-10T08:03:34.294Z", - updated_at: "2023-12-10T08:03:34.294Z", - }, - }, - }, - update: { - context: { - action: "on_update", - bap_id: "example-bap.com", - bap_uri: "https://example-bap.com/prod/trv10", - bpp_id: "example-bpp.com", - bpp_uri: "https://example-bpp.com/prod/seller", - domain: "ONDC:TRV10", - location: { - city: { - code: "std:080", - }, - country: { - code: "IND", - }, - }, - message_id: messageId, - timestamp: "2023-12-11T03:54:28.832Z", - transaction_id: transactionId, - ttl: "PT30S", - version: "2.0.0", - }, - message: { - order: { - cancellation_terms: [ - { - cancellation_fee: { - percentage: "0", - }, - fulfillment_state: { - descriptor: { - code: "RIDE_ASSIGNED", - }, - }, - reason_required: true, - }, - { - cancellation_fee: { - amount: { - currency: "INR", - value: "30", - }, - }, - fulfillment_state: { - descriptor: { - code: "RIDE_ENROUTE_PICKUP", - }, - }, - reason_required: true, - }, - { - cancellation_fee: { - amount: { - currency: "INR", - value: "50", - }, - }, - fulfillment_state: { - descriptor: { - code: "RIDE_ARRIVED_PICKUP", - }, - }, - reason_required: true, - }, - { - cancellation_fee: { - percentage: "100", - }, - fulfillment_state: { - descriptor: { - code: "RIDE_STARTED", - }, - }, - reason_required: true, - }, - ], - fulfillments: [ - { - agent: { - contact: { - phone: "9856798567", - }, - person: { - name: "Jason Roy", - }, - }, - customer: { - contact: { - phone: "9876556789", - }, - person: { - name: "Joe Adams", - }, - }, - id: "F1", - state: { - descriptor: { - code: "RIDE_ENDED", - }, - }, - stops: [ - { - authorization: { - token: "234234", - type: "OTP", - }, - location: { - gps: "13.008935, 77.644408", - }, - type: "START", - }, - { - location: { - gps: "12.971186, 77.586812", - }, - type: "END", - }, - ], - tags: [ - { - descriptor: { - code: "ROUTE_INFO", - name: "Route Information", - }, - display: true, - list: [ - { - descriptor: { - code: "ENCODED_POLYLINE", - name: "Path", - }, - value: "_p~iF~ps|U_ulLnnqC_mqNvxq`@", - }, - { - descriptor: { - code: "WAYPOINTS", - name: "Waypoints", - }, - value: - '[{"gps":"12.909982, 77.611822"},{"gps":"12.909982,77.611822"},{"gps":"12.909982,77.611822"},{"gps":"12.909982, 77.611822"}]', - }, - ], - }, - ], - type: "DELIVERY", - vehicle: { - category: "AUTO_RICKSHAW", - make: "Bajaj", - model: "Compact RE", - registration: "KA-01-AD-9876", - }, - }, - ], - id: "O1", - items: [ - { - descriptor: { - code: "RIDE", - name: "Auto Ride", - }, - fulfillment_ids: ["F1"], - id: "I1", - location_ids: ["L1", "L3"], - payment_ids: ["PA1"], - price: { - currency: "INR", - maximum_value: "176", - minimum_value: "136", - value: "146", - }, - tags: [ - { - descriptor: { - code: "FARE_POLICY", - name: "Daytime Charges", - }, - display: true, - list: [ - { - descriptor: { - code: "MIN_FARE", - }, - value: "30", - }, - { - descriptor: { - code: "MIN_FARE_DISTANCE_KM", - }, - value: "2", - }, - { - descriptor: { - code: "PER_KM_CHARGE", - }, - value: "15", - }, - { - descriptor: { - code: "PICKUP_CHARGE", - }, - value: "10", - }, - { - descriptor: { - code: "WAITING_CHARGE_PER_MIN", - }, - value: "2", - }, - { - descriptor: { - code: "NIGHT_CHARGE_MULTIPLIER", - }, - value: "1.5", - }, - { - descriptor: { - code: "NIGHT_SHIFT_START_TIME", - }, - value: "22:00:00", - }, - { - descriptor: { - code: "NIGHT_SHIFT_END_TIME", - }, - value: "05:00:00", - }, - ], - }, - ], - }, - ], - payments: [ - { - collected_by: "BPP", - id: "PA1", - params: { - bank_account_number: "xxxxxxxxxxxxxx", - bank_code: "XXXXXXXX", - virtual_payment_address: "9988199772@okicic", - }, - status: "NOT-PAID", - tags: [ - { - descriptor: { - code: "BUYER_FINDER_FEES", - }, - display: false, - list: [ - { - descriptor: { - code: "BUYER_FINDER_FEES_PERCENTAGE", - }, - value: "1", - }, - ], - }, - { - descriptor: { - code: "SETTLEMENT_TERMS", - }, - display: false, - list: [ - { - descriptor: { - code: "DELAY_INTEREST", - }, - value: "5", - }, - { - descriptor: { - code: "SETTLEMENT_TYPE", - }, - value: "RSF", - }, - { - descriptor: { - code: "SETTLEMENT_WINDOW", - }, - value: "PT2D", - }, - { - descriptor: { - code: "SETTLEMENT_BASIS", - }, - value: "DELIVERY", - }, - { - descriptor: { - code: "MANDATORY_ARBITRATION", - }, - value: "true", - }, - { - descriptor: { - code: "COURT_JURISDICTION", - }, - value: "New Delhi", - }, - { - descriptor: { - code: "STATIC_TERMS", - }, - value: "https://example-test-bpp.com/static-terms.txt", - }, - { - descriptor: { - code: "SETTLEMENT_AMOUNT", - }, - value: "1.46", - }, - ], - }, - ], - type: "ON-FULFILLMENT", - }, - ], - provider: { - id: "P1", - }, - quote: { - breakup: [ - { - price: { - currency: "INR", - value: "30", - }, - title: "BASE_FARE", - }, - { - price: { - currency: "INR", - value: "116", - }, - title: "DISTANCE_FARE", - }, - ], - price: { - currency: "INR", - value: "146", - }, - ttl: "PT30S", - }, - status: "COMPLETED", - created_at: "2023-12-10T08:03:34.294Z", - updated_at: "2023-12-11T03:54:28.832Z", - }, - }, - }, - status: { - context: { - action: "on_status", - bap_id: "example-bap.com", - bap_uri: "https://example-bap.com/prod/trv10", - bpp_id: "example-bpp.com", - bpp_uri: "https://example-bpp.com/prod/seller", - domain: "ONDC:TRV10", - location: { - city: { - code: "std:080", - }, - country: { - code: "IND", - }, - }, - message_id: messageId, - timestamp: "2023-03-23T04:48:59Z", - transaction_id: transactionId, - ttl: "PT30S", - version: "2.0.0", - }, - message: { - order: { - id: "O1", - cancellation_terms: [ - { - cancellation_fee: { - percentage: "0", - }, - fulfillment_state: { - descriptor: { - code: "RIDE_ASSIGNED", - }, - }, - reason_required: true, - }, - { - cancellation_fee: { - amount: { - currency: "INR", - value: "50", - }, - }, - fulfillment_state: { - descriptor: { - code: "RIDE_ENROUTE_PICKUP", - }, - }, - reason_required: true, - }, - { - cancellation_fee: { - amount: { - currency: "INR", - value: "50", - }, - }, - fulfillment_state: { - descriptor: { - code: "RIDE_ARRIVED_PICKUP", - }, - }, - reason_required: true, - }, - { - cancellation_fee: { - percentage: "100", - }, - fulfillment_state: { - descriptor: { - code: "RIDE_STARTED", - }, - }, - reason_required: true, - }, - ], - fulfillments: [ - { - agent: { - contact: { - phone: "9856798567", - }, - person: { - name: "Jason Roy", - }, - }, - customer: { - contact: { - phone: "9876556789", - }, - person: { - name: "Joe Adams", - }, - }, - id: "F1", - state: { - descriptor: { - code: "RIDE_ENDED", - name: "Your ride has ended", - }, - }, - stops: [ - { - location: { - gps: "13.008935, 77.644408", - }, - type: "START", - }, - { - location: { - gps: "12.971186, 77.586812", - }, - type: "END", - }, - ], - tags: [ - { - descriptor: { - code: "ROUTE_INFO", - name: "Route Information", - }, - display: true, - list: [ - { - descriptor: { - code: "ENCODED_POLYLINE", - name: "Path", - }, - value: "_p~iF~ps|U_ulLnnqC_mqNvxq`@", - }, - { - descriptor: { - code: "WAYPOINTS", - name: "Waypoints", - }, - value: - '[{"gps":"12.909982, 77.611822"},{"gps":"12.909982,77.611822"},{"gps":"12.909982,77.611822"},{"gps":"12.909982, 77.611822"}]', - }, - ], - }, - ], - type: "DELIVERY", - vehicle: { - category: "AUTO_RICKSHAW", - make: "Bajaj", - model: "Compact RE", - registration: "KA-01-AD-9876", - }, - }, - ], - items: [ - { - descriptor: { - code: "RIDE", - name: "Auto Ride", - }, - fulfillment_ids: ["F1"], - id: "I1", - location_ids: ["L1", "L3"], - payment_ids: ["PA1"], - price: { - currency: "INR", - maximum_value: "176", - minimum_value: "156", - value: "146", - }, - tags: [ - { - descriptor: { - code: "FARE_POLICY", - name: "Daytime Charges", - }, - display: true, - list: [ - { - descriptor: { - code: "MIN_FARE", - }, - value: "30", - }, - { - descriptor: { - code: "MIN_FARE_DISTANCE_KM", - }, - value: "2", - }, - { - descriptor: { - code: "PER_KM_CHARGE", - }, - value: "15", - }, - { - descriptor: { - code: "PICKUP_CHARGE", - }, - value: "10", - }, - { - descriptor: { - code: "WAITING_CHARGE_PER_MIN", - }, - value: "2", - }, - { - descriptor: { - code: "NIGHT_CHARGE_MULTIPLIER", - }, - value: "1.5", - }, - { - descriptor: { - code: "NIGHT_SHIFT_START_TIME", - }, - value: "22:00:00", - }, - { - descriptor: { - code: "NIGHT_SHIFT_END_TIME", - }, - value: "05:00:00", - }, - ], - }, - { - descriptor: { - code: "INFO", - name: "General Information", - }, - display: true, - list: [ - { - descriptor: { - code: "DISTANCE_TO_NEAREST_DRIVER_METER", - }, - value: "661", - }, - { - descriptor: { - code: "ETA_TO_NEAREST_DRIVER_MIN", - }, - value: "3", - }, - ], - }, - ], - }, - ], - payments: [ - { - collected_by: "BPP", - id: "PA1", - params: { - bank_account_number: "xxxxxxxxxxxxxx", - bank_code: "XXXXXXXX", - virtual_payment_address: "9988199772@okicic", - transaction_id: "f08966dc-4c7d-4152-9a15-1046798cc39c", - amount: "146", - }, - status: "PAID", - tags: [ - { - descriptor: { - code: "SETTLEMENT_DETAILS", - }, - display: false, - list: [ - { - descriptor: { - code: "SETTLEMENT_TYPE", - }, - value: "UPI", - }, - ], - }, - { - descriptor: { - code: "BUYER_FINDER_FEES", - }, - display: false, - list: [ - { - descriptor: { - code: "BUYER_FINDER_FEES_PERCENTAGE", - }, - value: "1", - }, - ], - }, - { - descriptor: { - code: "SETTLEMENT_TERMS", - }, - display: false, - list: [ - { - descriptor: { - code: "SETTLEMENT_WINDOW", - }, - value: "PT60M", - }, - { - descriptor: { - code: "SETTLEMENT_BASIS", - }, - value: "Delivery", - }, - { - descriptor: { - code: "SETTLEMENT_TYPE", - }, - value: "upi", - }, - { - descriptor: { - code: "MANDATORY_ARBITRATION", - }, - value: "true", - }, - { - descriptor: { - code: "COURT_JURISDICTION", - }, - value: "New Delhi", - }, - { - descriptor: { - code: "DELAY_INTEREST", - }, - value: "2.5", - }, - { - descriptor: { - code: "STATIC_TERMS", - }, - value: "https://example-test-bpp.com/static-terms.txt", - }, - { - descriptor: { - code: "SETTLEMENT_AMOUNT", - }, - value: "174", - }, - ], - }, - ], - type: "ON-FULFILLMENT", - }, - ], - provider: { - id: "P1", - }, - quote: { - breakup: [ - { - price: { - currency: "INR", - value: "30", - }, - title: "BASE_FARE", - }, - { - price: { - currency: "INR", - value: "116", - }, - title: "DISTANCE_FARE", - }, - ], - price: { - currency: "INR", - value: "146", - }, - ttl: "P200S", - }, - }, - status: "COMPLETED", - created_at: "2023-12-10T08:03:34.294Z", - updated_at: "2023-12-11T03:54:28.832Z", - }, - }, - }; - - return data[config]; -}; - -module.exports = { apiResponse }; diff --git a/utils/utils.js b/utils/utils.js index 7d523d0..630ccf5 100644 --- a/utils/utils.js +++ b/utils/utils.js @@ -3,6 +3,7 @@ const {createAuthorizationHeader, isSignatureValid} = require("ondc-crypto-sdk-n const axios = require("axios"); const {extractBusinessData} = require("./buildPayload") const myCache = new cache( { stdTTL: 100, checkperiod: 120 } ); +const logger = require("./logger"); function insertRequest(request,header){ if(!request?.context?.transaction_id) return @@ -37,28 +38,6 @@ async function generateHeader(message){ return myCache.set(transactionId,[],15000) } -const createHeaderFromId = async (body) => { - console.log("Body", JSON.stringify(body)); - - const SIGNING_PRIVATE_KEY = - "Un205TSOdDXTq8E+N/sJOLJ8xalnzZ1EUP1Wcv23sKx70fOfFd4Q2bzfpzPQ+6XZhZv65SH7Pr6YMk8SuFHpxQ=="; - const BAP_ID = "mobility-staging.ondc.org"; - const UNIQUE_KEY_ID = "UK-MOBILITY"; - - try { - const header = await createAuthorizationHeader({ - message: body, - privateKey: SIGNING_PRIVATE_KEY, - bapId: BAP_ID, // Subscriber ID that you get after registering to ONDC Network - bapUniqueKeyId: UNIQUE_KEY_ID, // Unique Key Id or uKid that you get after registering to ONDC Network - }); - console.log("header", header); - - return header; - } catch (e) { - console.log("Error while create headers", e); - } -}; const verifyHeader = async (req, lookup_uri) => { const headers = req.headers; @@ -134,42 +113,38 @@ const handleRequestForJsonMapper = async (response, unsolicited = false) => { }, }, }; - console.log("inside handle request for json mapper", response) + logger.info("inside handle request for json mapper", response) // let session = getCache("jm_" + response.context.transaction_id); let session = null const allSession = getCache(); - console.log("allSessions", allSession); + logger.info("allSessions", allSession); allSession.map((ses) => { if (!ses.startsWith("jm_")) return; const sessionData = getCache(ses); if(sessionData.transactionIds.includes(response.context.transaction_id)) { - console.log(" got session>>>>") + logger.info(" got session>>>>") session = sessionData } }); if (!session) { - console.log("No session exists") + logger.info("No session exists") return } -// console.log("session", session) let config = "" Object.entries(session.protocolCalls).map(item => { - // console.log("item", item) - // console.log("response", response.context) const [key, value] = item if(value.messageId === response.context.message_id) { config = key } }) - // console.log("config>>>>", config) if(config === "" && !unsolicited) { return } @@ -182,7 +157,6 @@ const handleRequestForJsonMapper = async (response, unsolicited = false) => { session = {...session, ...updatedSession} - // console.log("businessPayload", businessPayload); session.protocolCalls[nextRequest] = { ...session.protocolCalls[nextRequest], @@ -203,6 +177,6 @@ const handleRequestForJsonMapper = async (response, unsolicited = false) => { module.exports = { -insertRequest,getCache,generateHeader,deleteCache, verifyHeader, insertSession, createHeaderFromId, handleRequestForJsonMapper +insertRequest,getCache,generateHeader,deleteCache, verifyHeader, insertSession, handleRequestForJsonMapper }