From 9c124be1910f01ef808426769c06ca325e9c6c4b Mon Sep 17 00:00:00 2001 From: "rodrigo.zamboni" Date: Wed, 29 Jun 2022 10:50:03 -0300 Subject: [PATCH] UPGRADE: Added LOgs lib --- package-lock.json | 1777 ++++++++++++++++- package.json | 1 + src/app.module.ts | 2 + src/clients/auth/client.service.ts | 237 ++- src/clients/inputs/client.service.ts | 72 +- src/clients/inputs/interfaces.d.ts | 2 + src/clients/outputs/client.service.ts | 63 +- src/clients/pipelines/client.service.ts | 99 +- src/clients/transformations/client.service.ts | 63 +- src/main.ts | 30 +- src/middlewares/authentication.ts | 1 - src/modules/auth/auth.controller.ts | 36 +- src/modules/catalog/catalog.controller.ts | 159 +- src/modules/catalog/catalog.service.ts | 1 - src/modules/inputs/dtos/input.model.ts | 9 + src/modules/inputs/inputs.controller.ts | 49 +- src/modules/outputs/outputs.controllers.ts | 40 +- src/modules/pipelines/pipelines.controller.ts | 45 +- .../transformations.controller.ts | 53 +- swagger.json | 2 +- 20 files changed, 2456 insertions(+), 285 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5a512dd..10da7d5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "cron-parser": "^4.4.0", "dadosfera-logs": "^1.0.0-alpha.10", "dotenv": "^14.2.0", + "elastic-apm-node": "^3.36.0", "helmet": "^5.0.2", "jsonwebtoken": "^8.5.1", "jwk-to-pem": "^2.0.5", @@ -778,6 +779,17 @@ "node": ">=10" } }, + "node_modules/@elastic/ecs-pino-format": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@elastic/ecs-pino-format/-/ecs-pino-format-1.3.0.tgz", + "integrity": "sha512-U8D57gPECYoRCcwREsrXKBtqeyFFF/KAwHi4rG1u/oQhAg91Kzw8ZtUQJXD/DMDieLOqtbItFr2FRBWI3t3wog==", + "dependencies": { + "@elastic/ecs-helpers": "^1.1.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@elastic/ecs-winston-format": { "version": "1.3.1", "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@elastic/ecs-winston-format/-/ecs-winston-format-1.3.1.tgz", @@ -1711,6 +1723,14 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/@opentelemetry/api": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.1.0.tgz", + "integrity": "sha512-hf+3bwuBwtXsugA2ULBc95qxrOqP2pOekLz34BJhcAKawt94vfeNyUKpYc0lZQ/3sCP6LqRa7UAdHA7i5UODzQ==", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "license": "BSD-3-Clause" @@ -2436,6 +2456,11 @@ "node": ">=0.4.0" } }, + "node_modules/after-all-results": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/after-all-results/-/after-all-results-2.0.0.tgz", + "integrity": "sha512-2zHEyuhSJOuCrmas9YV0YL/MFCWLxe1dS6k/ENhgYrb/JqyMnadLN4iIAc9kkZrbElMDyyAGH/0J18OPErOWLg==" + }, "node_modules/agent-base": { "version": "6.0.2", "dev": true, @@ -2447,6 +2472,27 @@ "node": ">= 6.0.0" } }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/agentkeepalive/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/ajv": { "version": "8.9.0", "dev": true, @@ -2589,10 +2635,54 @@ "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/async/-/async-3.2.4.tgz", "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, + "node_modules/async-cache": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/async-cache/-/async-cache-1.1.0.tgz", + "integrity": "sha512-YDQc4vBn5NFhY6g6HhVshyi3Fy9+SQ5ePnE7JLDJn1DoL+i7ER+vMwtTNOYk9leZkYMnOwpBCWqyLDPw8Aig8g==", + "deprecated": "No longer maintained. Use [lru-cache](http://npm.im/lru-cache) version 7.6 or higher, and provide an asynchronous `fetchMethod` option.", + "dependencies": { + "lru-cache": "^4.0.0" + } + }, + "node_modules/async-cache/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/async-cache/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + }, + "node_modules/async-value": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/async-value/-/async-value-1.2.2.tgz", + "integrity": "sha512-8rwtYe32OAS1W9CTwvknoyts+mc3ta8N7Pi0h7AjkMaKvsFbr39K+gEfZ7Z81aPXQ1sK5M23lgLy1QfZpcpadQ==" + }, + "node_modules/async-value-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/async-value-promise/-/async-value-promise-1.1.1.tgz", + "integrity": "sha512-c2RFDKjJle1rHa0YxN9Ysu97/QBu3Wa+NOejJxsX+1qVDJrkD3JL/GN1B3gaILAEXJXbu/4Z1lcoCHFESe/APA==", + "dependencies": { + "async-value": "^1.2.2" + } + }, "node_modules/asynckit": { "version": "0.4.0", "license": "MIT" }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/axios": { "version": "0.25.0", "license": "MIT", @@ -2725,6 +2815,22 @@ ], "license": "MIT" }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/binary-extensions": { "version": "2.2.0", "dev": true, @@ -2733,6 +2839,11 @@ "node": ">=8" } }, + "node_modules/binary-search": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/binary-search/-/binary-search-1.3.6.tgz", + "integrity": "sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA==" + }, "node_modules/bl": { "version": "4.1.0", "dev": true, @@ -2812,6 +2923,14 @@ "node": ">=8" } }, + "node_modules/breadth-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/breadth-filter/-/breadth-filter-2.0.0.tgz", + "integrity": "sha512-thQShDXnFWSk2oVBixRCyrWsFoV5tfOpWKHmxwafHQDNxCfDBk539utpvytNjmlFrTMqz41poLwJvA1MW3z0MQ==", + "dependencies": { + "object.entries": "^1.0.4" + } + }, "node_modules/brorand": { "version": "1.1.0", "license": "MIT" @@ -3199,6 +3318,16 @@ "version": "2.15.3", "license": "MIT" }, + "node_modules/console-log-level": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/console-log-level/-/console-log-level-1.4.1.tgz", + "integrity": "sha512-VZzbIORbP+PPcN/gg3DXClTLPLg5Slwd5fL2MIc+o1qZ4BXBvWyc6QxPk6T/Mkr6IVjRpoAGf32XxP3ZWMVRcQ==" + }, + "node_modules/container-info": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/container-info/-/container-info-1.1.0.tgz", + "integrity": "sha512-eD2zLAmxGS2kmL4f1jY8BdOqnmpL6X70kvzTBW/9FIQnxoxiBJ4htMsTmtPLPWRs7NHYFvqKQ1VtppV08mdsQA==" + }, "node_modules/content-disposition": { "version": "0.5.4", "license": "MIT", @@ -3400,6 +3529,21 @@ "clone": "^1.0.2" } }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "license": "MIT", @@ -3518,6 +3662,139 @@ "version": "1.1.1", "license": "MIT" }, + "node_modules/elastic-apm-http-client": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/elastic-apm-http-client/-/elastic-apm-http-client-11.0.1.tgz", + "integrity": "sha512-5AOWlhs2WlZpI+DfgGqY/8Rk7KF8WeevaO8R961eBylavU6GWhLRNiJncohn5jsvrqhmeT19azBvy/oYRN7bJw==", + "dependencies": { + "agentkeepalive": "^4.2.1", + "breadth-filter": "^2.0.0", + "container-info": "^1.0.1", + "end-of-stream": "^1.4.4", + "fast-safe-stringify": "^2.0.7", + "fast-stream-to-buffer": "^1.0.0", + "object-filter-sequence": "^1.0.0", + "readable-stream": "^3.4.0", + "semver": "^6.3.0", + "stream-chopper": "^3.0.1" + }, + "engines": { + "node": "^8.6.0 || 10 || >=12" + } + }, + "node_modules/elastic-apm-http-client/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/elastic-apm-http-client/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/elastic-apm-node": { + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/elastic-apm-node/-/elastic-apm-node-3.36.0.tgz", + "integrity": "sha512-4BDfLjfBHDQbXOyj8Ef//w31Cpvzh8z/tofNDPRDUsqpp/Nkt7KFNmHKgVCMxYi9e3Sd/2Mj+K4CoIuSriW9+Q==", + "dependencies": { + "@elastic/ecs-pino-format": "^1.2.0", + "@opentelemetry/api": "^1.1.0", + "after-all-results": "^2.0.0", + "async-cache": "^1.1.0", + "async-value-promise": "^1.1.1", + "basic-auth": "^2.0.1", + "cookie": "^0.4.0", + "core-util-is": "^1.0.2", + "elastic-apm-http-client": "11.0.1", + "end-of-stream": "^1.4.4", + "error-callsites": "^2.0.4", + "error-stack-parser": "^2.0.6", + "escape-string-regexp": "^4.0.0", + "fast-safe-stringify": "^2.0.7", + "http-headers": "^3.0.2", + "is-native": "^1.0.1", + "lru-cache": "^6.0.0", + "measured-reporting": "^1.51.1", + "monitor-event-loop-delay": "^1.0.0", + "object-filter-sequence": "^1.0.0", + "object-identity-map": "^1.0.2", + "original-url": "^1.2.3", + "pino": "^6.11.2", + "relative-microtime": "^2.0.0", + "require-in-the-middle": "^5.0.3", + "semver": "^6.3.0", + "set-cookie-serde": "^1.0.0", + "shallow-clone-shim": "^2.0.0", + "source-map": "^0.8.0-beta.0", + "sql-summary": "^1.0.1", + "traverse": "^0.6.6", + "unicode-byte-truncate": "^1.0.0" + }, + "engines": { + "node": "^8.6.0 || 10 || 12 || 14 || 16 || 17 || 18" + } + }, + "node_modules/elastic-apm-node/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/elastic-apm-node/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/elastic-apm-node/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/elastic-apm-node/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/elastic-apm-node/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "node_modules/elastic-apm-node/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.141", "dev": true, @@ -3565,7 +3842,6 @@ }, "node_modules/end-of-stream": { "version": "1.4.4", - "dev": true, "license": "MIT", "dependencies": { "once": "^1.4.0" @@ -3583,6 +3859,14 @@ "node": ">=10.13.0" } }, + "node_modules/error-callsites": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/error-callsites/-/error-callsites-2.0.4.tgz", + "integrity": "sha512-V877Ch4FC4FN178fDK1fsrHN4I1YQIBdtjKrHh3BUHMnh3SMvwUVrqkaOgDpUuevgSNna0RBq6Ox9SGlxYrigA==", + "engines": { + "node": ">=6.x" + } + }, "node_modules/error-ex": { "version": "1.3.2", "dev": true, @@ -3591,11 +3875,71 @@ "is-arrayish": "^0.2.1" } }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es-module-lexer": { "version": "0.9.3", "dev": true, "license": "MIT" }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/escalade": { "version": "3.1.1", "license": "MIT", @@ -3609,7 +3953,6 @@ }, "node_modules/escape-string-regexp": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -4167,10 +4510,26 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-redact": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.1.tgz", + "integrity": "sha512-odVmjC8x8jNeMZ3C+rPMESzXVSEU8tSWSHv9HFxP2mm89G/1WwqhrerJDQm9Zus8X6aoRgQDThKqptdNA6bt+A==", + "engines": { + "node": ">=6" + } + }, "node_modules/fast-safe-stringify": { "version": "2.1.1", "license": "MIT" }, + "node_modules/fast-stream-to-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-stream-to-buffer/-/fast-stream-to-buffer-1.0.0.tgz", + "integrity": "sha512-bI/544WUQlD2iXBibQbOMSmG07Hay7YrpXlKaeGTPT7H7pC0eitt3usak5vUwEvCGK/O7rUAM3iyQValGU22TQ==", + "dependencies": { + "end-of-stream": "^1.4.1" + } + }, "node_modules/fastq": { "version": "1.13.0", "dev": true, @@ -4287,6 +4646,11 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/flatstr": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", + "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==" + }, "node_modules/flatted": { "version": "3.2.5", "dev": true, @@ -4407,6 +4771,11 @@ "node": ">= 0.6" } }, + "node_modules/forwarded-parse": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/forwarded-parse/-/forwarded-parse-2.1.2.tgz", + "integrity": "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==" + }, "node_modules/fresh": { "version": "0.5.2", "license": "MIT", @@ -4440,11 +4809,36 @@ "version": "1.1.1", "license": "MIT" }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/functional-red-black-tree": { "version": "1.0.1", "dev": true, "license": "MIT" }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "dev": true, @@ -4491,6 +4885,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { "version": "7.2.3", "license": "ISC", @@ -4573,6 +4982,14 @@ "node": ">= 0.4.0" } }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "4.0.0", "license": "MIT", @@ -4580,6 +4997,17 @@ "node": ">=8" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { "version": "1.0.3", "license": "MIT", @@ -4590,6 +5018,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hash.js": { "version": "1.1.7", "license": "MIT", @@ -4652,6 +5094,14 @@ "node": ">= 0.8" } }, + "node_modules/http-headers": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-headers/-/http-headers-3.0.2.tgz", + "integrity": "sha512-87E1I+2Wg4dxxz4rcxElo3dxO/w1ZtgL1yA0Sb6vH3qU16vRKq1NjWQv9SCY3ly2OQROcoxHZOUpmelS+k6wOw==", + "dependencies": { + "next-line": "^1.1.0" + } + }, "node_modules/http-proxy-agent": { "version": "4.0.1", "dev": true, @@ -4685,6 +5135,14 @@ "node": ">=10.17.0" } }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dependencies": { + "ms": "^2.0.0" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "license": "MIT", @@ -4829,6 +5287,19 @@ "dev": true, "license": "0BSD" }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/interpret": { "version": "1.4.0", "dev": true, @@ -4849,6 +5320,17 @@ "dev": true, "license": "MIT" }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "dev": true, @@ -4860,9 +5342,34 @@ "node": ">=8" } }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-core-module": { "version": "2.9.0", - "dev": true, "license": "MIT", "dependencies": { "has": "^1.0.3" @@ -4871,6 +5378,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "dev": true, @@ -4879,6 +5400,17 @@ "node": ">=0.10.0" } }, + "node_modules/is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "license": "MIT", @@ -4905,6 +5437,14 @@ "node": ">=0.10.0" } }, + "node_modules/is-integer": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.7.tgz", + "integrity": "sha512-RPQc/s9yBHSvpi+hs9dYiJ2cuFeU6x3TyyIp8O2H6SKEltIvJOzRj9ToyvcStDvPR/pS4rxgr1oBFajQjZ2Szg==", + "dependencies": { + "is-finite": "^1.0.0" + } + }, "node_modules/is-interactive": { "version": "1.0.0", "dev": true, @@ -4913,6 +5453,31 @@ "node": ">=8" } }, + "node_modules/is-native": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-native/-/is-native-1.0.1.tgz", + "integrity": "sha512-I4z9hx+4u3/zyvpvGtAR+n7SodJugE+i2jiS8yfq1A9QAZY0KldLQz0SBptLC9ti7kBlpghWUwTKE2BA62eCcw==", + "dependencies": { + "is-nil": "^1.0.0", + "to-source-code": "^1.0.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-nil": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-nil/-/is-nil-1.0.1.tgz", + "integrity": "sha512-m2Rm8PhUFDNNhgvwZJjJG74a9h5CHU0fkA8WT+WGlCjyEbZ2jPwgb+ZxHu4np284EqNVyOsgppReK4qy/TwEwg==" + }, "node_modules/is-number": { "version": "7.0.0", "dev": true, @@ -4921,11 +5486,51 @@ "node": ">=0.12.0" } }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "dev": true, "license": "MIT" }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-stream": { "version": "2.0.1", "license": "MIT", @@ -4936,6 +5541,34 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "dev": true, @@ -4952,6 +5585,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/isarray": { "version": "1.0.0", "license": "MIT" @@ -6135,6 +6779,11 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" + }, "node_modules/log-symbols": { "version": "4.1.0", "dev": true, @@ -6183,7 +6832,6 @@ }, "node_modules/lru-cache": { "version": "6.0.0", - "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -6254,6 +6902,37 @@ "tmpl": "1.0.5" } }, + "node_modules/mapcap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mapcap/-/mapcap-1.0.0.tgz", + "integrity": "sha512-KcNlZSlFPx+r1jYZmxEbTVymG+dIctf10WmWkuhrhrblM+KMoF77HelwihL5cxYlORye79KoR4IlOOk99lUJ0g==" + }, + "node_modules/measured-core": { + "version": "1.51.1", + "resolved": "https://registry.npmjs.org/measured-core/-/measured-core-1.51.1.tgz", + "integrity": "sha512-DZQP9SEwdqqYRvT2slMK81D/7xwdxXosZZBtLVfPSo6y5P672FBTbzHVdN4IQyUkUpcVOR9pIvtUy5Ryl7NKyg==", + "dependencies": { + "binary-search": "^1.3.3", + "optional-js": "^2.0.0" + }, + "engines": { + "node": ">= 5.12" + } + }, + "node_modules/measured-reporting": { + "version": "1.51.1", + "resolved": "https://registry.npmjs.org/measured-reporting/-/measured-reporting-1.51.1.tgz", + "integrity": "sha512-JCt+2u6XT1I5lG3SuYqywE0e62DJuAzBcfMzWGUhIYtPQV2Vm4HiYt/durqmzsAbZV181CEs+o/jMKWJKkYIWw==", + "dependencies": { + "console-log-level": "^1.4.1", + "mapcap": "^1.0.0", + "measured-core": "^1.51.1", + "optional-js": "^2.0.0" + }, + "engines": { + "node": ">= 5.12" + } + }, "node_modules/media-typer": { "version": "0.3.0", "license": "MIT", @@ -6375,6 +7054,11 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/module-details-from-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" + }, "node_modules/moment": { "version": "2.29.3", "license": "MIT", @@ -6392,25 +7076,30 @@ "node": "*" } }, + "node_modules/monitor-event-loop-delay": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/monitor-event-loop-delay/-/monitor-event-loop-delay-1.0.0.tgz", + "integrity": "sha512-YRIr1exCIfBDLZle8WHOfSo7Xg3M+phcZfq9Fx1L6Abo+atGp7cge5pM7PjyBn4s1oZI/BRD4EMrzQBbPpVb5Q==" + }, "node_modules/ms": { "version": "2.1.2", "license": "MIT" }, "node_modules/multer": { - "version": "1.4.4", - "license": "MIT", + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", "dependencies": { "append-field": "^1.0.0", - "busboy": "^0.2.11", + "busboy": "^1.0.0", "concat-stream": "^1.5.2", "mkdirp": "^0.5.4", "object-assign": "^4.1.1", - "on-finished": "^2.3.0", "type-is": "^1.6.4", "xtend": "^4.0.0" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 6.0.0" } }, "node_modules/mute-stream": { @@ -6435,6 +7124,11 @@ "dev": true, "license": "MIT" }, + "node_modules/next-line": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-line/-/next-line-1.1.0.tgz", + "integrity": "sha512-+I10J3wKNoKddNxn0CNpoZ3eTZuqxjNM3b1GImVx22+ePI+Y15P8g/j3WsbP0fhzzrFzrtjOAoq5NCCucswXOQ==" + }, "node_modules/nock": { "version": "13.2.4", "dev": true, @@ -6532,6 +7226,11 @@ "node": ">=0.10.0" } }, + "node_modules/object-filter-sequence": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/object-filter-sequence/-/object-filter-sequence-1.0.0.tgz", + "integrity": "sha512-CsubGNxhIEChNY4cXYuA6KXafztzHqzLLZ/y3Kasf3A+sa3lL9thq3z+7o0pZqzEinjXT6lXDPAfVWI59dUyzQ==" + }, "node_modules/object-hash": { "version": "3.0.0", "license": "MIT", @@ -6539,6 +7238,14 @@ "node": ">= 6" } }, + "node_modules/object-identity-map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-identity-map/-/object-identity-map-1.0.2.tgz", + "integrity": "sha512-a2XZDGyYTngvGS67kWnqVdpoaJWsY7C1GhPJvejWAFCsUioTAaiTu8oBad7c6cI4McZxr4CmvnZeycK05iav5A==", + "dependencies": { + "object.entries": "^1.1.0" + } + }, "node_modules/object-inspect": { "version": "1.12.2", "license": "MIT", @@ -6546,6 +7253,44 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/on-finished": { "version": "2.4.1", "license": "MIT", @@ -6590,6 +7335,11 @@ "dev": true, "license": "MIT" }, + "node_modules/optional-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/optional-js/-/optional-js-2.3.0.tgz", + "integrity": "sha512-B0LLi+Vg+eko++0z/b8zIv57kp7HKEzaPJo7LowJXMUKYdf+3XJGu/cw03h/JhIOsLnP+cG5QnTHAuicjA5fMw==" + }, "node_modules/optionator": { "version": "0.9.1", "dev": true, @@ -6643,6 +7393,14 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/original-url": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/original-url/-/original-url-1.2.3.tgz", + "integrity": "sha512-BYm+pKYLtS4mVe/mgT3YKGtWV5HzN/XKiaIu1aK4rsxyjuHeTW9N+xVBEpJcY1onB3nccfH0RbzUEoimMqFUHQ==", + "dependencies": { + "forwarded-parse": "^2.1.0" + } + }, "node_modules/os-name": { "version": "4.0.1", "dev": true, @@ -6764,7 +7522,6 @@ }, "node_modules/path-parse": { "version": "1.0.7", - "dev": true, "license": "MIT" }, "node_modules/path-to-regexp": { @@ -6795,6 +7552,28 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pino": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-6.14.0.tgz", + "integrity": "sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==", + "dependencies": { + "fast-redact": "^3.0.0", + "fast-safe-stringify": "^2.0.8", + "flatstr": "^1.0.12", + "pino-std-serializers": "^3.1.0", + "process-warning": "^1.0.0", + "quick-format-unescaped": "^4.0.3", + "sonic-boom": "^1.0.2" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-std-serializers": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz", + "integrity": "sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==" + }, "node_modules/pirates": { "version": "4.0.5", "dev": true, @@ -6883,6 +7662,11 @@ "version": "2.0.1", "license": "MIT" }, + "node_modules/process-warning": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", + "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" + }, "node_modules/prompts": { "version": "2.4.2", "dev": true, @@ -6938,6 +7722,11 @@ "node": ">= 0.10" } }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" + }, "node_modules/psl": { "version": "1.8.0", "dev": true, @@ -6991,6 +7780,11 @@ ], "license": "MIT" }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" + }, "node_modules/randombytes": { "version": "2.1.0", "dev": true, @@ -7066,6 +7860,22 @@ "version": "0.1.13", "license": "Apache-2.0" }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regexpp": { "version": "3.2.0", "dev": true, @@ -7077,6 +7887,11 @@ "url": "https://github.com/sponsors/mysticatea" } }, + "node_modules/relative-microtime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/relative-microtime/-/relative-microtime-2.0.0.tgz", + "integrity": "sha512-l18ha6HEZc+No/uK4GyAnNxgKW7nvEe35IaeN54sShMojtqik2a6GbTyuiezkjpPaqP874Z3lW5ysBo5irz4NA==" + }, "node_modules/require-directory": { "version": "2.1.1", "license": "MIT", @@ -7092,9 +7907,18 @@ "node": ">=0.10.0" } }, + "node_modules/require-in-the-middle": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.1.0.tgz", + "integrity": "sha512-M2rLKVupQfJ5lf9OvqFGIT+9iVLnTmjgbOmpil12hiSQNn5zJTKGPoIisETNjfK+09vP3rpm1zJajmErpr2sEQ==", + "dependencies": { + "debug": "^4.1.1", + "module-details-from-path": "^1.0.3", + "resolve": "^1.12.0" + } + }, "node_modules/resolve": { "version": "1.22.0", - "dev": true, "license": "MIT", "dependencies": { "is-core-module": "^2.8.1", @@ -7377,10 +8201,20 @@ "node": ">= 0.8.0" } }, + "node_modules/set-cookie-serde": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-cookie-serde/-/set-cookie-serde-1.0.0.tgz", + "integrity": "sha512-Vq8e5GsupfJ7okHIvEPcfs5neCo7MZ1ZuWrO3sllYi3DOWt6bSSCpADzqXjz3k0fXehnoFIrmmhty9IN6U6BXQ==" + }, "node_modules/setprototypeof": { "version": "1.2.0", "license": "ISC" }, + "node_modules/shallow-clone-shim": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone-shim/-/shallow-clone-shim-2.0.0.tgz", + "integrity": "sha512-YRNymdiL3KGOoS67d73TEmk4tdPTO9GSMCoiphQsTcC9EtC+AOmMPjkyBkRoCJfW9ASsaZw1craaiw1dPN2D3Q==" + }, "node_modules/shebang-command": { "version": "2.0.0", "dev": true, @@ -7459,6 +8293,15 @@ "node": ">=8" } }, + "node_modules/sonic-boom": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.4.1.tgz", + "integrity": "sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==", + "dependencies": { + "atomic-sleep": "^1.0.0", + "flatstr": "^1.0.12" + } + }, "node_modules/source-map": { "version": "0.7.3", "dev": true, @@ -7494,6 +8337,11 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/sql-summary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sql-summary/-/sql-summary-1.0.1.tgz", + "integrity": "sha512-IpCr2tpnNkP3Jera4ncexsZUp0enJBLr+pHCyTweMUBrbJsTgQeLWx1FXLhoBj/MvcnUQpkgOn2EY8FKOkUzww==" + }, "node_modules/stack-trace": { "version": "0.0.10", "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/stack-trace/-/stack-trace-0.0.10.tgz", @@ -7521,6 +8369,11 @@ "node": ">=8" } }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + }, "node_modules/statuses": { "version": "2.0.1", "license": "MIT", @@ -7528,6 +8381,27 @@ "node": ">= 0.8" } }, + "node_modules/stream-chopper": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/stream-chopper/-/stream-chopper-3.0.1.tgz", + "integrity": "sha512-f7h+ly8baAE26iIjcp3VbnBkbIRGtrvV0X0xxFM/d7fwLTYnLzDPTXRKNxa2HZzohOrc96NTrR+FaV3mzOelNA==", + "dependencies": { + "readable-stream": "^3.0.6" + } + }, + "node_modules/stream-chopper/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/streamsearch": { "version": "1.1.0", "engines": { @@ -7574,6 +8448,32 @@ "node": ">=8" } }, + "node_modules/string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "license": "MIT", @@ -7705,7 +8605,6 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -7898,6 +8797,14 @@ "node": ">=8.0" } }, + "node_modules/to-source-code": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/to-source-code/-/to-source-code-1.0.2.tgz", + "integrity": "sha512-YzWtjmNIf3E75eZYa7m1SCyl0vgOGoTzdpH3svfa8SUm5rqTgl9hnDolrAGOghCF9P2gsITXQoMrlujOoz+RPw==", + "dependencies": { + "is-nil": "^1.0.0" + } + }, "node_modules/toidentifier": { "version": "1.0.1", "license": "MIT", @@ -7937,6 +8844,11 @@ "node": ">=8" } }, + "node_modules/traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==" + }, "node_modules/tree-kill": { "version": "1.2.2", "dev": true, @@ -8218,6 +9130,34 @@ "node": ">=4.2.0" } }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unicode-byte-truncate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-byte-truncate/-/unicode-byte-truncate-1.0.0.tgz", + "integrity": "sha512-GQgHk6DodEoKddKQdjnv7xKS9G09XCfHWX0R4RKht+EbUMSiVEmtWHGFO8HUm+6NvWik3E2/DG4MxTitOLL64A==", + "dependencies": { + "is-integer": "^1.0.6", + "unicode-substring": "^0.1.0" + } + }, + "node_modules/unicode-substring": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicode-substring/-/unicode-substring-0.1.0.tgz", + "integrity": "sha512-36Xaw9wXi7MB/3/EQZZHkZyyiRNa9i3k9YtPAz2KfqMVH2xutdXyMHn4Igarmnvr+wOrfWa/6njhY+jPpXN2EQ==" + }, "node_modules/universalify": { "version": "2.0.0", "dev": true, @@ -8445,6 +9385,21 @@ "node": ">= 8" } }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/windows-release": { "version": "4.0.0", "dev": true, @@ -8655,7 +9610,6 @@ }, "node_modules/yallist": { "version": "4.0.0", - "dev": true, "license": "ISC" }, "node_modules/yaml": { @@ -9176,6 +10130,14 @@ "fast-json-stringify": "^2.4.1" } }, + "@elastic/ecs-pino-format": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@elastic/ecs-pino-format/-/ecs-pino-format-1.3.0.tgz", + "integrity": "sha512-U8D57gPECYoRCcwREsrXKBtqeyFFF/KAwHi4rG1u/oQhAg91Kzw8ZtUQJXD/DMDieLOqtbItFr2FRBWI3t3wog==", + "requires": { + "@elastic/ecs-helpers": "^1.1.0" + } + }, "@elastic/ecs-winston-format": { "version": "1.3.1", "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@elastic/ecs-winston-format/-/ecs-winston-format-1.3.1.tgz", @@ -9740,6 +10702,11 @@ } } }, + "@opentelemetry/api": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.1.0.tgz", + "integrity": "sha512-hf+3bwuBwtXsugA2ULBc95qxrOqP2pOekLz34BJhcAKawt94vfeNyUKpYc0lZQ/3sCP6LqRa7UAdHA7i5UODzQ==" + }, "@protobufjs/aspromise": { "version": "1.1.2" }, @@ -10269,6 +11236,11 @@ "version": "7.2.0", "dev": true }, + "after-all-results": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/after-all-results/-/after-all-results-2.0.0.tgz", + "integrity": "sha512-2zHEyuhSJOuCrmas9YV0YL/MFCWLxe1dS6k/ENhgYrb/JqyMnadLN4iIAc9kkZrbElMDyyAGH/0J18OPErOWLg==" + }, "agent-base": { "version": "6.0.2", "dev": true, @@ -10276,6 +11248,23 @@ "debug": "4" } }, + "agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" + } + } + }, "ajv": { "version": "8.9.0", "dev": true, @@ -10363,9 +11352,51 @@ "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/async/-/async-3.2.4.tgz", "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, + "async-cache": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/async-cache/-/async-cache-1.1.0.tgz", + "integrity": "sha512-YDQc4vBn5NFhY6g6HhVshyi3Fy9+SQ5ePnE7JLDJn1DoL+i7ER+vMwtTNOYk9leZkYMnOwpBCWqyLDPw8Aig8g==", + "requires": { + "lru-cache": "^4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + } + } + }, + "async-value": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/async-value/-/async-value-1.2.2.tgz", + "integrity": "sha512-8rwtYe32OAS1W9CTwvknoyts+mc3ta8N7Pi0h7AjkMaKvsFbr39K+gEfZ7Z81aPXQ1sK5M23lgLy1QfZpcpadQ==" + }, + "async-value-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/async-value-promise/-/async-value-promise-1.1.1.tgz", + "integrity": "sha512-c2RFDKjJle1rHa0YxN9Ysu97/QBu3Wa+NOejJxsX+1qVDJrkD3JL/GN1B3gaILAEXJXbu/4Z1lcoCHFESe/APA==", + "requires": { + "async-value": "^1.2.2" + } + }, "asynckit": { "version": "0.4.0" }, + "atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==" + }, "axios": { "version": "0.25.0", "requires": { @@ -10450,10 +11481,30 @@ "version": "1.5.1", "dev": true }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, "binary-extensions": { "version": "2.2.0", "dev": true }, + "binary-search": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/binary-search/-/binary-search-1.3.6.tgz", + "integrity": "sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA==" + }, "bl": { "version": "4.1.0", "dev": true, @@ -10519,6 +11570,14 @@ "fill-range": "^7.0.1" } }, + "breadth-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/breadth-filter/-/breadth-filter-2.0.0.tgz", + "integrity": "sha512-thQShDXnFWSk2oVBixRCyrWsFoV5tfOpWKHmxwafHQDNxCfDBk539utpvytNjmlFrTMqz41poLwJvA1MW3z0MQ==", + "requires": { + "object.entries": "^1.0.4" + } + }, "brorand": { "version": "1.1.0" }, @@ -10758,6 +11817,16 @@ "consola": { "version": "2.15.3" }, + "console-log-level": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/console-log-level/-/console-log-level-1.4.1.tgz", + "integrity": "sha512-VZzbIORbP+PPcN/gg3DXClTLPLg5Slwd5fL2MIc+o1qZ4BXBvWyc6QxPk6T/Mkr6IVjRpoAGf32XxP3ZWMVRcQ==" + }, + "container-info": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/container-info/-/container-info-1.1.0.tgz", + "integrity": "sha512-eD2zLAmxGS2kmL4f1jY8BdOqnmpL6X70kvzTBW/9FIQnxoxiBJ4htMsTmtPLPWRs7NHYFvqKQ1VtppV08mdsQA==" + }, "content-disposition": { "version": "0.5.4", "requires": { @@ -10902,6 +11971,15 @@ "clone": "^1.0.2" } }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, "delayed-stream": { "version": "1.0.0" }, @@ -10973,6 +12051,122 @@ "ee-first": { "version": "1.1.1" }, + "elastic-apm-http-client": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/elastic-apm-http-client/-/elastic-apm-http-client-11.0.1.tgz", + "integrity": "sha512-5AOWlhs2WlZpI+DfgGqY/8Rk7KF8WeevaO8R961eBylavU6GWhLRNiJncohn5jsvrqhmeT19azBvy/oYRN7bJw==", + "requires": { + "agentkeepalive": "^4.2.1", + "breadth-filter": "^2.0.0", + "container-info": "^1.0.1", + "end-of-stream": "^1.4.4", + "fast-safe-stringify": "^2.0.7", + "fast-stream-to-buffer": "^1.0.0", + "object-filter-sequence": "^1.0.0", + "readable-stream": "^3.4.0", + "semver": "^6.3.0", + "stream-chopper": "^3.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "elastic-apm-node": { + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/elastic-apm-node/-/elastic-apm-node-3.36.0.tgz", + "integrity": "sha512-4BDfLjfBHDQbXOyj8Ef//w31Cpvzh8z/tofNDPRDUsqpp/Nkt7KFNmHKgVCMxYi9e3Sd/2Mj+K4CoIuSriW9+Q==", + "requires": { + "@elastic/ecs-pino-format": "^1.2.0", + "@opentelemetry/api": "^1.1.0", + "after-all-results": "^2.0.0", + "async-cache": "^1.1.0", + "async-value-promise": "^1.1.1", + "basic-auth": "^2.0.1", + "cookie": "^0.4.0", + "core-util-is": "^1.0.2", + "elastic-apm-http-client": "11.0.1", + "end-of-stream": "^1.4.4", + "error-callsites": "^2.0.4", + "error-stack-parser": "^2.0.6", + "escape-string-regexp": "^4.0.0", + "fast-safe-stringify": "^2.0.7", + "http-headers": "^3.0.2", + "is-native": "^1.0.1", + "lru-cache": "^6.0.0", + "measured-reporting": "^1.51.1", + "monitor-event-loop-delay": "^1.0.0", + "object-filter-sequence": "^1.0.0", + "object-identity-map": "^1.0.2", + "original-url": "^1.2.3", + "pino": "^6.11.2", + "relative-microtime": "^2.0.0", + "require-in-the-middle": "^5.0.3", + "semver": "^6.3.0", + "set-cookie-serde": "^1.0.0", + "shallow-clone-shim": "^2.0.0", + "source-map": "^0.8.0-beta.0", + "sql-summary": "^1.0.1", + "traverse": "^0.6.6", + "unicode-byte-truncate": "^1.0.0" + }, + "dependencies": { + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "requires": { + "whatwg-url": "^7.0.0" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "requires": { + "punycode": "^2.1.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, "electron-to-chromium": { "version": "1.4.141", "dev": true @@ -11006,7 +12200,6 @@ }, "end-of-stream": { "version": "1.4.4", - "dev": true, "requires": { "once": "^1.4.0" } @@ -11019,6 +12212,11 @@ "tapable": "^2.2.0" } }, + "error-callsites": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/error-callsites/-/error-callsites-2.0.4.tgz", + "integrity": "sha512-V877Ch4FC4FN178fDK1fsrHN4I1YQIBdtjKrHh3BUHMnh3SMvwUVrqkaOgDpUuevgSNna0RBq6Ox9SGlxYrigA==" + }, "error-ex": { "version": "1.3.2", "dev": true, @@ -11026,10 +12224,58 @@ "is-arrayish": "^0.2.1" } }, + "error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "requires": { + "stackframe": "^1.3.4" + } + }, + "es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + } + }, "es-module-lexer": { "version": "0.9.3", "dev": true }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "escalade": { "version": "3.1.1" }, @@ -11037,8 +12283,7 @@ "version": "1.0.3" }, "escape-string-regexp": { - "version": "4.0.0", - "dev": true + "version": "4.0.0" }, "escodegen": { "version": "2.0.0", @@ -11410,9 +12655,22 @@ "version": "2.0.6", "dev": true }, + "fast-redact": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.1.tgz", + "integrity": "sha512-odVmjC8x8jNeMZ3C+rPMESzXVSEU8tSWSHv9HFxP2mm89G/1WwqhrerJDQm9Zus8X6aoRgQDThKqptdNA6bt+A==" + }, "fast-safe-stringify": { "version": "2.1.1" }, + "fast-stream-to-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-stream-to-buffer/-/fast-stream-to-buffer-1.0.0.tgz", + "integrity": "sha512-bI/544WUQlD2iXBibQbOMSmG07Hay7YrpXlKaeGTPT7H7pC0eitt3usak5vUwEvCGK/O7rUAM3iyQValGU22TQ==", + "requires": { + "end-of-stream": "^1.4.1" + } + }, "fastq": { "version": "1.13.0", "dev": true, @@ -11498,6 +12756,11 @@ "rimraf": "^3.0.2" } }, + "flatstr": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", + "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==" + }, "flatted": { "version": "3.2.5", "dev": true @@ -11565,6 +12828,11 @@ "forwarded": { "version": "0.2.0" }, + "forwarded-parse": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/forwarded-parse/-/forwarded-parse-2.1.2.tgz", + "integrity": "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==" + }, "fresh": { "version": "0.5.2" }, @@ -11587,10 +12855,26 @@ "function-bind": { "version": "1.1.1" }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, "functional-red-black-tree": { "version": "1.0.1", "dev": true }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, "gensync": { "version": "1.0.0-beta.2", "dev": true @@ -11614,6 +12898,15 @@ "version": "6.0.1", "dev": true }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "glob": { "version": "7.2.3", "requires": { @@ -11665,12 +12958,33 @@ "function-bind": "^1.1.1" } }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + }, "has-flag": { "version": "4.0.0" }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, "has-symbols": { "version": "1.0.3" }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, "hash.js": { "version": "1.1.7", "requires": { @@ -11714,6 +13028,14 @@ "toidentifier": "1.0.1" } }, + "http-headers": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-headers/-/http-headers-3.0.2.tgz", + "integrity": "sha512-87E1I+2Wg4dxxz4rcxElo3dxO/w1ZtgL1yA0Sb6vH3qU16vRKq1NjWQv9SCY3ly2OQROcoxHZOUpmelS+k6wOw==", + "requires": { + "next-line": "^1.1.0" + } + }, "http-proxy-agent": { "version": "4.0.1", "dev": true, @@ -11735,6 +13057,14 @@ "version": "2.1.0", "dev": true }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "requires": { + "ms": "^2.0.0" + } + }, "iconv-lite": { "version": "0.4.24", "requires": { @@ -11819,6 +13149,16 @@ } } }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "interpret": { "version": "1.4.0", "dev": true @@ -11830,6 +13170,14 @@ "version": "0.2.1", "dev": true }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, "is-binary-path": { "version": "2.1.0", "dev": true, @@ -11837,17 +13185,43 @@ "binary-extensions": "^2.0.0" } }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + }, "is-core-module": { "version": "2.9.0", - "dev": true, "requires": { "has": "^1.0.3" } }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-extglob": { "version": "2.1.1", "dev": true }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" + }, "is-fullwidth-code-point": { "version": "3.0.0" }, @@ -11862,21 +13236,89 @@ "is-extglob": "^2.1.1" } }, + "is-integer": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.7.tgz", + "integrity": "sha512-RPQc/s9yBHSvpi+hs9dYiJ2cuFeU6x3TyyIp8O2H6SKEltIvJOzRj9ToyvcStDvPR/pS4rxgr1oBFajQjZ2Szg==", + "requires": { + "is-finite": "^1.0.0" + } + }, "is-interactive": { "version": "1.0.0", "dev": true }, + "is-native": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-native/-/is-native-1.0.1.tgz", + "integrity": "sha512-I4z9hx+4u3/zyvpvGtAR+n7SodJugE+i2jiS8yfq1A9QAZY0KldLQz0SBptLC9ti7kBlpghWUwTKE2BA62eCcw==", + "requires": { + "is-nil": "^1.0.0", + "to-source-code": "^1.0.0" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + }, + "is-nil": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-nil/-/is-nil-1.0.1.tgz", + "integrity": "sha512-m2Rm8PhUFDNNhgvwZJjJG74a9h5CHU0fkA8WT+WGlCjyEbZ2jPwgb+ZxHu4np284EqNVyOsgppReK4qy/TwEwg==" + }, "is-number": { "version": "7.0.0", "dev": true }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-potential-custom-element-name": { "version": "1.0.1", "dev": true }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "requires": { + "call-bind": "^1.0.2" + } + }, "is-stream": { "version": "2.0.1" }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } + }, "is-typedarray": { "version": "1.0.0", "dev": true @@ -11885,6 +13327,14 @@ "version": "0.1.0", "dev": true }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } + }, "isarray": { "version": "1.0.0" }, @@ -12714,6 +14164,11 @@ "version": "4.3.2", "dev": true }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" + }, "log-symbols": { "version": "4.1.0", "dev": true, @@ -12749,7 +14204,6 @@ }, "lru-cache": { "version": "6.0.0", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -12794,6 +14248,31 @@ "tmpl": "1.0.5" } }, + "mapcap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mapcap/-/mapcap-1.0.0.tgz", + "integrity": "sha512-KcNlZSlFPx+r1jYZmxEbTVymG+dIctf10WmWkuhrhrblM+KMoF77HelwihL5cxYlORye79KoR4IlOOk99lUJ0g==" + }, + "measured-core": { + "version": "1.51.1", + "resolved": "https://registry.npmjs.org/measured-core/-/measured-core-1.51.1.tgz", + "integrity": "sha512-DZQP9SEwdqqYRvT2slMK81D/7xwdxXosZZBtLVfPSo6y5P672FBTbzHVdN4IQyUkUpcVOR9pIvtUy5Ryl7NKyg==", + "requires": { + "binary-search": "^1.3.3", + "optional-js": "^2.0.0" + } + }, + "measured-reporting": { + "version": "1.51.1", + "resolved": "https://registry.npmjs.org/measured-reporting/-/measured-reporting-1.51.1.tgz", + "integrity": "sha512-JCt+2u6XT1I5lG3SuYqywE0e62DJuAzBcfMzWGUhIYtPQV2Vm4HiYt/durqmzsAbZV181CEs+o/jMKWJKkYIWw==", + "requires": { + "console-log-level": "^1.4.1", + "mapcap": "^1.0.0", + "measured-core": "^1.51.1", + "optional-js": "^2.0.0" + } + }, "media-typer": { "version": "0.3.0" }, @@ -12863,6 +14342,11 @@ "minimist": "^1.2.6" } }, + "module-details-from-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" + }, "moment": { "version": "2.29.3" }, @@ -12872,18 +14356,24 @@ "moment": ">= 2.9.0" } }, + "monitor-event-loop-delay": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/monitor-event-loop-delay/-/monitor-event-loop-delay-1.0.0.tgz", + "integrity": "sha512-YRIr1exCIfBDLZle8WHOfSo7Xg3M+phcZfq9Fx1L6Abo+atGp7cge5pM7PjyBn4s1oZI/BRD4EMrzQBbPpVb5Q==" + }, "ms": { "version": "2.1.2" }, "multer": { - "version": "1.4.4", + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", "requires": { "append-field": "^1.0.0", - "busboy": "^0.2.11", + "busboy": "^1.0.0", "concat-stream": "^1.5.2", "mkdirp": "^0.5.4", "object-assign": "^4.1.1", - "on-finished": "^2.3.0", "type-is": "^1.6.4", "xtend": "^4.0.0" } @@ -12903,6 +14393,11 @@ "version": "2.6.2", "dev": true }, + "next-line": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-line/-/next-line-1.1.0.tgz", + "integrity": "sha512-+I10J3wKNoKddNxn0CNpoZ3eTZuqxjNM3b1GImVx22+ePI+Y15P8g/j3WsbP0fhzzrFzrtjOAoq5NCCucswXOQ==" + }, "nock": { "version": "13.2.4", "dev": true, @@ -12967,12 +14462,51 @@ "object-assign": { "version": "4.1.1" }, + "object-filter-sequence": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/object-filter-sequence/-/object-filter-sequence-1.0.0.tgz", + "integrity": "sha512-CsubGNxhIEChNY4cXYuA6KXafztzHqzLLZ/y3Kasf3A+sa3lL9thq3z+7o0pZqzEinjXT6lXDPAfVWI59dUyzQ==" + }, "object-hash": { "version": "3.0.0" }, + "object-identity-map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-identity-map/-/object-identity-map-1.0.2.tgz", + "integrity": "sha512-a2XZDGyYTngvGS67kWnqVdpoaJWsY7C1GhPJvejWAFCsUioTAaiTu8oBad7c6cI4McZxr4CmvnZeycK05iav5A==", + "requires": { + "object.entries": "^1.1.0" + } + }, "object-inspect": { "version": "1.12.2" }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, "on-finished": { "version": "2.4.1", "requires": { @@ -13004,6 +14538,11 @@ "version": "0.1.4", "dev": true }, + "optional-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/optional-js/-/optional-js-2.3.0.tgz", + "integrity": "sha512-B0LLi+Vg+eko++0z/b8zIv57kp7HKEzaPJo7LowJXMUKYdf+3XJGu/cw03h/JhIOsLnP+cG5QnTHAuicjA5fMw==" + }, "optionator": { "version": "0.9.1", "dev": true, @@ -13041,6 +14580,14 @@ } } }, + "original-url": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/original-url/-/original-url-1.2.3.tgz", + "integrity": "sha512-BYm+pKYLtS4mVe/mgT3YKGtWV5HzN/XKiaIu1aK4rsxyjuHeTW9N+xVBEpJcY1onB3nccfH0RbzUEoimMqFUHQ==", + "requires": { + "forwarded-parse": "^2.1.0" + } + }, "os-name": { "version": "4.0.1", "dev": true, @@ -13107,8 +14654,7 @@ "dev": true }, "path-parse": { - "version": "1.0.7", - "dev": true + "version": "1.0.7" }, "path-to-regexp": { "version": "3.2.0" @@ -13125,6 +14671,25 @@ "version": "2.3.1", "dev": true }, + "pino": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-6.14.0.tgz", + "integrity": "sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==", + "requires": { + "fast-redact": "^3.0.0", + "fast-safe-stringify": "^2.0.8", + "flatstr": "^1.0.12", + "pino-std-serializers": "^3.1.0", + "process-warning": "^1.0.0", + "quick-format-unescaped": "^4.0.3", + "sonic-boom": "^1.0.2" + } + }, + "pino-std-serializers": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz", + "integrity": "sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==" + }, "pirates": { "version": "4.0.5", "dev": true @@ -13173,6 +14738,11 @@ "process-nextick-args": { "version": "2.0.1" }, + "process-warning": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", + "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" + }, "prompts": { "version": "2.4.2", "dev": true, @@ -13210,6 +14780,11 @@ "ipaddr.js": "1.9.1" } }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" + }, "psl": { "version": "1.8.0", "dev": true @@ -13235,6 +14810,11 @@ "version": "1.2.3", "dev": true }, + "quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" + }, "randombytes": { "version": "2.1.0", "dev": true, @@ -13292,10 +14872,25 @@ "reflect-metadata": { "version": "0.1.13" }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, "regexpp": { "version": "3.2.0", "dev": true }, + "relative-microtime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/relative-microtime/-/relative-microtime-2.0.0.tgz", + "integrity": "sha512-l18ha6HEZc+No/uK4GyAnNxgKW7nvEe35IaeN54sShMojtqik2a6GbTyuiezkjpPaqP874Z3lW5ysBo5irz4NA==" + }, "require-directory": { "version": "2.1.1" }, @@ -13303,9 +14898,18 @@ "version": "2.0.2", "dev": true }, + "require-in-the-middle": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.1.0.tgz", + "integrity": "sha512-M2rLKVupQfJ5lf9OvqFGIT+9iVLnTmjgbOmpil12hiSQNn5zJTKGPoIisETNjfK+09vP3rpm1zJajmErpr2sEQ==", + "requires": { + "debug": "^4.1.1", + "module-details-from-path": "^1.0.3", + "resolve": "^1.12.0" + } + }, "resolve": { "version": "1.22.0", - "dev": true, "requires": { "is-core-module": "^2.8.1", "path-parse": "^1.0.7", @@ -13478,9 +15082,19 @@ "send": "0.18.0" } }, + "set-cookie-serde": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-cookie-serde/-/set-cookie-serde-1.0.0.tgz", + "integrity": "sha512-Vq8e5GsupfJ7okHIvEPcfs5neCo7MZ1ZuWrO3sllYi3DOWt6bSSCpADzqXjz3k0fXehnoFIrmmhty9IN6U6BXQ==" + }, "setprototypeof": { "version": "1.2.0" }, + "shallow-clone-shim": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone-shim/-/shallow-clone-shim-2.0.0.tgz", + "integrity": "sha512-YRNymdiL3KGOoS67d73TEmk4tdPTO9GSMCoiphQsTcC9EtC+AOmMPjkyBkRoCJfW9ASsaZw1craaiw1dPN2D3Q==" + }, "shebang-command": { "version": "2.0.0", "dev": true, @@ -13536,6 +15150,15 @@ "version": "3.0.0", "dev": true }, + "sonic-boom": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.4.1.tgz", + "integrity": "sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==", + "requires": { + "atomic-sleep": "^1.0.0", + "flatstr": "^1.0.12" + } + }, "source-map": { "version": "0.7.3", "dev": true @@ -13562,6 +15185,11 @@ "version": "1.0.3", "dev": true }, + "sql-summary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sql-summary/-/sql-summary-1.0.1.tgz", + "integrity": "sha512-IpCr2tpnNkP3Jera4ncexsZUp0enJBLr+pHCyTweMUBrbJsTgQeLWx1FXLhoBj/MvcnUQpkgOn2EY8FKOkUzww==" + }, "stack-trace": { "version": "0.0.10", "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/stack-trace/-/stack-trace-0.0.10.tgz", @@ -13580,9 +15208,34 @@ } } }, + "stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + }, "statuses": { "version": "2.0.1" }, + "stream-chopper": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/stream-chopper/-/stream-chopper-3.0.1.tgz", + "integrity": "sha512-f7h+ly8baAE26iIjcp3VbnBkbIRGtrvV0X0xxFM/d7fwLTYnLzDPTXRKNxa2HZzohOrc96NTrR+FaV3mzOelNA==", + "requires": { + "readable-stream": "^3.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "streamsearch": { "version": "1.1.0" }, @@ -13618,6 +15271,26 @@ "strip-ansi": "^6.0.1" } }, + "string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, "strip-ansi": { "version": "6.0.1", "requires": { @@ -13700,8 +15373,7 @@ } }, "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "dev": true + "version": "1.0.0" }, "swagger-ui-dist": { "version": "4.11.1" @@ -13813,6 +15485,14 @@ "is-number": "^7.0.0" } }, + "to-source-code": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/to-source-code/-/to-source-code-1.0.2.tgz", + "integrity": "sha512-YzWtjmNIf3E75eZYa7m1SCyl0vgOGoTzdpH3svfa8SUm5rqTgl9hnDolrAGOghCF9P2gsITXQoMrlujOoz+RPw==", + "requires": { + "is-nil": "^1.0.0" + } + }, "toidentifier": { "version": "1.0.1" }, @@ -13838,6 +15518,11 @@ "punycode": "^2.1.1" } }, + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==" + }, "tree-kill": { "version": "1.2.2", "dev": true @@ -14000,6 +15685,31 @@ "version": "4.7.2", "dev": true }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "unicode-byte-truncate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-byte-truncate/-/unicode-byte-truncate-1.0.0.tgz", + "integrity": "sha512-GQgHk6DodEoKddKQdjnv7xKS9G09XCfHWX0R4RKht+EbUMSiVEmtWHGFO8HUm+6NvWik3E2/DG4MxTitOLL64A==", + "requires": { + "is-integer": "^1.0.6", + "unicode-substring": "^0.1.0" + } + }, + "unicode-substring": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicode-substring/-/unicode-substring-0.1.0.tgz", + "integrity": "sha512-36Xaw9wXi7MB/3/EQZZHkZyyiRNa9i3k9YtPAz2KfqMVH2xutdXyMHn4Igarmnvr+wOrfWa/6njhY+jPpXN2EQ==" + }, "universalify": { "version": "2.0.0", "dev": true @@ -14147,6 +15857,18 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "windows-release": { "version": "4.0.0", "dev": true, @@ -14287,8 +16009,7 @@ "version": "5.0.8" }, "yallist": { - "version": "4.0.0", - "dev": true + "version": "4.0.0" }, "yaml": { "version": "1.10.2", diff --git a/package.json b/package.json index c5f22f5..236952e 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "cron-parser": "^4.4.0", "dadosfera-logs": "^1.0.0-alpha.10", "dotenv": "^14.2.0", + "elastic-apm-node": "^3.36.0", "helmet": "^5.0.2", "jsonwebtoken": "^8.5.1", "jwk-to-pem": "^2.0.5", diff --git a/src/app.module.ts b/src/app.module.ts index 4ed2bf2..ed4e039 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -1,6 +1,7 @@ import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common'; import { ClientsModule } from '@nestjs/microservices'; import { ConfigModule } from '@nestjs/config'; +import { DadosferaLogger } from 'dadosfera-logs'; import { LoggerMiddleware } from './middlewares/authentication'; @@ -49,6 +50,7 @@ const transformationClient = new TransformationsClientConfiguration(); CatalogController, ], providers: [ + DadosferaLogger, InputsService, TransformationsService, OutputsService, diff --git a/src/clients/auth/client.service.ts b/src/clients/auth/client.service.ts index 840851a..e73da86 100644 --- a/src/clients/auth/client.service.ts +++ b/src/clients/auth/client.service.ts @@ -1,5 +1,6 @@ import { OnModuleInit, Inject } from '@nestjs/common'; import { ClientGrpc } from '@nestjs/microservices'; +import { DadosferaLogger } from 'dadosfera-logs'; import { DucServicesNames, @@ -20,9 +21,14 @@ import { export class AuthClientService implements OnModuleInit { private authService: AuthServiceInterface; + logger: any; constructor( + @Inject(DadosferaLogger) + dadosferaLogger: DadosferaLogger, @Inject('AUTH_PACKAGE') private readonly grpcClient: ClientGrpc, - ) {} + ) { + this.logger = dadosferaLogger.logger; + } onModuleInit() { this.authService = this.grpcClient.getService( @@ -31,43 +37,62 @@ export class AuthClientService implements OnModuleInit { } async signIn({ username, password, totp }: AuthSignInRequest): Promise { - console.log('AuthClientService', 'SignIn'); + this.logger.info('AuthClientService - SignIn'); - return new Promise((resolve, reject) => { + const signInResponse = await new Promise((resolve, reject) => { this.authService.signIn({ username, password, totp }).subscribe({ next: resolve, error: (err) => reject(err.details), complete() { - console.log('done'); + //console.log('done'); }, }); - }); + }) + .then((res) => { + this.logger.info('Done'); + return res; + }) + .catch((err) => { + this.logger.error(err); + throw new Error(err); + }); + return signInResponse; } async enableTotpMFA({ accessToken, password, }: AuthEnableTotpMfaRequest): Promise { - console.log('AuthClientService', 'enableTotpMFA'); + this.logger.info('AuthClientService - enableTotpMFA'); - return new Promise((resolve, reject) => { + const enableTotpMFAResponse = await new Promise((resolve, reject) => { this.authService.enableTotpMfa({ accessToken, password }).subscribe({ next: resolve, error: (err) => reject(err.details), complete() { - console.log('done'); + //console.log('done'); }, }); - }); + }) + .then((res) => { + this.logger.info('Done'); + return res; + }) + .catch((err) => { + this.logger.error(err); + throw new Error(err); + }); + + return enableTotpMFAResponse; } async disableTotpMFA({ accessToken, password, }: AuthDisableTotpMfaRequest): Promise { - console.log('AuthClientService', 'disableTotpMFA'); + this.logger.info('AuthClientService - disableTotpMFA'); - return new Promise((resolve, reject) => { + const disableTotpMFAResponse = await new Promise((resolve, reject) => { this.authService.disableTotpMfa({ accessToken, password }).subscribe({ next: resolve, error: (err) => reject(err.details), @@ -75,47 +100,77 @@ export class AuthClientService implements OnModuleInit { console.log('done'); }, }); - }); + }) + .then((res) => { + this.logger.info('Done'); + return res; + }) + .catch((err) => { + this.logger.error(err); + throw new Error(err); + }); + + return disableTotpMFAResponse; } async dismissTotpMFA({ accessToken, }: AuthDismissTotpMfaRequest): Promise { - console.log('AuthClientService', 'dismissTotpMFA'); + this.logger.info('AuthClientService - dismissTotpMFA'); - return new Promise((resolve, reject) => { + const dismissTotpMFAResponse = await new Promise((resolve, reject) => { this.authService.dismissTotpMfa({ accessToken }).subscribe({ next: resolve, error: (err) => reject(err.details), complete() { - console.log('done'); + //console.log('done'); }, }); - }); + }) + .then((res) => { + this.logger.info('Done'); + return res; + }) + .catch((err) => { + this.logger.error(err); + throw new Error(err); + }); + + return dismissTotpMFAResponse; } async verifyTotp({ accessToken, totp, }: AuthVerifyTotpMfaRequest): Promise { - console.log('AuthClientService', 'disableTotpMFA'); + this.logger.info('AuthClientService - disableTotpMFA'); - return new Promise((resolve, reject) => { + const verifyTotpResponse = await new Promise((resolve, reject) => { this.authService.verifyTotp({ accessToken, totp }).subscribe({ next: resolve, error: (err) => reject(err.details), complete() { - console.log('done'); + //console.log('done'); }, }); - }); + }) + .then((res) => { + this.logger.info('Done'); + return res; + }) + .catch((err) => { + this.logger.error(err); + throw new Error(err); + }); + + return verifyTotpResponse; } async confirmRegister({ username, code, }: AuthConfirmationRequest): Promise { - console.log('AuthClientService', 'confirmRegister'); + this.logger.info('AuthClientService - confirmRegister'); const tokens = await new Promise((resolve, reject) => { this.authService.confirmRegister({ username, code }).subscribe({ @@ -123,16 +178,19 @@ export class AuthClientService implements OnModuleInit { resolve(x); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { - console.log('done'); + //console.log('done'); }, }); }) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err); throw new Error(err); }); return tokens; @@ -141,7 +199,7 @@ export class AuthClientService implements OnModuleInit { async resendeConfirmationCode({ username, }: AuthResendConfirmationCodeRequest): Promise { - console.log('AuthClientService', 'resendConfirmationCode'); + this.logger.info('AuthClientService - resendConfirmationCode'); const authResendConfirmationCodeRequestReturn = await new Promise( (resolve, reject) => { @@ -150,17 +208,20 @@ export class AuthClientService implements OnModuleInit { resolve(x); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { - console.log('done'); + //console.log('done'); }, }); }, ) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err); throw new Error(err); }); return authResendConfirmationCodeRequestReturn; @@ -169,17 +230,27 @@ export class AuthClientService implements OnModuleInit { async refreshAccessToken({ refreshToken, }: AuthRefreshAccessTokenRequest): Promise { - console.log('AuthClientService', 'RefreshAccessToken'); + this.logger.info('AuthClientService - RefreshAccessToken'); - return new Promise((resolve, reject) => { + const refreshAccessTokenResponse = await new Promise((resolve, reject) => { this.authService.refreshAccessToken({ refreshToken }).subscribe({ next: resolve, error: (err) => reject(err.details), complete() { - console.log('done'); + //console.log('done'); }, }); - }); + }) + .then((res) => { + this.logger.info('Done'); + return res; + }) + .catch((err) => { + this.logger.error(err); + throw new Error(err); + }); + + return refreshAccessTokenResponse; } async changePassword({ @@ -187,9 +258,9 @@ export class AuthClientService implements OnModuleInit { oldPassword, newPassword, }: AuthChangePasswordRequest): Promise { - console.log('AuthClientService', 'ChangePassword'); + this.logger.info('AuthClientService - ChangePassword'); - return new Promise((resolve, reject) => { + const changePasswordResponse = await new Promise((resolve, reject) => { this.authService .changePassword({ accessToken, @@ -200,41 +271,73 @@ export class AuthClientService implements OnModuleInit { next: resolve, error: (err) => reject(err.details), complete() { - console.log('done'); + //console.log('done'); }, }); - }); + }) + .then((res) => { + this.logger.info('Done'); + return res; + }) + .catch((err) => { + this.logger.error(err); + throw new Error(err); + }); + + return changePasswordResponse; } async resetPassword({ username }: AuthResetPasswordRequest): Promise { - console.log('AuthClientService', 'resetPassword'); + this.logger.info('AuthClientService - resetPassword'); - return new Promise((resolve, reject) => { + const resetPasswordResponse = await new Promise((resolve, reject) => { this.authService.resetPassword({ username }).subscribe({ next: resolve, error: (err) => reject(err.details), complete() { - console.log('done'); + //console.log('done'); }, }); - }); + }) + .then((res) => { + this.logger.info('Done'); + return res; + }) + .catch((err) => { + this.logger.error(err); + throw new Error(err); + }); + + return resetPasswordResponse; } async verifyResetPasswordCode({ username, code, }: AuthVerifyResetPasswordCodeRequest): Promise { - console.log('AuthClientService', 'verifyResetPasswordCode'); + this.logger.info('AuthClientService - verifyResetPasswordCode'); - return new Promise((resolve, reject) => { - this.authService.verifyResetPasswordCode({ username, code }).subscribe({ - next: resolve, - error: (err) => reject(err.details), - complete() { - console.log('done'); - }, + const verifyResetPasswordCodeResponse = await new Promise( + (resolve, reject) => { + this.authService.verifyResetPasswordCode({ username, code }).subscribe({ + next: resolve, + error: (err) => reject(err.details), + complete() { + //console.log('done'); + }, + }); + }, + ) + .then((res) => { + this.logger.info('Done'); + return res; + }) + .catch((err) => { + this.logger.error(err); + throw new Error(err); }); - }); + + return verifyResetPasswordCodeResponse; } async confirmResetPassword({ @@ -242,18 +345,30 @@ export class AuthClientService implements OnModuleInit { code, newPassword, }: AuthConfirmResetPasswordRequest): Promise { - console.log('AuthClientService', 'confirmResetPassword'); + this.logger.info('AuthClientService - confirmResetPassword'); - return new Promise((resolve, reject) => { - this.authService - .confirmResetPassword({ username, code, newPassword }) - .subscribe({ - next: resolve, - error: (err) => reject(err.details), - complete() { - console.log('done'); - }, - }); - }); + const confirmResetPasswordResponse = await new Promise( + (resolve, reject) => { + this.authService + .confirmResetPassword({ username, code, newPassword }) + .subscribe({ + next: resolve, + error: (err) => reject(err.details), + complete() { + console.log('done'); + }, + }); + }, + ) + .then((res) => { + this.logger.info('Done'); + return res; + }) + .catch((err) => { + this.logger.error(err); + throw new Error(err); + }); + + return confirmResetPasswordResponse; } } diff --git a/src/clients/inputs/client.service.ts b/src/clients/inputs/client.service.ts index 968bb4b..19d966b 100644 --- a/src/clients/inputs/client.service.ts +++ b/src/clients/inputs/client.service.ts @@ -22,13 +22,19 @@ import { objectSnakeToCamel, } from 'src/utils/CaseConverter'; import { mustache } from 'src/utils/mustache'; +import { DadosferaLogger } from 'dadosfera-logs'; import { IIdRequest, UpdateInputRequest } from './interfaces'; export class InputsClientService implements OnModuleInit { private inputService: InputService; + logger: any; constructor( + @Inject(DadosferaLogger) + dadosferaLogger: DadosferaLogger, @Inject('INPUTS_PACKAGE') private readonly grpcClient: ClientGrpc, - ) {} + ) { + this.logger = dadosferaLogger.logger; + } onModuleInit() { this.inputService = @@ -36,7 +42,7 @@ export class InputsClientService implements OnModuleInit { } async newCreate(createInputDto: InputNewCreateRequest) { - console.log('InputClientService', 'Create'); + this.logger.info('InputClientService - Create'); const input = await lastValueFrom( this.inputService.NewCreate(objectSnakeToCamel(createInputDto)), @@ -46,7 +52,7 @@ export class InputsClientService implements OnModuleInit { } async createGeneric(createInputGeneric) { - console.log('InputClientService', 'Create'); + this.logger.info('InputClientService - Create'); const { info, ...data } = createInputGeneric; data.credentials = await this.getInputTokens(data); if (data.options) delete data.options; @@ -66,23 +72,24 @@ export class InputsClientService implements OnModuleInit { } async createS3Inputs(createInputDto: InputCreateS3Request) { - console.log('InputClientService', 'Create'); + this.logger.info('InputClientService - Create'); objectSnakeToCamel(createInputDto); const createInputResponse = await lastValueFrom( this.inputService.CreateS3(createInputDto), ).catch((e) => { throw new HttpException(e.details, 500); }); - console.log('done'); + this.logger.info('Done'); objectCamelToSnake(createInputResponse); return createInputResponse; } async findOne(data: IIdRequest) { - console.log('InputClientService', 'FindOne'); + this.logger.info('InputClientService - FindOne'); const findOneInputResponse = await lastValueFrom( this.inputService.FindOne(objectSnakeToCamel(data)), ).catch((e) => { + this.logger.error(e.details); throw new HttpException(e.details, HttpStatus.INTERNAL_SERVER_ERROR); }); objectCamelToSnake(findOneInputResponse); @@ -90,10 +97,11 @@ export class InputsClientService implements OnModuleInit { } async findAll(data) { - console.log('InputClientService', 'FindAll'); + this.logger.info('InputClientService - FindAll'); const findAllInputResponse = await lastValueFrom( this.inputService.FindAll(objectSnakeToCamel(data)), ).catch((e) => { + this.logger.error(e.details); throw new HttpException(e.details, HttpStatus.INTERNAL_SERVER_ERROR); }); findAllInputResponse.inputs.forEach((input) => objectCamelToSnake(input)); @@ -102,23 +110,26 @@ export class InputsClientService implements OnModuleInit { } async update(updateInputDTO: UpdateInputRequest) { - console.log('InputClientService', 'Update'); + this.logger.info('InputClientService - Update'); const updateInputResponse = await new Promise((resolve, reject) => { this.inputService.Update(objectSnakeToCamel(updateInputDTO)).subscribe({ next(x) { resolve(objectCamelToSnake(x)); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { - console.log('done'); + // console.log('done'); }, }); }) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); @@ -126,7 +137,7 @@ export class InputsClientService implements OnModuleInit { } async remove(idRequest: IIdRequest) { - console.log('InputClientService', 'Remove'); + this.logger.info('InputClientService - Remove'); const removeInputResponse = await new Promise((resolve, reject) => { this.inputService.Remove(objectSnakeToCamel(idRequest)).subscribe({ @@ -134,16 +145,19 @@ export class InputsClientService implements OnModuleInit { resolve(objectCamelToSnake(x)); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { - console.log('done'); + // console.log('done'); }, }); }) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); @@ -151,23 +165,26 @@ export class InputsClientService implements OnModuleInit { } async testConnection(data: TestConnectionRequest) { - console.log('InputClientService', 'TestConnection'); + this.logger.info('InputClientService - TestConnection'); const testConnectionResponse = await new Promise((resolve, reject) => { this.inputService.NewTestConnection(objectSnakeToCamel(data)).subscribe({ next(x) { resolve(objectCamelToSnake(x)); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { - console.log('done'); + // console.log('done'); }, }); }) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); @@ -175,23 +192,26 @@ export class InputsClientService implements OnModuleInit { } async getColumns(data: TestConnectionGetColumnsRequest) { - console.log('InputClientService', 'TestConnection/Get-Columns'); + this.logger.info('InputClientService - TestConnection/Get-Columns'); const getColumnsResponse = await new Promise((resolve, reject) => { this.inputService.GetColumns(objectSnakeToCamel(data)).subscribe({ next(x) { resolve(objectCamelToSnake(x)); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { - console.log('done'); + // console.log('done'); }, }); }) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); @@ -240,7 +260,7 @@ export class InputsClientService implements OnModuleInit { const { data } = await axios .post(options.oauth.get_tokens_url, requestParams) .catch((err) => { - console.log(err.response.data); + this.logger.info(err.response.data); throw new HttpException( err.response.data.message, err.response.status, @@ -261,12 +281,12 @@ export class InputsClientService implements OnModuleInit { // } async getAvailableEntities(data) { - console.log('InputClientService', 'GetAvailableEntities'); + this.logger.info('InputClientService - GetAvailableEntities'); objectSnakeToCamel(data); const response = await lastValueFrom( this.inputService.GetAvailableEntities(data), ).catch((err) => { - console.log(err); + this.logger.info(err.details); if (err.details && err.details.includes('400')) throw new HttpException('Plugin inválido', HttpStatus.BAD_REQUEST); throw new HttpException(err.details, HttpStatus.INTERNAL_SERVER_ERROR); diff --git a/src/clients/inputs/interfaces.d.ts b/src/clients/inputs/interfaces.d.ts index 0df0786..6373723 100644 --- a/src/clients/inputs/interfaces.d.ts +++ b/src/clients/inputs/interfaces.d.ts @@ -31,6 +31,8 @@ interface Cron { export interface Info { costumer_id: string; user_id: string; + customer: string; + customer_tier: string; } export interface ICreateInputRequest { diff --git a/src/clients/outputs/client.service.ts b/src/clients/outputs/client.service.ts index c05663f..20e4978 100644 --- a/src/clients/outputs/client.service.ts +++ b/src/clients/outputs/client.service.ts @@ -1,5 +1,6 @@ import { Controller, Inject, OnModuleInit } from '@nestjs/common'; import { ClientGrpc, Payload } from '@nestjs/microservices'; +import { DadosferaLogger } from 'dadosfera-logs'; import { OutputServicesNames, OutputsServiceInterface, @@ -17,9 +18,14 @@ import { @Controller('output') export class OutputsClientService implements OnModuleInit { private outputService: OutputsServiceInterface; + logger: any; constructor( + @Inject(DadosferaLogger) + dadosferaLogger: DadosferaLogger, @Inject('OUTPUTS_PACKAGE') private readonly grpcClient: ClientGrpc, - ) {} + ) { + this.logger = dadosferaLogger.logger; + } onModuleInit() { this.outputService = this.grpcClient.getService( @@ -28,7 +34,7 @@ export class OutputsClientService implements OnModuleInit { } async create(@Payload() createOutputDto: ICreateOutputRequest) { - console.log('OutputClientService', 'Create'); + this.logger.info('OutputClientService - Create'); const createOutputResponse = await new Promise((resolve, reject) => { this.outputService.Create(objectSnakeToCamel(createOutputDto)).subscribe({ @@ -36,16 +42,19 @@ export class OutputsClientService implements OnModuleInit { resolve(x); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { - console.log('done'); + // console.log('done'); }, }); }) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); @@ -55,7 +64,7 @@ export class OutputsClientService implements OnModuleInit { } async findAll(data) { - console.log('OutputClientService', 'FindAll'); + this.logger.info('OutputClientService - FindAll'); const findAllOutputResponse = await new Promise((resolve, reject) => { this.outputService.FindAll(objectSnakeToCamel(data)).subscribe({ @@ -63,16 +72,19 @@ export class OutputsClientService implements OnModuleInit { resolve(x); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { - console.log('done'); + // console.log('done'); }, }); }) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); @@ -84,7 +96,7 @@ export class OutputsClientService implements OnModuleInit { } async findOne(data: IIdRequest) { - console.log('OutputClientService', 'FindOne'); + this.logger.info('OutputClientService - FindOne'); const findOneOutputResponse = await new Promise((resolve, reject) => { this.outputService.FindOne(objectSnakeToCamel(data)).subscribe({ @@ -92,16 +104,19 @@ export class OutputsClientService implements OnModuleInit { resolve(x); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { - console.log('done'); + // console.log('done'); }, }); }) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); @@ -109,7 +124,7 @@ export class OutputsClientService implements OnModuleInit { } async update(updateOutPutDTO: IOutputUpdateRequest) { - console.log('OutputClientService', 'Update'); + this.logger.info('OutputClientService - Update'); const updateOutputResponse = await new Promise((resolve, reject) => { this.outputService.Update(objectSnakeToCamel(updateOutPutDTO)).subscribe({ @@ -117,16 +132,19 @@ export class OutputsClientService implements OnModuleInit { resolve(x); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { - console.log('done'); + // console.log('done'); }, }); }) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); @@ -134,7 +152,7 @@ export class OutputsClientService implements OnModuleInit { } async remove(data: IIdRequest) { - console.log('OutputClientService', 'Remove'); + this.logger.info('OutputClientService - Remove'); const removeOutputResponse = await new Promise((resolve, reject) => { this.outputService.Remove(objectSnakeToCamel(data)).subscribe({ @@ -142,16 +160,19 @@ export class OutputsClientService implements OnModuleInit { resolve(objectCamelToSnake(x)); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { - console.log('done'); + // console.log('done'); }, }); }) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); diff --git a/src/clients/pipelines/client.service.ts b/src/clients/pipelines/client.service.ts index 028fe1a..79d93cc 100644 --- a/src/clients/pipelines/client.service.ts +++ b/src/clients/pipelines/client.service.ts @@ -1,4 +1,5 @@ import { HttpException, Inject, OnModuleInit } from '@nestjs/common'; +import { DadosferaLogger } from 'dadosfera-logs'; import { ClientGrpc, Payload } from '@nestjs/microservices'; import { PipelineServicesNames, @@ -17,9 +18,14 @@ import { export class PipelinesClientService implements OnModuleInit { private pipelineService: PipelinesServiceInterface; + logger: any; constructor( + @Inject(DadosferaLogger) + dadosferaLogger: DadosferaLogger, @Inject('PIPELINES_PACKAGE') private readonly grpcClient: ClientGrpc, - ) {} + ) { + this.logger = dadosferaLogger.logger; + } onModuleInit() { this.pipelineService = @@ -29,7 +35,7 @@ export class PipelinesClientService implements OnModuleInit { } async create(@Payload() createPipelineDto: ICreatePipelineDto) { - console.log('PipelinesClientService', 'Create'); + this.logger.info('PipelinesClientService - Create'); const createPipelineResponse = await new Promise((resolve, reject) => { this.pipelineService @@ -39,16 +45,19 @@ export class PipelinesClientService implements OnModuleInit { resolve(x); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { - console.log('done'); + // console.log('done'); }, }); }) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); if (err.details == 'Invalid Request') { throw new HttpException(err.details, 400); } @@ -59,24 +68,26 @@ export class PipelinesClientService implements OnModuleInit { } async findAll(data: IIdRequest) { - console.log('PipelinesClientService', 'FindAll'); - + this.logger.info('PipelinesClientService - FindAll'); const findAllPipelineResponse = await new Promise((resolve, reject) => { this.pipelineService.FindAll(objectSnakeToCamel(data)).subscribe({ next(x) { resolve(x.pipelines); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { - console.log('done'); + // console.log('done'); }, }); }) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); @@ -84,7 +95,7 @@ export class PipelinesClientService implements OnModuleInit { } async findOne(data: IIdRequest) { - console.log('PipelinesClientService', 'FindOne'); + this.logger.info('PipelinesClientService - FindOne'); const findOnePipelineResponse = await new Promise((resolve, reject) => { this.pipelineService.FindOne(objectSnakeToCamel(data)).subscribe({ @@ -92,16 +103,19 @@ export class PipelinesClientService implements OnModuleInit { resolve(x); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { - console.log('done'); + // console.log('done'); }, }); }) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); @@ -109,7 +123,7 @@ export class PipelinesClientService implements OnModuleInit { } async update(UpdatePipelineRequest: IUpdatePipelineRequest) { - console.log('PipelinesClientService', 'Update'); + this.logger.info('PipelinesClientService - Update'); const updatePipelineResponse = await new Promise((resolve, reject) => { this.pipelineService @@ -119,7 +133,6 @@ export class PipelinesClientService implements OnModuleInit { resolve(x); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { @@ -127,8 +140,12 @@ export class PipelinesClientService implements OnModuleInit { }, }); }) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); @@ -136,7 +153,7 @@ export class PipelinesClientService implements OnModuleInit { } async remove(data: IIdRequest) { - console.log('PipelinesClientService', 'Remove'); + this.logger.info('PipelinesClientService - Remove'); const removePipelineResponse = await new Promise((resolve, reject) => { this.pipelineService.remove(objectSnakeToCamel(data)).subscribe({ @@ -144,16 +161,20 @@ export class PipelinesClientService implements OnModuleInit { resolve(objectCamelToSnake(x)); }, error(err) { - console.log('Observable Error'); + this.logger.error('Observable Error'); reject(err); }, complete() { - console.log('done'); + this.logger.info('Done'); }, }); }) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); @@ -161,7 +182,7 @@ export class PipelinesClientService implements OnModuleInit { } async getPipelineLogsMessages(data: IGetPipelineLogsRequest) { - console.log('PipelinesClientService', 'GetPipelineLogsMessages'); + this.logger.info('PipelinesClientService - GetPipelineLogsMessages'); const logsPipelineResponse = await new Promise((resolve, reject) => { this.pipelineService.getPipelineLogs(data).subscribe({ @@ -169,16 +190,20 @@ export class PipelinesClientService implements OnModuleInit { resolve(x); }, error(err) { - console.log('Observable Error'); + this.logger.error('Observable Error'); reject(err); }, complete() { - console.log('done'); + this.logger.info('Done'); }, }); }) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); @@ -186,7 +211,7 @@ export class PipelinesClientService implements OnModuleInit { } async getPipelineStatus(data) { - console.log('PipelinesClientService', 'GetPipelineStatus'); + this.logger.info('PipelinesClientService - GetPipelineStatus'); const statusPipelineResponse = await new Promise((resolve, reject) => { this.pipelineService @@ -203,16 +228,20 @@ export class PipelinesClientService implements OnModuleInit { resolve({ status: statusArray }); }, error(err) { - console.log('Observable Error'); + this.logger.error('Observable Error'); reject(err); }, complete() { - console.log('done'); + this.logger.info('Done'); }, }); }) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); @@ -220,7 +249,7 @@ export class PipelinesClientService implements OnModuleInit { } async runPipeline({ id, info }: IIdRequest) { - console.log('PipelinesClientService', 'RunPipeline'); + this.logger.info('PipelinesClientService - RunPipeline'); const statusPipelineResponse = await new Promise((resolve, reject) => { this.pipelineService .triggerPipeline(objectSnakeToCamel({ id, info })) @@ -234,16 +263,20 @@ export class PipelinesClientService implements OnModuleInit { resolve(x); }, error(err) { - console.log('Observable Error'); + this.logger.error('Observable Error'); reject(err); }, complete() { - console.log('done'); + this.logger.info('Done'); }, }); }) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); diff --git a/src/clients/transformations/client.service.ts b/src/clients/transformations/client.service.ts index 9c5c9cc..731fb2c 100644 --- a/src/clients/transformations/client.service.ts +++ b/src/clients/transformations/client.service.ts @@ -1,6 +1,7 @@ import { Controller, Inject, OnModuleInit, Post } from '@nestjs/common'; import { ClientGrpc } from '@nestjs/microservices'; import { TransformationsServiceInterface } from '@victorradael/protospack'; +import { DadosferaLogger } from 'dadosfera-logs'; import { objectCamelToSnake, objectSnakeToCamel, @@ -10,9 +11,14 @@ import { ICreateTransformationsRequest, IIdRequest } from './interfaces'; @Controller('transformation') export class TransformationsClientService implements OnModuleInit { private transformationService: TransformationsServiceInterface; + logger: any; constructor( + @Inject(DadosferaLogger) + dadosferaLogger: DadosferaLogger, @Inject('TRANSFORMATIONS_PACKAGE') private readonly grpcClient: ClientGrpc, - ) {} + ) { + this.logger = dadosferaLogger.logger; + } onModuleInit() { this.transformationService = @@ -23,7 +29,7 @@ export class TransformationsClientService implements OnModuleInit { @Post() async create(createTransformationsDto: ICreateTransformationsRequest) { - console.log('TransformationClientService', 'Create'); + this.logger.info('TransformationClientService - Create'); const createTransformationResponse = await new Promise( (resolve, reject) => { @@ -34,17 +40,20 @@ export class TransformationsClientService implements OnModuleInit { resolve(x); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { - console.log('done'); + // console.log('done'); }, }); }, ) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); @@ -58,7 +67,7 @@ export class TransformationsClientService implements OnModuleInit { } async findAll(data) { - console.log('TransformationClientService', 'FindAll'); + this.logger.info('TransformationClientService - FindAll'); const findAllTransformationResponse = await new Promise( (resolve, reject) => { @@ -67,17 +76,20 @@ export class TransformationsClientService implements OnModuleInit { resolve(x); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { - console.log('done'); + // console.log('done'); }, }); }, ) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); const convertedTransforms = findAllTransformationResponse[ @@ -89,7 +101,7 @@ export class TransformationsClientService implements OnModuleInit { } async findOne(data: IIdRequest) { - console.log('TransformationClientService', 'FindOne'); + this.logger.info('TransformationClientService - FindOne'); const findOneTransformationResponse = await new Promise( (resolve, reject) => { @@ -98,17 +110,20 @@ export class TransformationsClientService implements OnModuleInit { resolve(x); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { - console.log('done'); + // console.log('done'); }, }); }, ) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); @@ -116,7 +131,7 @@ export class TransformationsClientService implements OnModuleInit { } async update(updateTransformationDTO) { - console.log('TransformationClientService', 'Update'); + this.logger.info('TransformationClientService - Update'); const updateTransformationResponse = await new Promise( (resolve, reject) => { @@ -127,17 +142,20 @@ export class TransformationsClientService implements OnModuleInit { resolve(x); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { - console.log('done'); + // console.log('done'); }, }); }, ) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); @@ -145,7 +163,7 @@ export class TransformationsClientService implements OnModuleInit { } async remove(data: IIdRequest) { - console.log('TransformationClientService', 'Remove'); + this.logger.info('TransformationClientService - Remove'); const removeTransformationResponse = await new Promise( (resolve, reject) => { @@ -154,17 +172,20 @@ export class TransformationsClientService implements OnModuleInit { resolve(x); }, error(err) { - console.log('Observable Error'); reject(err); }, complete() { - console.log('done'); + // console.log('done'); }, }); }, ) - .then((res) => res) + .then((res) => { + this.logger.info('Done'); + return res; + }) .catch((err) => { + this.logger.error(err.message); throw new Error(err); }); diff --git a/src/main.ts b/src/main.ts index 4911612..42be8bd 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,12 +1,40 @@ import { NestFactory } from '@nestjs/core'; import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; +import apm from 'elastic-apm-node'; import { writeFileSync } from 'fs'; import helmet from 'helmet'; - +import { DadosferaLogger } from 'dadosfera-logs'; import { AppModule } from './app.module'; async function bootstrap() { + DadosferaLogger.setupLogger({ + serviceName: 'Maestro', + serviceEnvironment: process.env.ENV, + }); + + const logger = new DadosferaLogger().logger; + + const orginalWinstonLog = logger.log.bind(logger); + logger.log = function (...kwargs: any[]) { + if (kwargs[0] in logger.levels) { + if (kwargs[0] == 'error') { + orginalWinstonLog('error', kwargs[2]); + } + } else { + orginalWinstonLog('info', ...kwargs); + } + }; + + Object.assign(apm, { logger }); + + apm.start({ + serviceName: 'Maestro', + disableSend: true, // This disables sending payloads to APM Server + centralConfig: false, // This disables periodic requests to the APM Server to fetch updated configuration + }); + const app = await NestFactory.create(AppModule, { + logger: logger, cors: { origin: '*', methods: 'GET,HEAD,PUT,PATCH,POST,DELETE', diff --git a/src/middlewares/authentication.ts b/src/middlewares/authentication.ts index 8cab798..aa6d45f 100644 --- a/src/middlewares/authentication.ts +++ b/src/middlewares/authentication.ts @@ -36,7 +36,6 @@ export class LoggerMiddleware implements NestMiddleware { const customer = jwtDecoded.user.customer; const userId = jwtDecoded.user.id; const customer_tier = jwtDecoded.user.customer_tier; - await verifyToken(accessToken); let havePermission = false; diff --git a/src/modules/auth/auth.controller.ts b/src/modules/auth/auth.controller.ts index acaab27..67e1a5b 100644 --- a/src/modules/auth/auth.controller.ts +++ b/src/modules/auth/auth.controller.ts @@ -5,6 +5,7 @@ import { Post, HttpCode, HttpStatus, + Inject, } from '@nestjs/common'; import { AuthSignInRequest, @@ -19,18 +20,25 @@ import { } from '@victorradael/protospack'; import { AuthClientService } from 'src/clients/auth/client.service'; - +import { DadosferaLogger } from 'dadosfera-logs'; import ErrorBuilder from '../../utils/ErrorBuilder'; @Controller('auth') export class AuthController { - constructor(private authClient: AuthClientService) {} + logger: any; + constructor( + @Inject(DadosferaLogger) + dadosferaLogger: DadosferaLogger, + private authClient: AuthClientService, + ) { + this.logger = dadosferaLogger.logger; + } // DEPRECADO! @Post() @HttpCode(HttpStatus.OK) async signIn_old(@Body() body: AuthSignInRequest) { - console.log(`/auth`, 'SignIn_old'); + this.logger.info(`/auth - SignIn_old`); return this.signIn(body); } @@ -38,7 +46,7 @@ export class AuthController { @Post('login') @HttpCode(HttpStatus.OK) async signIn_login(@Body() body: AuthSignInRequest) { - console.log(`/auth`, 'SignIn_login'); + this.logger.info(`/auth - SignIn_login`); return this.signIn(body); } @@ -46,7 +54,7 @@ export class AuthController { @Post('sign-in') @HttpCode(HttpStatus.OK) async signIn(@Body() { username, password, totp }: AuthSignInRequest) { - console.log(`/auth`, 'SignIn'); + this.logger.info(`/auth - SignIn`); const tokens = await this.authClient .signIn({ username, password, totp }) @@ -62,7 +70,7 @@ export class AuthController { async refreshAccessToken( @Body() { refreshToken }: AuthRefreshAccessTokenRequest, ) { - console.log(`/auth`, 'RefreshAccessToken'); + this.logger.info(`/auth - RefreshAccessToken`); const accessToken = await this.authClient .refreshAccessToken({ refreshToken }) @@ -79,7 +87,7 @@ export class AuthController { @Body() body: AuthEnableTotpMfaRequest, @Headers() headers, ) { - console.log(`/auth`, 'enable-totp'); + this.logger.info(`/auth - enable-totp`); const { password } = body; const { authorization: accessToken } = headers; @@ -99,7 +107,7 @@ export class AuthController { @Body() body: AuthDisableTotpMfaRequest, @Headers() headers, ) { - console.log(`/auth`, 'disable-totp'); + this.logger.info(`/auth - disable-totp`); const { password } = body; const { authorization: accessToken } = headers; @@ -116,7 +124,7 @@ export class AuthController { @Post('dismiss-totp') @HttpCode(HttpStatus.OK) async dismissTotpMFA(@Headers() headers) { - console.log(`/auth`, 'disable-totp'); + this.logger.info(`/auth - disable-totp`); const { authorization: accessToken } = headers; @@ -135,7 +143,7 @@ export class AuthController { @Body() body: AuthVerifyTotpMfaRequest, @Headers() headers, ): Promise { - console.log(`/auth`, 'enable-totp'); + this.logger.info(`/auth - enable-totp`); const { totp } = body; const { authorization: accessToken } = headers; @@ -155,7 +163,7 @@ export class AuthController { @Body() body: AuthChangePasswordRequest, @Headers() headers, ): Promise { - console.log(`/auth`, 'change-password'); + this.logger.info(`/auth - change-password`); const { oldPassword, newPassword } = body; const { authorization: accessToken } = headers; @@ -176,7 +184,7 @@ export class AuthController { @Post('reset-password') @HttpCode(HttpStatus.OK) async resetPassword(@Body() body: AuthResetPasswordRequest): Promise { - console.log(`/auth`, 'reset-password'); + this.logger.info(`/auth - reset-password`); const { username } = body; @@ -194,7 +202,7 @@ export class AuthController { async verifyResetPasswordCode( @Body() body: AuthVerifyResetPasswordCodeRequest, ): Promise { - console.log(`/auth`, 'verify-reset-password-code'); + this.logger.info(`/auth - verify-reset-password-code`); const { username, code } = body; @@ -212,7 +220,7 @@ export class AuthController { async confirmResetPassword( @Body() body: AuthConfirmResetPasswordRequest, ): Promise { - console.log(`/auth`, 'confirm-reset-password'); + this.logger.info(`/auth - confirm-reset-password`); const { username, code, newPassword } = body; diff --git a/src/modules/catalog/catalog.controller.ts b/src/modules/catalog/catalog.controller.ts index d0c572a..484458a 100644 --- a/src/modules/catalog/catalog.controller.ts +++ b/src/modules/catalog/catalog.controller.ts @@ -3,19 +3,30 @@ import { Controller, Delete, Get, + Inject, Param, Post, Query, } from '@nestjs/common'; import { CatalogService } from './catalog.service'; - +import { DadosferaLogger } from 'dadosfera-logs'; @Controller('catalog') export class CatalogController { - constructor(private catalogService: CatalogService) {} + logger: any; + constructor( + @Inject(DadosferaLogger) + dadosferaLogger: DadosferaLogger, + private catalogService: CatalogService, + ) { + this.logger = dadosferaLogger.logger; + } @Get('all') async catalogAll(@Body() body) { - console.log(`/catalog`, 'ON CATALOG ALL ROUTE'); + this.logger.info(`/catalog - ON CATALOG ALL ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.catalogAll(body); @@ -24,7 +35,10 @@ export class CatalogController { @Get('data_apps') async dataAppsAll(@Body() body) { - console.log(`/catalog`, 'ON FIND ALL DATA APPS ROUTE'); + this.logger.info(`/catalog - ON FIND ALL DATA APPS ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.dataAppsAll(body); @@ -33,7 +47,10 @@ export class CatalogController { @Delete('data_apps/:id') async dataAppsOne(@Param() params, @Body() body) { - console.log(`/catalog`, 'ON FIND ONE DATA APP ROUTE'); + this.logger.info(`/catalog - ON FIND ONE DATA APP ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const { id } = params; const res = await this.catalogService.dataAppsOne(id, body); @@ -43,7 +60,10 @@ export class CatalogController { @Get('dashboard-metabase') async getAllDashboardMetabase(@Body() body) { - console.log(`/catalog`, 'ON GET ALL DASHBOARDS METABASE ROUTE'); + this.logger.info(`/catalog - ON GET ALL DASHBOARDS METABASE ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.getAllDashboardMetabase(body); @@ -53,7 +73,10 @@ export class CatalogController { @Get('dashboard-metabase/:id') async getOneDashboardMetabase(@Body() body, @Param() params) { const { id } = params; - console.log(`/catalog`, 'ON GET ONE DASHBOARD METABASE ROUTE'); + this.logger.info(`/catalog - ON GET ONE DASHBOARD METABASE ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.getOneDashboardMetabase(id, body); @@ -62,7 +85,10 @@ export class CatalogController { @Get('table-metadata') async getAllTableMetadata(@Body() body, @Query() query) { - console.log(`/catalog`, 'ON GET ALL TABLES METADATA ROUTE'); + this.logger.info(`/catalog - ON GET ALL TABLES METADATA ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); if (!query) { const res = await this.catalogService.getAllTableMetadata(body); @@ -76,7 +102,10 @@ export class CatalogController { @Delete('table-metadata/:id') async deleteOneTableMetadata(@Param() params, @Body() body) { const { id } = params; - console.log(`/catalog`, 'ON DELETE ONE TABLE METADATA ROUTE'); + this.logger.info(`/catalog - ON DELETE ONE TABLE METADATA ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.deleteOneTableMetadata(id, body); @@ -85,7 +114,10 @@ export class CatalogController { @Get('column-metadata') async getOneColumnMetadata(@Body() body, @Query() params) { - console.log(`/catalog`, 'ON GET ONE COLUMN METADATA ROUTE'); + this.logger.info(`/catalog - ON GET ONE COLUMN METADATA ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.getOneColumnMetadata(body, params); @@ -94,7 +126,10 @@ export class CatalogController { @Delete('column-metadata/:id') async deleteOneColumnMetadata(@Param() params, @Body() body) { - console.log(`/catalog`, 'ON DELETE ONE COLUMN METADATA ROUTE'); + this.logger.info(`/catalog - ON DELETE ONE COLUMN METADATA ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const { id } = params; const res = await this.catalogService.deleteOneColumnMetadata(id, body); @@ -104,7 +139,10 @@ export class CatalogController { @Get('data-preview') async getOneDataPreview(@Body() body, @Query() params) { - console.log(`/catalog`, 'ON GET ONE DATAPREVIEW ROUTE'); + this.logger.info(`/catalog - ON GET ONE DATAPREVIEW ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.getOneDataPreview(body, params); @@ -113,7 +151,10 @@ export class CatalogController { @Get('data-status') async getDataStatus(@Body() body) { - console.log(`/catalog`, 'ON GET DATA STATUS ROUTE'); + this.logger.info(`/catalog - ON GET DATA STATUS ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.getDataStatus(body); @@ -122,7 +163,10 @@ export class CatalogController { @Get('data-status') async createDataStatus(@Body() body) { - console.log(`/catalog`, 'ON CREATE DATA STATUS ROUTE'); + this.logger.info(`/catalog - ON CREATE DATA STATUS ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.createDataStatus(body); @@ -131,7 +175,10 @@ export class CatalogController { @Get('data-description') async getDataDescription(@Body() body) { - console.log(`/catalog`, 'ON GET DATA DESCRIPTION ROUTE'); + this.logger.info(`/catalog - ON GET DATA DESCRIPTION ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.getDataDescription(body); @@ -140,7 +187,10 @@ export class CatalogController { @Post('data-description') async createDataDescription(@Body() body) { - console.log(`/catalog`, 'ON CREATE DATA DESCRIPTION ROUTE'); + this.logger.info(`/catalog - ON CREATE DATA DESCRIPTION ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.createDataDescription(body); @@ -149,7 +199,10 @@ export class CatalogController { @Get('data-docs') async getDataDocs(@Body() body) { - console.log(`/catalog`, 'ON GET DATA DOCS ROUTE'); + this.logger.info(`/catalog - ON GET DATA DOCS ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.getDataDocs(body); @@ -158,7 +211,10 @@ export class CatalogController { @Post('data-docs') async createDataDocs(@Body() body) { - console.log(`/catalog`, 'ON CREATE DATA DOCS ROUTE'); + this.logger.info(`/catalog - ON CREATE DATA DOCS ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.createDataDocs(body); @@ -167,7 +223,10 @@ export class CatalogController { @Get('data-rating') async getDataRating(@Body() body) { - console.log(`/catalog`, 'ON GET DATA RATING ROUTE'); + this.logger.info(`/catalog - ON GET DATA RATING ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.getDataRating(body); @@ -176,7 +235,10 @@ export class CatalogController { @Post('data-rating') async createDataRating(@Body() body) { - console.log(`/catalog`, 'ON GET DATA RATING ROUTE'); + this.logger.info(`/catalog - ON GET DATA RATING ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.createDataRating(body); @@ -185,7 +247,7 @@ export class CatalogController { @Get('summary-rating/:id') async getSummaryRating() { - console.log(`/catalog`, 'ON GET SUMMARY RATING ROUTE'); + this.logger.info(`/catalog - ON GET SUMMARY RATING ROUTE`); //const { id } = params; // @@ -200,7 +262,10 @@ export class CatalogController { @Get('data-comment') async getDataComment(@Body() body) { - console.log(`/catalog`, 'ON GET DATA COMMENT ROUTE'); + this.logger.info(`/catalog - ON GET DATA COMMENT ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.getDataComment(body); @@ -209,7 +274,10 @@ export class CatalogController { @Post('data-comment') async createDataComment(@Body() body) { - console.log(`/catalog`, 'ON GET DATA COMMENT ROUTE'); + this.logger.info(`/catalog - ON GET DATA COMMENT ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.createDataComment(body); @@ -218,7 +286,10 @@ export class CatalogController { @Get('data-review') async getDataReview(@Body() body, @Query() params) { - console.log(`/catalog`, 'ON GET DATA REVIEW ROUTE'); + this.logger.info(`/catalog - ON GET DATA REVIEW ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.getDataReview(body, params); @@ -227,7 +298,10 @@ export class CatalogController { @Post('tags') async createTags(@Body() body) { - console.log(`/catalog`, 'ON CREATE TAG ROUTE'); + this.logger.info(`/catalog - ON CREATE TAG ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.createTags(body); @@ -236,7 +310,10 @@ export class CatalogController { @Get('tags') async findAllTags(@Body() body) { - console.log(`/catalog`, 'ON FIND ALL TAGS ROUTE'); + this.logger.info(`/catalog - ON FIND ALL TAGS ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.findAllTags(body); @@ -245,7 +322,10 @@ export class CatalogController { @Delete('tags/:id') async deleteTags(@Param() params, @Body() body) { - console.log(`/catalog`, 'ON DELETE TAG ROUTE'); + this.logger.info(`/catalog - ON DELETE TAG ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const { id } = params; const res = await this.catalogService.deleteTags(id, body); @@ -255,7 +335,10 @@ export class CatalogController { @Post('table-tags') async createTableTags(@Body() body) { - console.log(`/catalog`, 'ON CREATE TABLE TAG ROUTE'); + this.logger.info(`/catalog - ON CREATE TABLE TAG ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.createTableTags(body); @@ -264,7 +347,10 @@ export class CatalogController { @Get('table-tags') async getAllTableTags(@Body() body) { - console.log(`/catalog`, 'ON GET ALL TABLE TAGS ROUTE'); + this.logger.info(`/catalog - ON GET ALL TABLE TAGS ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.findAllTableTags(body); @@ -273,7 +359,10 @@ export class CatalogController { @Delete('table-tags/:id') async deleteTableTags(@Param() params, @Body() body) { - console.log(`/catalog`, 'ON CREATE TABLE TAGS ROUTE'); + this.logger.info(`/catalog - ON CREATE TABLE TAGS ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const { id } = params; const res = await this.catalogService.deleteTableTags(id, body); @@ -283,7 +372,10 @@ export class CatalogController { @Get('table-rules') async getTableRules(@Body() body) { - console.log(`/catalog`, 'ON GET TABLE RULES ROUTE'); + this.logger.info(`/catalog - ON GET TABLE RULES ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const res = await this.catalogService.getTableRules(body); @@ -292,7 +384,10 @@ export class CatalogController { @Delete('table-rules/:id') async deleteTableRules(@Param() params, @Body() body) { - console.log(`/catalog`, 'ON DELETE TABLE RULES ROUTE'); + this.logger.info(`/catalog - ON DELETE TABLE RULES ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const { id } = params; const res = await this.catalogService.deleteTableRules(id, body); diff --git a/src/modules/catalog/catalog.service.ts b/src/modules/catalog/catalog.service.ts index bfc7374..def6d84 100644 --- a/src/modules/catalog/catalog.service.ts +++ b/src/modules/catalog/catalog.service.ts @@ -46,7 +46,6 @@ class CatalogService { const { data } = await axios.get( `${nimbusUrl}/api/catalog/dashboard-metabase/${id}`, ); - console.log(data); // const [, path] = data.iframe_url.split('.dadosfera'); // const host = `httpss://metabase-${body.info.customer.toLowerCase()}.dadosfera.ai`; diff --git a/src/modules/inputs/dtos/input.model.ts b/src/modules/inputs/dtos/input.model.ts index 73f0d19..89914d1 100644 --- a/src/modules/inputs/dtos/input.model.ts +++ b/src/modules/inputs/dtos/input.model.ts @@ -1,4 +1,5 @@ import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; +import { Info } from 'src/clients/inputs/interfaces'; export class InputModel { category: string; @@ -147,6 +148,8 @@ export class TestConnectionGetColumnsReq { credentials: CredentialsJdbc; @ApiPropertyOptional() id: string; + @ApiPropertyOptional() + info: Info; } export class TestConnectionGetColumnsRes { @ApiProperty() @@ -158,6 +161,8 @@ export class TestConnectionReq { plugin: string; @ApiProperty() credentials: CredentialsJdbc; + @ApiPropertyOptional() + info: Info; } export class TestConnectionRes { @ApiProperty() @@ -178,6 +183,8 @@ export class CreateInputReq { name: string; @ApiPropertyOptional() options: InputOptions; + @ApiPropertyOptional() + info: Info; } export class Input { @@ -199,4 +206,6 @@ export class Input { created_at: string; @ApiProperty() updated_at: string; + @ApiPropertyOptional() + info: Info; } diff --git a/src/modules/inputs/inputs.controller.ts b/src/modules/inputs/inputs.controller.ts index 6ddf90a..920439d 100644 --- a/src/modules/inputs/inputs.controller.ts +++ b/src/modules/inputs/inputs.controller.ts @@ -3,11 +3,13 @@ import { Controller, Delete, Get, + Inject, Param, Patch, Post, } from '@nestjs/common'; import { InputsService } from './inputs.service'; +import { DadosferaLogger } from 'dadosfera-logs'; import { InputsClientService } from 'src/clients/inputs/client.service'; import { UpdateInputRequest } from 'src/clients/inputs/interfaces'; import { ApiOkResponse, ApiTags } from '@nestjs/swagger'; @@ -26,7 +28,13 @@ import { @Controller('inputs') export class InputsController { inputService: InputsService; - constructor(private inputsClientService: InputsClientService) { + logger: any; + constructor( + @Inject(DadosferaLogger) + dadosferaLogger: DadosferaLogger, + private inputsClientService: InputsClientService, + ) { + this.logger = dadosferaLogger.logger; this.inputService = new InputsService(this.inputsClientService); } @@ -44,7 +52,10 @@ export class InputsController { @Post('/test-connection') @ApiOkResponse({ type: TestConnectionRes }) async testConnection(@Body() data: TestConnectionReq) { - console.log(`/test-connection`, 'ON TEST CONNECTION ROUTE'); + this.logger.info(`/test-connection - ON TEST CONNECTION ROUTE`, { + user: data.info.user_id, + customer: data.info.customer, + }); const inputService = new InputsService(this.inputsClientService); const response = await inputService.testConnection(data); @@ -55,9 +66,12 @@ export class InputsController { @Post('/test-connection/get-columns') @ApiOkResponse({ type: TestConnectionGetColumnsRes }) async getColumns(@Body() data: TestConnectionGetColumnsReq) { - console.log( - `/test-connection/get-columns`, - 'ON TEST CONNECTION GET COLUMNS ROUTE', + this.logger.info( + `/test-connection/get-columns - ON TEST CONNECTION GET COLUMNS ROUTE`, + { + user: data.info.user_id, + customer: data.info.customer, + }, ); const inputService = new InputsService(this.inputsClientService); @@ -69,7 +83,10 @@ export class InputsController { @Post() @ApiOkResponse({ type: Input }) async create(@Body() createInputDto: CreateInputReq) { - console.log(`/input`, 'ON CREATE ROUTE'); + this.logger.info(`/input - ON CREATE ROUTE`, { + user: createInputDto.info.user_id, + customer: createInputDto.info.customer, + }); const inputService = new InputsService(this.inputsClientService); const response = await inputService.create(createInputDto); @@ -79,7 +96,10 @@ export class InputsController { @Get() async findAll(@Body() body) { - console.log(`/input`, 'ON FIND ALL ROUTE'); + this.logger.info(`/input - ON FIND ALL ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const inputService = new InputsService(this.inputsClientService); @@ -91,7 +111,10 @@ export class InputsController { @Get('/:id') async findOne(@Body() body, @Param() params) { const { id } = params; - console.log(`/input/${id}`, 'ON FIND ONE ROUTE'); + this.logger.info(`/input/${id} - ON FIND ONE ROUTE`, { + user: body.info.user_id, + customer: body.info.customer, + }); const inputService = new InputsService(this.inputsClientService); const response = await inputService.findOne({ id, ...body }); @@ -105,7 +128,10 @@ export class InputsController { const { info } = updateInputDto; delete updateInputDto.info; - console.log(`/input/${id}`, 'ON UPDATE ROUTE'); + this.logger.info(`/input/${id} - ON UPDATE ROUTE`, { + user: updateInputDto.info.user_id, + customer: updateInputDto.info.costumer_id, + }); const inputService = new InputsService(this.inputsClientService); const response = await inputService.update(id, updateInputDto, info); @@ -117,7 +143,10 @@ export class InputsController { async delete(@Body() data, @Param() params) { const { id } = params; - console.log(`/input/${id}`, 'ON DELETE ROUTE'); + this.logger.info(`/input/${id} - ON DELETE ROUTE`, { + user: data.info.user_id, + customer: data.info.customer, + }); const inputService = new InputsService(this.inputsClientService); diff --git a/src/modules/outputs/outputs.controllers.ts b/src/modules/outputs/outputs.controllers.ts index e9f73d3..e7ce188 100644 --- a/src/modules/outputs/outputs.controllers.ts +++ b/src/modules/outputs/outputs.controllers.ts @@ -3,6 +3,7 @@ import { Controller, Delete, Get, + Inject, Param, Post, Put, @@ -10,14 +11,24 @@ import { import { Payload } from '@nestjs/microservices'; import { OutputsClientService } from 'src/clients/outputs/client.service'; import { OutputsService } from './outputs.service'; - +import { DadosferaLogger } from 'dadosfera-logs'; @Controller('outputs') export class OutputsController { - constructor(private outputsClientService: OutputsClientService) {} + logger: any; + constructor( + @Inject(DadosferaLogger) + dadosferaLogger: DadosferaLogger, + private outputsClientService: OutputsClientService, + ) { + this.logger = dadosferaLogger.logger; + } @Post() async create(@Body() createOutputDto) { - console.log(process.env.DEV_URL + `/output`, 'ON CREATE ROUTE'); + this.logger.info(process.env.DEV_URL + `/output - ON CREATE ROUTE`, { + user: createOutputDto.info.user_id, + customer: createOutputDto.info.customer, + }); const outputService = new OutputsService(this.outputsClientService); const response = await outputService.create(createOutputDto); @@ -27,7 +38,10 @@ export class OutputsController { @Get() async findAll(@Body() data) { - console.log(process.env.DEV_URL + `/output`, 'ON Find All ROUTE'); + this.logger.info(process.env.DEV_URL + `/output - ON Find All ROUTE`, { + user: data.info.user_id, + customer: data.info.customer, + }); const outputService = new OutputsService(this.outputsClientService); const response = await outputService.findAll(data); @@ -38,7 +52,13 @@ export class OutputsController { @Get('/:id') async findOne(@Body() data, @Param() params) { const { id } = params; - console.log(process.env.DEV_URL + `/output/${id}`, 'ON Find One ROUTE'); + this.logger.info( + process.env.DEV_URL + `/output/${id} - ON Find One ROUTE`, + { + user: data.info.user_id, + customer: data.info.customer, + }, + ); const outputService = new OutputsService(this.outputsClientService); const response = await outputService.findOne({ id, ...data }); @@ -52,7 +72,10 @@ export class OutputsController { const { info } = updateOutputDto; delete updateOutputDto.info; - console.log(process.env.DEV_URL + `/output/${id}`, 'ON UPDATE ROUTE'); + this.logger.info(process.env.DEV_URL + `/output/${id} - ON UPDATE ROUTE`, { + user: updateOutputDto.info.user_id, + customer: updateOutputDto.info.customer, + }); const outputService = new OutputsService(this.outputsClientService); const response = await outputService.update(id, updateOutputDto, info); @@ -63,7 +86,10 @@ export class OutputsController { @Delete(':id') async delete(@Body() data, @Param() params) { const { id } = params; - console.log(process.env.DEV_URL + `/output/${id}`, 'ON DELETE ROUTE'); + this.logger.info(process.env.DEV_URL + `/output/${id} - ON DELETE ROUTE`, { + user: data.info.user_id, + customer: data.info.customer, + }); const outputService = new OutputsService(this.outputsClientService); const response = await outputService.remove({ id, ...data }); diff --git a/src/modules/pipelines/pipelines.controller.ts b/src/modules/pipelines/pipelines.controller.ts index 961f2a3..2cc68fe 100644 --- a/src/modules/pipelines/pipelines.controller.ts +++ b/src/modules/pipelines/pipelines.controller.ts @@ -3,25 +3,37 @@ import { Controller, Delete, Get, + Inject, Param, Post, Put, } from '@nestjs/common'; import { PipelinesClientService } from 'src/clients/pipelines/client.service'; import { PipelinesService } from './pipelines.service'; +import { DadosferaLogger } from 'dadosfera-logs'; @Controller('pipelines') export class PipelinesController { - constructor(private pipelinesClientService: PipelinesClientService) {} + logger: any; + constructor( + @Inject(DadosferaLogger) + dadosferaLogger: DadosferaLogger, + private pipelinesClientService: PipelinesClientService, + ) { + this.logger = dadosferaLogger.logger; + } @Post('start/:id') async activate(@Param() params, @Body() body) { const { id } = params; const { info } = body; - console.log( - process.env.DEV_URL + `/pipeline/start/${id}`, - 'ON START PIPELINE ROUTE', + this.logger.info( + process.env.DEV_URL + `/pipeline/start/${id} - ON START PIPELINE ROUTE`, + { + user: body.info.user_id, + customer: body.info.customer, + }, ); const pipelineService = new PipelinesService(this.pipelinesClientService); @@ -35,9 +47,12 @@ export class PipelinesController { const { id } = params; body.id = id; - console.log( - process.env.DEV_URL + `/pipeline/${id}`, - 'ON GET PIPELINE STATUS ROUTE', + this.logger.info( + process.env.DEV_URL + `/pipeline/${id} - ON GET PIPELINE STATUS ROUTE`, + { + user: body.info.user_id, + customer: body.info.customer, + }, ); const pipelineService = new PipelinesService(this.pipelinesClientService); @@ -49,9 +64,9 @@ export class PipelinesController { @Get(':id/:details') async getPipelineLogs(@Param() params) { const { id, details } = params; - console.log( - process.env.DEV_URL + `/pipeline/${id}`, - 'ON GET PIPELINE LOGS ROUTE', + this.logger.info( + process.env.DEV_URL + `/pipeline/${id} - ON GET PIPELINE LOGS ROUTE`, + {}, ); const pipelineService = new PipelinesService(this.pipelinesClientService); @@ -62,7 +77,7 @@ export class PipelinesController { @Post() async create(@Body() createPipelineDto) { - console.log(process.env.DEV_URL + `/pipelines`, 'ON CREATE ROUTE'); + this.logger.info(process.env.DEV_URL + `/pipelines ON CREATE ROUTE`); const pipelineService = new PipelinesService(this.pipelinesClientService); const response = await pipelineService.create(createPipelineDto); @@ -72,7 +87,7 @@ export class PipelinesController { @Get() async findAll(@Body() data) { - console.log(process.env.DEV_URL + `/pipeline`, 'ON Find All ROUTE'); + this.logger.info(process.env.DEV_URL + `/pipeline ON Find All ROUTE`); const pipelineService = new PipelinesService(this.pipelinesClientService); const response = await pipelineService.findAll(data); @@ -83,7 +98,7 @@ export class PipelinesController { @Get('/:id') async findOne(@Body() data, @Param() params) { const { id } = params; - console.log(process.env.DEV_URL + `/pipeline/${id}`, 'ON Find One ROUTE'); + this.logger.info(process.env.DEV_URL + `/pipeline/${id} ON Find One ROUTE`); const pipelineService = new PipelinesService(this.pipelinesClientService); const response = await pipelineService.findOne({ id, ...data }); @@ -97,7 +112,7 @@ export class PipelinesController { const { info } = updatePipelineDto; delete updatePipelineDto.info; - console.log(process.env.DEV_URL + `/pipeline/${id}`, 'ON UPDATE ROUTE'); + this.logger.info(process.env.DEV_URL + `/pipeline/${id} ON UPDATE ROUTE`); const pipelineService = new PipelinesService(this.pipelinesClientService); const response = await pipelineService.update(id, updatePipelineDto, info); @@ -108,7 +123,7 @@ export class PipelinesController { @Delete(':id') async delete(@Body() data, @Param() params) { const { id } = params; - console.log(process.env.DEV_URL + `/pipeline/${id}`, 'ON DELETE ROUTE'); + this.logger.info(process.env.DEV_URL + `/pipeline/${id} ON DELETE ROUTE`); const pipelineService = new PipelinesService(this.pipelinesClientService); const response = await pipelineService.remove({ id, ...data }); diff --git a/src/modules/transformations/transformations.controller.ts b/src/modules/transformations/transformations.controller.ts index 3234dfc..419c978 100644 --- a/src/modules/transformations/transformations.controller.ts +++ b/src/modules/transformations/transformations.controller.ts @@ -3,6 +3,7 @@ import { Controller, Delete, Get, + Inject, Param, Post, Put, @@ -11,16 +12,27 @@ import { Payload } from '@nestjs/microservices'; import { TransformationsClientService } from 'src/clients/transformations/client.service'; import { IIdRequest } from 'src/clients/transformations/interfaces'; import { TransformationsService } from './transformations.service'; - +import { DadosferaLogger } from 'dadosfera-logs'; @Controller('transformations') export class TransformationsController { + logger: any; constructor( + @Inject(DadosferaLogger) + dadosferaLogger: DadosferaLogger, private transformationsClientService: TransformationsClientService, - ) {} + ) { + this.logger = dadosferaLogger.logger; + } @Post() async create(@Body() createTransformationDto) { - console.log(process.env.DEV_URL + `/transformation`, 'ON CREATE ROUTE'); + this.logger.info( + process.env.DEV_URL + `/transformation - ON CREATE ROUTE`, + { + user: createTransformationDto.info.user_id, + customer: createTransformationDto.info.customer, + }, + ); const transformationService = new TransformationsService( this.transformationsClientService, @@ -34,7 +46,13 @@ export class TransformationsController { @Get() async findAll(@Body() data: IIdRequest) { - console.log(process.env.DEV_URL + `/transformation`, 'ON Find All ROUTE'); + this.logger.info( + process.env.DEV_URL + `/transformation - ON Find All ROUTE`, + { + user: data.info.user_id, + customer: data.info.customer_id, + }, + ); const transformationService = new TransformationsService( this.transformationsClientService, @@ -47,9 +65,12 @@ export class TransformationsController { @Get('/:id') async findOne(@Body() data, @Param() params) { const { id } = params; - console.log( - process.env.DEV_URL + `/transformation/${id}`, - 'ON Find One ROUTE', + this.logger.info( + process.env.DEV_URL + `/transformation/${id} - ON Find One ROUTE`, + { + user: data.info.user_id, + customer: data.info.customer, + }, ); const transformationService = new TransformationsService( @@ -63,9 +84,12 @@ export class TransformationsController { @Put(':id') async update(@Payload() updateTransformationDto, @Param() params) { const { id } = params; - console.log( - process.env.DEV_URL + `/transformation/${id}`, - 'ON UPDATE ROUTE', + this.logger.info( + process.env.DEV_URL + `/transformation/${id} - ON UPDATE ROUTE`, + { + user: updateTransformationDto.info.user_id, + customer: updateTransformationDto.info.customer, + }, ); const transformationService = new TransformationsService( @@ -82,9 +106,12 @@ export class TransformationsController { @Delete(':id') async delete(@Body() data, @Param() params) { const { id } = params; - console.log( - process.env.DEV_URL + `/transformation/${id}`, - 'ON DELETE ROUTE', + this.logger.info( + process.env.DEV_URL + `/transformation/${id} - ON DELETE ROUTE`, + { + user: data.info.user_id, + customer: data.info.customer, + }, ); const transformationService = new TransformationsService( diff --git a/swagger.json b/swagger.json index 2a30295..18440db 100644 --- a/swagger.json +++ b/swagger.json @@ -1 +1 @@ -{"openapi":"3.0.0","paths":{"/inputs/available-entities/{plugin}":{"get":{"operationId":"InputsController_getAvailableEntities","parameters":[{"name":"plugin","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAvailableEntitiesRes"}}}}},"tags":["inputs"]}},"/inputs/test-connection":{"post":{"operationId":"InputsController_testConnection","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestConnectionReq"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestConnectionRes"}}}}},"tags":["inputs"]}},"/inputs/test-connection/get-columns":{"post":{"operationId":"InputsController_getColumns","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestConnectionGetColumnsReq"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestConnectionGetColumnsRes"}}}}},"tags":["inputs"]}},"/inputs":{"post":{"operationId":"InputsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInputReq"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Input"}}}}},"tags":["inputs"]},"get":{"operationId":"InputsController_findAll","parameters":[],"responses":{"200":{"description":""}},"tags":["inputs"]}},"/inputs/{id}":{"get":{"operationId":"InputsController_findOne","parameters":[],"responses":{"200":{"description":""}},"tags":["inputs"]},"patch":{"operationId":"InputsController_update","parameters":[],"responses":{"200":{"description":""}},"tags":["inputs"]},"delete":{"operationId":"InputsController_delete","parameters":[],"responses":{"200":{"description":""}},"tags":["inputs"]}},"/transformations":{"post":{"operationId":"TransformationsController_create","parameters":[],"responses":{"201":{"description":""}}},"get":{"operationId":"TransformationsController_findAll","parameters":[],"responses":{"200":{"description":""}}}},"/transformations/{id}":{"get":{"operationId":"TransformationsController_findOne","parameters":[],"responses":{"200":{"description":""}}},"put":{"operationId":"TransformationsController_update","parameters":[],"responses":{"200":{"description":""}}},"delete":{"operationId":"TransformationsController_delete","parameters":[],"responses":{"200":{"description":""}}}},"/outputs":{"post":{"operationId":"OutputsController_create","parameters":[],"responses":{"201":{"description":""}}},"get":{"operationId":"OutputsController_findAll","parameters":[],"responses":{"200":{"description":""}}}},"/outputs/{id}":{"get":{"operationId":"OutputsController_findOne","parameters":[],"responses":{"200":{"description":""}}},"put":{"operationId":"OutputsController_update","parameters":[],"responses":{"200":{"description":""}}},"delete":{"operationId":"OutputsController_delete","parameters":[],"responses":{"200":{"description":""}}}},"/pipelines/start/{id}":{"post":{"operationId":"PipelinesController_activate","parameters":[],"responses":{"201":{"description":""}}}},"/pipelines/{id}/status":{"get":{"operationId":"PipelinesController_getPipelineStatus","parameters":[],"responses":{"200":{"description":""}}}},"/pipelines/{id}/{details}":{"get":{"operationId":"PipelinesController_getPipelineLogs","parameters":[],"responses":{"200":{"description":""}}}},"/pipelines":{"post":{"operationId":"PipelinesController_create","parameters":[],"responses":{"201":{"description":""}}},"get":{"operationId":"PipelinesController_findAll","parameters":[],"responses":{"200":{"description":""}}}},"/pipelines/{id}":{"get":{"operationId":"PipelinesController_findOne","parameters":[],"responses":{"200":{"description":""}}},"put":{"operationId":"PipelinesController_update","parameters":[],"responses":{"200":{"description":""}}},"delete":{"operationId":"PipelinesController_delete","parameters":[],"responses":{"200":{"description":""}}}},"/auth":{"post":{"operationId":"AuthController_signIn_old","parameters":[],"responses":{"200":{"description":""}}}},"/auth/login":{"post":{"operationId":"AuthController_signIn_login","parameters":[],"responses":{"200":{"description":""}}}},"/auth/sign-in":{"post":{"operationId":"AuthController_signIn","parameters":[],"responses":{"200":{"description":""}}}},"/auth/refresh-access-token":{"post":{"operationId":"AuthController_refreshAccessToken","parameters":[],"responses":{"200":{"description":""}}}},"/auth/enable-totp":{"post":{"operationId":"AuthController_enableTotpMFA","parameters":[],"responses":{"200":{"description":""}}}},"/auth/disable-totp":{"post":{"operationId":"AuthController_disableTotpMFA","parameters":[],"responses":{"200":{"description":""}}}},"/auth/dismiss-totp":{"post":{"operationId":"AuthController_dismissTotpMFA","parameters":[],"responses":{"200":{"description":""}}}},"/auth/verify-totp":{"post":{"operationId":"AuthController_verifyTotp","parameters":[],"responses":{"200":{"description":""}}}},"/auth/change-password":{"post":{"operationId":"AuthController_changePassword","parameters":[],"responses":{"200":{"description":""}}}},"/auth/reset-password":{"post":{"operationId":"AuthController_resetPassword","parameters":[],"responses":{"200":{"description":""}}}},"/auth/verify-reset-password-code":{"post":{"operationId":"AuthController_verifyResetPasswordCode","parameters":[],"responses":{"200":{"description":""}}}},"/auth/confirm-reset-password":{"post":{"operationId":"AuthController_confirmResetPassword","parameters":[],"responses":{"200":{"description":""}}}},"/health":{"get":{"operationId":"HealthController_check","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/all":{"get":{"operationId":"CatalogController_catalogAll","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data_apps":{"get":{"operationId":"CatalogController_dataAppsAll","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data_apps/{id}":{"delete":{"operationId":"CatalogController_dataAppsOne","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/dashboard-metabase":{"get":{"operationId":"CatalogController_getAllDashboardMetabase","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/dashboard-metabase/{id}":{"get":{"operationId":"CatalogController_getOneDashboardMetabase","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/table-metadata":{"get":{"operationId":"CatalogController_getAllTableMetadata","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/table-metadata/{id}":{"delete":{"operationId":"CatalogController_deleteOneTableMetadata","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/column-metadata":{"get":{"operationId":"CatalogController_getOneColumnMetadata","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/column-metadata/{id}":{"delete":{"operationId":"CatalogController_deleteOneColumnMetadata","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data-preview":{"get":{"operationId":"CatalogController_getOneDataPreview","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data-status":{"get":{"operationId":"CatalogController_createDataStatus","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data-description":{"get":{"operationId":"CatalogController_getDataDescription","parameters":[],"responses":{"200":{"description":""}}},"post":{"operationId":"CatalogController_createDataDescription","parameters":[],"responses":{"201":{"description":""}}}},"/catalog/data-docs":{"get":{"operationId":"CatalogController_getDataDocs","parameters":[],"responses":{"200":{"description":""}}},"post":{"operationId":"CatalogController_createDataDocs","parameters":[],"responses":{"201":{"description":""}}}},"/catalog/data-rating":{"get":{"operationId":"CatalogController_getDataRating","parameters":[],"responses":{"200":{"description":""}}},"post":{"operationId":"CatalogController_createDataRating","parameters":[],"responses":{"201":{"description":""}}}},"/catalog/summary-rating/{id}":{"get":{"operationId":"CatalogController_getSummaryRating","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data-comment":{"get":{"operationId":"CatalogController_getDataComment","parameters":[],"responses":{"200":{"description":""}}},"post":{"operationId":"CatalogController_createDataComment","parameters":[],"responses":{"201":{"description":""}}}},"/catalog/data-review":{"get":{"operationId":"CatalogController_getDataReview","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/tags":{"post":{"operationId":"CatalogController_createTags","parameters":[],"responses":{"201":{"description":""}}},"get":{"operationId":"CatalogController_findAllTags","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/tags/{id}":{"delete":{"operationId":"CatalogController_deleteTags","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/table-tags":{"post":{"operationId":"CatalogController_createTableTags","parameters":[],"responses":{"201":{"description":""}}},"get":{"operationId":"CatalogController_getAllTableTags","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/table-tags/{id}":{"delete":{"operationId":"CatalogController_deleteTableTags","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/table-rules":{"get":{"operationId":"CatalogController_getTableRules","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/table-rules/{id}":{"delete":{"operationId":"CatalogController_deleteTableRules","parameters":[],"responses":{"200":{"description":""}}}}},"info":{"title":"Maestro Grpc Documentation","description":"Documentation for Maestro gateway","version":"1.0","contact":{}},"tags":[],"servers":[],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"GetAvailableEntitiesRes":{"type":"object","properties":{"entities":{"type":"array","items":{"type":"string"}}},"required":["entities"]},"CredentialsJdbc":{"type":"object","properties":{"jdbc_user":{"type":"string"},"jdbc_password":{"type":"string"},"database":{"type":"string"},"endpoint":{"type":"string"},"port":{"type":"string"},"engine":{"type":"string"},"schema":{"type":"string"}}},"TestConnectionReq":{"type":"object","properties":{"plugin":{"type":"string"},"credentials":{"$ref":"#/components/schemas/CredentialsJdbc"}},"required":["plugin","credentials"]},"TestConnectionRes":{"type":"object","properties":{"connection_state":{"type":"boolean"},"total_entities":{"type":"number"},"database_tables":{"type":"array","items":{"type":"string"}}},"required":["connection_state","total_entities","database_tables"]},"TestConnectionGetColumnsReq":{"type":"object","properties":{"plugin":{"type":"string"},"tables":{"type":"array","items":{"type":"string"}},"credentials":{"$ref":"#/components/schemas/CredentialsJdbc"},"id":{"type":"string"}},"required":["plugin","tables"]},"TestConnectionGetColumnsRes":{"type":"object","properties":{"tables":{"type":"array","items":{"type":"string"}}},"required":["tables"]},"FileFormatParams":{"type":"object","properties":{"file_format":{"type":"string"},"encoding":{"type":"string"}}},"GoogleAnalyticsClientSecrets":{"type":"object","properties":{"type":{"type":"string"},"project_id":{"type":"string"},"private_key_id":{"type":"string"},"private_key":{"type":"string"},"client_email":{"type":"string"},"client_id":{"type":"string"},"auth_uri":{"type":"string"},"token_uri":{"type":"string"},"auth_provider_x509_cert_url":{"type":"string"},"client_x509_cert_url":{"type":"string"}},"required":["type","project_id","private_key_id","private_key","client_email","client_id","auth_uri","token_uri","auth_provider_x509_cert_url","client_x509_cert_url"]},"Credentials":{"type":"object","properties":{"jdbc_user":{"type":"string"},"jdbc_password":{"type":"string"},"database":{"type":"string"},"endpoint":{"type":"string"},"port":{"type":"string"},"engine":{"type":"string"},"schema":{"type":"string"},"connection_type":{"type":"string"},"client_aws_access_key_id":{"type":"string"},"client_aws_secret_access_key":{"type":"string"},"client_bucket":{"type":"string"},"file_to_extract":{"type":"string"},"file_format_params":{"$ref":"#/components/schemas/FileFormatParams"},"view_id":{"type":"string"},"client_secrets":{"$ref":"#/components/schemas/GoogleAnalyticsClientSecrets"},"start_date":{"type":"string"},"end_date":{"type":"string"},"oauth_code":{"type":"string"}},"required":["connection_type"]},"OauthObject":{"type":"object","properties":{"get_tokens_url":{"type":"string"},"get_tokens_url_params":{"type":"string"},"get_tokens_set_response":{"type":"object"},"content_type":{"type":"string"}}},"InputOptions":{"type":"object","properties":{"oauth":{"$ref":"#/components/schemas/OauthObject"},"skip_select_columns":{"type":"boolean"},"skip_select_entities":{"type":"boolean"},"skip_transformation":{"type":"boolean"}}},"CreateInputReq":{"type":"object","properties":{"plugin":{"type":"string"},"category":{"type":"string"},"credentials":{"$ref":"#/components/schemas/Credentials"},"name":{"type":"string"},"options":{"$ref":"#/components/schemas/InputOptions"}},"required":["plugin","category","credentials","name"]},"Input":{"type":"object","properties":{"id":{"type":"string"},"category":{"type":"string"},"plugin":{"type":"string"},"name":{"type":"string"},"cron":{"type":"string"},"credentials":{"$ref":"#/components/schemas/Credentials"},"client_id":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","category","plugin","name","cron","credentials","client_id","created_at","updated_at"]}}}} \ No newline at end of file +{"openapi":"3.0.0","paths":{"/inputs/available-entities/{plugin}":{"get":{"operationId":"InputsController_getAvailableEntities","parameters":[{"name":"plugin","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAvailableEntitiesRes"}}}}},"tags":["inputs"]}},"/inputs/test-connection":{"post":{"operationId":"InputsController_testConnection","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestConnectionReq"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestConnectionRes"}}}}},"tags":["inputs"]}},"/inputs/test-connection/get-columns":{"post":{"operationId":"InputsController_getColumns","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestConnectionGetColumnsReq"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestConnectionGetColumnsRes"}}}}},"tags":["inputs"]}},"/inputs":{"post":{"operationId":"InputsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInputReq"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Input"}}}}},"tags":["inputs"]},"get":{"operationId":"InputsController_findAll","parameters":[],"responses":{"200":{"description":""}},"tags":["inputs"]}},"/inputs/{id}":{"get":{"operationId":"InputsController_findOne","parameters":[],"responses":{"200":{"description":""}},"tags":["inputs"]},"patch":{"operationId":"InputsController_update","parameters":[],"responses":{"200":{"description":""}},"tags":["inputs"]},"delete":{"operationId":"InputsController_delete","parameters":[],"responses":{"200":{"description":""}},"tags":["inputs"]}},"/transformations":{"post":{"operationId":"TransformationsController_create","parameters":[],"responses":{"201":{"description":""}}},"get":{"operationId":"TransformationsController_findAll","parameters":[],"responses":{"200":{"description":""}}}},"/transformations/{id}":{"get":{"operationId":"TransformationsController_findOne","parameters":[],"responses":{"200":{"description":""}}},"put":{"operationId":"TransformationsController_update","parameters":[],"responses":{"200":{"description":""}}},"delete":{"operationId":"TransformationsController_delete","parameters":[],"responses":{"200":{"description":""}}}},"/outputs":{"post":{"operationId":"OutputsController_create","parameters":[],"responses":{"201":{"description":""}}},"get":{"operationId":"OutputsController_findAll","parameters":[],"responses":{"200":{"description":""}}}},"/outputs/{id}":{"get":{"operationId":"OutputsController_findOne","parameters":[],"responses":{"200":{"description":""}}},"put":{"operationId":"OutputsController_update","parameters":[],"responses":{"200":{"description":""}}},"delete":{"operationId":"OutputsController_delete","parameters":[],"responses":{"200":{"description":""}}}},"/pipelines/start/{id}":{"post":{"operationId":"PipelinesController_activate","parameters":[],"responses":{"201":{"description":""}}}},"/pipelines/{id}/status":{"get":{"operationId":"PipelinesController_getPipelineStatus","parameters":[],"responses":{"200":{"description":""}}}},"/pipelines/{id}/{details}":{"get":{"operationId":"PipelinesController_getPipelineLogs","parameters":[],"responses":{"200":{"description":""}}}},"/pipelines":{"post":{"operationId":"PipelinesController_create","parameters":[],"responses":{"201":{"description":""}}},"get":{"operationId":"PipelinesController_findAll","parameters":[],"responses":{"200":{"description":""}}}},"/pipelines/{id}":{"get":{"operationId":"PipelinesController_findOne","parameters":[],"responses":{"200":{"description":""}}},"put":{"operationId":"PipelinesController_update","parameters":[],"responses":{"200":{"description":""}}},"delete":{"operationId":"PipelinesController_delete","parameters":[],"responses":{"200":{"description":""}}}},"/auth":{"post":{"operationId":"AuthController_signIn_old","parameters":[],"responses":{"200":{"description":""}}}},"/auth/login":{"post":{"operationId":"AuthController_signIn_login","parameters":[],"responses":{"200":{"description":""}}}},"/auth/sign-in":{"post":{"operationId":"AuthController_signIn","parameters":[],"responses":{"200":{"description":""}}}},"/auth/refresh-access-token":{"post":{"operationId":"AuthController_refreshAccessToken","parameters":[],"responses":{"200":{"description":""}}}},"/auth/enable-totp":{"post":{"operationId":"AuthController_enableTotpMFA","parameters":[],"responses":{"200":{"description":""}}}},"/auth/disable-totp":{"post":{"operationId":"AuthController_disableTotpMFA","parameters":[],"responses":{"200":{"description":""}}}},"/auth/dismiss-totp":{"post":{"operationId":"AuthController_dismissTotpMFA","parameters":[],"responses":{"200":{"description":""}}}},"/auth/verify-totp":{"post":{"operationId":"AuthController_verifyTotp","parameters":[],"responses":{"200":{"description":""}}}},"/auth/change-password":{"post":{"operationId":"AuthController_changePassword","parameters":[],"responses":{"200":{"description":""}}}},"/auth/reset-password":{"post":{"operationId":"AuthController_resetPassword","parameters":[],"responses":{"200":{"description":""}}}},"/auth/verify-reset-password-code":{"post":{"operationId":"AuthController_verifyResetPasswordCode","parameters":[],"responses":{"200":{"description":""}}}},"/auth/confirm-reset-password":{"post":{"operationId":"AuthController_confirmResetPassword","parameters":[],"responses":{"200":{"description":""}}}},"/health":{"get":{"operationId":"HealthController_check","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/all":{"get":{"operationId":"CatalogController_catalogAll","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data_apps":{"get":{"operationId":"CatalogController_dataAppsAll","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data_apps/{id}":{"delete":{"operationId":"CatalogController_dataAppsOne","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/dashboard-metabase":{"get":{"operationId":"CatalogController_getAllDashboardMetabase","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/dashboard-metabase/{id}":{"get":{"operationId":"CatalogController_getOneDashboardMetabase","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/table-metadata":{"get":{"operationId":"CatalogController_getAllTableMetadata","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/table-metadata/{id}":{"delete":{"operationId":"CatalogController_deleteOneTableMetadata","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/column-metadata":{"get":{"operationId":"CatalogController_getOneColumnMetadata","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/column-metadata/{id}":{"delete":{"operationId":"CatalogController_deleteOneColumnMetadata","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data-preview":{"get":{"operationId":"CatalogController_getOneDataPreview","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data-status":{"get":{"operationId":"CatalogController_createDataStatus","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data-description":{"get":{"operationId":"CatalogController_getDataDescription","parameters":[],"responses":{"200":{"description":""}}},"post":{"operationId":"CatalogController_createDataDescription","parameters":[],"responses":{"201":{"description":""}}}},"/catalog/data-docs":{"get":{"operationId":"CatalogController_getDataDocs","parameters":[],"responses":{"200":{"description":""}}},"post":{"operationId":"CatalogController_createDataDocs","parameters":[],"responses":{"201":{"description":""}}}},"/catalog/data-rating":{"get":{"operationId":"CatalogController_getDataRating","parameters":[],"responses":{"200":{"description":""}}},"post":{"operationId":"CatalogController_createDataRating","parameters":[],"responses":{"201":{"description":""}}}},"/catalog/summary-rating/{id}":{"get":{"operationId":"CatalogController_getSummaryRating","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data-comment":{"get":{"operationId":"CatalogController_getDataComment","parameters":[],"responses":{"200":{"description":""}}},"post":{"operationId":"CatalogController_createDataComment","parameters":[],"responses":{"201":{"description":""}}}},"/catalog/data-review":{"get":{"operationId":"CatalogController_getDataReview","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/tags":{"post":{"operationId":"CatalogController_createTags","parameters":[],"responses":{"201":{"description":""}}},"get":{"operationId":"CatalogController_findAllTags","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/tags/{id}":{"delete":{"operationId":"CatalogController_deleteTags","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/table-tags":{"post":{"operationId":"CatalogController_createTableTags","parameters":[],"responses":{"201":{"description":""}}},"get":{"operationId":"CatalogController_getAllTableTags","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/table-tags/{id}":{"delete":{"operationId":"CatalogController_deleteTableTags","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/table-rules":{"get":{"operationId":"CatalogController_getTableRules","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/table-rules/{id}":{"delete":{"operationId":"CatalogController_deleteTableRules","parameters":[],"responses":{"200":{"description":""}}}}},"info":{"title":"Maestro Grpc Documentation","description":"Documentation for Maestro gateway","version":"1.0","contact":{}},"tags":[],"servers":[],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"GetAvailableEntitiesRes":{"type":"object","properties":{"entities":{"type":"array","items":{"type":"string"}}},"required":["entities"]},"CredentialsJdbc":{"type":"object","properties":{"jdbc_user":{"type":"string"},"jdbc_password":{"type":"string"},"database":{"type":"string"},"endpoint":{"type":"string"},"port":{"type":"string"},"engine":{"type":"string"},"schema":{"type":"string"}}},"TestConnectionReq":{"type":"object","properties":{"plugin":{"type":"string"},"credentials":{"$ref":"#/components/schemas/CredentialsJdbc"},"info":{"type":"object"}},"required":["plugin","credentials"]},"TestConnectionRes":{"type":"object","properties":{"connection_state":{"type":"boolean"},"total_entities":{"type":"number"},"database_tables":{"type":"array","items":{"type":"string"}}},"required":["connection_state","total_entities","database_tables"]},"TestConnectionGetColumnsReq":{"type":"object","properties":{"plugin":{"type":"string"},"tables":{"type":"array","items":{"type":"string"}},"credentials":{"$ref":"#/components/schemas/CredentialsJdbc"},"id":{"type":"string"},"info":{"type":"object"}},"required":["plugin","tables"]},"TestConnectionGetColumnsRes":{"type":"object","properties":{"tables":{"type":"array","items":{"type":"string"}}},"required":["tables"]},"FileFormatParams":{"type":"object","properties":{"file_format":{"type":"string"},"encoding":{"type":"string"}}},"GoogleAnalyticsClientSecrets":{"type":"object","properties":{"type":{"type":"string"},"project_id":{"type":"string"},"private_key_id":{"type":"string"},"private_key":{"type":"string"},"client_email":{"type":"string"},"client_id":{"type":"string"},"auth_uri":{"type":"string"},"token_uri":{"type":"string"},"auth_provider_x509_cert_url":{"type":"string"},"client_x509_cert_url":{"type":"string"}},"required":["type","project_id","private_key_id","private_key","client_email","client_id","auth_uri","token_uri","auth_provider_x509_cert_url","client_x509_cert_url"]},"Credentials":{"type":"object","properties":{"jdbc_user":{"type":"string"},"jdbc_password":{"type":"string"},"database":{"type":"string"},"endpoint":{"type":"string"},"port":{"type":"string"},"engine":{"type":"string"},"schema":{"type":"string"},"connection_type":{"type":"string"},"client_aws_access_key_id":{"type":"string"},"client_aws_secret_access_key":{"type":"string"},"client_bucket":{"type":"string"},"file_to_extract":{"type":"string"},"file_format_params":{"$ref":"#/components/schemas/FileFormatParams"},"view_id":{"type":"string"},"client_secrets":{"$ref":"#/components/schemas/GoogleAnalyticsClientSecrets"},"start_date":{"type":"string"},"end_date":{"type":"string"},"oauth_code":{"type":"string"}},"required":["connection_type"]},"OauthObject":{"type":"object","properties":{"get_tokens_url":{"type":"string"},"get_tokens_url_params":{"type":"string"},"get_tokens_set_response":{"type":"object"},"content_type":{"type":"string"}}},"InputOptions":{"type":"object","properties":{"oauth":{"$ref":"#/components/schemas/OauthObject"},"skip_select_columns":{"type":"boolean"},"skip_select_entities":{"type":"boolean"},"skip_transformation":{"type":"boolean"}}},"CreateInputReq":{"type":"object","properties":{"plugin":{"type":"string"},"category":{"type":"string"},"credentials":{"$ref":"#/components/schemas/Credentials"},"name":{"type":"string"},"options":{"$ref":"#/components/schemas/InputOptions"},"info":{"type":"object"}},"required":["plugin","category","credentials","name"]},"Input":{"type":"object","properties":{"id":{"type":"string"},"category":{"type":"string"},"plugin":{"type":"string"},"name":{"type":"string"},"cron":{"type":"string"},"credentials":{"$ref":"#/components/schemas/Credentials"},"client_id":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"info":{"type":"object"}},"required":["id","category","plugin","name","cron","credentials","client_id","created_at","updated_at"]}}}} \ No newline at end of file