From 363bc8b350ee96e2ad5f0ed6441bf6bb06ff9ad5 Mon Sep 17 00:00:00 2001 From: Victor Radael Date: Mon, 14 Mar 2022 10:35:03 -0300 Subject: [PATCH] REFACTOR: Project Pattern and AuthClient (DUC) --- .gitignore | 3 + package-lock.json | 2374 +++++++++++------ package.json | 40 +- src/app.module.ts | 121 +- src/clients/auth/client.config.ts | 23 + src/clients/auth/client.service.ts | 43 + src/clients/auth/interfaces.d.ts | 4 + src/clients/inputs/client.config.ts | 17 + src/clients/inputs/client.service.ts | 64 + src/clients/outputs/client.config.ts | 17 + src/clients/outputs/client.service.ts | 57 + src/clients/pipelines/client.config.ts | 17 + src/clients/pipelines/client.service.ts | 68 + src/clients/transformations/client.config.ts | 17 + src/clients/transformations/client.service.ts | 65 + src/enrichment/config/grpc-client.ts | 17 - src/enrichment/dto/create-enrichment.dto.ts | 6 - src/enrichment/dto/update-enrichment.dto.ts | 6 - src/enrichment/enrichment.controller.spec.ts | 20 - src/enrichment/enrichment.controller.ts | 60 - src/enrichment/enrichment.module.ts | 9 - src/enrichment/enrichment.service.spec.ts | 18 - src/enrichment/enrichment.service.ts | 26 - src/enrichment/entities/enrichment.entity.ts | 8 - src/enrichment/proto/enrichment.proto | 43 - src/health/entities/health.entity.ts | 1 - src/health/health.module.ts | 9 - src/inputs/config/grpc-client.ts | 17 - .../dto/create-input-grpc-client.dto.ts | 13 - .../dto/test-connection-grpc-client.dto.ts | 5 - .../dto/update-input-grpc-client.dto.ts | 6 - .../entities/input-grcp-client.entity.ts | 14 - src/inputs/input-grpc-client.controller.ts | 63 - src/inputs/input-grpc-client.module.ts | 13 - src/inputs/input-grpc-client.service.spec.ts | 18 - src/inputs/input-grpc-client.service.ts | 31 - src/inputs/input-rest-client.controller.ts | 71 - src/inputs/proto/input.proto | 65 - src/main.ts | 3 +- src/middlewares/authentication.ts | 41 +- src/modules/auth/auth.controller.ts | 25 + src/modules/auth/auth.service.spec.ts | 0 src/{ => modules}/health/health.controller.ts | 0 src/modules/health/health.service.spec.ts | 0 src/{ => modules}/health/health.service.ts | 0 src/modules/inputs/inputs.controller.ts | 83 + src/modules/inputs/inputs.service.spec.ts | 0 src/modules/inputs/inputs.service.ts | 8 + src/modules/outputs/outputs.controllers.ts | 83 + src/modules/outputs/outputs.service.spec.ts | 0 src/modules/outputs/outputs.service.ts | 8 + src/modules/pipelines/pipelines.controller.ts | 83 + .../pipelines/pipelines.service.spec.ts | 0 src/modules/pipelines/pipelines.service.ts | 8 + .../transformations.controller.ts | 83 + .../transformations.service.spec.ts | 0 .../transformations.service.ts | 8 + src/outputs/config/grpc-client.ts | 17 - src/outputs/dto/create-output.dto.ts | 7 - src/outputs/dto/update-output.dto.ts | 6 - src/outputs/entities/output.entity.ts | 9 - src/outputs/outputs.controller.spec.ts | 20 - src/outputs/outputs.controller.ts | 57 - src/outputs/outputs.module.ts | 9 - src/outputs/outputs.service.spec.ts | 18 - src/outputs/outputs.service.ts | 26 - src/outputs/proto/output.proto | 48 - src/pipelines/config/grpc-client.ts | 17 - src/pipelines/dto/create-pipeline.dto.ts | 12 - src/pipelines/dto/update-pipeline.dto.ts | 6 - src/pipelines/entities/pipeline.entity.ts | 14 - src/pipelines/pipelines.controller.spec.ts | 20 - src/pipelines/pipelines.controller.ts | 70 - src/pipelines/pipelines.module.ts | 9 - src/pipelines/pipelines.service.spec.ts | 18 - src/pipelines/pipelines.service.ts | 34 - src/pipelines/proto/pipeline.proto | 97 - .../dto/create-rest-enrichment.dto.ts | 6 - .../dto/update-rest-enrichment.dto.ts | 4 - .../entities/rest-enrichment.entity.ts | 7 - .../rest-enrichments.controller.spec.ts | 20 - .../rest-enrichments.controller.ts | 92 - .../rest-enrichments.module.ts | 9 - .../rest-enrichments.service.spec.ts | 18 - .../rest-enrichments.service.ts | 26 - .../dto/create-rest-factory.dto.ts | 1 - .../dto/update-rest-factory.dto.ts | 4 - .../entities/rest-factory.entity.ts | 1 - .../rest-factory.controller.spec.ts | 20 - .../rest-factory/rest-factory.controller.ts | 60 - src/rest/rest-factory/rest-factory.module.ts | 9 - .../rest-factory/rest-factory.service.spec.ts | 18 - src/rest/rest-factory/rest-factory.service.ts | 26 - .../rest-inputs/dto/HTTPInputValues.dto.ts | 17 - .../rest-inputs/dto/JDBCInputValues.dto.ts | 53 - .../rest-inputs/dto/create-rest-input.dto.ts | 64 - src/rest/rest-inputs/dto/cron.dto.ts | 102 - src/rest/rest-inputs/dto/s3InputValues.dto.ts | 50 - .../dto/salesforceInputValues.dto.ts | 27 - .../rest-inputs/dto/testConnection.dto.ts | 34 - .../rest-inputs/dto/update-rest-input.dto.ts | 4 - .../rest-inputs/entities/rest-input.entity.ts | 14 - .../rest-inputs.controller.spec.ts | 20 - .../rest-inputs/rest-inputs.controller.ts | 123 - src/rest/rest-inputs/rest-inputs.module.ts | 9 - .../rest-inputs/rest-inputs.service.spec.ts | 18 - src/rest/rest-inputs/rest-inputs.service.ts | 26 - .../dto/create-rest-output.dto.ts | 32 - .../dto/update-rest-output.dto.ts | 4 - .../entities/rest-output.entity.ts | 1 - .../rest-outputs.controller.spec.ts | 20 - .../rest-outputs/rest-outputs.controller.ts | 91 - src/rest/rest-outputs/rest-outputs.module.ts | 9 - .../rest-outputs/rest-outputs.service.spec.ts | 18 - src/rest/rest-outputs/rest-outputs.service.ts | 26 - .../dto/create-rest-pipeline.dto.ts | 59 - .../dto/update-rest-pipeline.dto.ts | 4 - .../entities/rest-pipeline.entity.ts | 1 - .../rest-pipelines.controller.spec.ts | 20 - .../rest-pipelines.controller.ts | 122 - .../rest-pipelines/rest-pipelines.module.ts | 9 - .../rest-pipelines.service.spec.ts | 18 - .../rest-pipelines/rest-pipelines.service.ts | 26 - .../dto/create-rest-transformation.dto.ts | 52 - .../dto/update-rest-transformation.dto.ts | 4 - .../entities/rest-transformation.entity.ts | 1 - .../rest-transformations.controller.spec.ts | 20 - .../rest-transformations.controller.ts | 97 - .../rest-transformations.module.ts | 9 - .../rest-transformations.service.spec.ts | 18 - .../rest-transformations.service.ts | 26 - .../rest-user/dto/create-rest-user.dto.ts | 40 - src/rest/rest-user/dto/resendCode.dto.ts | 10 - .../rest-user/dto/update-rest-user.dto.ts | 4 - src/rest/rest-user/dto/userAuth.dto.ts | 18 - .../rest-user/dto/userConfirmation.dto.ts | 17 - .../rest-user/entities/rest-user.entity.ts | 1 - .../rest-user/rest-user.controller.spec.ts | 20 - src/rest/rest-user/rest-user.controller.ts | 85 - src/rest/rest-user/rest-user.module.ts | 9 - src/rest/rest-user/rest-user.service.spec.ts | 18 - src/rest/rest-user/rest-user.service.ts | 26 - src/transformations/config/grpc-client.ts | 17 - .../dto/create-transformation.dto.ts | 11 - .../dto/update-transformation.dto.ts | 5 - .../entities/transformation.entity.ts | 14 - .../proto/transformation.proto | 49 - .../transformations.controller.spec.ts | 22 - .../transformations.controller.ts | 65 - src/transformations/transformations.module.ts | 9 - .../transformations.service.spec.ts | 18 - .../transformations.service.ts | 26 - src/users-grpc-client/config/grpc-client.ts | 17 - .../dto/create-users-grpc-client.dto.ts | 1 - .../dto/update-users-grpc-client.dto.ts | 8 - .../entities/users-grcp-client.entity.ts | 1 - src/users-grpc-client/proto/user.proto | 37 - .../users-grpc-client.controller.ts | 55 - .../users-grpc-client.module.ts | 9 - .../users-grpc-client.service.spec.ts | 18 - .../users-grpc-client.service.ts | 26 - src/utils/Authenticate.ts | 39 +- swagger.json | 2 +- 163 files changed, 2544 insertions(+), 4138 deletions(-) create mode 100644 src/clients/auth/client.config.ts create mode 100644 src/clients/auth/client.service.ts create mode 100644 src/clients/auth/interfaces.d.ts create mode 100644 src/clients/inputs/client.config.ts create mode 100644 src/clients/inputs/client.service.ts create mode 100644 src/clients/outputs/client.config.ts create mode 100644 src/clients/outputs/client.service.ts create mode 100644 src/clients/pipelines/client.config.ts create mode 100644 src/clients/pipelines/client.service.ts create mode 100644 src/clients/transformations/client.config.ts create mode 100644 src/clients/transformations/client.service.ts delete mode 100644 src/enrichment/config/grpc-client.ts delete mode 100644 src/enrichment/dto/create-enrichment.dto.ts delete mode 100644 src/enrichment/dto/update-enrichment.dto.ts delete mode 100644 src/enrichment/enrichment.controller.spec.ts delete mode 100644 src/enrichment/enrichment.controller.ts delete mode 100644 src/enrichment/enrichment.module.ts delete mode 100644 src/enrichment/enrichment.service.spec.ts delete mode 100644 src/enrichment/enrichment.service.ts delete mode 100644 src/enrichment/entities/enrichment.entity.ts delete mode 100644 src/enrichment/proto/enrichment.proto delete mode 100644 src/health/entities/health.entity.ts delete mode 100644 src/health/health.module.ts delete mode 100644 src/inputs/config/grpc-client.ts delete mode 100644 src/inputs/dto/create-input-grpc-client.dto.ts delete mode 100644 src/inputs/dto/test-connection-grpc-client.dto.ts delete mode 100644 src/inputs/dto/update-input-grpc-client.dto.ts delete mode 100644 src/inputs/entities/input-grcp-client.entity.ts delete mode 100644 src/inputs/input-grpc-client.controller.ts delete mode 100644 src/inputs/input-grpc-client.module.ts delete mode 100644 src/inputs/input-grpc-client.service.spec.ts delete mode 100644 src/inputs/input-grpc-client.service.ts delete mode 100644 src/inputs/input-rest-client.controller.ts delete mode 100644 src/inputs/proto/input.proto create mode 100644 src/modules/auth/auth.controller.ts create mode 100644 src/modules/auth/auth.service.spec.ts rename src/{ => modules}/health/health.controller.ts (100%) create mode 100644 src/modules/health/health.service.spec.ts rename src/{ => modules}/health/health.service.ts (100%) create mode 100644 src/modules/inputs/inputs.controller.ts create mode 100644 src/modules/inputs/inputs.service.spec.ts create mode 100644 src/modules/inputs/inputs.service.ts create mode 100644 src/modules/outputs/outputs.controllers.ts create mode 100644 src/modules/outputs/outputs.service.spec.ts create mode 100644 src/modules/outputs/outputs.service.ts create mode 100644 src/modules/pipelines/pipelines.controller.ts create mode 100644 src/modules/pipelines/pipelines.service.spec.ts create mode 100644 src/modules/pipelines/pipelines.service.ts create mode 100644 src/modules/transformations/transformations.controller.ts create mode 100644 src/modules/transformations/transformations.service.spec.ts create mode 100644 src/modules/transformations/transformations.service.ts delete mode 100644 src/outputs/config/grpc-client.ts delete mode 100644 src/outputs/dto/create-output.dto.ts delete mode 100644 src/outputs/dto/update-output.dto.ts delete mode 100644 src/outputs/entities/output.entity.ts delete mode 100644 src/outputs/outputs.controller.spec.ts delete mode 100644 src/outputs/outputs.controller.ts delete mode 100644 src/outputs/outputs.module.ts delete mode 100644 src/outputs/outputs.service.spec.ts delete mode 100644 src/outputs/outputs.service.ts delete mode 100644 src/outputs/proto/output.proto delete mode 100644 src/pipelines/config/grpc-client.ts delete mode 100644 src/pipelines/dto/create-pipeline.dto.ts delete mode 100644 src/pipelines/dto/update-pipeline.dto.ts delete mode 100644 src/pipelines/entities/pipeline.entity.ts delete mode 100644 src/pipelines/pipelines.controller.spec.ts delete mode 100644 src/pipelines/pipelines.controller.ts delete mode 100644 src/pipelines/pipelines.module.ts delete mode 100644 src/pipelines/pipelines.service.spec.ts delete mode 100644 src/pipelines/pipelines.service.ts delete mode 100644 src/pipelines/proto/pipeline.proto delete mode 100644 src/rest/rest-enrichments/dto/create-rest-enrichment.dto.ts delete mode 100644 src/rest/rest-enrichments/dto/update-rest-enrichment.dto.ts delete mode 100644 src/rest/rest-enrichments/entities/rest-enrichment.entity.ts delete mode 100644 src/rest/rest-enrichments/rest-enrichments.controller.spec.ts delete mode 100644 src/rest/rest-enrichments/rest-enrichments.controller.ts delete mode 100644 src/rest/rest-enrichments/rest-enrichments.module.ts delete mode 100644 src/rest/rest-enrichments/rest-enrichments.service.spec.ts delete mode 100644 src/rest/rest-enrichments/rest-enrichments.service.ts delete mode 100644 src/rest/rest-factory/dto/create-rest-factory.dto.ts delete mode 100644 src/rest/rest-factory/dto/update-rest-factory.dto.ts delete mode 100644 src/rest/rest-factory/entities/rest-factory.entity.ts delete mode 100644 src/rest/rest-factory/rest-factory.controller.spec.ts delete mode 100644 src/rest/rest-factory/rest-factory.controller.ts delete mode 100644 src/rest/rest-factory/rest-factory.module.ts delete mode 100644 src/rest/rest-factory/rest-factory.service.spec.ts delete mode 100644 src/rest/rest-factory/rest-factory.service.ts delete mode 100644 src/rest/rest-inputs/dto/HTTPInputValues.dto.ts delete mode 100644 src/rest/rest-inputs/dto/JDBCInputValues.dto.ts delete mode 100644 src/rest/rest-inputs/dto/create-rest-input.dto.ts delete mode 100644 src/rest/rest-inputs/dto/cron.dto.ts delete mode 100644 src/rest/rest-inputs/dto/s3InputValues.dto.ts delete mode 100644 src/rest/rest-inputs/dto/salesforceInputValues.dto.ts delete mode 100644 src/rest/rest-inputs/dto/testConnection.dto.ts delete mode 100644 src/rest/rest-inputs/dto/update-rest-input.dto.ts delete mode 100644 src/rest/rest-inputs/entities/rest-input.entity.ts delete mode 100644 src/rest/rest-inputs/rest-inputs.controller.spec.ts delete mode 100644 src/rest/rest-inputs/rest-inputs.controller.ts delete mode 100644 src/rest/rest-inputs/rest-inputs.module.ts delete mode 100644 src/rest/rest-inputs/rest-inputs.service.spec.ts delete mode 100644 src/rest/rest-inputs/rest-inputs.service.ts delete mode 100644 src/rest/rest-outputs/dto/create-rest-output.dto.ts delete mode 100644 src/rest/rest-outputs/dto/update-rest-output.dto.ts delete mode 100644 src/rest/rest-outputs/entities/rest-output.entity.ts delete mode 100644 src/rest/rest-outputs/rest-outputs.controller.spec.ts delete mode 100644 src/rest/rest-outputs/rest-outputs.controller.ts delete mode 100644 src/rest/rest-outputs/rest-outputs.module.ts delete mode 100644 src/rest/rest-outputs/rest-outputs.service.spec.ts delete mode 100644 src/rest/rest-outputs/rest-outputs.service.ts delete mode 100644 src/rest/rest-pipelines/dto/create-rest-pipeline.dto.ts delete mode 100644 src/rest/rest-pipelines/dto/update-rest-pipeline.dto.ts delete mode 100644 src/rest/rest-pipelines/entities/rest-pipeline.entity.ts delete mode 100644 src/rest/rest-pipelines/rest-pipelines.controller.spec.ts delete mode 100644 src/rest/rest-pipelines/rest-pipelines.controller.ts delete mode 100644 src/rest/rest-pipelines/rest-pipelines.module.ts delete mode 100644 src/rest/rest-pipelines/rest-pipelines.service.spec.ts delete mode 100644 src/rest/rest-pipelines/rest-pipelines.service.ts delete mode 100644 src/rest/rest-transformations/dto/create-rest-transformation.dto.ts delete mode 100644 src/rest/rest-transformations/dto/update-rest-transformation.dto.ts delete mode 100644 src/rest/rest-transformations/entities/rest-transformation.entity.ts delete mode 100644 src/rest/rest-transformations/rest-transformations.controller.spec.ts delete mode 100644 src/rest/rest-transformations/rest-transformations.controller.ts delete mode 100644 src/rest/rest-transformations/rest-transformations.module.ts delete mode 100644 src/rest/rest-transformations/rest-transformations.service.spec.ts delete mode 100644 src/rest/rest-transformations/rest-transformations.service.ts delete mode 100644 src/rest/rest-user/dto/create-rest-user.dto.ts delete mode 100644 src/rest/rest-user/dto/resendCode.dto.ts delete mode 100644 src/rest/rest-user/dto/update-rest-user.dto.ts delete mode 100644 src/rest/rest-user/dto/userAuth.dto.ts delete mode 100644 src/rest/rest-user/dto/userConfirmation.dto.ts delete mode 100644 src/rest/rest-user/entities/rest-user.entity.ts delete mode 100644 src/rest/rest-user/rest-user.controller.spec.ts delete mode 100644 src/rest/rest-user/rest-user.controller.ts delete mode 100644 src/rest/rest-user/rest-user.module.ts delete mode 100644 src/rest/rest-user/rest-user.service.spec.ts delete mode 100644 src/rest/rest-user/rest-user.service.ts delete mode 100644 src/transformations/config/grpc-client.ts delete mode 100644 src/transformations/dto/create-transformation.dto.ts delete mode 100644 src/transformations/dto/update-transformation.dto.ts delete mode 100644 src/transformations/entities/transformation.entity.ts delete mode 100644 src/transformations/proto/transformation.proto delete mode 100644 src/transformations/transformations.controller.spec.ts delete mode 100644 src/transformations/transformations.controller.ts delete mode 100644 src/transformations/transformations.module.ts delete mode 100644 src/transformations/transformations.service.spec.ts delete mode 100644 src/transformations/transformations.service.ts delete mode 100644 src/users-grpc-client/config/grpc-client.ts delete mode 100644 src/users-grpc-client/dto/create-users-grpc-client.dto.ts delete mode 100644 src/users-grpc-client/dto/update-users-grpc-client.dto.ts delete mode 100644 src/users-grpc-client/entities/users-grcp-client.entity.ts delete mode 100644 src/users-grpc-client/proto/user.proto delete mode 100644 src/users-grpc-client/users-grpc-client.controller.ts delete mode 100644 src/users-grpc-client/users-grpc-client.module.ts delete mode 100644 src/users-grpc-client/users-grpc-client.service.spec.ts delete mode 100644 src/users-grpc-client/users-grpc-client.service.ts diff --git a/.gitignore b/.gitignore index 6851d1f..f9b894d 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,6 @@ lerna-debug.log* .elasticbeanstalk/* !.elasticbeanstalk/*.cfg.yml !.elasticbeanstalk/*.global.yml + + +.env \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index bb11934..5ea838d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,26 +1,25 @@ { "name": "grpc-server-and-client-nestjs-micro-pattern", - "version": "0.0.1", + "version": "0.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { "@ampproject/remapping": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.0.2.tgz", - "integrity": "sha512-sE8Gx+qSDMLoJvb3QarJJlDQK7SSY4rK3hxp4XsiANeFOmjU46ZI7Y9adAQRJrmbz8zbtZkp3mJTT+rGxtF0XA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.2.2", - "sourcemap-codec": "1.4.8" + "@jridgewell/trace-mapping": "^0.3.0" } }, "@angular-devkit/core": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.1.2.tgz", - "integrity": "sha512-uXVesIRiCL/Nv+RSV8JM4j8IoZiGCGnqV2FOJ1hvH7DPxIjhjPMdG/B54xMydZpeASW3ofuxeORyAXxFIBm8Zg==", + "version": "13.2.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.2.5.tgz", + "integrity": "sha512-WuWp/1R0FtCHPBcJLF13lTLHETtDGFUX0ULfGPRaYB5OVCSQcovVp5UbZTTy/Ss3ub3EOEmJlU8kMJfBrWuq+A==", "dev": true, "requires": { - "ajv": "8.8.2", + "ajv": "8.9.0", "ajv-formats": "2.1.1", "fast-json-stable-stringify": "2.1.0", "magic-string": "0.25.7", @@ -46,12 +45,12 @@ } }, "@angular-devkit/schematics": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.1.2.tgz", - "integrity": "sha512-ayYbHGU8QpMGx8ZyhKOBupz+Zfv/2H1pNQErahYV3qg7hA9hfjTGmNmDQ4iw0fiT04NajjUxuomlKsCsg7oXDw==", + "version": "13.2.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.2.5.tgz", + "integrity": "sha512-kAye6VYiF9JQAoeO+BYhy8eT2QOmhB+WLziRjXoFCBxh5+yXTygTVfs9fD5jmIpHmeu4hd2ErSh69yT5xWcD9g==", "dev": true, "requires": { - "@angular-devkit/core": "13.1.2", + "@angular-devkit/core": "13.2.5", "jsonc-parser": "3.0.0", "magic-string": "0.25.7", "ora": "5.4.1", @@ -76,13 +75,13 @@ } }, "@angular-devkit/schematics-cli": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-13.1.2.tgz", - "integrity": "sha512-XSkcVuaaajijQOWE8YerY/8DVuYQWvXxVukweEwkaHSftDQZhfCOZ83nGKbuWkdOdnuDbrc9ve5ZzekplkzVQw==", + "version": "13.2.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-13.2.5.tgz", + "integrity": "sha512-/3Q1+wtE+l5XXoXX/7157yh4Wpi+FNEryx5gDcfPJchgtovxj28nzquD0vXnvpyr3Wd8OaMwg6vW4EfL82jRKg==", "dev": true, "requires": { - "@angular-devkit/core": "13.1.2", - "@angular-devkit/schematics": "13.1.2", + "@angular-devkit/core": "13.2.5", + "@angular-devkit/schematics": "13.2.5", "ansi-colors": "4.1.1", "inquirer": "8.2.0", "minimist": "1.2.5", @@ -129,20 +128,20 @@ "dev": true }, "@babel/core": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.0.tgz", - "integrity": "sha512-x/5Ea+RO5MvF9ize5DeVICJoVrNv0Mi2RnIABrZEKYvPEpldXwauPkgvYA17cKa6WpU3LoYvYbuEMFtSNFsarA==", + "version": "7.17.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz", + "integrity": "sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==", "dev": true, "requires": { - "@ampproject/remapping": "^2.0.0", + "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.0", + "@babel/generator": "^7.17.3", "@babel/helper-compilation-targets": "^7.16.7", "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.17.0", - "@babel/parser": "^7.17.0", + "@babel/helpers": "^7.17.2", + "@babel/parser": "^7.17.3", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", + "@babel/traverse": "^7.17.3", "@babel/types": "^7.17.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", @@ -184,9 +183,9 @@ } }, "@babel/generator": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.0.tgz", - "integrity": "sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", + "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", "dev": true, "requires": { "@babel/types": "^7.17.0", @@ -270,9 +269,9 @@ } }, "@babel/helper-module-transforms": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz", + "integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.16.7", @@ -281,8 +280,8 @@ "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" } }, "@babel/helper-plugin-utils": { @@ -322,9 +321,9 @@ "dev": true }, "@babel/helpers": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.0.tgz", - "integrity": "sha512-Xe/9NFxjPwELUvW2dsukcMZIp6XwPSbI4ojFBJuX5ramHuVE22SVcZIwqzdWo5uCgeTXW8qV97lMvSOjq+1+nQ==", + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", + "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", "dev": true, "requires": { "@babel/template": "^7.16.7", @@ -396,9 +395,9 @@ } }, "@babel/parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz", - "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", + "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", "dev": true }, "@babel/plugin-syntax-async-generators": { @@ -530,18 +529,18 @@ } }, "@babel/traverse": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.0.tgz", - "integrity": "sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg==", + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", + "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", "dev": true, "requires": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.0", + "@babel/generator": "^7.17.3", "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-function-name": "^7.16.7", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.0", + "@babel/parser": "^7.17.3", "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" @@ -602,14 +601,14 @@ } }, "@eslint/eslintrc": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", - "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.0.tgz", + "integrity": "sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.2.0", + "espree": "^9.3.1", "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", @@ -660,19 +659,12 @@ } }, "@grpc/grpc-js": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.5.4.tgz", - "integrity": "sha512-+nJTOsqpFAXnfFrMZ7Too4XXZ/J9O+8jYvSoaunupoC7I7b9H4iex1BRsbTdOmiowfPGJrWit7jUPmbENSUSpw==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.5.7.tgz", + "integrity": "sha512-RAlSbZ9LXo0wNoHKeUlwP9dtGgVBDUbnBKFpfAv5iSqMG4qWz9um2yLH215+Wow1I48etIa1QMS+WAGmsE/7HQ==", "requires": { "@grpc/proto-loader": "^0.6.4", "@types/node": ">=12.12.47" - }, - "dependencies": { - "@types/node": { - "version": "17.0.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.14.tgz", - "integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==" - } } }, "@grpc/proto-loader": { @@ -688,9 +680,9 @@ } }, "@humanwhocodes/config-array": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz", - "integrity": "sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==", + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -774,118 +766,235 @@ "dev": true }, "@jest/console": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.4.6.tgz", - "integrity": "sha512-jauXyacQD33n47A44KrlOVeiXHEXDqapSdfb9kTekOchH/Pd18kBIO1+xxJQRLuG+LUuljFCwTG92ra4NW7SpA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", "dev": true, "requires": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.4.6", - "jest-util": "^27.4.2", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", "slash": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + } } }, "@jest/core": { - "version": "27.4.7", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.4.7.tgz", - "integrity": "sha512-n181PurSJkVMS+kClIFSX/LLvw9ExSb+4IMtD6YnfxZVerw9ANYtW0bPrm0MJu2pfe9SY9FJ9FtQ+MdZkrZwjg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", "dev": true, "requires": { - "@jest/console": "^27.4.6", - "@jest/reporters": "^27.4.6", - "@jest/test-result": "^27.4.6", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.8.1", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.4.2", - "jest-config": "^27.4.7", - "jest-haste-map": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.6", - "jest-resolve-dependencies": "^27.4.6", - "jest-runner": "^27.4.6", - "jest-runtime": "^27.4.6", - "jest-snapshot": "^27.4.6", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.6", - "jest-watcher": "^27.4.6", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", "micromatch": "^4.0.4", "rimraf": "^3.0.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + } } }, "@jest/environment": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.4.6.tgz", - "integrity": "sha512-E6t+RXPfATEEGVidr84WngLNWZ8ffCPky8RqqRK6u1Bn0LK92INe0MDttyPl/JOzaq92BmDzOeuqk09TvM22Sg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", "dev": true, "requires": { - "@jest/fake-timers": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.4.6" + "jest-mock": "^27.5.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + } } }, "@jest/fake-timers": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.4.6.tgz", - "integrity": "sha512-mfaethuYF8scV8ntPpiVGIHQgS0XIALbpY2jt2l7wb/bvq4Q5pDLk4EP4D7SAvYT1QrPOPVZAtbdGAOOyIgs7A==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", "dev": true, "requires": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "@sinonjs/fake-timers": "^8.0.1", "@types/node": "*", - "jest-message-util": "^27.4.6", - "jest-mock": "^27.4.6", - "jest-util": "^27.4.2" + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + } } }, "@jest/globals": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.4.6.tgz", - "integrity": "sha512-kAiwMGZ7UxrgPzu8Yv9uvWmXXxsy0GciNejlHvfPIfWkSxChzv6bgTS3YqBkGuHcis+ouMFI2696n2t+XYIeFw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", "dev": true, "requires": { - "@jest/environment": "^27.4.6", - "@jest/types": "^27.4.2", - "expect": "^27.4.6" + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + } } }, "@jest/reporters": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.4.6.tgz", - "integrity": "sha512-+Zo9gV81R14+PSq4wzee4GC2mhAN9i9a7qgJWL90Gpx7fHYkWpTBvwWNZUXvJByYR9tAVBdc8VxDWqfJyIUrIQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.4.6", - "@jest/test-result": "^27.4.6", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", "glob": "^7.1.2", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.4.6", - "jest-resolve": "^27.4.6", - "jest-util": "^27.4.2", - "jest-worker": "^27.4.6", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", @@ -893,6 +1002,33 @@ "v8-to-istanbul": "^8.1.0" }, "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -902,13 +1038,13 @@ } }, "@jest/source-map": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.4.0.tgz", - "integrity": "sha512-Ntjx9jzP26Bvhbm93z/AKcPRj/9wrkI88/gK60glXDx1q+IeI0rf7Lw2c89Ch6ofonB0On/iRDreQuQ6te9pgQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", "dev": true, "requires": { "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "source-map": "^0.6.0" }, "dependencies": { @@ -921,45 +1057,60 @@ } }, "@jest/test-result": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.4.6.tgz", - "integrity": "sha512-fi9IGj3fkOrlMmhQqa/t9xum8jaJOOAi/lZlm6JXSc55rJMXKHxNDN1oCP39B0/DhNOa2OMupF9BcKZnNtXMOQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", "dev": true, "requires": { - "@jest/console": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + } } }, "@jest/test-sequencer": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.4.6.tgz", - "integrity": "sha512-3GL+nsf6E1PsyNsJuvPyIz+DwFuCtBdtvPpm/LMXVkBJbdFvQYCDpccYT56qq5BGniXWlE81n2qk1sdXfZebnw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", "dev": true, "requires": { - "@jest/test-result": "^27.4.6", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.6", - "jest-runtime": "^27.4.6" + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" } }, "@jest/transform": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.4.6.tgz", - "integrity": "sha512-9MsufmJC8t5JTpWEQJ0OcOOAXaH5ioaIX6uHVBLBMoCZPfKKQF+EqP8kACAvCZ0Y1h2Zr3uOccg8re+Dr5jxyw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.6", - "jest-regex-util": "^27.4.0", - "jest-util": "^27.4.2", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -967,6 +1118,33 @@ "write-file-atomic": "^3.0.0" }, "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -989,19 +1167,25 @@ } }, "@jridgewell/resolve-uri": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz", - "integrity": "sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.2.5.tgz", - "integrity": "sha512-K+Eths78fXDFOvQ2hgJhCiI5s+g81r2yXmACBpbn+f2+Qt94PNoTgUcAXPT8DZkhXCsZRsHVWVtY5KIBMcpDqQ==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", - "sourcemap-codec": "1.4.8" + "@jridgewell/sourcemap-codec": "^1.4.10" } }, "@mapbox/node-pre-gyp": { @@ -1021,20 +1205,20 @@ } }, "@nestjs/cli": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-8.2.0.tgz", - "integrity": "sha512-f5grQOgrRcfHfOUP94OWsMdVYy6bit0zRSxPZ5+tfsFWkiPWdcx5Ba2M2socTykkiNHruXBu07lYvcKh94do7Q==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-8.2.2.tgz", + "integrity": "sha512-ZonmNLCHfTVrZGgYf4mrpivnKGaRzVRAcux+WDbzhQDNIz70s7mdOPShXW1Vpq+7uRJDxlgO1vOMhmg4uEUIDg==", "dev": true, "requires": { - "@angular-devkit/core": "13.1.2", - "@angular-devkit/schematics": "13.1.2", - "@angular-devkit/schematics-cli": "13.1.2", + "@angular-devkit/core": "13.2.5", + "@angular-devkit/schematics": "13.2.5", + "@angular-devkit/schematics-cli": "13.2.5", "@nestjs/schematics": "^8.0.3", "chalk": "3.0.0", - "chokidar": "3.5.2", + "chokidar": "3.5.3", "cli-table3": "0.6.1", "commander": "4.1.1", - "fork-ts-checker-webpack-plugin": "6.5.0", + "fork-ts-checker-webpack-plugin": "7.2.1", "inquirer": "7.3.3", "node-emoji": "1.11.0", "ora": "5.4.1", @@ -1045,7 +1229,7 @@ "tree-kill": "1.2.2", "tsconfig-paths": "3.12.0", "tsconfig-paths-webpack-plugin": "3.5.2", - "typescript": "4.5.4", + "typescript": "4.6.2", "webpack": "5.66.0", "webpack-node-externals": "3.0.0" }, @@ -1060,44 +1244,68 @@ "supports-color": "^7.1.0" } }, - "typescript": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", - "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", - "dev": true + "tsconfig-paths": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", + "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } } } }, "@nestjs/common": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.2.6.tgz", - "integrity": "sha512-flLYSXunxcKyjbYddrhwbc49uE705MxBt85rS3mHyhDbAIPSGGeZEqME44YyAzCg1NTfJSNe7ztmOce5kNkb9A==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-8.4.0.tgz", + "integrity": "sha512-uvm1Ccw0qRka/Gd5Mo5A2MQo9ItwewPes1fE2SBboennPojoiJ4A3iKirtlPuxsL+HQ4oD5eO02OsDyLYL2z6w==", "requires": { - "axios": "0.24.0", + "axios": "0.26.0", "iterare": "1.2.1", "tslib": "2.3.1", "uuid": "8.3.2" }, "dependencies": { "axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz", + "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==", "requires": { - "follow-redirects": "^1.14.4" + "follow-redirects": "^1.14.8" } } } }, + "@nestjs/config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-1.2.0.tgz", + "integrity": "sha512-GGZOj2g6EMZ23orsQqeD2Vs5E2ZrmAiB0qCGvERv+5nQmZjY4nKkisG4awQsym1uotmmzgtsd9lOiKqTIFONhA==", + "requires": { + "dotenv": "16.0.0", + "dotenv-expand": "8.0.1", + "lodash": "4.17.21", + "uuid": "8.3.2" + }, + "dependencies": { + "dotenv": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.0.tgz", + "integrity": "sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==" + } + } + }, "@nestjs/core": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.2.6.tgz", - "integrity": "sha512-NwPcEIMmCsucs3QaDlQvkoU1FlFM2wm/WjaqLQhkSoIEmAR1gNtBo88f5io5cpMwCo1k5xYhqGlaSl6TfngwWQ==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-8.4.0.tgz", + "integrity": "sha512-aur62kcyQz81D0GvM038t2JFelxPm9ABt11o5qO5ovTJ5mismZheckwyPA3WHg9wec6skr9v8kBVdZUbjFQJQQ==", "requires": { "@nuxtjs/opencollective": "0.3.2", "fast-safe-stringify": "2.1.1", "iterare": "1.2.1", - "object-hash": "2.2.0", + "object-hash": "3.0.0", "path-to-regexp": "3.2.0", "tslib": "2.3.1", "uuid": "8.3.2" @@ -1109,9 +1317,9 @@ "integrity": "sha512-NFvofzSinp00j5rzUd4tf+xi9od6383iY0JP7o0Bnu1fuItAUkWBgc4EKuIQ3D+c2QI3i9pG1kDWAeY27EMGtg==" }, "@nestjs/microservices": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-8.2.6.tgz", - "integrity": "sha512-2RxUESoOKveqfs0k57a+EX5Yr3rdwsKXNr7KrO9oseqJvSJPYLyE8MoYUjEAsGHWIeymdLzZwag047kIVBX7eg==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-8.4.0.tgz", + "integrity": "sha512-vQFrMvT0AO7IWt6ZU7Te0dKbcWTjznhkQEvLNMegYUniPDl2bBdA3aYSwbQET63Db14+tq8iZasa4cDlnKPXWQ==", "requires": { "iterare": "1.2.1", "json-socket": "0.3.0", @@ -1119,84 +1327,28 @@ } }, "@nestjs/platform-express": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-8.2.6.tgz", - "integrity": "sha512-wbPqXrLdeokfMCHkWBHgFobCVL4OKRAOJIFGNlT/3u4JIJndoGBIuSDQohhY2o7Ue0JIYqKw+PyXiN4y/iUEng==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-8.4.0.tgz", + "integrity": "sha512-vuMKBsjkqNjXPWI79r+509o2HARZwr8oTcu8pmOFRc21TI5M1DC6roK3Wk5gxSxF0V/bgtrjqe26ARZtlWBaAQ==", "requires": { - "body-parser": "1.19.1", + "body-parser": "1.19.2", "cors": "2.8.5", - "express": "4.17.2", + "express": "4.17.3", "multer": "1.4.4", "tslib": "2.3.1" } }, "@nestjs/schematics": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-8.0.5.tgz", - "integrity": "sha512-nK1hWQeLNbdhsiJDX/XJXLqq7nC6/xxC8CN+seFTQmly+H3gG2xaFnl6JPHURumuQaYJX8JEpC8m0+4tz+wvOg==", + "version": "8.0.8", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-8.0.8.tgz", + "integrity": "sha512-xIIb5YnMQN/OJQ68+MCapy2bXvTxSWgINoqQbyZWkLL/yTIuROvZCdtV850NPGyr7f7l93VBP0ZPitbFIexy3Q==", "dev": true, "requires": { - "@angular-devkit/core": "13.0.2", - "@angular-devkit/schematics": "13.0.2", - "fs-extra": "10.0.0", + "@angular-devkit/core": "13.2.5", + "@angular-devkit/schematics": "13.2.5", + "fs-extra": "10.0.1", "jsonc-parser": "3.0.0", "pluralize": "8.0.0" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.0.2.tgz", - "integrity": "sha512-I4co4GH+iu0tns+UXfMtjJISO+cLpaUuiEH6kf0wF5cqjaIeluA9UjIRnxuNbdTW8iE2xVj/UWhQfHe/Ncp76w==", - "dev": true, - "requires": { - "ajv": "8.6.3", - "ajv-formats": "2.1.1", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - } - }, - "@angular-devkit/schematics": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.0.2.tgz", - "integrity": "sha512-qrTe1teQptgP8gmVy6QX0T4dNfnNipEv+cM2cr7JXOmkPpwF+6oBDrTRIJ55t6rziqrXHJ3rxjKm1aHAxFrIEQ==", - "dev": true, - "requires": { - "@angular-devkit/core": "13.0.2", - "jsonc-parser": "3.0.0", - "magic-string": "0.25.7", - "ora": "5.4.1", - "rxjs": "6.6.7" - } - }, - "ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } } }, "@nestjs/swagger": { @@ -1210,9 +1362,9 @@ } }, "@nestjs/testing": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-8.2.6.tgz", - "integrity": "sha512-Cg8tM7yxlLDBO+CTNjk6X/UkxGRsprFc8gDHGEGesiE9wLErxNnslFugfUnYWJaSzmLZSqcFFig7mThc8VSxrw==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-8.4.0.tgz", + "integrity": "sha512-Gk9OW4RpiIGDOROHS7O271uJEpIddQP94zlkPOVOu3HPUxntfKbmDU4cDaCqC0PQ9Jtj71C0H1j9RS8ituYLAw==", "dev": true, "requires": { "optional": "0.1.4", @@ -1570,10 +1722,9 @@ "dev": true }, "@types/node": { - "version": "16.11.22", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.22.tgz", - "integrity": "sha512-DYNtJWauMQ9RNpesl4aVothr97/tIJM8HbyOXJ0AYT1Z2bEjLHyfjOBPAQQVMLf8h3kSShYfNk8Wnto8B2zHUA==", - "dev": true + "version": "16.11.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.26.tgz", + "integrity": "sha512-GZ7bu5A6+4DtG7q9GsoHXy3ALcgeIHP4NnL0Vv2wu0uUB/yQex26v0tf6/na1mm0+bS9Uw+0DFex7aaKr2qawQ==" }, "@types/parse-json": { "version": "4.0.0", @@ -1582,9 +1733,9 @@ "dev": true }, "@types/prettier": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.3.tgz", - "integrity": "sha512-QzSuZMBuG5u8HqYz01qtMdg/Jfctlnvj1z/lYnIDXs/golxw0fxtRAHd9KrzjR7Yxz1qVeI00o0kiO3PmVdJ9w==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz", + "integrity": "sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA==", "dev": true }, "@types/qs": { @@ -1650,14 +1801,14 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.10.2.tgz", - "integrity": "sha512-4W/9lLuE+v27O/oe7hXJKjNtBLnZE8tQAFpapdxwSVHqtmIoPB1gph3+ahNwVuNL37BX7YQHyGF9Xv6XCnIX2Q==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.14.0.tgz", + "integrity": "sha512-ir0wYI4FfFUDfLcuwKzIH7sMVA+db7WYen47iRSaCGl+HMAZI9fpBwfDo45ZALD3A45ZGyHWDNLhbg8tZrMX4w==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.10.2", - "@typescript-eslint/type-utils": "5.10.2", - "@typescript-eslint/utils": "5.10.2", + "@typescript-eslint/scope-manager": "5.14.0", + "@typescript-eslint/type-utils": "5.14.0", + "@typescript-eslint/utils": "5.14.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -1684,14 +1835,14 @@ } }, "@typescript-eslint/parser": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.10.2.tgz", - "integrity": "sha512-JaNYGkaQVhP6HNF+lkdOr2cAs2wdSZBoalE22uYWq8IEv/OVH0RksSGydk+sW8cLoSeYmC+OHvRyv2i4AQ7Czg==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.14.0.tgz", + "integrity": "sha512-aHJN8/FuIy1Zvqk4U/gcO/fxeMKyoSv/rS46UXMXOJKVsLQ+iYPuXNbpbH7cBLcpSbmyyFbwrniLx5+kutu1pw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.10.2", - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/typescript-estree": "5.10.2", + "@typescript-eslint/scope-manager": "5.14.0", + "@typescript-eslint/types": "5.14.0", + "@typescript-eslint/typescript-estree": "5.14.0", "debug": "^4.3.2" }, "dependencies": { @@ -1713,22 +1864,22 @@ } }, "@typescript-eslint/scope-manager": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.10.2.tgz", - "integrity": "sha512-39Tm6f4RoZoVUWBYr3ekS75TYgpr5Y+X0xLZxXqcZNDWZdJdYbKd3q2IR4V9y5NxxiPu/jxJ8XP7EgHiEQtFnw==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.14.0.tgz", + "integrity": "sha512-LazdcMlGnv+xUc5R4qIlqH0OWARyl2kaP8pVCS39qSL3Pd1F7mI10DbdXeARcE62sVQE4fHNvEqMWsypWO+yEw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/visitor-keys": "5.10.2" + "@typescript-eslint/types": "5.14.0", + "@typescript-eslint/visitor-keys": "5.14.0" } }, "@typescript-eslint/type-utils": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.10.2.tgz", - "integrity": "sha512-uRKSvw/Ccs5FYEoXW04Z5VfzF2iiZcx8Fu7DGIB7RHozuP0VbKNzP1KfZkHBTM75pCpsWxIthEH1B33dmGBKHw==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.14.0.tgz", + "integrity": "sha512-d4PTJxsqaUpv8iERTDSQBKUCV7Q5yyXjqXUl3XF7Sd9ogNLuKLkxz82qxokqQ4jXdTPZudWpmNtr/JjbbvUixw==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.10.2", + "@typescript-eslint/utils": "5.14.0", "debug": "^4.3.2", "tsutils": "^3.21.0" }, @@ -1751,19 +1902,19 @@ } }, "@typescript-eslint/types": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.10.2.tgz", - "integrity": "sha512-Qfp0qk/5j2Rz3p3/WhWgu4S1JtMcPgFLnmAKAW061uXxKSa7VWKZsDXVaMXh2N60CX9h6YLaBoy9PJAfCOjk3w==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.14.0.tgz", + "integrity": "sha512-BR6Y9eE9360LNnW3eEUqAg6HxS9Q35kSIs4rp4vNHRdfg0s+/PgHgskvu5DFTM7G5VKAVjuyaN476LCPrdA7Mw==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.2.tgz", - "integrity": "sha512-WHHw6a9vvZls6JkTgGljwCsMkv8wu8XU8WaYKeYhxhWXH/atZeiMW6uDFPLZOvzNOGmuSMvHtZKd6AuC8PrwKQ==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.14.0.tgz", + "integrity": "sha512-QGnxvROrCVtLQ1724GLTHBTR0lZVu13izOp9njRvMkCBgWX26PKvmMP8k82nmXBRD3DQcFFq2oj3cKDwr0FaUA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/visitor-keys": "5.10.2", + "@typescript-eslint/types": "5.14.0", + "@typescript-eslint/visitor-keys": "5.14.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -1789,29 +1940,47 @@ } }, "@typescript-eslint/utils": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.10.2.tgz", - "integrity": "sha512-vuJaBeig1NnBRkf7q9tgMLREiYD7zsMrsN1DA3wcoMDvr3BTFiIpKjGiYZoKPllfEwN7spUjv7ZqD+JhbVjEPg==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.14.0.tgz", + "integrity": "sha512-EHwlII5mvUA0UsKYnVzySb/5EE/t03duUTweVy8Zqt3UQXBrpEVY144OTceFKaOe4xQXZJrkptCf7PjEBeGK4w==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.10.2", - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/typescript-estree": "5.10.2", + "@typescript-eslint/scope-manager": "5.14.0", + "@typescript-eslint/types": "5.14.0", + "@typescript-eslint/typescript-estree": "5.14.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.2.tgz", - "integrity": "sha512-zHIhYGGGrFJvvyfwHk5M08C5B5K4bewkm+rrvNTKk1/S15YHR+SA/QUF8ZWscXSfEaB8Nn2puZj+iHcoxVOD/Q==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.14.0.tgz", + "integrity": "sha512-yL0XxfzR94UEkjBqyymMLgCBdojzEuy/eim7N9/RIcTNxpJudAcqsU8eRyfzBbcEzGoPWfdM3AGak3cN08WOIw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.10.2", + "@typescript-eslint/types": "5.14.0", "eslint-visitor-keys": "^3.0.0" } }, + "@victorradael/protospack": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@victorradael/protospack/-/protospack-1.1.3.tgz", + "integrity": "sha512-+Pc5vaVWQSCKzPOWxpPr1v+X2e6AJhRW6S2meKIty2dZzsA92rZNx4268R/1d2qzMD9VbmPqgsnA2lvSuIP/nw==", + "requires": { + "rxjs": "^7.5.5" + }, + "dependencies": { + "rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, "@webassemblyjs/ast": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", @@ -2056,9 +2225,9 @@ } }, "ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -2077,10 +2246,13 @@ } }, "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } }, "ansi-colors": { "version": "4.1.1", @@ -2214,12 +2386,6 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, "axios": { "version": "0.25.0", "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", @@ -2229,19 +2395,34 @@ } }, "babel-jest": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.6.tgz", - "integrity": "sha512-qZL0JT0HS1L+lOuH+xC2DVASR3nunZi/ozGhpgauJHgmI7f8rudxf6hUjEHympdQ/J64CdKmPkgfJ+A3U6QCrg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", "dev": true, "requires": { - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.4.0", + "babel-preset-jest": "^27.5.1", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "slash": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + } } }, "babel-plugin-istanbul": { @@ -2258,9 +2439,9 @@ } }, "babel-plugin-jest-hoist": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.4.0.tgz", - "integrity": "sha512-Jcu7qS4OX5kTWBc45Hz7BMmgXuJqRnhatqpUhnzGC3OBYpOmf2tv6jFNwZpwM7wU7MUuv2r9IPS/ZlYOuburVw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", "dev": true, "requires": { "@babel/template": "^7.3.3", @@ -2290,12 +2471,12 @@ } }, "babel-preset-jest": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.4.0.tgz", - "integrity": "sha512-NK4jGYpnBvNxcGo7/ZpZJr51jCGT+3bwwpVIDY2oNfTxJJldRtB4VAcYdgp1loDE50ODuTu+yBjpMAswv5tlpg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^27.4.0", + "babel-plugin-jest-hoist": "^27.5.1", "babel-preset-current-node-syntax": "^1.0.0" } }, @@ -2325,28 +2506,6 @@ "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" - }, - "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==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - } } }, "bn.js": { @@ -2355,19 +2514,19 @@ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", "requires": { - "bytes": "3.1.1", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", "depd": "~1.1.2", "http-errors": "1.8.1", "iconv-lite": "0.4.24", "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", + "qs": "6.9.7", + "raw-body": "2.4.3", "type-is": "~1.6.18" } }, @@ -2401,15 +2560,15 @@ "dev": true }, "browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.0.tgz", + "integrity": "sha512-bnpOoa+DownbciXj0jVGENf8VYQnE2LNWomhYuCsMmmx9Jd9lwq0WXODuwpSsp8AVdKM2/HorrzxAfbKvWTByQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", + "caniuse-lite": "^1.0.30001313", + "electron-to-chromium": "^1.4.76", "escalade": "^3.1.1", - "node-releases": "^2.0.1", + "node-releases": "^2.0.2", "picocolors": "^1.0.0" } }, @@ -2458,6 +2617,24 @@ "requires": { "dicer": "0.2.5", "readable-stream": "1.1.x" + }, + "dependencies": { + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } } }, "bytebuffer": { @@ -2476,9 +2653,9 @@ } }, "bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" }, "call-bind": { "version": "1.0.2", @@ -2502,9 +2679,9 @@ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" }, "caniuse-lite": { - "version": "1.0.30001306", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001306.tgz", - "integrity": "sha512-Wd1OuggRzg1rbnM5hv1wXs2VkxJH/AA+LuudlIqvZiCvivF+wJJe2mgBZC8gPMgI7D76PP5CTx8Luvaqc1V6OQ==", + "version": "1.0.30001314", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001314.tgz", + "integrity": "sha512-0zaSO+TnCHtHJIbpLroX7nsD+vYuOVjl3uzFbJO1wMVbuveJA0RK2WcQA9ZUIOiO0/ArMiMgHJLxfEZhQiC0kw==", "dev": true }, "chalk": { @@ -2529,9 +2706,9 @@ "dev": true }, "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "requires": { "anymatch": "~3.1.2", @@ -2773,9 +2950,9 @@ } }, "cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" }, "cookie-signature": { "version": "1.0.6", @@ -2803,16 +2980,16 @@ } }, "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dev": true, "requires": { "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", + "import-fresh": "^3.2.1", "parse-json": "^5.0.0", "path-type": "^4.0.0", - "yaml": "^1.7.2" + "yaml": "^1.10.0" } }, "create-require": { @@ -2989,6 +3166,24 @@ "requires": { "readable-stream": "1.1.x", "streamsearch": "0.1.2" + }, + "dependencies": { + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } } }, "diff": { @@ -3043,6 +3238,11 @@ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-14.3.2.tgz", "integrity": "sha512-vwEppIphpFdvaMCaHfCEv9IgwcxMljMw2TnAQBB4VWPvzXQLTb82jwmdOKzlEVUL3gNFT4l4TPKO+Bn+sqcrVQ==" }, + "dotenv-expand": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.1.tgz", + "integrity": "sha512-j/Ih7bIERDR5PzI89Zu8ayd3tXZ6E3dbY0ljQ9Db0K87qBO8zdLsi2dIvDHMWtjC3Yxb8XixOTHAtia0fDHRpg==" + }, "ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -3057,9 +3257,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.4.63", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.63.tgz", - "integrity": "sha512-e0PX/LRJPFRU4kzJKLvTobxyFdnANCvcoDCe8XcyTqP58nTWIwdsHvXLIl1RkB39X5yaosLaroMASWB0oIsgCA==", + "version": "1.4.81", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.81.tgz", + "integrity": "sha512-Gs7xVpIZ7tYYSDA+WgpzwpPvfGwUk3KSIjJ0akuj5XQHFdyQnsUoM76EA4CIHXNLPiVwTwOFay9RMb0ChG3OBw==", "dev": true }, "elliptic": { @@ -3102,21 +3302,13 @@ } }, "enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", + "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", "dev": true, "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" - }, - "dependencies": { - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - } } }, "error-ex": { @@ -3218,12 +3410,12 @@ } }, "eslint": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.8.0.tgz", - "integrity": "sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.10.0.tgz", + "integrity": "sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.0.5", + "@eslint/eslintrc": "^1.2.0", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -3231,10 +3423,10 @@ "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", + "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.2.0", - "espree": "^9.3.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -3288,9 +3480,9 @@ "dev": true }, "eslint-scope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", - "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -3327,9 +3519,9 @@ } }, "eslint-config-prettier": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", - "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", "dev": true }, "eslint-plugin-prettier": { @@ -3369,20 +3561,20 @@ } }, "eslint-visitor-keys": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", - "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true }, "espree": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", - "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", "dev": true, "requires": { "acorn": "^8.7.0", "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" + "eslint-visitor-keys": "^3.3.0" } }, "esprima": { @@ -3472,28 +3664,49 @@ "dev": true }, "expect": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.4.6.tgz", - "integrity": "sha512-1M/0kAALIaj5LaG66sFJTbRsWTADnylly82cu4bspI0nl+pgP4E6Bh/aqdHlTUjul06K7xQnnrAoqfxVU0+/ag==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", "dev": true, "requires": { - "@jest/types": "^27.4.2", - "jest-get-type": "^27.4.0", - "jest-matcher-utils": "^27.4.6", - "jest-message-util": "^27.4.6" + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + } } }, "express": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", - "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", "requires": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.1", + "body-parser": "1.19.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.1", + "cookie": "0.4.2", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "~1.1.2", @@ -3508,7 +3721,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.9.6", + "qs": "6.9.7", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.17.2", @@ -3666,43 +3879,27 @@ "dev": true }, "follow-redirects": { - "version": "1.14.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", - "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==" + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" }, "fork-ts-checker-webpack-plugin": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz", - "integrity": "sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.1.tgz", + "integrity": "sha512-uOfQdg/iQ8iokQ64qcbu8iZb114rOmaKLQFu7hU14/eJaKgsP91cQ7ts7v2iiDld6TzDe84Meksha8/MkWiCyw==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^7.0.1", "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - } + "schema-utils": "4.0.0", + "semver": "^7.3.5", + "tapable": "^2.2.1" } }, "form-data": { @@ -3747,9 +3944,9 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -4427,9 +4624,9 @@ } }, "istanbul-reports": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.3.tgz", - "integrity": "sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", + "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -4442,49 +4639,89 @@ "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==" }, "jest": { - "version": "27.4.7", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.4.7.tgz", - "integrity": "sha512-8heYvsx7nV/m8m24Vk26Y87g73Ba6ueUd0MWed/NXMhSZIm62U/llVbS0PJe1SHunbyXjJ/BqG1z9bFjGUIvTg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", "dev": true, "requires": { - "@jest/core": "^27.4.7", + "@jest/core": "^27.5.1", "import-local": "^3.0.2", - "jest-cli": "^27.4.7" + "jest-cli": "^27.5.1" }, "dependencies": { - "jest-cli": { - "version": "27.4.7", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.4.7.tgz", - "integrity": "sha512-zREYhvjjqe1KsGV15mdnxjThKNDgza1fhDT+iUsXWLCq3sxe9w5xnvyctcYVT5PcdLSjv7Y5dCwTS3FCF1tiuw==", + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, "requires": { - "@jest/core": "^27.4.7", - "@jest/test-result": "^27.4.6", - "@jest/types": "^27.4.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dev": true, + "requires": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^27.4.7", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.6", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "prompts": "^2.0.1", "yargs": "^16.2.0" } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } } } }, "jest-changed-files": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.4.2.tgz", - "integrity": "sha512-/9x8MjekuzUQoPjDHbBiXbNEBauhrPU2ct7m8TfCg69ywt1y/N+yYwGh3gCpnqUS3klYWDU/lSNgv+JhoD2k1A==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", "dev": true, "requires": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "execa": "^5.0.0", "throat": "^6.0.1" }, "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, "execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -4517,60 +4754,160 @@ } }, "jest-circus": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.4.6.tgz", - "integrity": "sha512-UA7AI5HZrW4wRM72Ro80uRR2Fg+7nR0GESbSI/2M+ambbzVuA63mn5T1p3Z/wlhntzGpIG1xx78GP2YIkf6PhQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", "dev": true, "requires": { - "@jest/environment": "^27.4.6", - "@jest/test-result": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.4.6", + "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.4.6", - "jest-matcher-utils": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-runtime": "^27.4.6", - "jest-snapshot": "^27.4.6", - "jest-util": "^27.4.2", - "pretty-format": "^27.4.6", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + } } }, "jest-config": { - "version": "27.4.7", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.4.7.tgz", - "integrity": "sha512-xz/o/KJJEedHMrIY9v2ParIoYSrSVY6IVeE4z5Z3i101GoA5XgfbJz+1C8EYPsv7u7f39dS8F9v46BHDhn0vlw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", "dev": true, "requires": { "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.4.6", - "@jest/types": "^27.4.2", - "babel-jest": "^27.4.6", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-circus": "^27.4.6", - "jest-environment-jsdom": "^27.4.6", - "jest-environment-node": "^27.4.6", - "jest-get-type": "^27.4.0", - "jest-jasmine2": "^27.4.6", - "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.6", - "jest-runner": "^27.4.6", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.6", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "micromatch": "^4.0.4", - "pretty-format": "^27.4.6", - "slash": "^3.0.0" + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + } } }, "jest-diff": { @@ -4586,54 +4923,164 @@ } }, "jest-docblock": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.4.0.tgz", - "integrity": "sha512-7TBazUdCKGV7svZ+gh7C8esAnweJoG+SvcF6Cjqj4l17zA2q1cMwx2JObSioubk317H+cjcHgP+7fTs60paulg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", "dev": true, "requires": { "detect-newline": "^3.0.0" } }, "jest-each": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.4.6.tgz", - "integrity": "sha512-n6QDq8y2Hsmn22tRkgAk+z6MCX7MeVlAzxmZDshfS2jLcaBlyhpF3tZSJLR+kXmh23GEvS0ojMR8i6ZeRvpQcA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", "dev": true, "requires": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", - "jest-get-type": "^27.4.0", - "jest-util": "^27.4.2", - "pretty-format": "^27.4.6" + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + } } }, "jest-environment-jsdom": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.4.6.tgz", - "integrity": "sha512-o3dx5p/kHPbUlRvSNjypEcEtgs6LmvESMzgRFQE6c+Prwl2JLA4RZ7qAnxc5VM8kutsGRTB15jXeeSbJsKN9iA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", "dev": true, "requires": { - "@jest/environment": "^27.4.6", - "@jest/fake-timers": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.4.6", - "jest-util": "^27.4.2", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", "jsdom": "^16.6.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + } } }, "jest-environment-node": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.4.6.tgz", - "integrity": "sha512-yfHlZ9m+kzTKZV0hVfhVu6GuDxKAYeFHrfulmy7Jxwsq4V7+ZK7f+c0XP/tbVDMQW7E4neG2u147hFkuVz0MlQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", "dev": true, "requires": { - "@jest/environment": "^27.4.6", - "@jest/fake-timers": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", - "jest-mock": "^27.4.6", - "jest-util": "^27.4.2" + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + } } }, "jest-get-type": { @@ -4643,98 +5090,288 @@ "dev": true }, "jest-haste-map": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.4.6.tgz", - "integrity": "sha512-0tNpgxg7BKurZeFkIOvGCkbmOHbLFf4LUQOxrQSMjvrQaQe3l6E8x6jYC1NuWkGo5WDdbr8FEzUxV2+LWNawKQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, "requires": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "fsevents": "^2.3.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.4.0", - "jest-serializer": "^27.4.0", - "jest-util": "^27.4.2", - "jest-worker": "^27.4.6", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "micromatch": "^4.0.4", "walker": "^1.0.7" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + } } }, "jest-jasmine2": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.4.6.tgz", - "integrity": "sha512-uAGNXF644I/whzhsf7/qf74gqy9OuhvJ0XYp8SDecX2ooGeaPnmJMjXjKt0mqh1Rl5dtRGxJgNrHlBQIBfS5Nw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", "dev": true, "requires": { - "@jest/environment": "^27.4.6", - "@jest/source-map": "^27.4.0", - "@jest/test-result": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.4.6", + "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.4.6", - "jest-matcher-utils": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-runtime": "^27.4.6", - "jest-snapshot": "^27.4.6", - "jest-util": "^27.4.2", - "pretty-format": "^27.4.6", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", "throat": "^6.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + } } }, "jest-leak-detector": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.4.6.tgz", - "integrity": "sha512-kkaGixDf9R7CjHm2pOzfTxZTQQQ2gHTIWKY/JZSiYTc90bZp8kSZnUMS3uLAfwTZwc0tcMRoEX74e14LG1WapA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", "dev": true, "requires": { - "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.6" + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + } } }, "jest-matcher-utils": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.4.6.tgz", - "integrity": "sha512-XD4PKT3Wn1LQnRAq7ZsTI0VRuEc9OrCPFiO1XL7bftTGmfNF0DcEwMHRgqiu7NGf8ZoZDREpGrCniDkjt79WbA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^27.4.6", - "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.6" + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true + }, + "jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + } } }, "jest-message-util": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.4.6.tgz", - "integrity": "sha512-0p5szriFU0U74czRSFjH6RyS7UYIAkn/ntwMuOwTGWrQIOh5NzXXrq72LOqIkJKKvFbPq+byZKuBz78fjBERBA==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^27.4.6", + "pretty-format": "^27.5.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + } } }, "jest-mock": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.4.6.tgz", - "integrity": "sha512-kvojdYRkst8iVSZ1EJ+vc1RRD9llueBjKzXzeCytH3dMM7zvPV/ULcfI2nr0v0VUgm3Bjt3hBCQvOeaBz+ZTHw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", "dev": true, "requires": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "@types/node": "*" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + } } }, "jest-pnp-resolver": { @@ -4744,100 +5381,185 @@ "dev": true }, "jest-regex-util": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.4.0.tgz", - "integrity": "sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true }, "jest-resolve": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.4.6.tgz", - "integrity": "sha512-SFfITVApqtirbITKFAO7jOVN45UgFzcRdQanOFzjnbd+CACDoyeX7206JyU92l4cRr73+Qy/TlW51+4vHGt+zw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", "dev": true, "requires": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.6", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.6", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + } } }, "jest-resolve-dependencies": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.6.tgz", - "integrity": "sha512-W85uJZcFXEVZ7+MZqIPCscdjuctruNGXUZ3OHSXOfXR9ITgbUKeHj+uGcies+0SsvI5GtUfTw4dY7u9qjTvQOw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", "dev": true, "requires": { - "@jest/types": "^27.4.2", - "jest-regex-util": "^27.4.0", - "jest-snapshot": "^27.4.6" + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + } } }, "jest-runner": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.4.6.tgz", - "integrity": "sha512-IDeFt2SG4DzqalYBZRgbbPmpwV3X0DcntjezPBERvnhwKGWTW7C5pbbA5lVkmvgteeNfdd/23gwqv3aiilpYPg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", "dev": true, "requires": { - "@jest/console": "^27.4.6", - "@jest/environment": "^27.4.6", - "@jest/test-result": "^27.4.6", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-docblock": "^27.4.0", - "jest-environment-jsdom": "^27.4.6", - "jest-environment-node": "^27.4.6", - "jest-haste-map": "^27.4.6", - "jest-leak-detector": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-resolve": "^27.4.6", - "jest-runtime": "^27.4.6", - "jest-util": "^27.4.2", - "jest-worker": "^27.4.6", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "source-map-support": "^0.5.6", "throat": "^6.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + } } }, "jest-runtime": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.4.6.tgz", - "integrity": "sha512-eXYeoR/MbIpVDrjqy5d6cGCFOYBFFDeKaNWqTp0h6E74dK0zLHzASQXJpl5a2/40euBmKnprNLJ0Kh0LCndnWQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", "dev": true, "requires": { - "@jest/environment": "^27.4.6", - "@jest/fake-timers": "^27.4.6", - "@jest/globals": "^27.4.6", - "@jest/source-map": "^27.4.0", - "@jest/test-result": "^27.4.6", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "execa": "^5.0.0", "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-mock": "^27.4.6", - "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.6", - "jest-snapshot": "^27.4.6", - "jest-util": "^27.4.2", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, "execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -4867,6 +5589,20 @@ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, "strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -4876,19 +5612,19 @@ } }, "jest-serializer": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.4.0.tgz", - "integrity": "sha512-RDhpcn5f1JYTX2pvJAGDcnsNTnsV9bjYPU8xcV+xPwOXnUPOQwf4ZEuiU6G9H1UztH+OapMgu/ckEVwO87PwnQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", "dev": true, "requires": { "@types/node": "*", - "graceful-fs": "^4.2.4" + "graceful-fs": "^4.2.9" } }, "jest-snapshot": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.4.6.tgz", - "integrity": "sha512-fafUCDLQfzuNP9IRcEqaFAMzEe7u5BF7mude51wyWv7VRex60WznZIC7DfKTgSIlJa8aFzYmXclmN328aqSDmQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", "dev": true, "requires": { "@babel/core": "^7.7.2", @@ -4896,23 +5632,93 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.4.6", - "graceful-fs": "^4.2.4", - "jest-diff": "^27.4.6", - "jest-get-type": "^27.4.0", - "jest-haste-map": "^27.4.6", - "jest-matcher-utils": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-util": "^27.4.2", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", "natural-compare": "^1.4.0", - "pretty-format": "^27.4.6", + "pretty-format": "^27.5.1", "semver": "^7.3.2" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true + }, + "jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + } } }, "jest-util": { @@ -4930,46 +5736,111 @@ } }, "jest-validate": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.4.6.tgz", - "integrity": "sha512-872mEmCPVlBqbA5dToC57vA3yJaMRfIdpCoD3cyHWJOMx+SJwLNw0I71EkWs41oza/Er9Zno9XuTkRYCPDUJXQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", "dev": true, "requires": { - "@jest/types": "^27.4.2", + "@jest/types": "^27.5.1", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.4.0", + "jest-get-type": "^27.5.1", "leven": "^3.1.0", - "pretty-format": "^27.4.6" + "pretty-format": "^27.5.1" }, "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, "camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } } } }, "jest-watcher": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.4.6.tgz", - "integrity": "sha512-yKQ20OMBiCDigbD0quhQKLkBO+ObGN79MO4nT7YaCuQ5SM+dkBNWE8cZX0FjU6czwMvWw6StWbe+Wv4jJPJ+fw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", "dev": true, "requires": { - "@jest/test-result": "^27.4.6", - "@jest/types": "^27.4.2", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.4.2", + "jest-util": "^27.5.1", "string-length": "^4.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + } } }, "jest-worker": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz", - "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "requires": { "@types/node": "*", @@ -5555,9 +6426,9 @@ "dev": true }, "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", "dev": true }, "nopt": { @@ -5611,9 +6482,9 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-hash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" }, "object-inspect": { "version": "1.12.0", @@ -5949,9 +6820,9 @@ "dev": true }, "qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==" + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==" }, "queue-microtask": { "version": "1.2.3", @@ -5974,11 +6845,11 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", "requires": { - "bytes": "3.1.1", + "bytes": "3.1.2", "http-errors": "1.8.1", "iconv-lite": "0.4.24", "unpipe": "1.0.0" @@ -5991,14 +6862,14 @@ "dev": true }, "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, "readdirp": { @@ -6121,9 +6992,9 @@ } }, "rxjs": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.2.tgz", - "integrity": "sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", "requires": { "tslib": "^2.1.0" } @@ -6148,34 +7019,15 @@ } }, "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - } + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" } }, "semver": { @@ -6381,9 +7233,13 @@ } }, "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } }, "strip-ansi": { "version": "6.0.1", @@ -6553,9 +7409,9 @@ "dev": true }, "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true }, "tar": { @@ -6589,11 +7445,12 @@ } }, "terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.0.tgz", + "integrity": "sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A==", "dev": true, "requires": { + "acorn": "^8.5.0", "commander": "^2.20.0", "source-map": "~0.7.2", "source-map-support": "~0.5.20" @@ -6632,6 +7489,12 @@ "uri-js": "^4.2.2" } }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -6779,9 +7642,9 @@ } }, "ts-loader": { - "version": "9.2.6", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.6.tgz", - "integrity": "sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw==", + "version": "9.2.7", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.7.tgz", + "integrity": "sha512-Fxh44mKli9QezgbdCXkEJWxnedQ0ead7DXTH+lfXEPedu+Y9EtMJ2aQ9G3Dj1j7Q612E8931rww8NDZha4Tibg==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -6791,9 +7654,9 @@ } }, "ts-node": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", - "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", + "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", "dev": true, "requires": { "@cspotcode/source-map-support": "0.7.0", @@ -6807,6 +7670,7 @@ "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.0", "yn": "3.1.1" }, "dependencies": { @@ -6819,9 +7683,9 @@ } }, "tsconfig-paths": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", - "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.13.0.tgz", + "integrity": "sha512-nWuffZppoaYK0vQ1SQmkSsQzJoHA4s6uzdb2waRpD806x9yfq153AdVsWz4je2qZcW+pENrMQXbGQ3sMCkXuhw==", "dev": true, "requires": { "@types/json5": "^0.0.29", @@ -6908,9 +7772,9 @@ } }, "typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", + "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", "dev": true }, "universalify": { @@ -6954,6 +7818,12 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, + "v8-compile-cache-lib": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz", + "integrity": "sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==", + "dev": true + }, "v8-to-istanbul": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", @@ -7065,6 +7935,12 @@ "uri-js": "^4.2.2" } }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -7081,12 +7957,6 @@ "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true } } }, @@ -7191,9 +8061,9 @@ } }, "ws": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", - "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", "dev": true }, "xml-name-validator": { diff --git a/package.json b/package.json index 3f02885..309d4f0 100644 --- a/package.json +++ b/package.json @@ -21,14 +21,16 @@ "test:e2e": "jest --config ./test/jest-e2e.json" }, "dependencies": { - "@grpc/grpc-js": "^1.5.0", + "@grpc/grpc-js": "^1.5.7", "@grpc/proto-loader": "^0.6.9", - "@nestjs/common": "^8.0.0", - "@nestjs/core": "^8.0.0", + "@nestjs/common": "^8.4.0", + "@nestjs/config": "^1.2.0", + "@nestjs/core": "^8.4.0", "@nestjs/mapped-types": "*", - "@nestjs/microservices": "^8.2.4", - "@nestjs/platform-express": "^8.0.0", + "@nestjs/microservices": "^8.4.0", + "@nestjs/platform-express": "^8.4.0", "@nestjs/swagger": "^5.1.5", + "@victorradael/protospack": "^1.1.3", "axios": "^0.25.0", "dotenv": "^14.2.0", "grpc": "^1.24.11", @@ -36,33 +38,33 @@ "jwk-to-pem": "^2.0.5", "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", - "rxjs": "^7.2.0", + "rxjs": "^7.5.5", "swagger-ui-express": "^4.3.0" }, "devDependencies": { - "@nestjs/cli": "^8.0.0", - "@nestjs/schematics": "^8.0.0", - "@nestjs/testing": "^8.0.0", + "@nestjs/cli": "^8.2.2", + "@nestjs/schematics": "^8.0.8", + "@nestjs/testing": "^8.4.0", "@types/express": "^4.17.13", "@types/jest": "27.0.2", "@types/jsonwebtoken": "^8.5.8", "@types/jwk-to-pem": "^2.0.1", - "@types/node": "^16.0.0", + "@types/node": "^16.11.26", "@types/supertest": "^2.0.11", - "@typescript-eslint/eslint-plugin": "^5.0.0", - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^8.0.1", - "eslint-config-prettier": "^8.3.0", + "@typescript-eslint/eslint-plugin": "^5.14.0", + "@typescript-eslint/parser": "^5.14.0", + "eslint": "^8.10.0", + "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.0.0", - "jest": "^27.2.5", + "jest": "^27.5.1", "prettier": "^2.3.2", "source-map-support": "^0.5.20", "supertest": "^6.1.3", "ts-jest": "^27.0.3", - "ts-loader": "^9.2.3", - "ts-node": "^10.0.0", - "tsconfig-paths": "^3.10.1", - "typescript": "^4.3.5" + "ts-loader": "^9.2.7", + "ts-node": "^10.7.0", + "tsconfig-paths": "^3.13.0", + "typescript": "^4.6.2" }, "jest": { "moduleFileExtensions": [ diff --git a/src/app.module.ts b/src/app.module.ts index c0de4de..6d57e8a 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -1,44 +1,89 @@ -import { MiddlewareConsumer, Module, NestModule, RequestMethod } from '@nestjs/common'; -import { InputGrpcClientModule } from './inputs/input-grpc-client.module'; -import { UsersGrpcClientModule } from './users-grpc-client/users-grpc-client.module'; -import { OutputsModule } from './outputs/outputs.module'; -import { EnrichmentModule } from './enrichment/enrichment.module'; -import { TransformationsModule } from './transformations/transformations.module'; -import { PipelinesModule } from './pipelines/pipelines.module'; -import { RestInputsModule } from './rest/rest-inputs/rest-inputs.module'; -import { RestOutputsModule } from './rest/rest-outputs/rest-outputs.module'; -import { RestEnrichmentsModule } from './rest/rest-enrichments/rest-enrichments.module'; -import { RestTransformationsModule } from './rest/rest-transformations/rest-transformations.module'; -import { RestPipelinesModule } from './rest/rest-pipelines/rest-pipelines.module'; -import { RestUserModule } from './rest/rest-user/rest-user.module'; -import { RestFactoryModule } from './rest/rest-factory/rest-factory.module'; -import { LoggerMiddleware } from './middlewares/authentication'; -import { RestInputsController } from './rest/rest-inputs/rest-inputs.controller'; -import { RestOutputsController } from './rest/rest-outputs/rest-outputs.controller'; -import { RestTransformationsController } from './rest/rest-transformations/rest-transformations.controller'; -import { RestPipelinesController } from './rest/rest-pipelines/rest-pipelines.controller'; -import { RestEnrichmentsController } from './rest/rest-enrichments/rest-enrichments.controller'; -import { RestFactoryController } from './rest/rest-factory/rest-factory.controller'; -import { HealthModule } from './health/health.module'; -@Module({ - imports: [ - RestInputsModule, RestOutputsModule, RestEnrichmentsModule, RestTransformationsModule, RestPipelinesModule, RestUserModule, RestFactoryModule, HealthModule, - // InputGrpcClientModule, - //OutputsModule, - //EnrichmentModule, - //TransformationsModule, - //PipelinesModule - ], - controllers: [], - providers: [], -}) -export class AppModule implements NestModule{ +import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common'; +import { ClientsModule } from '@nestjs/microservices'; +import { ConfigModule } from '@nestjs/config'; +import { LoggerMiddleware } from './middlewares/authentication'; + +// import { InputsController } from './modules/inputs/inputs.controller'; +// import { TransformationsController } from './modules/transformations/transformations.controller'; +// import { OutputsController } from './modules/outputs/outputs.controllers'; +// import { PipelinesController } from './modules/pipelines/pipelines.controller'; +import { AuthController } from './modules/auth/auth.controller'; + +import { InputsService } from './modules/inputs/inputs.service'; +import { TransformationsService } from './modules/transformations/transformations.service'; +import { OutputsService } from './modules/outputs/outputs.service'; +// import { PipelinesService } from './modules/pipelines/pipelines.service'; +// import { AuthService } from './modules/auth/auth.service'; + +// import { InputsClientService } from './clients/inputs/client.service'; +// import { TransformationsClientService } from './clients/transformations/client.service'; +// import { OutputsClientService } from './clients/outputs/client.service'; +// import { PipelinesClientService } from './clients/pipelines/client.service'; +import { AuthClientService } from './clients/auth/client.service'; + +// import { InputsClientConfiguration } from './clients/inputs/client.config'; +// import { OutputsClientConfiguration } from './clients/outputs/client.config'; +// import { TransformationsClientConfiguration } from './clients/transformations/client.config'; +import { AuthClient } from './clients/auth/client.config'; + +const authClient = new AuthClient(); + +@Module({ + controllers: [ + // InputsController, + // TransformationsController, + // OutputsController, + // PipelinesController, + AuthController, + ], + providers: [ + InputsService, + TransformationsService, + OutputsService, + // PipelinesService, + // AuthService, + // InputsClientService, + // TransformationsClientService, + // OutputsClientService, + // PipelinesClientService, + AuthClientService, + ], + imports: [ + ConfigModule.forRoot({ + isGlobal: true, + }), + + ClientsModule.register([ + // { + // name: 'INPUTS_PACKAGE', + // ...InputsClientConfiguration, + // }, + + // { + // name: 'TRANSFORMATIONS_PACKAGE', + // ...TransformationsClientConfiguration, + // }, + // { + // name: 'OUTPUTS_PACKAGE', + // ...OutputsClientConfiguration, + // }, + { + name: 'AUTH_PACKAGE', + ...authClient.config(), + }, + ]), + ], +}) +export class AppModule implements NestModule { configure(consumer: MiddlewareConsumer) { consumer .apply(LoggerMiddleware) - .forRoutes(RestInputsController,RestOutputsController,RestTransformationsController,RestPipelinesController,RestEnrichmentsController,RestFactoryController) + .forRoutes + // InputsController, + // TransformationsController, + // OutputsController, + // PipelinesController, + (); } - - } diff --git a/src/clients/auth/client.config.ts b/src/clients/auth/client.config.ts new file mode 100644 index 0000000..995a967 --- /dev/null +++ b/src/clients/auth/client.config.ts @@ -0,0 +1,23 @@ +import { credentials } from '@grpc/grpc-js'; +import { ClientOptions, Transport } from '@nestjs/microservices'; + +import { DucProtofile } from '@victorradael/protospack'; + +export class AuthClient { + config(): ClientOptions { + return { + transport: Transport.GRPC, + options: { + url: process.env.DUC_URL, + package: 'duc', + credentials: credentials.createSsl(), + protoPath: DucProtofile, + loader: { + enums: String, + objects: true, + arrays: true, + }, + }, + }; + } +} diff --git a/src/clients/auth/client.service.ts b/src/clients/auth/client.service.ts new file mode 100644 index 0000000..79669e1 --- /dev/null +++ b/src/clients/auth/client.service.ts @@ -0,0 +1,43 @@ +import { OnModuleInit, Inject } from '@nestjs/common'; +import { ClientGrpc } from '@nestjs/microservices'; + +import { CognitoServiceInterface } from '@victorradael/protospack'; + +import { ILogin } from './interfaces'; + +export class AuthClientService implements OnModuleInit { + private cognitoService: CognitoServiceInterface; + constructor( + @Inject('AUTH_PACKAGE') private readonly grpcClient: ClientGrpc, + ) {} + + onModuleInit() { + this.cognitoService = this.grpcClient.getService( + 'CognitoProtoService', + ); + } + + async signIn({ username, password }: ILogin): Promise { + console.log('CognitoClientService', 'SignIn'); + + const tokens = await new Promise((resolve, reject) => { + this.cognitoService.signIn({ username, password }).subscribe({ + next(x) { + resolve(x); + }, + error(err) { + console.log('Observable Error'); + reject(err); + }, + complete() { + console.log('done'); + }, + }); + }) + .then((res) => res) + .catch((err) => { + throw new Error(err); + }); + return tokens; + } +} diff --git a/src/clients/auth/interfaces.d.ts b/src/clients/auth/interfaces.d.ts new file mode 100644 index 0000000..ffede69 --- /dev/null +++ b/src/clients/auth/interfaces.d.ts @@ -0,0 +1,4 @@ +export interface ILogin { + username: string; + password: string; +} diff --git a/src/clients/inputs/client.config.ts b/src/clients/inputs/client.config.ts new file mode 100644 index 0000000..dcd18ff --- /dev/null +++ b/src/clients/inputs/client.config.ts @@ -0,0 +1,17 @@ +// import { join } from 'path'; +// import { ClientOptions, Transport } from '@nestjs/microservices'; + +// export const InputsClientConfiguration: ClientOptions = { +// transport: Transport.GRPC, +// options: { +// //url: `${process.env.USERS_SVC_URL}:${process.env.USERS_SVC_PORT}`, +// url: `127.0.0.1:50052`, +// package: 'input', +// protoPath: join(__dirname, '..', 'proto', 'input.proto'), +// loader: { +// enums: String, +// objects: true, +// arrays: true, +// }, +// }, +// }; diff --git a/src/clients/inputs/client.service.ts b/src/clients/inputs/client.service.ts new file mode 100644 index 0000000..5746135 --- /dev/null +++ b/src/clients/inputs/client.service.ts @@ -0,0 +1,64 @@ +// import { +// Get, +// Post, +// Controller, +// Delete, +// OnModuleInit, +// Put, +// Param, +// } from '@nestjs/common'; +// import { Client, ClientGrpc, Payload } from '@nestjs/microservices'; +// import { CreateInputGrpcClientDto } from './dto/create-input-grpc-client.dto'; +// import { UpdateInputGrpcClientDto } from './dto/update-input-grpc-client.dto'; +// import { InputGrpcClientService } from './input-grpc-client.service'; +// import { GrpcClientConfiguration } from './client.config'; +// import { TestConnectionDTO } from './dto/test-connection-grpc-client.dto'; +// import { ApiTags } from '@nestjs/swagger'; + +// @Controller('grpc/input') +// export class InputsClientService implements OnModuleInit { +// @Client(GrpcClientConfiguration) +// private inputServiceClient: ClientGrpc; + +// private inputService: InputGrpcClientService; + +// onModuleInit() { +// this.inputService = +// this.inputServiceClient.getService( +// 'InputService', +// ); +// } + +// @Post() +// async create(@Payload() createInputDto: CreateInputGrpcClientDto) { +// return this.inputService.create(createInputDto); +// } + +// @Get() +// list() { +// return this.inputService.list(); +// } + +// @Get(':id') +// show(@Param() id: string) { +// return this.inputService.show(id); +// } + +// @Put(':id') +// update( +// @Payload() updateInputDto: UpdateInputGrpcClientDto, +// @Param() id: string, +// ) { +// return this.inputService.update(id, updateInputDto); +// } + +// @Delete(':id') +// remove(@Param() id: string) { +// return this.inputService.remove(id); +// } + +// @Get('/test-connection') +// testConnection(@Payload() testConnectionDTO: TestConnectionDTO) { +// return this.inputService.testConnection(testConnectionDTO); +// } +// } diff --git a/src/clients/outputs/client.config.ts b/src/clients/outputs/client.config.ts new file mode 100644 index 0000000..9d1c706 --- /dev/null +++ b/src/clients/outputs/client.config.ts @@ -0,0 +1,17 @@ +// import { join } from 'path'; +// import { ClientOptions, Transport } from '@nestjs/microservices'; + +// export const OutputsClientConfiguration: ClientOptions = { +// transport: Transport.GRPC, +// options: { +// //url: `${process.env.USERS_SVC_URL}:${process.env.USERS_SVC_PORT}`, +// url: `127.0.0.1:50053`, +// package: 'output', +// protoPath: join(__dirname, '..', 'proto', 'output.proto'), +// loader: { +// enums: String, +// objects: true, +// arrays: true, +// }, +// }, +// }; diff --git a/src/clients/outputs/client.service.ts b/src/clients/outputs/client.service.ts new file mode 100644 index 0000000..b60468d --- /dev/null +++ b/src/clients/outputs/client.service.ts @@ -0,0 +1,57 @@ +// import { +// Controller, +// Delete, +// Get, +// OnModuleInit, +// Param, +// Post, +// Put, +// } from '@nestjs/common'; +// import { +// Client, +// ClientGrpc, +// MessagePattern, +// Payload, +// } from '@nestjs/microservices'; +// import { OutputsService } from './outputs.service'; +// import { CreateOutputDto } from './dto/create-output.dto'; +// import { UpdateOutputDto } from './dto/update-output.dto'; +// import { ApiTags } from '@nestjs/swagger'; +// import { GrpcClientConfiguration } from './client.config'; + +// @Controller('output') +// export class OutputsClientService implements OnModuleInit { +// @Client(GrpcClientConfiguration) +// private outputServiceClient: ClientGrpc; + +// private outputService: OutputsService; + +// onModuleInit() { +// this.outputService = +// this.outputServiceClient.getService('OutputService'); +// } +// @Post() +// create(@Payload() createOutputDto: CreateOutputDto) { +// return this.outputService.create(createOutputDto); +// } + +// @Get() +// list() { +// return this.outputService.list(); +// } + +// @Get(':id') +// show(@Param() id: string) { +// return this.outputService.show(id); +// } + +// @Put(':id') +// update(@Param() id: string, @Payload() updateOutputDto: UpdateOutputDto) { +// return this.outputService.update(id, updateOutputDto); +// } + +// @Delete(':id') +// remove(@Param() id: string) { +// return this.outputService.remove(id); +// } +// } diff --git a/src/clients/pipelines/client.config.ts b/src/clients/pipelines/client.config.ts new file mode 100644 index 0000000..acd0d8a --- /dev/null +++ b/src/clients/pipelines/client.config.ts @@ -0,0 +1,17 @@ +// import { join } from 'path'; +// import { ClientOptions, Transport } from '@nestjs/microservices'; + +// export const PipelinesClientConfiguration: ClientOptions = { +// transport: Transport.GRPC, +// options: { +// //url: `${process.env.USERS_SVC_URL}:${process.env.USERS_SVC_PORT}`, +// url: `127.0.0.1:50054`, +// package: 'pipeline', +// protoPath: join(__dirname, '..', 'proto', 'pipeline.proto'), +// loader: { +// enums: String, +// objects: true, +// arrays: true, +// }, +// }, +// }; diff --git a/src/clients/pipelines/client.service.ts b/src/clients/pipelines/client.service.ts new file mode 100644 index 0000000..85c55a4 --- /dev/null +++ b/src/clients/pipelines/client.service.ts @@ -0,0 +1,68 @@ +// import { +// Controller, +// Delete, +// Get, +// OnModuleInit, +// Param, +// Post, +// Put, +// } from '@nestjs/common'; +// import { +// Client, +// ClientGrpc, +// MessagePattern, +// Payload, +// } from '@nestjs/microservices'; +// import { PipelinesService } from './pipelines.service'; +// import { CreatePipelineDto } from './dto/create-pipeline.dto'; +// import { UpdatePipelineDto } from './dto/update-pipeline.dto'; +// import { GrpcClientConfiguration } from './client.config'; + +// @Controller('pipeline') +// export class PipelinesClientService implements OnModuleInit { +// @Client(GrpcClientConfiguration) +// private pipelineServiceClient: ClientGrpc; + +// private pipelineService: PipelinesService; + +// onModuleInit() { +// this.pipelineService = +// this.pipelineServiceClient.getService( +// 'PipelineService', +// ); +// } + +// @Post() +// create(@Payload() createPipelineDto: CreatePipelineDto) { +// return this.pipelineService.create(createPipelineDto); +// } + +// @Get() +// list() { +// return this.pipelineService.list(); +// } + +// @Get(':id') +// show(@Param() id: string) { +// return this.pipelineService.show(id); +// } + +// @Put(':id') +// update(@Param() id: string, @Payload() updatePipelineDto: UpdatePipelineDto) { +// return this.pipelineService.update(id, updatePipelineDto); +// } + +// @Delete() +// remove(@Param() id: string) { +// return this.pipelineService.remove(id); +// } + +// @Post() +// getPipelineLogsMessages(@Param() id: string, @Payload() details: string) { +// return this.pipelineService.getPipelineLogsMessages(id, details); +// } + +// getPipelineStatus(id: string) { +// return this.pipelineService.getPipelineStatus(id); +// } +// } diff --git a/src/clients/transformations/client.config.ts b/src/clients/transformations/client.config.ts new file mode 100644 index 0000000..c7847ec --- /dev/null +++ b/src/clients/transformations/client.config.ts @@ -0,0 +1,17 @@ +// import { join } from 'path'; +// import { ClientOptions, Transport } from '@nestjs/microservices'; + +// export const TransformationsClientConfiguration: ClientOptions = { +// transport: Transport.GRPC, +// options: { +// //url: `${process.env.USERS_SVC_URL}:${process.env.USERS_SVC_PORT}`, +// url: `127.0.0.1:50054`, +// package: 'transformation', +// protoPath: join(__dirname, '..', 'proto', 'transformation.proto'), +// loader: { +// enums: String, +// objects: true, +// arrays: true, +// }, +// }, +// }; diff --git a/src/clients/transformations/client.service.ts b/src/clients/transformations/client.service.ts new file mode 100644 index 0000000..c634278 --- /dev/null +++ b/src/clients/transformations/client.service.ts @@ -0,0 +1,65 @@ +// import { +// Controller, +// Delete, +// Get, +// OnModuleInit, +// Param, +// Post, +// Put, +// } from '@nestjs/common'; +// import { +// Client, +// ClientGrpc, +// MessagePattern, +// Payload, +// } from '@nestjs/microservices'; +// import { TransformationsService } from './transformations.service'; +// import { CreateTransformationDto } from './dto/create-transformation.dto'; +// import { UpdateTransformationDto } from './dto/update-transformation.dto'; +// import { ApiTags } from '@nestjs/swagger'; +// import { GrpcClientConfiguration } from './client.config'; + +// @Controller('transformation') +// export class TransformationsClientService implements OnModuleInit { +// @Client(GrpcClientConfiguration) +// private transformationServiceClient: ClientGrpc; + +// private transformationService: TransformationsService; + +// onModuleInit() { +// this.transformationService = +// this.transformationServiceClient.getService( +// 'TransformationService', +// ); +// } + +// @Post() +// create(@Payload() createTransformationDto: CreateTransformationDto[]) { +// return createTransformationDto.map((transf) => +// this.transformationService.create(transf), +// ); +// } + +// @Get() +// list() { +// return this.transformationService.list(); +// } + +// @Get(':id') +// show(@Payload() id: string) { +// return this.transformationService.show(id); +// } + +// @Put(':id') +// update( +// @Param() id: string, +// @Payload() updateTransformationDto: UpdateTransformationDto, +// ) { +// return this.transformationService.update(id, updateTransformationDto); +// } + +// @Delete(':id') +// remove(@Param() id: string) { +// return this.transformationService.remove(id); +// } +// } diff --git a/src/enrichment/config/grpc-client.ts b/src/enrichment/config/grpc-client.ts deleted file mode 100644 index 7dcf5e1..0000000 --- a/src/enrichment/config/grpc-client.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { join } from 'path'; -import { ClientOptions, Transport } from '@nestjs/microservices'; - -export const GrpcClientConfiguration: ClientOptions = { - transport: Transport.GRPC, - options: { - //url: `${process.env.USERS_SVC_URL}:${process.env.USERS_SVC_PORT}`, - url: `127.0.0.1:50053`, - package: 'enrichment', - protoPath: join(__dirname, '..', 'proto', 'enrichment.proto'), - loader: { - enums: String, - objects: true, - arrays: true, - }, - }, -}; diff --git a/src/enrichment/dto/create-enrichment.dto.ts b/src/enrichment/dto/create-enrichment.dto.ts deleted file mode 100644 index 6ec0db3..0000000 --- a/src/enrichment/dto/create-enrichment.dto.ts +++ /dev/null @@ -1,6 +0,0 @@ -export class CreateEnrichmentDto { - - type:string; - - columns:string[] -} diff --git a/src/enrichment/dto/update-enrichment.dto.ts b/src/enrichment/dto/update-enrichment.dto.ts deleted file mode 100644 index 570394a..0000000 --- a/src/enrichment/dto/update-enrichment.dto.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { PartialType } from '@nestjs/mapped-types'; -import { CreateEnrichmentDto } from './create-enrichment.dto'; - -export class UpdateEnrichmentDto extends PartialType(CreateEnrichmentDto) { - -} diff --git a/src/enrichment/enrichment.controller.spec.ts b/src/enrichment/enrichment.controller.spec.ts deleted file mode 100644 index 4b81e7f..0000000 --- a/src/enrichment/enrichment.controller.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { EnrichmentController } from './enrichment.controller'; -import { EnrichmentsService } from './enrichment.service'; - -describe('EnrichmentController', () => { - let controller: EnrichmentController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [EnrichmentController], - providers: [EnrichmentsService], - }).compile(); - - controller = module.get(EnrichmentController); - }); - - it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/src/enrichment/enrichment.controller.ts b/src/enrichment/enrichment.controller.ts deleted file mode 100644 index b39f929..0000000 --- a/src/enrichment/enrichment.controller.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { - Controller, - Delete, - Get, - OnModuleInit, - Param, - Post, - Put, -} from '@nestjs/common'; -import { Client, ClientGrpc, Payload } from '@nestjs/microservices'; -import { EnrichmentsService } from './enrichment.service'; -import { CreateEnrichmentDto } from './dto/create-enrichment.dto'; -import { UpdateEnrichmentDto } from './dto/update-enrichment.dto'; -import { ApiTags } from '@nestjs/swagger'; -import { GrpcClientConfiguration } from './config/grpc-client'; - -@ApiTags('enrichments') -@Controller('enrichment') -export class EnrichmentController implements OnModuleInit { - - @Client(GrpcClientConfiguration) - private enrichmentServiceClient: ClientGrpc; - - private enrichmentService: EnrichmentsService; - - onModuleInit() { - this.enrichmentService = - this.enrichmentServiceClient.getService( - 'EnrichmentService', - ); - } - - @Post() - create(@Payload() createEnrichmentDto: CreateEnrichmentDto) { - return this.enrichmentService.create(createEnrichmentDto); - } - - @Get() - list() { - return this.enrichmentService.list(); - } - - @Get(':id') - show(@Param() id: string) { - return this.enrichmentService.show(id); - } - - @Put(':id') - update( - @Param() id: string, - @Payload() updateEnrichmentDto: UpdateEnrichmentDto, - ) { - return this.enrichmentService.update(id, updateEnrichmentDto); - } - - @Delete(':id') - remove(@Param() id: string) { - return this.enrichmentService.remove(id); - } -} diff --git a/src/enrichment/enrichment.module.ts b/src/enrichment/enrichment.module.ts deleted file mode 100644 index ceafbbf..0000000 --- a/src/enrichment/enrichment.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Module } from '@nestjs/common'; -import { EnrichmentsService } from './enrichment.service'; -import { EnrichmentController } from './enrichment.controller'; - -@Module({ - controllers: [EnrichmentController], - providers: [EnrichmentsService], -}) -export class EnrichmentModule {} diff --git a/src/enrichment/enrichment.service.spec.ts b/src/enrichment/enrichment.service.spec.ts deleted file mode 100644 index 3cdb40b..0000000 --- a/src/enrichment/enrichment.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { EnrichmentsService } from './enrichment.service'; - -describe('EnrichmentService', () => { - let service: EnrichmentsService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [EnrichmentsService], - }).compile(); - - service = module.get(EnrichmentsService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); diff --git a/src/enrichment/enrichment.service.ts b/src/enrichment/enrichment.service.ts deleted file mode 100644 index aafcceb..0000000 --- a/src/enrichment/enrichment.service.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { CreateEnrichmentDto } from './dto/create-enrichment.dto'; -import { UpdateEnrichmentDto } from './dto/update-enrichment.dto'; - -@Injectable() -export class EnrichmentsService { - create(createEnrichmentDto: CreateEnrichmentDto) { - return 'This action adds a new enrichment'; - } - - list() { - return `This action returns all enrichment`; - } - - show(id: string) { - return `This action returns a #${id} enrichment`; - } - - update(id: string, updateEnrichmentDto: UpdateEnrichmentDto) { - return `This action updates a #${id} enrichment`; - } - - remove(id: string) { - return `This action removes a #${id} enrichment`; - } -} diff --git a/src/enrichment/entities/enrichment.entity.ts b/src/enrichment/entities/enrichment.entity.ts deleted file mode 100644 index fecf084..0000000 --- a/src/enrichment/entities/enrichment.entity.ts +++ /dev/null @@ -1,8 +0,0 @@ -export class Enrichment { - - id:string; - - type:string; - - columns:string[] -} diff --git a/src/enrichment/proto/enrichment.proto b/src/enrichment/proto/enrichment.proto deleted file mode 100644 index 85baa06..0000000 --- a/src/enrichment/proto/enrichment.proto +++ /dev/null @@ -1,43 +0,0 @@ -syntax = "proto3"; - -package enrichment; - - -import "google/protobuf/timestamp.proto"; - - - -service EnrichmentService { - rpc Create(CreateEnrichmentRequest) returns (Enrichment) {} - rpc Show(IdRequest) returns (Enrichment) {} - rpc List(Empty) returns (ListResponse){} - rpc Update(UpdateEnrichmentRequest) returns (Enrichment){} - rpc Remove(IdRequest) returns (Empty){} -} - -message Empty {} - -message IdRequest{ - string id = 1; -} - -message UpdateEnrichmentRequest{ - string id = 1; - string type = 2; - repeated string columns = 3; -} - -message Enrichment { - string id = 1; - string type = 2; - repeated string columns = 3; -} - -message CreateEnrichmentRequest { - string type = 1; - repeated string columns = 2; -} - -message ListResponse { - repeated Enrichment enrichments = 2; -} diff --git a/src/health/entities/health.entity.ts b/src/health/entities/health.entity.ts deleted file mode 100644 index d16a76c..0000000 --- a/src/health/entities/health.entity.ts +++ /dev/null @@ -1 +0,0 @@ -export class Health {} diff --git a/src/health/health.module.ts b/src/health/health.module.ts deleted file mode 100644 index ab943a5..0000000 --- a/src/health/health.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Module } from '@nestjs/common'; -import { HealthService } from './health.service'; -import { HealthController } from './health.controller'; - -@Module({ - controllers: [HealthController], - providers: [HealthService], -}) -export class HealthModule {} diff --git a/src/inputs/config/grpc-client.ts b/src/inputs/config/grpc-client.ts deleted file mode 100644 index d81788a..0000000 --- a/src/inputs/config/grpc-client.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { join } from 'path'; -import { ClientOptions, Transport } from '@nestjs/microservices'; - -export const GrpcClientConfiguration: ClientOptions = { - transport: Transport.GRPC, - options: { - //url: `${process.env.USERS_SVC_URL}:${process.env.USERS_SVC_PORT}`, - url: `127.0.0.1:50052`, - package: 'input', - protoPath: join(__dirname, '..', 'proto', 'input.proto'), - loader: { - enums: String, - objects: true, - arrays: true, - }, - }, -}; diff --git a/src/inputs/dto/create-input-grpc-client.dto.ts b/src/inputs/dto/create-input-grpc-client.dto.ts deleted file mode 100644 index c2c1acd..0000000 --- a/src/inputs/dto/create-input-grpc-client.dto.ts +++ /dev/null @@ -1,13 +0,0 @@ - -export class CreateInputGrpcClientDto { - - cron:string; - - name:string; - - plugin:string; - - values:string; - - operation:string; -} diff --git a/src/inputs/dto/test-connection-grpc-client.dto.ts b/src/inputs/dto/test-connection-grpc-client.dto.ts deleted file mode 100644 index 48275c4..0000000 --- a/src/inputs/dto/test-connection-grpc-client.dto.ts +++ /dev/null @@ -1,5 +0,0 @@ -export class TestConnectionDTO{ - - values:string; - plugin:string; -} diff --git a/src/inputs/dto/update-input-grpc-client.dto.ts b/src/inputs/dto/update-input-grpc-client.dto.ts deleted file mode 100644 index 67ac954..0000000 --- a/src/inputs/dto/update-input-grpc-client.dto.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { PartialType } from '@nestjs/mapped-types'; -import { CreateInputGrpcClientDto } from './create-input-grpc-client.dto'; - -export class UpdateInputGrpcClientDto extends PartialType( - CreateInputGrpcClientDto, -) {} diff --git a/src/inputs/entities/input-grcp-client.entity.ts b/src/inputs/entities/input-grcp-client.entity.ts deleted file mode 100644 index 4e4fed6..0000000 --- a/src/inputs/entities/input-grcp-client.entity.ts +++ /dev/null @@ -1,14 +0,0 @@ -export class InputGrpcClient { - - id:string; - - cron:string; - - name:string; - - plugin:string; - - values:string; - - operation:string; -} diff --git a/src/inputs/input-grpc-client.controller.ts b/src/inputs/input-grpc-client.controller.ts deleted file mode 100644 index 22e02bc..0000000 --- a/src/inputs/input-grpc-client.controller.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { - Get, - Post, - Controller, - Delete, - OnModuleInit, - Put, - Param -} from '@nestjs/common'; -import { Client, ClientGrpc, Payload } from '@nestjs/microservices'; -import { CreateInputGrpcClientDto } from './dto/create-input-grpc-client.dto'; -import { UpdateInputGrpcClientDto } from './dto/update-input-grpc-client.dto'; -import { InputGrpcClientService } from './input-grpc-client.service'; -import { GrpcClientConfiguration } from './config/grpc-client'; -import { TestConnectionDTO } from './dto/test-connection-grpc-client.dto'; -import { ApiTags } from '@nestjs/swagger'; - -@Controller('grpc/input') -export class InputGrpcClientController implements OnModuleInit { - @Client(GrpcClientConfiguration) - private inputServiceClient: ClientGrpc; - - private inputService: InputGrpcClientService; - - onModuleInit() { - this.inputService = - this.inputServiceClient.getService('InputService'); - } - - @Post() - async create(@Payload() createInputDto: CreateInputGrpcClientDto) { - return this.inputService.create(createInputDto); - } - - @Get() - list() { - return this.inputService.list(); - } - - @Get(':id') - show(@Param() id: string) { - return this.inputService.show(id); - } - - @Put(':id') - update( - @Payload() updateInputDto: UpdateInputGrpcClientDto, - @Param() id: string, - ) { - return this.inputService.update(id, updateInputDto); - } - - @Delete(':id') - remove(@Param() id: string) { - return this.inputService.remove(id); - } - - @Get('/test-connection') - testConnection(@Payload() testConnectionDTO:TestConnectionDTO){ - - return this.inputService.testConnection(testConnectionDTO) - } -} diff --git a/src/inputs/input-grpc-client.module.ts b/src/inputs/input-grpc-client.module.ts deleted file mode 100644 index 53dd6ed..0000000 --- a/src/inputs/input-grpc-client.module.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Module } from '@nestjs/common'; -import { InputGrpcClientService } from './input-grpc-client.service'; -import { InputGrpcClientController } from './input-grpc-client.controller'; -// import { InputRestClientController } from './input-rest-client.controller'; - -@Module({ - controllers: [ - InputGrpcClientController, - // InputRestClientController - ], - providers: [InputGrpcClientService], -}) -export class InputGrpcClientModule {} diff --git a/src/inputs/input-grpc-client.service.spec.ts b/src/inputs/input-grpc-client.service.spec.ts deleted file mode 100644 index 65f90aa..0000000 --- a/src/inputs/input-grpc-client.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { InputGrpcClientService } from './input-grpc-client.service'; - -describe('InputGrcpClientService', () => { - let service: InputGrpcClientService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [InputGrpcClientService], - }).compile(); - - service = module.get(InputGrpcClientService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); diff --git a/src/inputs/input-grpc-client.service.ts b/src/inputs/input-grpc-client.service.ts deleted file mode 100644 index db99157..0000000 --- a/src/inputs/input-grpc-client.service.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { CreateInputGrpcClientDto } from './dto/create-input-grpc-client.dto'; -import { TestConnectionDTO } from './dto/test-connection-grpc-client.dto'; -import { UpdateInputGrpcClientDto } from './dto/update-input-grpc-client.dto'; - -@Injectable() -export class InputGrpcClientService { - create(createInputGrcpClientDto: CreateInputGrpcClientDto) { - return 'This action adds a new InputGrcpClient'; - } - - list() { - return `This action returns all InputGrcpClient`; - } - - show(id: string) { - return `This action returns a #${id} InputGrcpClient`; - } - - update(id: string, updateInputGrcpClientDto: UpdateInputGrpcClientDto) { - return `This action updates a #${id} InputGrcpClient`; - } - - remove(id: string) { - return `This action removes a #${id} InputGrcpClient`; - } - - testConnection(testConnectionDTO:TestConnectionDTO){ - return `This action tests a given connection`; - } -} diff --git a/src/inputs/input-rest-client.controller.ts b/src/inputs/input-rest-client.controller.ts deleted file mode 100644 index 99e379a..0000000 --- a/src/inputs/input-rest-client.controller.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { Body, Controller, Delete, Get, Param, Post, Put, Redirect } from '@nestjs/common'; -import { Payload } from '@nestjs/microservices'; -import axios from 'axios'; -import { Console } from 'console'; -import { CreateInputGrpcClientDto } from './dto/create-input-grpc-client.dto'; -import { UpdateInputGrpcClientDto } from './dto/update-input-grpc-client.dto'; - -@Controller('input') -export class InputRestClientController { - - - @Get('/test-connection/') - async testConnection(){ - console.log(process.env.DEV_URL+`/test-connection`, "ON TEST CONNECTION ROUTE") - await axios.get(process.env.DEV_URL+`/test-connection`).then( (response) => { - return response - }) - } - - @Post() - async create(@Body() createInputDto: CreateInputGrpcClientDto){ - console.log(createInputDto) - console.log(process.env.DEV_URL+`/input`, "ON CREATE ROUTE") - - await axios.post(process.env.DEV_URL+'/input',createInputDto).then( (response) => { - return response - }) - } - - @Get() - async list(){ - console.log(process.env.DEV_URL+`/input`, "ON GET ROUTE") - await axios.get(process.env.DEV_URL+`/input`).then( (response) => { - return response - }) - } - - - @Get('/:id') - async show(@Param() id: string){ - console.log(process.env.DEV_URL+`/input/${id}`, "ON SHOW ROUTE") - await axios.get(process.env.DEV_URL+`/input/${id}`).then( (response) => { - return response - }) - } - - - @Put(':id') - async update( - @Payload() updateInputDto: UpdateInputGrpcClientDto, - @Param() id: string, - ){ - console.log(process.env.DEV_URL+`/input/${id}`, "ON UPDATE ROUTE") - await axios.put(process.env.DEV_URL+`input/${id}`,updateInputDto).then( (response) => { - return response - }) - } - - - @Delete(':id') - async delete(@Param() id: string){ - console.log(process.env.DEV_URL+`/input/${id}`, "ON DELETE ROUTE") - - await axios.delete(process.env.DEV_URL+`/input/${id}`).then( (response) => { - return response - }) - } - - - -} diff --git a/src/inputs/proto/input.proto b/src/inputs/proto/input.proto deleted file mode 100644 index 87cf829..0000000 --- a/src/inputs/proto/input.proto +++ /dev/null @@ -1,65 +0,0 @@ -syntax = "proto3"; - -package input; - - -import "google/protobuf/timestamp.proto"; - - - -service InputService { - rpc Create(CreateInputRequest) returns (Input) {} - rpc Show(IdRequest) returns (Input) {} - rpc List(Empty) returns (ListResponse){} - rpc Update(UpdateInputRequest) returns (Input){} - rpc Remove(IdRequest) returns (Empty){} - rpc TestConnection(TestConnectionRequest) returns (TestConnectionResponse){} -} - -message Empty {} - -message IdRequest{ - string id = 1; -} - -message UpdateInputRequest{ - string id = 1; - string cron = 2; - string name = 3; - string plugin = 4; - string values = 5; - string operation = 6; -} - -message Input { - string id = 1; - string cronFormated = 2; - string name = 3; - string plugin = 4; - string values = 5; - string operation = 6; -} - -message CreateInputRequest { - string cron = 1; - string name = 2; - string plugin = 3; - string values = 4; - string operation = 5; -} - -message ListResponse { - repeated Input inputs = 1; -} - -message TestConnectionRequest{ - string values = 1; - string plugin = 2; -} - -message TestConnectionResponse{ - - // nao sei como vai ser a resposta - bool respose = 1; - -} diff --git a/src/main.ts b/src/main.ts index a5e74f8..3d1e0e0 100644 --- a/src/main.ts +++ b/src/main.ts @@ -3,8 +3,7 @@ import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; import { writeFileSync } from 'fs'; import { AppModule } from './app.module'; -import { config } from 'dotenv'; -config(); + async function bootstrap() { const app = await NestFactory.create(AppModule); diff --git a/src/middlewares/authentication.ts b/src/middlewares/authentication.ts index cdd1412..29524c6 100644 --- a/src/middlewares/authentication.ts +++ b/src/middlewares/authentication.ts @@ -2,29 +2,22 @@ import { Request, Response, NextFunction } from 'express'; import axios from 'axios'; import { NestMiddleware } from '@nestjs/common'; -export class LoggerMiddleware implements NestMiddleware{ - - - use = async ( - request: Request, - response: Response, - next: NextFunction - ) => { - - try { - const verify_response = await axios.post( - `${process.env.DEV_URL}/user/verify`, - { "token":request.get('Authorization')} - ).then(response =>{ - if(response.data.message == "Success"){ - next() - } - }) - - - } catch (error) { - response.status(401).send({ message: 'Authentication Failed!' }); - } - }; +export class LoggerMiddleware implements NestMiddleware { + use = async (request: Request, response: Response, next: NextFunction) => { + try { + const verify_response = await axios + .post(`${process.env.DEV_URL}/user/verify`, { + token: request.get('Authorization'), + }) + .then((response) => { + if (response.data.message == 'Success') { + next(); + } + }); + console.log(verify_response); + } catch (error) { + response.status(401).send({ message: 'Authentication Failed!' }); + } + }; } diff --git a/src/modules/auth/auth.controller.ts b/src/modules/auth/auth.controller.ts new file mode 100644 index 0000000..c58f248 --- /dev/null +++ b/src/modules/auth/auth.controller.ts @@ -0,0 +1,25 @@ +import { Body, Controller, Post } from '@nestjs/common'; + +import { AuthClientService } from 'src/clients/auth/client.service'; + +interface ISignIn { + username: string; + password: string; +} + +@Controller('auth') +export class AuthController { + constructor(private authClient: AuthClientService) {} + + @Post() + async signIn(@Body() { username, password }: ISignIn) { + console.log(`/auth`, 'SignIn'); + + const tokens = await this.authClient + .signIn({ username, password }) + .then((result) => result) + .catch((err) => console.log(err)); + + return tokens; + } +} diff --git a/src/modules/auth/auth.service.spec.ts b/src/modules/auth/auth.service.spec.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/health/health.controller.ts b/src/modules/health/health.controller.ts similarity index 100% rename from src/health/health.controller.ts rename to src/modules/health/health.controller.ts diff --git a/src/modules/health/health.service.spec.ts b/src/modules/health/health.service.spec.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/health/health.service.ts b/src/modules/health/health.service.ts similarity index 100% rename from src/health/health.service.ts rename to src/modules/health/health.service.ts diff --git a/src/modules/inputs/inputs.controller.ts b/src/modules/inputs/inputs.controller.ts new file mode 100644 index 0000000..2c933e3 --- /dev/null +++ b/src/modules/inputs/inputs.controller.ts @@ -0,0 +1,83 @@ +// import { +// Body, +// Controller, +// Delete, +// Get, +// Param, +// Post, +// Put, +// Redirect, +// } from '@nestjs/common'; +// import { Payload } from '@nestjs/microservices'; +// import axios from 'axios'; +// import { Console } from 'console'; +// // import { CreateInputGrpcClientDto } from './dto/create-input-grpc-client.dto'; +// // import { UpdateInputGrpcClientDto } from './dto/update-input-grpc-client.dto'; + +// @Controller('input') +// export class InputsController { +// @Get('/test-connection') +// async testConnection() { +// console.log( +// process.env.DEV_URL + `/test-connection`, +// 'ON TEST CONNECTION ROUTE', +// ); +// await axios +// .get(process.env.DEV_URL + `/test-connection`) +// .then((response) => { +// return response; +// }); +// } + +// @Post() +// async create(@Body() createInputDto: CreateInputGrpcClientDto) { +// console.log(createInputDto); +// console.log(process.env.DEV_URL + `/input`, 'ON CREATE ROUTE'); + +// await axios +// .post(process.env.DEV_URL + '/input', createInputDto) +// .then((response) => { +// return response; +// }); +// } + +// @Get() +// async list() { +// console.log(process.env.DEV_URL + `/input`, 'ON GET ROUTE'); +// await axios.get(process.env.DEV_URL + `/input`).then((response) => { +// return response; +// }); +// } + +// @Get('/:id') +// async show(@Param() id: string) { +// console.log(process.env.DEV_URL + `/input/${id}`, 'ON SHOW ROUTE'); +// await axios.get(process.env.DEV_URL + `/input/${id}`).then((response) => { +// return response; +// }); +// } + +// @Put(':id') +// async update( +// @Payload() updateInputDto: UpdateInputGrpcClientDto, +// @Param() id: string, +// ) { +// console.log(process.env.DEV_URL + `/input/${id}`, 'ON UPDATE ROUTE'); +// await axios +// .put(process.env.DEV_URL + `input/${id}`, updateInputDto) +// .then((response) => { +// return response; +// }); +// } + +// @Delete(':id') +// async delete(@Param() id: string) { +// console.log(process.env.DEV_URL + `/input/${id}`, 'ON DELETE ROUTE'); + +// await axios +// .delete(process.env.DEV_URL + `/input/${id}`) +// .then((response) => { +// return response; +// }); +// } +// } diff --git a/src/modules/inputs/inputs.service.spec.ts b/src/modules/inputs/inputs.service.spec.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/modules/inputs/inputs.service.ts b/src/modules/inputs/inputs.service.ts new file mode 100644 index 0000000..6885e66 --- /dev/null +++ b/src/modules/inputs/inputs.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class InputsService { + check() { + return { message: 'Ok' }; + } +} diff --git a/src/modules/outputs/outputs.controllers.ts b/src/modules/outputs/outputs.controllers.ts new file mode 100644 index 0000000..02941d5 --- /dev/null +++ b/src/modules/outputs/outputs.controllers.ts @@ -0,0 +1,83 @@ +// import { +// Body, +// Controller, +// Delete, +// Get, +// Param, +// Post, +// Put, +// Redirect, +// } from '@nestjs/common'; +// import { Payload } from '@nestjs/microservices'; +// import axios from 'axios'; +// import { Console } from 'console'; +// // import { CreateInputGrpcClientDto } from './dto/create-input-grpc-client.dto'; +// // import { UpdateInputGrpcClientDto } from './dto/update-input-grpc-client.dto'; + +// @Controller('outputs') +// export class OutputsController { +// @Get('/test-connection') +// async testConnection() { +// console.log( +// process.env.DEV_URL + `/test-connection`, +// 'ON TEST CONNECTION ROUTE', +// ); +// await axios +// .get(process.env.DEV_URL + `/test-connection`) +// .then((response) => { +// return response; +// }); +// } + +// @Post() +// async create(@Body() createInputDto: CreateInputGrpcClientDto) { +// console.log(createInputDto); +// console.log(process.env.DEV_URL + `/input`, 'ON CREATE ROUTE'); + +// await axios +// .post(process.env.DEV_URL + '/input', createInputDto) +// .then((response) => { +// return response; +// }); +// } + +// @Get() +// async list() { +// console.log(process.env.DEV_URL + `/input`, 'ON GET ROUTE'); +// await axios.get(process.env.DEV_URL + `/input`).then((response) => { +// return response; +// }); +// } + +// @Get('/:id') +// async show(@Param() id: string) { +// console.log(process.env.DEV_URL + `/input/${id}`, 'ON SHOW ROUTE'); +// await axios.get(process.env.DEV_URL + `/input/${id}`).then((response) => { +// return response; +// }); +// } + +// @Put(':id') +// async update( +// @Payload() updateInputDto: UpdateInputGrpcClientDto, +// @Param() id: string, +// ) { +// console.log(process.env.DEV_URL + `/input/${id}`, 'ON UPDATE ROUTE'); +// await axios +// .put(process.env.DEV_URL + `input/${id}`, updateInputDto) +// .then((response) => { +// return response; +// }); +// } + +// @Delete(':id') +// async delete(@Param() id: string) { +// console.log(process.env.DEV_URL + `/input/${id}`, 'ON DELETE ROUTE'); + +// await axios +// .delete(process.env.DEV_URL + `/input/${id}`) +// .then((response) => { +// return response; +// }); +// } +// } diff --git a/src/modules/outputs/outputs.service.spec.ts b/src/modules/outputs/outputs.service.spec.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/modules/outputs/outputs.service.ts b/src/modules/outputs/outputs.service.ts new file mode 100644 index 0000000..6d373e0 --- /dev/null +++ b/src/modules/outputs/outputs.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class OutputsService { + check() { + return { message: 'Ok' }; + } +} diff --git a/src/modules/pipelines/pipelines.controller.ts b/src/modules/pipelines/pipelines.controller.ts new file mode 100644 index 0000000..691ed8f --- /dev/null +++ b/src/modules/pipelines/pipelines.controller.ts @@ -0,0 +1,83 @@ +// import { +// Body, +// Controller, +// Delete, +// Get, +// Param, +// Post, +// Put, +// Redirect, +// } from '@nestjs/common'; +// import { Payload } from '@nestjs/microservices'; +// import axios from 'axios'; +// import { Console } from 'console'; +// // import { CreateInputGrpcClientDto } from './dto/create-input-grpc-client.dto'; +// // import { UpdateInputGrpcClientDto } from './dto/update-input-grpc-client.dto'; + +// @Controller('pipelines') +// export class PipelinesController { +// @Get('/test-connection') +// async testConnection() { +// console.log( +// process.env.DEV_URL + `/test-connection`, +// 'ON TEST CONNECTION ROUTE', +// ); +// await axios +// .get(process.env.DEV_URL + `/test-connection`) +// .then((response) => { +// return response; +// }); +// } + +// @Post() +// async create(@Body() createInputDto: CreateInputGrpcClientDto) { +// console.log(createInputDto); +// console.log(process.env.DEV_URL + `/input`, 'ON CREATE ROUTE'); + +// await axios +// .post(process.env.DEV_URL + '/input', createInputDto) +// .then((response) => { +// return response; +// }); +// } + +// @Get() +// async list() { +// console.log(process.env.DEV_URL + `/input`, 'ON GET ROUTE'); +// await axios.get(process.env.DEV_URL + `/input`).then((response) => { +// return response; +// }); +// } + +// @Get('/:id') +// async show(@Param() id: string) { +// console.log(process.env.DEV_URL + `/input/${id}`, 'ON SHOW ROUTE'); +// await axios.get(process.env.DEV_URL + `/input/${id}`).then((response) => { +// return response; +// }); +// } + +// @Put(':id') +// async update( +// @Payload() updateInputDto: UpdateInputGrpcClientDto, +// @Param() id: string, +// ) { +// console.log(process.env.DEV_URL + `/input/${id}`, 'ON UPDATE ROUTE'); +// await axios +// .put(process.env.DEV_URL + `input/${id}`, updateInputDto) +// .then((response) => { +// return response; +// }); +// } + +// @Delete(':id') +// async delete(@Param() id: string) { +// console.log(process.env.DEV_URL + `/input/${id}`, 'ON DELETE ROUTE'); + +// await axios +// .delete(process.env.DEV_URL + `/input/${id}`) +// .then((response) => { +// return response; +// }); +// } +// } diff --git a/src/modules/pipelines/pipelines.service.spec.ts b/src/modules/pipelines/pipelines.service.spec.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/modules/pipelines/pipelines.service.ts b/src/modules/pipelines/pipelines.service.ts new file mode 100644 index 0000000..802374e --- /dev/null +++ b/src/modules/pipelines/pipelines.service.ts @@ -0,0 +1,8 @@ +// import { Injectable } from '@nestjs/common'; + +// @Injectable() +// export class PipelinesService { +// check() { +// return { message: 'Ok' }; +// } +// } diff --git a/src/modules/transformations/transformations.controller.ts b/src/modules/transformations/transformations.controller.ts new file mode 100644 index 0000000..6960d64 --- /dev/null +++ b/src/modules/transformations/transformations.controller.ts @@ -0,0 +1,83 @@ +// import { +// Body, +// Controller, +// Delete, +// Get, +// Param, +// Post, +// Put, +// Redirect, +// } from '@nestjs/common'; +// import { Payload } from '@nestjs/microservices'; +// import axios from 'axios'; +// import { Console } from 'console'; +// // import { CreateInputGrpcClientDto } from './dto/create-input-grpc-client.dto'; +// // import { UpdateInputGrpcClientDto } from './dto/update-input-grpc-client.dto'; + +// @Controller('transformations') +// export class TransformationsController { +// @Get('/test-connection') +// async testConnection() { +// console.log( +// process.env.DEV_URL + `/test-connection`, +// 'ON TEST CONNECTION ROUTE', +// ); +// await axios +// .get(process.env.DEV_URL + `/test-connection`) +// .then((response) => { +// return response; +// }); +// } + +// @Post() +// async create(@Body() createInputDto: CreateInputGrpcClientDto) { +// console.log(createInputDto); +// console.log(process.env.DEV_URL + `/input`, 'ON CREATE ROUTE'); + +// await axios +// .post(process.env.DEV_URL + '/input', createInputDto) +// .then((response) => { +// return response; +// }); +// } + +// @Get() +// async list() { +// console.log(process.env.DEV_URL + `/input`, 'ON GET ROUTE'); +// await axios.get(process.env.DEV_URL + `/input`).then((response) => { +// return response; +// }); +// } + +// @Get('/:id') +// async show(@Param() id: string) { +// console.log(process.env.DEV_URL + `/input/${id}`, 'ON SHOW ROUTE'); +// await axios.get(process.env.DEV_URL + `/input/${id}`).then((response) => { +// return response; +// }); +// } + +// @Put(':id') +// async update( +// @Payload() updateInputDto: UpdateInputGrpcClientDto, +// @Param() id: string, +// ) { +// console.log(process.env.DEV_URL + `/input/${id}`, 'ON UPDATE ROUTE'); +// await axios +// .put(process.env.DEV_URL + `input/${id}`, updateInputDto) +// .then((response) => { +// return response; +// }); +// } + +// @Delete(':id') +// async delete(@Param() id: string) { +// console.log(process.env.DEV_URL + `/input/${id}`, 'ON DELETE ROUTE'); + +// await axios +// .delete(process.env.DEV_URL + `/input/${id}`) +// .then((response) => { +// return response; +// }); +// } +// } diff --git a/src/modules/transformations/transformations.service.spec.ts b/src/modules/transformations/transformations.service.spec.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/modules/transformations/transformations.service.ts b/src/modules/transformations/transformations.service.ts new file mode 100644 index 0000000..7f6906d --- /dev/null +++ b/src/modules/transformations/transformations.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class TransformationsService { + check() { + return { message: 'Ok' }; + } +} diff --git a/src/outputs/config/grpc-client.ts b/src/outputs/config/grpc-client.ts deleted file mode 100644 index acbec96..0000000 --- a/src/outputs/config/grpc-client.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { join } from 'path'; -import { ClientOptions, Transport } from '@nestjs/microservices'; - -export const GrpcClientConfiguration: ClientOptions = { - transport: Transport.GRPC, - options: { - //url: `${process.env.USERS_SVC_URL}:${process.env.USERS_SVC_PORT}`, - url: `127.0.0.1:50053`, - package: 'output', - protoPath: join(__dirname, '..', 'proto', 'output.proto'), - loader: { - enums: String, - objects: true, - arrays: true, - }, - }, -}; diff --git a/src/outputs/dto/create-output.dto.ts b/src/outputs/dto/create-output.dto.ts deleted file mode 100644 index ac9bb0f..0000000 --- a/src/outputs/dto/create-output.dto.ts +++ /dev/null @@ -1,7 +0,0 @@ -export class CreateOutputDto { - - name:string; - plugin:string; - values:string; - operation:string; -} diff --git a/src/outputs/dto/update-output.dto.ts b/src/outputs/dto/update-output.dto.ts deleted file mode 100644 index 62d92a5..0000000 --- a/src/outputs/dto/update-output.dto.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { PartialType } from '@nestjs/mapped-types'; -import { CreateOutputDto } from './create-output.dto'; - -export class UpdateOutputDto extends PartialType(CreateOutputDto) { - -} diff --git a/src/outputs/entities/output.entity.ts b/src/outputs/entities/output.entity.ts deleted file mode 100644 index f3557e3..0000000 --- a/src/outputs/entities/output.entity.ts +++ /dev/null @@ -1,9 +0,0 @@ -export class Output { - - id:string; - name:string; - plugin:string; - values:string; - operation:string; - -} diff --git a/src/outputs/outputs.controller.spec.ts b/src/outputs/outputs.controller.spec.ts deleted file mode 100644 index 407ee10..0000000 --- a/src/outputs/outputs.controller.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { OutputsController } from './outputs.controller'; -import { OutputsService } from './outputs.service'; - -describe('OutputsController', () => { - let controller: OutputsController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [OutputsController], - providers: [OutputsService], - }).compile(); - - controller = module.get(OutputsController); - }); - - it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/src/outputs/outputs.controller.ts b/src/outputs/outputs.controller.ts deleted file mode 100644 index 6e23c70..0000000 --- a/src/outputs/outputs.controller.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { - Controller, - Delete, - Get, - OnModuleInit, - Param, - Post, - Put, -} from '@nestjs/common'; -import { - Client, - ClientGrpc, - MessagePattern, - Payload, -} from '@nestjs/microservices'; -import { OutputsService } from './outputs.service'; -import { CreateOutputDto } from './dto/create-output.dto'; -import { UpdateOutputDto } from './dto/update-output.dto'; -import { ApiTags } from '@nestjs/swagger'; -import { GrpcClientConfiguration } from './config/grpc-client'; - -@Controller('output') -export class OutputsController implements OnModuleInit { - @Client(GrpcClientConfiguration) - private outputServiceClient: ClientGrpc; - - private outputService: OutputsService; - - onModuleInit() { - this.outputService = - this.outputServiceClient.getService('OutputService'); - } - @Post() - create(@Payload() createOutputDto: CreateOutputDto) { - return this.outputService.create(createOutputDto); - } - - @Get() - list() { - return this.outputService.list(); - } - - @Get(':id') - show(@Param() id: string) { - return this.outputService.show(id); - } - - @Put(':id') - update(@Param() id: string, @Payload() updateOutputDto: UpdateOutputDto) { - return this.outputService.update(id, updateOutputDto); - } - - @Delete(':id') - remove(@Param() id: string) { - return this.outputService.remove(id); - } -} diff --git a/src/outputs/outputs.module.ts b/src/outputs/outputs.module.ts deleted file mode 100644 index c907f54..0000000 --- a/src/outputs/outputs.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Module } from '@nestjs/common'; -import { OutputsService } from './outputs.service'; -import { OutputsController } from './outputs.controller'; - -@Module({ - controllers: [OutputsController], - providers: [OutputsService], -}) -export class OutputsModule {} diff --git a/src/outputs/outputs.service.spec.ts b/src/outputs/outputs.service.spec.ts deleted file mode 100644 index d0ce19e..0000000 --- a/src/outputs/outputs.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { OutputsService } from './outputs.service'; - -describe('OutputsService', () => { - let service: OutputsService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [OutputsService], - }).compile(); - - service = module.get(OutputsService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); diff --git a/src/outputs/outputs.service.ts b/src/outputs/outputs.service.ts deleted file mode 100644 index d39a029..0000000 --- a/src/outputs/outputs.service.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { CreateOutputDto } from './dto/create-output.dto'; -import { UpdateOutputDto } from './dto/update-output.dto'; - -@Injectable() -export class OutputsService { - create(createOutputDto: CreateOutputDto) { - return 'This action adds a new output'; - } - - list() { - return `This action returns all outputs`; - } - - show(id: string) { - return `This action returns a #${id} output`; - } - - update(id: string, updateOutputDto: UpdateOutputDto) { - return `This action updates a #${id} output`; - } - - remove(id: string) { - return `This action removes a #${id} output`; - } -} diff --git a/src/outputs/proto/output.proto b/src/outputs/proto/output.proto deleted file mode 100644 index eadb489..0000000 --- a/src/outputs/proto/output.proto +++ /dev/null @@ -1,48 +0,0 @@ -syntax = "proto3"; - -package output; - -import "google/protobuf/timestamp.proto"; - - -service OutputService{ - rpc Create(CreateOutputRequest) returns (Output) {} - rpc Show(IdRequest) returns (Output) {} - rpc List(Empty) returns (ListResponse){} - rpc Update(UpdateOutputRequest) returns (Output){} - rpc Remove(IdRequest) returns (Empty){} -} - - -message Empty {} - -message IdRequest{ - string id = 1; -} - -message Output { - string id = 1; - string name = 2; - string plugin = 3; - string values = 4; - string operation = 5; -} - -message CreateOutputRequest { - string name = 1; - string plugin = 2; - string values = 3; - string operation = 4; -} - -message UpdateOutputRequest{ - string id = 1; - string name = 3; - string plugin = 4; - string values = 5; - string operation = 6; -} - -message ListResponse { - repeated Output outputs = 1; -} diff --git a/src/pipelines/config/grpc-client.ts b/src/pipelines/config/grpc-client.ts deleted file mode 100644 index af87bbe..0000000 --- a/src/pipelines/config/grpc-client.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { join } from 'path'; -import { ClientOptions, Transport } from '@nestjs/microservices'; - -export const GrpcClientConfiguration: ClientOptions = { - transport: Transport.GRPC, - options: { - //url: `${process.env.USERS_SVC_URL}:${process.env.USERS_SVC_PORT}`, - url: `127.0.0.1:50054`, - package: 'pipeline', - protoPath: join(__dirname, '..', 'proto', 'pipeline.proto'), - loader: { - enums: String, - objects: true, - arrays: true, - }, - }, -}; diff --git a/src/pipelines/dto/create-pipeline.dto.ts b/src/pipelines/dto/create-pipeline.dto.ts deleted file mode 100644 index cb543d8..0000000 --- a/src/pipelines/dto/create-pipeline.dto.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { InputGrpcClient } from "src/inputs/entities/input-grcp-client.entity"; -import { Output } from "src/outputs/entities/output.entity"; -import { Transformation } from "src/transformations/entities/transformation.entity"; - -export class CreatePipelineDto { - input:InputGrpcClient; - output:Output; - transformations:Transformation; - tags:string[]; - name:string; - description:string; -} diff --git a/src/pipelines/dto/update-pipeline.dto.ts b/src/pipelines/dto/update-pipeline.dto.ts deleted file mode 100644 index b1848b4..0000000 --- a/src/pipelines/dto/update-pipeline.dto.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { PartialType } from '@nestjs/mapped-types'; -import { CreatePipelineDto } from './create-pipeline.dto'; - -export class UpdatePipelineDto extends PartialType(CreatePipelineDto) { - -} diff --git a/src/pipelines/entities/pipeline.entity.ts b/src/pipelines/entities/pipeline.entity.ts deleted file mode 100644 index 2e4eafb..0000000 --- a/src/pipelines/entities/pipeline.entity.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { InputGrpcClient } from "src/inputs/entities/input-grcp-client.entity"; -import { Output } from "src/outputs/entities/output.entity"; -import { Transformation } from "src/transformations/entities/transformation.entity"; - -export class Pipeline { - id:string; - input:InputGrpcClient; - output:Output; - transformations:Transformation; - tags:string[]; - name:string; - description:string; - status:string; -} diff --git a/src/pipelines/pipelines.controller.spec.ts b/src/pipelines/pipelines.controller.spec.ts deleted file mode 100644 index 968b6b8..0000000 --- a/src/pipelines/pipelines.controller.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { PipelinesController } from './pipelines.controller'; -import { PipelinesService } from './pipelines.service'; - -describe('PipelinesController', () => { - let controller: PipelinesController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [PipelinesController], - providers: [PipelinesService], - }).compile(); - - controller = module.get(PipelinesController); - }); - - it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/src/pipelines/pipelines.controller.ts b/src/pipelines/pipelines.controller.ts deleted file mode 100644 index 681c293..0000000 --- a/src/pipelines/pipelines.controller.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { - Controller, - Delete, - Get, - OnModuleInit, - Param, - Post, - Put, -} from '@nestjs/common'; -import { - Client, - ClientGrpc, - MessagePattern, - Payload, -} from '@nestjs/microservices'; -import { PipelinesService } from './pipelines.service'; -import { CreatePipelineDto } from './dto/create-pipeline.dto'; -import { UpdatePipelineDto } from './dto/update-pipeline.dto'; -import { GrpcClientConfiguration } from './config/grpc-client'; - -@Controller('pipeline') - -export class PipelinesController implements OnModuleInit { - - @Client(GrpcClientConfiguration) - private pipelineServiceClient: ClientGrpc; - - private pipelineService: PipelinesService; - - onModuleInit() { - this.pipelineService = - this.pipelineServiceClient.getService( - 'PipelineService', - ); - } - - @Post() - create(@Payload() createPipelineDto: CreatePipelineDto) { - return this.pipelineService.create(createPipelineDto); - } - - @Get() - list() { - return this.pipelineService.list(); - } - - @Get(':id') - show(@Param() id: string) { - return this.pipelineService.show(id); - } - - @Put(':id') - update(@Param() id: string, @Payload() updatePipelineDto: UpdatePipelineDto) { - return this.pipelineService.update(id, updatePipelineDto); - } - - @Delete() - remove(@Param() id: string) { - return this.pipelineService.remove(id); - } - - @Post() - getPipelineLogsMessages(@Param() id: string, @Payload() details: string) { - return this.pipelineService.getPipelineLogsMessages(id, details); - } - - getPipelineStatus(id: string) { - return this.pipelineService.getPipelineStatus(id); - } -} diff --git a/src/pipelines/pipelines.module.ts b/src/pipelines/pipelines.module.ts deleted file mode 100644 index 2eb2334..0000000 --- a/src/pipelines/pipelines.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Module } from '@nestjs/common'; -import { PipelinesService } from './pipelines.service'; -import { PipelinesController } from './pipelines.controller'; - -@Module({ - controllers: [PipelinesController], - providers: [PipelinesService], -}) -export class PipelinesModule {} diff --git a/src/pipelines/pipelines.service.spec.ts b/src/pipelines/pipelines.service.spec.ts deleted file mode 100644 index e7a30b6..0000000 --- a/src/pipelines/pipelines.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { PipelinesService } from './pipelines.service'; - -describe('PipelinesService', () => { - let service: PipelinesService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [PipelinesService], - }).compile(); - - service = module.get(PipelinesService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); diff --git a/src/pipelines/pipelines.service.ts b/src/pipelines/pipelines.service.ts deleted file mode 100644 index ed5aaf8..0000000 --- a/src/pipelines/pipelines.service.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { CreatePipelineDto } from './dto/create-pipeline.dto'; -import { UpdatePipelineDto } from './dto/update-pipeline.dto'; - -@Injectable() -export class PipelinesService { - create(createPipelineDto: CreatePipelineDto) { - return 'This action adds a new pipeline'; - } - - list() { - return `This action returns all pipelines`; - } - - show(id: string) { - return `This action returns a #${id} pipeline`; - } - - update(id: string, updatePipelineDto: UpdatePipelineDto) { - return `This action updates a #${id} pipeline`; - } - - remove(id: string) { - return `This action removes a #${id} pipeline`; - } - - getPipelineLogsMessages(id: string, details: string) { - return `This action perfoms a getLogMessages on #${id} pipeline`; - } - - getPipelineStatus(id: string) { - return `This action performs a getStatus on #${id} pipeline`; - } -} diff --git a/src/pipelines/proto/pipeline.proto b/src/pipelines/proto/pipeline.proto deleted file mode 100644 index 9e187d7..0000000 --- a/src/pipelines/proto/pipeline.proto +++ /dev/null @@ -1,97 +0,0 @@ -syntax = "proto3"; - -package pipeline; - -import "google/protobuf/timestamp.proto"; - -service PipelineService{ - rpc Create(CreatePipelineRequest) returns (Pipeline) {} - rpc Show(IdRequest) returns (Pipeline) {} - rpc List(Empty) returns (ListResponse){} - rpc Update(UpdatePipelineRequest) returns (Pipeline){} - rpc Remove(IdRequest) returns (Empty){} - rpc getPipelineLogsMessages(getPipelineLogsMessagesRequest) returns (getPipelineLogsMessagesResponse){} - rpc getPipelineStatus(IdRequest) returns (getPipelineStatusResponse){} -} - - -message Empty {} - -message IdRequest{ - string id = 1; -} - -message Transformation { - string id = 1; - string inputSource = 2; - string table = 3; - string type = 4; - string params = 5; -} - -message Input { - string id = 1; - string cronFormated = 2; - string name = 3; - string plugin = 4; - string values = 5; - string operation = 6; -} - -message Output { - string id = 1; - string name = 2; - string plugin = 3; - string values = 4; - string operation = 5; -} - -message Pipeline { - string id = 1; - Input input = 2; - Output output = 3; - Transformation transformations = 4; - repeated string tags = 5; - string name = 6; - string description = 7; - string status = 8; -} - -message CreatePipelineRequest { - Input input = 1; - Output output = 2; - Transformation transformations = 3; - repeated string tags = 4; - string name = 5; - string description = 6; -} - -message UpdatePipelineRequest{ - string id = 1; - repeated string tags = 2; - string name = 3; - string description = 4; - string status = 5; -} - -message ListResponse { - repeated Pipeline pipelines = 1; -} - -message getPipelineLogsMessagesRequest{ - string id = 1; - string details = 2; -} - -message getPipelineLogsMessagesResponseItem{ - string date = 1; - string log = 2; -} - -message getPipelineLogsMessagesResponse{ - repeated getPipelineLogsMessagesResponseItem pipelineLogs = 1; -} - -message getPipelineStatusResponse{ - string status = 1; -} diff --git a/src/rest/rest-enrichments/dto/create-rest-enrichment.dto.ts b/src/rest/rest-enrichments/dto/create-rest-enrichment.dto.ts deleted file mode 100644 index 0821f28..0000000 --- a/src/rest/rest-enrichments/dto/create-rest-enrichment.dto.ts +++ /dev/null @@ -1,6 +0,0 @@ -export class CreateRestEnrichmentDto { - - type:string; - - columns -} diff --git a/src/rest/rest-enrichments/dto/update-rest-enrichment.dto.ts b/src/rest/rest-enrichments/dto/update-rest-enrichment.dto.ts deleted file mode 100644 index b3a2c60..0000000 --- a/src/rest/rest-enrichments/dto/update-rest-enrichment.dto.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { PartialType } from '@nestjs/swagger'; -import { CreateRestEnrichmentDto } from './create-rest-enrichment.dto'; - -export class UpdateRestEnrichmentDto extends PartialType(CreateRestEnrichmentDto) {} diff --git a/src/rest/rest-enrichments/entities/rest-enrichment.entity.ts b/src/rest/rest-enrichments/entities/rest-enrichment.entity.ts deleted file mode 100644 index 3595d46..0000000 --- a/src/rest/rest-enrichments/entities/rest-enrichment.entity.ts +++ /dev/null @@ -1,7 +0,0 @@ -export class RestEnrichment { - id:string; - - type:string; - - columns:string[] -} diff --git a/src/rest/rest-enrichments/rest-enrichments.controller.spec.ts b/src/rest/rest-enrichments/rest-enrichments.controller.spec.ts deleted file mode 100644 index e4c8579..0000000 --- a/src/rest/rest-enrichments/rest-enrichments.controller.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { RestEnrichmentsController } from './rest-enrichments.controller'; -import { RestEnrichmentsService } from './rest-enrichments.service'; - -describe('RestEnrichmentsController', () => { - let controller: RestEnrichmentsController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [RestEnrichmentsController], - providers: [RestEnrichmentsService], - }).compile(); - - controller = module.get(RestEnrichmentsController); - }); - - it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/src/rest/rest-enrichments/rest-enrichments.controller.ts b/src/rest/rest-enrichments/rest-enrichments.controller.ts deleted file mode 100644 index 5a84ad2..0000000 --- a/src/rest/rest-enrichments/rest-enrichments.controller.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { Controller, Get, Post, Body, Patch, Param, Delete, Put, Headers} from '@nestjs/common'; -import { RestEnrichmentsService } from './rest-enrichments.service'; -import { CreateRestEnrichmentDto } from './dto/create-rest-enrichment.dto'; -import { UpdateRestEnrichmentDto } from './dto/update-rest-enrichment.dto'; -import axios from 'axios'; -import { ApiTags } from '@nestjs/swagger'; - -@ApiTags('Enrichments') -@Controller('enrichment') -export class RestEnrichmentsController { - constructor(private readonly restEnrichmentsService: RestEnrichmentsService) {} - - @Post() - async create(@Body() body: CreateRestEnrichmentDto,@Headers() headers) { - - const connectionResponse = await axios.post( - `${process.env.DEV_URL}/enrichment`, - body, - { - headers:{ - "Authorization":headers.authorization, - "Content-Type":"application/json" - } - } - ) - - return connectionResponse.data - } - - @Get() - async list(@Headers() headers) { - - const connectionResponse = await axios.get( - `${process.env.DEV_URL}/enrichment`, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - return connectionResponse.data - } - - @Get(':id') - async show(@Param('id') id: string,@Headers() headers) { - - const connectionResponse = await axios.get( - `${process.env.DEV_URL}/enrichment/${id}`, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - return connectionResponse.data - } - - @Put(':id') - async update(@Param('id') id: string,@Headers() headers, @Body() body: UpdateRestEnrichmentDto) { - - const connectionResponse = await axios.put( - `${process.env.DEV_URL}/enrichment/${id}`, - body, - { - headers:{ - "Authorization":headers.authorization, - "Content-Type":"application/json" - } - } - ) - - return connectionResponse.data - } - - @Delete(':id') - async remove(@Param('id') id: string,@Headers() headers) { - - const connectionResponse = await axios.delete( - `${process.env.DEV_URL}/enrichment/${id}`, - { - headers:{ - "Authorization":headers.authorization, - "Content-Type":"application/json" - } - } - ) - - return connectionResponse.data - } -} diff --git a/src/rest/rest-enrichments/rest-enrichments.module.ts b/src/rest/rest-enrichments/rest-enrichments.module.ts deleted file mode 100644 index 54c9912..0000000 --- a/src/rest/rest-enrichments/rest-enrichments.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Module } from '@nestjs/common'; -import { RestEnrichmentsService } from './rest-enrichments.service'; -import { RestEnrichmentsController } from './rest-enrichments.controller'; - -@Module({ - controllers: [RestEnrichmentsController], - providers: [RestEnrichmentsService] -}) -export class RestEnrichmentsModule {} diff --git a/src/rest/rest-enrichments/rest-enrichments.service.spec.ts b/src/rest/rest-enrichments/rest-enrichments.service.spec.ts deleted file mode 100644 index 8edbc0d..0000000 --- a/src/rest/rest-enrichments/rest-enrichments.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { RestEnrichmentsService } from './rest-enrichments.service'; - -describe('RestEnrichmentsService', () => { - let service: RestEnrichmentsService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [RestEnrichmentsService], - }).compile(); - - service = module.get(RestEnrichmentsService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); diff --git a/src/rest/rest-enrichments/rest-enrichments.service.ts b/src/rest/rest-enrichments/rest-enrichments.service.ts deleted file mode 100644 index 03efa72..0000000 --- a/src/rest/rest-enrichments/rest-enrichments.service.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { CreateRestEnrichmentDto } from './dto/create-rest-enrichment.dto'; -import { UpdateRestEnrichmentDto } from './dto/update-rest-enrichment.dto'; - -@Injectable() -export class RestEnrichmentsService { - create(createRestEnrichmentDto: CreateRestEnrichmentDto) { - return 'This action adds a new restEnrichment'; - } - - findAll() { - return `This action returns all restEnrichments`; - } - - findOne(id: number) { - return `This action returns a #${id} restEnrichment`; - } - - update(id: number, updateRestEnrichmentDto: UpdateRestEnrichmentDto) { - return `This action updates a #${id} restEnrichment`; - } - - remove(id: number) { - return `This action removes a #${id} restEnrichment`; - } -} diff --git a/src/rest/rest-factory/dto/create-rest-factory.dto.ts b/src/rest/rest-factory/dto/create-rest-factory.dto.ts deleted file mode 100644 index 905b39e..0000000 --- a/src/rest/rest-factory/dto/create-rest-factory.dto.ts +++ /dev/null @@ -1 +0,0 @@ -export class CreateRestFactoryDto {} diff --git a/src/rest/rest-factory/dto/update-rest-factory.dto.ts b/src/rest/rest-factory/dto/update-rest-factory.dto.ts deleted file mode 100644 index a682c19..0000000 --- a/src/rest/rest-factory/dto/update-rest-factory.dto.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { PartialType } from '@nestjs/swagger'; -import { CreateRestFactoryDto } from './create-rest-factory.dto'; - -export class UpdateRestFactoryDto extends PartialType(CreateRestFactoryDto) {} diff --git a/src/rest/rest-factory/entities/rest-factory.entity.ts b/src/rest/rest-factory/entities/rest-factory.entity.ts deleted file mode 100644 index 4daced3..0000000 --- a/src/rest/rest-factory/entities/rest-factory.entity.ts +++ /dev/null @@ -1 +0,0 @@ -export class RestFactory {} diff --git a/src/rest/rest-factory/rest-factory.controller.spec.ts b/src/rest/rest-factory/rest-factory.controller.spec.ts deleted file mode 100644 index 5c8d7e2..0000000 --- a/src/rest/rest-factory/rest-factory.controller.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { RestFactoryController } from './rest-factory.controller'; -import { RestFactoryService } from './rest-factory.service'; - -describe('RestFactoryController', () => { - let controller: RestFactoryController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [RestFactoryController], - providers: [RestFactoryService], - }).compile(); - - controller = module.get(RestFactoryController); - }); - - it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/src/rest/rest-factory/rest-factory.controller.ts b/src/rest/rest-factory/rest-factory.controller.ts deleted file mode 100644 index e740b36..0000000 --- a/src/rest/rest-factory/rest-factory.controller.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { Controller, Get, Param, Headers } from '@nestjs/common'; -import { RestFactoryService } from './rest-factory.service'; -import axios from 'axios'; -import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; - -@ApiTags('Dag Factory') -@ApiBearerAuth() -@Controller('factory') -export class RestFactoryController { - constructor(private readonly restFactoryService: RestFactoryService) {} - - - @Get('/start') - async startDagFactory(@Headers() headers) { - - const connectionResponse = await axios.get( - `${process.env.DEV_URL}/factory/start`, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - return connectionResponse.data - } - - - @Get('/pipeline_params') - async sendJSONSettingsToDagFactory(@Headers() headers) { - - const connectionResponse = await axios.get( - `${process.env.DEV_URL}/factory/pipeline_params`, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - return connectionResponse.data - } - - @Get('/start/:pipelineId') - async startDag(@Param('pipelineId') pipelineId:string,@Headers() headers) { - - const connectionResponse = await axios.get( - `${process.env.DEV_URL}/factory/start/${pipelineId}`, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - return connectionResponse.data - } - - -} diff --git a/src/rest/rest-factory/rest-factory.module.ts b/src/rest/rest-factory/rest-factory.module.ts deleted file mode 100644 index 58d778f..0000000 --- a/src/rest/rest-factory/rest-factory.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Module } from '@nestjs/common'; -import { RestFactoryService } from './rest-factory.service'; -import { RestFactoryController } from './rest-factory.controller'; - -@Module({ - controllers: [RestFactoryController], - providers: [RestFactoryService] -}) -export class RestFactoryModule {} diff --git a/src/rest/rest-factory/rest-factory.service.spec.ts b/src/rest/rest-factory/rest-factory.service.spec.ts deleted file mode 100644 index 493fa9e..0000000 --- a/src/rest/rest-factory/rest-factory.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { RestFactoryService } from './rest-factory.service'; - -describe('RestFactoryService', () => { - let service: RestFactoryService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [RestFactoryService], - }).compile(); - - service = module.get(RestFactoryService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); diff --git a/src/rest/rest-factory/rest-factory.service.ts b/src/rest/rest-factory/rest-factory.service.ts deleted file mode 100644 index 93104df..0000000 --- a/src/rest/rest-factory/rest-factory.service.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { CreateRestFactoryDto } from './dto/create-rest-factory.dto'; -import { UpdateRestFactoryDto } from './dto/update-rest-factory.dto'; - -@Injectable() -export class RestFactoryService { - create(createRestFactoryDto: CreateRestFactoryDto) { - return 'This action adds a new restFactory'; - } - - findAll() { - return `This action returns all restFactory`; - } - - findOne(id: number) { - return `This action returns a #${id} restFactory`; - } - - update(id: number, updateRestFactoryDto: UpdateRestFactoryDto) { - return `This action updates a #${id} restFactory`; - } - - remove(id: number) { - return `This action removes a #${id} restFactory`; - } -} diff --git a/src/rest/rest-inputs/dto/HTTPInputValues.dto.ts b/src/rest/rest-inputs/dto/HTTPInputValues.dto.ts deleted file mode 100644 index f73642e..0000000 --- a/src/rest/rest-inputs/dto/HTTPInputValues.dto.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { ApiProperty } from "@nestjs/swagger"; - - -export class HTTPInputValues{ - - @ApiProperty({ - description:"Choosen url", - example:"http://testroute/dadosfera/inputs/values" - }) - urls:string; - - @ApiProperty({ - description:"Schedule name", - example:"Test_Schedule" - }) - schedule:string -} diff --git a/src/rest/rest-inputs/dto/JDBCInputValues.dto.ts b/src/rest/rest-inputs/dto/JDBCInputValues.dto.ts deleted file mode 100644 index c7bad27..0000000 --- a/src/rest/rest-inputs/dto/JDBCInputValues.dto.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { ApiProperty } from "@nestjs/swagger"; - - -export class JDBCInputvalues{ - - @ApiProperty({ - description:"JDBC user", - example:"airflow" - }) - jdbc_user: string; - - @ApiProperty({ - description:"JDBC password", - example:"password123" - }) - jdbc_password: string; - - @ApiProperty({ - description:"Database", - example:"airflow" - }) - database: string; - - @ApiProperty({ - description:"Connection endpoint", - example:"dadosfera-postgres-db.test123.us-east" - }) - endpoint: string; - - @ApiProperty({ - description:"Schema name", - example:"cadastros" - }) - schema?:string; - - @ApiProperty({ - description:"Tables names", - example:["pessoas", "clients"] - }) - table: string[]; - - @ApiProperty({ - description:"Port", - example:"5432" - }) - port: string; - - @ApiProperty({ - description:"Engine name", - example:"postgres" - }) - engine: string; -} diff --git a/src/rest/rest-inputs/dto/create-rest-input.dto.ts b/src/rest/rest-inputs/dto/create-rest-input.dto.ts deleted file mode 100644 index 84ce3a3..0000000 --- a/src/rest/rest-inputs/dto/create-rest-input.dto.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { ApiProperty } from "@nestjs/swagger"; -import { CronDTO } from "./cron.dto"; -import { HTTPInputValues } from "./HTTPInputValues.dto"; -import { JDBCInputvalues } from "./JDBCInputValues.dto"; -import { S3InputValues } from "./s3InputValues.dto"; -import { SalesforceInputValuesDTO } from "./salesforceInputValues.dto"; - -export class CreateRestInputDto { - - @ApiProperty({ - description:"Input CRON", - example:{ - hours: ["3", "7"], - hour_interval: true, - hour_resourse: true, - hour_resourse_value: 3, - month_day: ["3"], - month_day_interval: true, - month_day_resourse: false, - month_day_resourse_value: null, - month: ["3"], - month_interval: false, - month_resourse: false, - month_resourse_value: null, - week_days: [], - week_days_interval: false, - week_days_resourse: false, - week_days_resourse_value: null - } - }) - cron:CronDTO; - - @ApiProperty({ - description:"Name of the input", - example:"Test_Input" - }) - name:string; - - @ApiProperty({ - description:"Plugin", - example:"s3" - }) - plugin:string; - - @ApiProperty({ - description:"Values for choosen input", - example:{ - jdbc_user: "user123", - jdbc_password: "password123", - database: "default_database", - endpoint: "dadosfera-postgres-db.test123.us-east-1.rds.amazonaws.com", - table: "test_table", - port: "5432", - engine: "postgresql" - } - }) - values: SalesforceInputValuesDTO|HTTPInputValues|S3InputValues|JDBCInputvalues; - - @ApiProperty({ - description:"Operation name", - example:"input" - }) - operation:string; -} diff --git a/src/rest/rest-inputs/dto/cron.dto.ts b/src/rest/rest-inputs/dto/cron.dto.ts deleted file mode 100644 index 9220775..0000000 --- a/src/rest/rest-inputs/dto/cron.dto.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { ApiProperty } from "@nestjs/swagger"; - - -export class CronDTO{ - - @ApiProperty({ - description:"Hours to the cron", - example:["3","7"] - }) - hours: string[]; - - @ApiProperty({ - description:"Boolean for hour interval", - example:true - }) - hour_interval: boolean; - - @ApiProperty({ - description:"Boolean for hour resourse", - example:true - }) - hour_resourse: boolean; - - @ApiProperty({ - description:"Value for hour resourse", - example:3 - }) - hour_resourse_value: number; - - @ApiProperty({ - description:"Month day to the cron", - example:["3"] - }) - month_day: string[]; - - @ApiProperty({ - description:"Boolean for month day interval", - example:true - }) - month_day_interval: boolean; - - @ApiProperty({ - description:"Boolean for month day resourse", - example:false - }) - month_day_resourse: boolean; - - @ApiProperty({ - description:"Value for month day resourse", - example:null - }) - month_day_resourse_value:number|null; - - @ApiProperty({ - description:"Month to the cron", - example:["3"] - }) - month: string[]; - - @ApiProperty({ - description:"Boolean from month interval", - example:false - }) - month_interval: boolean; - - @ApiProperty({ - description:"Boolean from month resourse", - example:false - }) - month_resourse: boolean; - - @ApiProperty({ - description:"Value to month resourse", - example:null - }) - month_resourse_value:number|null; - - @ApiProperty({ - description:"Week days to the cron", - example:[] - }) - week_days: string[]; - - @ApiProperty({ - description:"Boolean for the week days", - example:false - }) - week_days_interval: boolean; - - @ApiProperty({ - description:"Boolean for week day resourse", - example:false - }) - week_days_resourse: boolean; - - @ApiProperty({ - description:"Hours to the cron", - example:null - }) - week_days_resourse_value:number|null - -} diff --git a/src/rest/rest-inputs/dto/s3InputValues.dto.ts b/src/rest/rest-inputs/dto/s3InputValues.dto.ts deleted file mode 100644 index 93d371a..0000000 --- a/src/rest/rest-inputs/dto/s3InputValues.dto.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { ApiProperty } from "@nestjs/swagger"; - - -export class S3InputValues{ - - @ApiProperty({ - description:"file to extract path", - example:"s3_connector/testfile.csv" - }) - file_to_extract: string; - - @ApiProperty({ - description:"target bucket path", - example:"dadosfera-test" - }) - target_bucket?: string; - - @ApiProperty({ - description:"client bucket path", - example:"dadosfera-test" - }) - client_bucket: string; - - @ApiProperty({ - description:"Format to the file", - example:"csv" - }) - format_file: string; - - @ApiProperty({ - description:"Clients AWS Access Key Id", - example:"AKIBN5B19D3NGZI" - }) - client_aws_access_key_id: string; - - @ApiProperty({ - description:"Clients AWS Secret Access Key Id", - example:"ct5R1EjrVC78bvaJ636gG90O5NqOrOUoq4Ri" - }) - client_aws_secret_access_key : string; - - @ApiProperty({ - description:"file params format", - example:{sep: "," , header: "true"} - }) - format_file_params?: { - sep: string, - header: string - } -} diff --git a/src/rest/rest-inputs/dto/salesforceInputValues.dto.ts b/src/rest/rest-inputs/dto/salesforceInputValues.dto.ts deleted file mode 100644 index 6f6998e..0000000 --- a/src/rest/rest-inputs/dto/salesforceInputValues.dto.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { ApiProperty } from "@nestjs/swagger"; - - -export class SalesforceInputValuesDTO{ - - @ApiProperty({ - description:"Salesforce username", - example:"dadosfera@devs.com" - }) - username_salesforce: string; - - @ApiProperty({ - description:"Salesforce password", - example:"Salesforce@test123" - })password_salesforce: string; - - @ApiProperty({ - description:"Salesforce Security Token", - example:"A67Tdg7qHUvhZDOFjWwtPMjmQ" - })security_token_salesforce: string; - - @ApiProperty({ - description:"Salesforce Query", - example:"SELECT * FROM Users" - })query_salesforce: string; - -} diff --git a/src/rest/rest-inputs/dto/testConnection.dto.ts b/src/rest/rest-inputs/dto/testConnection.dto.ts deleted file mode 100644 index 0e6d73e..0000000 --- a/src/rest/rest-inputs/dto/testConnection.dto.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { ApiProperty } from "@nestjs/swagger"; -import { HTTPInputValues } from "./HTTPInputValues.dto"; -import { JDBCInputvalues } from "./JDBCInputValues.dto"; -import { S3InputValues } from "./s3InputValues.dto"; -import { SalesforceInputValuesDTO } from "./salesforceInputValues.dto"; - - -export class testConnectionDTO{ - - @ApiProperty({ - description:"Input Plugin Name", - example:"mysql" - }) - plugin:string; - - - @ApiProperty({ - description:"Plugin name", - example:{ - plugin: "mysql", - values: { - jdbc_user: "test", - jdbc_password: "test1234", - database: "users", - endpoint: "dadosfera.test123.us-east-1.rds.amazonaws.com", - schema: "user", - port: "5432", - engine: "mysql" - } - } - }) - - values:HTTPInputValues|SalesforceInputValuesDTO|S3InputValues|JDBCInputvalues -} diff --git a/src/rest/rest-inputs/dto/update-rest-input.dto.ts b/src/rest/rest-inputs/dto/update-rest-input.dto.ts deleted file mode 100644 index 2a198c6..0000000 --- a/src/rest/rest-inputs/dto/update-rest-input.dto.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { PartialType } from '@nestjs/swagger'; -import { CreateRestInputDto } from './create-rest-input.dto'; - -export class UpdateRestInputDto extends PartialType(CreateRestInputDto) {} diff --git a/src/rest/rest-inputs/entities/rest-input.entity.ts b/src/rest/rest-inputs/entities/rest-input.entity.ts deleted file mode 100644 index 2525e65..0000000 --- a/src/rest/rest-inputs/entities/rest-input.entity.ts +++ /dev/null @@ -1,14 +0,0 @@ -export class RestInput { - - id:string; - - cron:string; - - name:string; - - plugin:string; - - values:string; - - operation:string; -} diff --git a/src/rest/rest-inputs/rest-inputs.controller.spec.ts b/src/rest/rest-inputs/rest-inputs.controller.spec.ts deleted file mode 100644 index 208e5ac..0000000 --- a/src/rest/rest-inputs/rest-inputs.controller.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { RestInputsController } from './rest-inputs.controller'; -import { RestInputsService } from './rest-inputs.service'; - -describe('RestInputsController', () => { - let controller: RestInputsController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [RestInputsController], - providers: [RestInputsService], - }).compile(); - - controller = module.get(RestInputsController); - }); - - it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/src/rest/rest-inputs/rest-inputs.controller.ts b/src/rest/rest-inputs/rest-inputs.controller.ts deleted file mode 100644 index 9439ca6..0000000 --- a/src/rest/rest-inputs/rest-inputs.controller.ts +++ /dev/null @@ -1,123 +0,0 @@ -import axios from 'axios'; -require("dotenv").config(); -import { RestInputsService } from './rest-inputs.service'; -import { Controller, Get, Post, Body, Patch, Param, Delete, Put, Headers } from '@nestjs/common'; -import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; -import { CreateRestInputDto } from './dto/create-rest-input.dto'; -import { UpdateRestInputDto } from './dto/update-rest-input.dto'; -import { testConnectionDTO } from './dto/testConnection.dto'; - - -@ApiTags('Inputs') -@ApiBearerAuth() -@Controller('input') -export class RestInputsController { - constructor(private readonly restInputsService: RestInputsService) {} - - - @Post('/test-connection/') - async testConnection(@Body() body:testConnectionDTO,@Headers() headers){ - - const connectionResponse = await axios.post( - `${process.env.DEV_URL}/input/test-connection`, - body, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - - return connectionResponse.data - } - - @Post() - async create(@Body() body: CreateRestInputDto,@Headers() headers){ - - const connectionResponse = await axios.post( - `${process.env.DEV_URL}/input`, - body, - { - headers:{ - "Authorization":headers.authorization, - "Content-Type":"application/json" - } - } - ) - - - return connectionResponse.data - } - - @Get() - async list(@Headers() headers){ - - const connectionResponse = await axios.get( - `${process.env.DEV_URL}/input`, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - - return connectionResponse.data - } - - @Get('/:id') - async show(@Param() id: string,@Headers() headers){ - - const connectionResponse = await axios.get( - `${process.env.DEV_URL}/input/:${id}`, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - - return connectionResponse.data - } - - @Put(':id') - async update( - @Body() body: UpdateRestInputDto, - @Param() id: string, - @Headers() headers - ){ - - const connectionResponse = await axios.put( - `${process.env.DEV_URL}/input/:${id}`, - body, - { - headers:{ - "Authorization":headers.authorization, - "Content-Type":"application/json" - } - } - ) - - - return connectionResponse.data - } - - @Delete(':id') - async delete(@Param() id: string,@Headers() headers){ - - const connectionResponse = await axios.delete( - `${process.env.DEV_URL}/input/:${id}`, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - - return connectionResponse.data - } - -} diff --git a/src/rest/rest-inputs/rest-inputs.module.ts b/src/rest/rest-inputs/rest-inputs.module.ts deleted file mode 100644 index fb91425..0000000 --- a/src/rest/rest-inputs/rest-inputs.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Module } from '@nestjs/common'; -import { RestInputsService } from './rest-inputs.service'; -import { RestInputsController } from './rest-inputs.controller'; - -@Module({ - controllers: [RestInputsController], - providers: [RestInputsService] -}) -export class RestInputsModule {} diff --git a/src/rest/rest-inputs/rest-inputs.service.spec.ts b/src/rest/rest-inputs/rest-inputs.service.spec.ts deleted file mode 100644 index 31becf5..0000000 --- a/src/rest/rest-inputs/rest-inputs.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { RestInputsService } from './rest-inputs.service'; - -describe('RestInputsService', () => { - let service: RestInputsService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [RestInputsService], - }).compile(); - - service = module.get(RestInputsService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); diff --git a/src/rest/rest-inputs/rest-inputs.service.ts b/src/rest/rest-inputs/rest-inputs.service.ts deleted file mode 100644 index 4dc8dab..0000000 --- a/src/rest/rest-inputs/rest-inputs.service.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { CreateRestInputDto } from './dto/create-rest-input.dto'; -import { UpdateRestInputDto } from './dto/update-rest-input.dto'; - -@Injectable() -export class RestInputsService { - create(createRestInputDto: CreateRestInputDto) { - return 'This action adds a new restInput'; - } - - findAll() { - return `This action returns all restInputs`; - } - - findOne(id: number) { - return `This action returns a #${id} restInput`; - } - - update(id: number, updateRestInputDto: UpdateRestInputDto) { - return `This action updates a #${id} restInput`; - } - - remove(id: number) { - return `This action removes a #${id} restInput`; - } -} diff --git a/src/rest/rest-outputs/dto/create-rest-output.dto.ts b/src/rest/rest-outputs/dto/create-rest-output.dto.ts deleted file mode 100644 index 9dc126e..0000000 --- a/src/rest/rest-outputs/dto/create-rest-output.dto.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { ApiProperty } from "@nestjs/swagger"; - -export class CreateRestOutputDto { - - @ApiProperty({ - description:"Output name", - example:"Test Output" - }) - name:string; - - @ApiProperty({ - description:"Plugin name", - example:"Test Plugin" - }) - plugin:string; - - @ApiProperty({ - description:"Plugin values", - example:{ - prefix:"test" - } - }) - values:{ - prefix:string - }; - - @ApiProperty({ - description:"Operation name", - example:"output" - }) - operation:string; -} diff --git a/src/rest/rest-outputs/dto/update-rest-output.dto.ts b/src/rest/rest-outputs/dto/update-rest-output.dto.ts deleted file mode 100644 index 902bffd..0000000 --- a/src/rest/rest-outputs/dto/update-rest-output.dto.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { PartialType } from '@nestjs/swagger'; -import { CreateRestOutputDto } from './create-rest-output.dto'; - -export class UpdateRestOutputDto extends PartialType(CreateRestOutputDto) {} diff --git a/src/rest/rest-outputs/entities/rest-output.entity.ts b/src/rest/rest-outputs/entities/rest-output.entity.ts deleted file mode 100644 index 7ccc372..0000000 --- a/src/rest/rest-outputs/entities/rest-output.entity.ts +++ /dev/null @@ -1 +0,0 @@ -export class RestOutput {} diff --git a/src/rest/rest-outputs/rest-outputs.controller.spec.ts b/src/rest/rest-outputs/rest-outputs.controller.spec.ts deleted file mode 100644 index 3640110..0000000 --- a/src/rest/rest-outputs/rest-outputs.controller.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { RestOutputsController } from './rest-outputs.controller'; -import { RestOutputsService } from './rest-outputs.service'; - -describe('RestOutputsController', () => { - let controller: RestOutputsController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [RestOutputsController], - providers: [RestOutputsService], - }).compile(); - - controller = module.get(RestOutputsController); - }); - - it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/src/rest/rest-outputs/rest-outputs.controller.ts b/src/rest/rest-outputs/rest-outputs.controller.ts deleted file mode 100644 index 1de86fe..0000000 --- a/src/rest/rest-outputs/rest-outputs.controller.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { Controller, Get, Post, Body, Headers, Param, Delete, Put } from '@nestjs/common'; -import { RestOutputsService } from './rest-outputs.service'; -import { CreateRestOutputDto } from './dto/create-rest-output.dto'; -import { UpdateRestOutputDto } from './dto/update-rest-output.dto'; -import axios from 'axios'; -import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; - -@ApiTags('Outputs') -@ApiBearerAuth() -@Controller('output') -export class RestOutputsController { - constructor(private readonly restOutputsService: RestOutputsService) {} - - @Post() - async create(@Body() body: CreateRestOutputDto,@Headers() headers) { - - const connectionResponse = await axios.post( - `${process.env.DEV_URL}/output`, - body, - { - headers:{ - "Authorization":headers.authorization, - "Content-Type":"application/json" - } - } - ) - - return connectionResponse.data - } - - @Get() - async list(@Headers() headers) { - - const connectionResponse = await axios.get( - `${process.env.DEV_URL}/output`, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - return connectionResponse.data - } - - @Get(':id') - async show(@Param('id') id: string,@Headers() headers) { - - const connectionResponse = await axios.get( - `${process.env.DEV_URL}/output/${id}`, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - return connectionResponse.data - } - - @Put(':id') - async update(@Param('id') id: string, @Body() body: UpdateRestOutputDto,@Headers() headers) { - - const connectionResponse = await axios.put( - `${process.env.DEV_URL}/output/${id}`, - body, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - return connectionResponse.data - } - - @Delete(':id') - async remove(@Param('id') id: string,@Headers() headers) { - - const connectionResponse = await axios.delete( - `${process.env.DEV_URL}/output/${id}`, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - return connectionResponse.data - } -} diff --git a/src/rest/rest-outputs/rest-outputs.module.ts b/src/rest/rest-outputs/rest-outputs.module.ts deleted file mode 100644 index 18d5a1b..0000000 --- a/src/rest/rest-outputs/rest-outputs.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Module } from '@nestjs/common'; -import { RestOutputsService } from './rest-outputs.service'; -import { RestOutputsController } from './rest-outputs.controller'; - -@Module({ - controllers: [RestOutputsController], - providers: [RestOutputsService] -}) -export class RestOutputsModule {} diff --git a/src/rest/rest-outputs/rest-outputs.service.spec.ts b/src/rest/rest-outputs/rest-outputs.service.spec.ts deleted file mode 100644 index 7457923..0000000 --- a/src/rest/rest-outputs/rest-outputs.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { RestOutputsService } from './rest-outputs.service'; - -describe('RestOutputsService', () => { - let service: RestOutputsService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [RestOutputsService], - }).compile(); - - service = module.get(RestOutputsService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); diff --git a/src/rest/rest-outputs/rest-outputs.service.ts b/src/rest/rest-outputs/rest-outputs.service.ts deleted file mode 100644 index fa4f905..0000000 --- a/src/rest/rest-outputs/rest-outputs.service.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { CreateRestOutputDto } from './dto/create-rest-output.dto'; -import { UpdateRestOutputDto } from './dto/update-rest-output.dto'; - -@Injectable() -export class RestOutputsService { - create(createRestOutputDto: CreateRestOutputDto) { - return 'This action adds a new restOutput'; - } - - findAll() { - return `This action returns all restOutputs`; - } - - findOne(id: number) { - return `This action returns a #${id} restOutput`; - } - - update(id: number, updateRestOutputDto: UpdateRestOutputDto) { - return `This action updates a #${id} restOutput`; - } - - remove(id: number) { - return `This action removes a #${id} restOutput`; - } -} diff --git a/src/rest/rest-pipelines/dto/create-rest-pipeline.dto.ts b/src/rest/rest-pipelines/dto/create-rest-pipeline.dto.ts deleted file mode 100644 index 7b56caa..0000000 --- a/src/rest/rest-pipelines/dto/create-rest-pipeline.dto.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { ApiProperty } from "@nestjs/swagger"; - -export class CreateRestPipelineDto { - - @ApiProperty({ - description:"Pipeline Input", - example:{ - id:"ac8f828a-708d-4f28-a5b4-0170eaf96843" - } - }) - input:{ - id:string - } - - @ApiProperty({ - description:"Pipeline Transformations", - example:[ - { - id:"b2579a1a-2874-47f6-b609-7568a2930468" - }, - { - id:"6bac1a1a-3037-474f-8211-c3ceb8ea04e8" - } - ] - }) - transformations:[ - { - id:string - } - ] - - @ApiProperty({ - description:"Pipeline Output", - example:{ - id:"06f9ce35-d9c0-4f95-a49b-c09ea00b8e48" - } - }) - output:{ - id:string - } - - @ApiProperty({ - description:"Pipeline Tags", - example:[] - }) - tags:string[] - - @ApiProperty({ - description:"Pipeline Name", - example:"Dadosfera Pipeline" - }) - name:string - - @ApiProperty({ - description:"Pipeline Description", - example:"Example pipeline" - }) - description:string -} diff --git a/src/rest/rest-pipelines/dto/update-rest-pipeline.dto.ts b/src/rest/rest-pipelines/dto/update-rest-pipeline.dto.ts deleted file mode 100644 index 0cccbef..0000000 --- a/src/rest/rest-pipelines/dto/update-rest-pipeline.dto.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { PartialType } from '@nestjs/swagger'; -import { CreateRestPipelineDto } from './create-rest-pipeline.dto'; - -export class UpdateRestPipelineDto extends PartialType(CreateRestPipelineDto) {} diff --git a/src/rest/rest-pipelines/entities/rest-pipeline.entity.ts b/src/rest/rest-pipelines/entities/rest-pipeline.entity.ts deleted file mode 100644 index fc1724f..0000000 --- a/src/rest/rest-pipelines/entities/rest-pipeline.entity.ts +++ /dev/null @@ -1 +0,0 @@ -export class RestPipeline {} diff --git a/src/rest/rest-pipelines/rest-pipelines.controller.spec.ts b/src/rest/rest-pipelines/rest-pipelines.controller.spec.ts deleted file mode 100644 index 6471cdc..0000000 --- a/src/rest/rest-pipelines/rest-pipelines.controller.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { RestPipelinesController } from './rest-pipelines.controller'; -import { RestPipelinesService } from './rest-pipelines.service'; - -describe('RestPipelinesController', () => { - let controller: RestPipelinesController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [RestPipelinesController], - providers: [RestPipelinesService], - }).compile(); - - controller = module.get(RestPipelinesController); - }); - - it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/src/rest/rest-pipelines/rest-pipelines.controller.ts b/src/rest/rest-pipelines/rest-pipelines.controller.ts deleted file mode 100644 index bce0df0..0000000 --- a/src/rest/rest-pipelines/rest-pipelines.controller.ts +++ /dev/null @@ -1,122 +0,0 @@ -import { Controller, Get, Post, Body, Headers, Param, Delete, Put } from '@nestjs/common'; -import { RestPipelinesService } from './rest-pipelines.service'; -import { CreateRestPipelineDto } from './dto/create-rest-pipeline.dto'; -import { UpdateRestPipelineDto } from './dto/update-rest-pipeline.dto'; -import axios from 'axios'; -import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; - -@ApiTags('Pipelines') -@ApiBearerAuth() -@Controller('pipeline') -export class RestPipelinesController { - constructor(private readonly restPipelinesService: RestPipelinesService) {} - - @Post() - async create(@Body() body: CreateRestPipelineDto,@Headers() headers) { - - const connectionResponse = await axios.post( - `${process.env.DEV_URL}/pipeline`, - body, - { - headers:{ - "Authorization":headers.authorization, - "Content-Type":"application/json" - } - } - ) - - return connectionResponse.data - } - - @Get() - async list(@Headers() headers) { - - const connectionResponse = await axios.get( - `${process.env.DEV_URL}/pipeline`, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - return connectionResponse.data - } - - @Get(':id/logs/details') - async showLogs(@Param('id') id: string,@Headers() headers) { - - const connectionResponse = await axios.get( - `${process.env.DEV_URL}/pipeline/${id}/logs/details`, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - return connectionResponse.data - } - - @Get(':id/status') - async showStatus(@Param('id') id: string,@Headers() headers) { - - const connectionResponse = await axios.get( - `${process.env.DEV_URL}/pipeline/${id}/status`, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - return connectionResponse.data - } - - @Get(':id') - async show(@Param('id') id: string,@Headers() headers) { - - const connectionResponse = await axios.get( - `${process.env.DEV_URL}/pipeline/${id}`, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - return connectionResponse.data - } - - @Put(':id') - async update(@Param('id') id: string, @Headers() headers, @Body() body: UpdateRestPipelineDto) { - - const connectionResponse = await axios.put( - `${process.env.DEV_URL}/pipeline/${id}`, - body, - { - headers:{ - "Authorization":headers.authorization, - "Content-Type":"application/json" - } - } - ) - - return connectionResponse.data - } - - @Delete(':id') - async remove(@Param('id') id: string,@Headers() headers) { - - const connectionResponse = await axios.delete( - `${process.env.DEV_URL}/pipeline/${id}`, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - return connectionResponse.data - } -} diff --git a/src/rest/rest-pipelines/rest-pipelines.module.ts b/src/rest/rest-pipelines/rest-pipelines.module.ts deleted file mode 100644 index 641517a..0000000 --- a/src/rest/rest-pipelines/rest-pipelines.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Module } from '@nestjs/common'; -import { RestPipelinesService } from './rest-pipelines.service'; -import { RestPipelinesController } from './rest-pipelines.controller'; - -@Module({ - controllers: [RestPipelinesController], - providers: [RestPipelinesService] -}) -export class RestPipelinesModule {} diff --git a/src/rest/rest-pipelines/rest-pipelines.service.spec.ts b/src/rest/rest-pipelines/rest-pipelines.service.spec.ts deleted file mode 100644 index a440ebe..0000000 --- a/src/rest/rest-pipelines/rest-pipelines.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { RestPipelinesService } from './rest-pipelines.service'; - -describe('RestPipelinesService', () => { - let service: RestPipelinesService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [RestPipelinesService], - }).compile(); - - service = module.get(RestPipelinesService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); diff --git a/src/rest/rest-pipelines/rest-pipelines.service.ts b/src/rest/rest-pipelines/rest-pipelines.service.ts deleted file mode 100644 index 66a831e..0000000 --- a/src/rest/rest-pipelines/rest-pipelines.service.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { CreateRestPipelineDto } from './dto/create-rest-pipeline.dto'; -import { UpdateRestPipelineDto } from './dto/update-rest-pipeline.dto'; - -@Injectable() -export class RestPipelinesService { - create(createRestPipelineDto: CreateRestPipelineDto) { - return 'This action adds a new restPipeline'; - } - - findAll() { - return `This action returns all restPipelines`; - } - - findOne(id: number) { - return `This action returns a #${id} restPipeline`; - } - - update(id: number, updateRestPipelineDto: UpdateRestPipelineDto) { - return `This action updates a #${id} restPipeline`; - } - - remove(id: number) { - return `This action removes a #${id} restPipeline`; - } -} diff --git a/src/rest/rest-transformations/dto/create-rest-transformation.dto.ts b/src/rest/rest-transformations/dto/create-rest-transformation.dto.ts deleted file mode 100644 index f29a451..0000000 --- a/src/rest/rest-transformations/dto/create-rest-transformation.dto.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { ApiProperty } from "@nestjs/swagger"; - -export class Transformation{ - transformations:[{ - type:string; - params:[{ - base_column:string, - column_name:string - }] - }] -} - -export class UpdateTransformation{ - transformations:[{ - inputSource:string; - table:string; - type:string; - params:[{ - base_column:string, - column_name:string - }] - }] -} - -export class CreateRestTransformationDto { - - @ApiProperty({ - description:"Array of transformations", - example:[ - { - type:"hide_full_name", - params:[ - { - base_column:"full_name", - column_name:"hiden_full_name" - } - ] - }, - { - type: "hide_cpf", - params: [ - { - base_column: "cpf", - column_name: "cpf_hashed" - } - ] - }, - ] - }) - transformations: Transformation | UpdateTransformation; - -} diff --git a/src/rest/rest-transformations/dto/update-rest-transformation.dto.ts b/src/rest/rest-transformations/dto/update-rest-transformation.dto.ts deleted file mode 100644 index 266b6bc..0000000 --- a/src/rest/rest-transformations/dto/update-rest-transformation.dto.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { PartialType } from '@nestjs/swagger'; -import { CreateRestTransformationDto } from './create-rest-transformation.dto'; - -export class UpdateRestTransformationDto extends PartialType(CreateRestTransformationDto) {} diff --git a/src/rest/rest-transformations/entities/rest-transformation.entity.ts b/src/rest/rest-transformations/entities/rest-transformation.entity.ts deleted file mode 100644 index aec27d5..0000000 --- a/src/rest/rest-transformations/entities/rest-transformation.entity.ts +++ /dev/null @@ -1 +0,0 @@ -export class RestTransformation {} diff --git a/src/rest/rest-transformations/rest-transformations.controller.spec.ts b/src/rest/rest-transformations/rest-transformations.controller.spec.ts deleted file mode 100644 index 8c3adb2..0000000 --- a/src/rest/rest-transformations/rest-transformations.controller.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { RestTransformationsController } from './rest-transformations.controller'; -import { RestTransformationsService } from './rest-transformations.service'; - -describe('RestTransformationsController', () => { - let controller: RestTransformationsController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [RestTransformationsController], - providers: [RestTransformationsService], - }).compile(); - - controller = module.get(RestTransformationsController); - }); - - it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/src/rest/rest-transformations/rest-transformations.controller.ts b/src/rest/rest-transformations/rest-transformations.controller.ts deleted file mode 100644 index edc0577..0000000 --- a/src/rest/rest-transformations/rest-transformations.controller.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { Controller, Get, Post, Body, Headers, Param, Delete, Put } from '@nestjs/common'; -import { RestTransformationsService } from './rest-transformations.service'; -import { CreateRestTransformationDto } from './dto/create-rest-transformation.dto'; -import { UpdateRestTransformationDto } from './dto/update-rest-transformation.dto'; -import axios from 'axios'; -import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; - -@ApiTags('Transformations') -@ApiBearerAuth() -@Controller('transformation') -export class RestTransformationsController { - constructor(private readonly restTransformationsService: RestTransformationsService) {} - - @Post() - async create(@Body() body: CreateRestTransformationDto,@Headers() headers) { - - const connectionResponse = await axios.post( - `${process.env.DEV_URL}/transformation`, - body, - { - headers:{ - "Authorization":headers.authorization, - "Content-Type":"application/json" - } - } - ) - - - return connectionResponse.data - } - - @Get() - async list(@Headers() headers) { - - const connectionResponse = await axios.get( - `${process.env.DEV_URL}/transformation`, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - - return connectionResponse.data - } - - @Get(':id') - async show(@Param('id') id: string,@Headers() headers) { - - const connectionResponse = await axios.get( - `${process.env.DEV_URL}/transformation/${id}`, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - - return connectionResponse.data - } - - @Put(':id') - async update(@Param('id') id: string, @Headers() headers, @Body() body: UpdateRestTransformationDto) { - - const connectionResponse = await axios.put( - `${process.env.DEV_URL}/transformation/${id}`, - body, - { - headers:{ - "Authorization":headers.authorization, - "Content-Type":"application/json" - } - } - ) - - - return connectionResponse.data - } - - @Delete(':id') - async remove(@Param('id') id: string,@Headers() headers) { - - const connectionResponse = await axios.delete( - `${process.env.DEV_URL}/transformation/${id}`, - { - headers:{ - "Authorization":headers.authorization - } - } - ) - - - return connectionResponse.data - } -} diff --git a/src/rest/rest-transformations/rest-transformations.module.ts b/src/rest/rest-transformations/rest-transformations.module.ts deleted file mode 100644 index 6dbe1a5..0000000 --- a/src/rest/rest-transformations/rest-transformations.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Module } from '@nestjs/common'; -import { RestTransformationsService } from './rest-transformations.service'; -import { RestTransformationsController } from './rest-transformations.controller'; - -@Module({ - controllers: [RestTransformationsController], - providers: [RestTransformationsService] -}) -export class RestTransformationsModule {} diff --git a/src/rest/rest-transformations/rest-transformations.service.spec.ts b/src/rest/rest-transformations/rest-transformations.service.spec.ts deleted file mode 100644 index d0f1a2a..0000000 --- a/src/rest/rest-transformations/rest-transformations.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { RestTransformationsService } from './rest-transformations.service'; - -describe('RestTransformationsService', () => { - let service: RestTransformationsService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [RestTransformationsService], - }).compile(); - - service = module.get(RestTransformationsService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); diff --git a/src/rest/rest-transformations/rest-transformations.service.ts b/src/rest/rest-transformations/rest-transformations.service.ts deleted file mode 100644 index 8183baf..0000000 --- a/src/rest/rest-transformations/rest-transformations.service.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { CreateRestTransformationDto } from './dto/create-rest-transformation.dto'; -import { UpdateRestTransformationDto } from './dto/update-rest-transformation.dto'; - -@Injectable() -export class RestTransformationsService { - create(createRestTransformationDto: CreateRestTransformationDto) { - return 'This action adds a new restTransformation'; - } - - findAll() { - return `This action returns all restTransformations`; - } - - findOne(id: number) { - return `This action returns a #${id} restTransformation`; - } - - update(id: number, updateRestTransformationDto: UpdateRestTransformationDto) { - return `This action updates a #${id} restTransformation`; - } - - remove(id: number) { - return `This action removes a #${id} restTransformation`; - } -} diff --git a/src/rest/rest-user/dto/create-rest-user.dto.ts b/src/rest/rest-user/dto/create-rest-user.dto.ts deleted file mode 100644 index bc5f892..0000000 --- a/src/rest/rest-user/dto/create-rest-user.dto.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { ApiProperty } from "@nestjs/swagger"; - -export class CreateRestUserDto { - - @ApiProperty({ - description:"User Email", - example:"dev@dadosfera.ai" - }) - email: string; - - @ApiProperty({ - description:"User Password", - example:"dadospassword123" - }) - password: string; - - @ApiProperty({ - description:"User Username", - example:"dev_fera" - }) - username: string; - - @ApiProperty({ - description:"User name", - example:"Fulano da Silva" - }) - name: string; - - @ApiProperty({ - description:"Customer id", - example:"dadosfera" - }) - customer_id: string; - - @ApiProperty({ - description:"User rules", - example:"['admin']" - }) - rules: string; -} diff --git a/src/rest/rest-user/dto/resendCode.dto.ts b/src/rest/rest-user/dto/resendCode.dto.ts deleted file mode 100644 index dd00c8d..0000000 --- a/src/rest/rest-user/dto/resendCode.dto.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { ApiProperty } from "@nestjs/swagger"; - - -export class ResendCodeDTO{ - @ApiProperty({ - description:"User username", - example:"dev_fera" - }) - username:string -} diff --git a/src/rest/rest-user/dto/update-rest-user.dto.ts b/src/rest/rest-user/dto/update-rest-user.dto.ts deleted file mode 100644 index a753406..0000000 --- a/src/rest/rest-user/dto/update-rest-user.dto.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { PartialType } from '@nestjs/swagger'; -import { CreateRestUserDto } from './create-rest-user.dto'; - -export class UpdateRestUserDto extends PartialType(CreateRestUserDto) {} diff --git a/src/rest/rest-user/dto/userAuth.dto.ts b/src/rest/rest-user/dto/userAuth.dto.ts deleted file mode 100644 index d8f3b1d..0000000 --- a/src/rest/rest-user/dto/userAuth.dto.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { ApiProperty } from "@nestjs/swagger"; - - - -export class UserAuthDTO{ - - @ApiProperty({ - description:"User username", - example:"dev_fera" - }) - username:string; - - @ApiProperty({ - description:"User password", - example:"dadospassword123" - }) - password:string; -} diff --git a/src/rest/rest-user/dto/userConfirmation.dto.ts b/src/rest/rest-user/dto/userConfirmation.dto.ts deleted file mode 100644 index 8c95261..0000000 --- a/src/rest/rest-user/dto/userConfirmation.dto.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { ApiProperty } from "@nestjs/swagger"; - - -export class UserConfirmationDTO{ - @ApiProperty({ - description:"User username", - example:"dev_fera" - }) - username:string; - - - @ApiProperty({ - description:"Received Confirmation Code", - example:"315246" - }) - confirmationCode:string; -} diff --git a/src/rest/rest-user/entities/rest-user.entity.ts b/src/rest/rest-user/entities/rest-user.entity.ts deleted file mode 100644 index 5e7bb30..0000000 --- a/src/rest/rest-user/entities/rest-user.entity.ts +++ /dev/null @@ -1 +0,0 @@ -export class RestUser {} diff --git a/src/rest/rest-user/rest-user.controller.spec.ts b/src/rest/rest-user/rest-user.controller.spec.ts deleted file mode 100644 index 58f5be9..0000000 --- a/src/rest/rest-user/rest-user.controller.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { RestUserController } from './rest-user.controller'; -import { RestUserService } from './rest-user.service'; - -describe('RestUserController', () => { - let controller: RestUserController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [RestUserController], - providers: [RestUserService], - }).compile(); - - controller = module.get(RestUserController); - }); - - it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/src/rest/rest-user/rest-user.controller.ts b/src/rest/rest-user/rest-user.controller.ts deleted file mode 100644 index 022a690..0000000 --- a/src/rest/rest-user/rest-user.controller.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common'; -import { RestUserService } from './rest-user.service'; -import { CreateRestUserDto } from './dto/create-rest-user.dto'; -import { UpdateRestUserDto } from './dto/update-rest-user.dto'; -import axios from 'axios'; -import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; -import { UserAuthDTO } from './dto/userAuth.dto'; -import { UserConfirmationDTO } from './dto/userConfirmation.dto'; -import { ResendCodeDTO } from './dto/resendCode.dto'; - -@ApiTags('Users') -@Controller('user') -export class RestUserController { - constructor(private readonly restUserService: RestUserService) {} - - @Post('/register') - async create(@Body() body: CreateRestUserDto) { - - - const connectionResponse = await axios.post( - `${process.env.DEV_URL}/user/register`, - body, - { - headers:{ - "Content-Type":"application/json" - } - } - ) - - return connectionResponse.data - } - - @Post('/auth') - async auth(@Body() body: UserAuthDTO) { - - - const connectionResponse = await axios.post( - `${process.env.DEV_URL}/user/auth`, - body, - { - headers:{ - "Content-Type":"application/json" - } - } - ) - - return connectionResponse.data - } - - @Post('/confirm') - async confirm(@Body() body: UserConfirmationDTO) { - - - const connectionResponse = await axios.post( - `${process.env.DEV_URL}/user/confirm`, - body, - { - headers:{ - "Content-Type":"application/json" - } - } - ) - - return connectionResponse.data - } - - @Post('/resendCode') - async resendCode(@Body() body: ResendCodeDTO) { - - - const connectionResponse = await axios.post( - `${process.env.DEV_URL}/user/resendCode`, - body, - { - headers:{ - "Content-Type":"application/json" - } - } - ) - - return connectionResponse.data - } - - -} diff --git a/src/rest/rest-user/rest-user.module.ts b/src/rest/rest-user/rest-user.module.ts deleted file mode 100644 index c6cf241..0000000 --- a/src/rest/rest-user/rest-user.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Module } from '@nestjs/common'; -import { RestUserService } from './rest-user.service'; -import { RestUserController } from './rest-user.controller'; - -@Module({ - controllers: [RestUserController], - providers: [RestUserService] -}) -export class RestUserModule {} diff --git a/src/rest/rest-user/rest-user.service.spec.ts b/src/rest/rest-user/rest-user.service.spec.ts deleted file mode 100644 index fab24a9..0000000 --- a/src/rest/rest-user/rest-user.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { RestUserService } from './rest-user.service'; - -describe('RestUserService', () => { - let service: RestUserService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [RestUserService], - }).compile(); - - service = module.get(RestUserService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); diff --git a/src/rest/rest-user/rest-user.service.ts b/src/rest/rest-user/rest-user.service.ts deleted file mode 100644 index 8f93a4a..0000000 --- a/src/rest/rest-user/rest-user.service.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { CreateRestUserDto } from './dto/create-rest-user.dto'; -import { UpdateRestUserDto } from './dto/update-rest-user.dto'; - -@Injectable() -export class RestUserService { - create(createRestUserDto: CreateRestUserDto) { - return 'This action adds a new restUser'; - } - - findAll() { - return `This action returns all restUser`; - } - - findOne(id: number) { - return `This action returns a #${id} restUser`; - } - - update(id: number, updateRestUserDto: UpdateRestUserDto) { - return `This action updates a #${id} restUser`; - } - - remove(id: number) { - return `This action removes a #${id} restUser`; - } -} diff --git a/src/transformations/config/grpc-client.ts b/src/transformations/config/grpc-client.ts deleted file mode 100644 index f918bed..0000000 --- a/src/transformations/config/grpc-client.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { join } from 'path'; -import { ClientOptions, Transport } from '@nestjs/microservices'; - -export const GrpcClientConfiguration: ClientOptions = { - transport: Transport.GRPC, - options: { - //url: `${process.env.USERS_SVC_URL}:${process.env.USERS_SVC_PORT}`, - url: `127.0.0.1:50054`, - package: 'transformation', - protoPath: join(__dirname, '..', 'proto', 'transformation.proto'), - loader: { - enums: String, - objects: true, - arrays: true, - }, - }, -}; diff --git a/src/transformations/dto/create-transformation.dto.ts b/src/transformations/dto/create-transformation.dto.ts deleted file mode 100644 index 1e2f42e..0000000 --- a/src/transformations/dto/create-transformation.dto.ts +++ /dev/null @@ -1,11 +0,0 @@ - - -export class CreateTransformationDto { - inputSource:string; - - table:string; - - type:string; - - params:string; -} diff --git a/src/transformations/dto/update-transformation.dto.ts b/src/transformations/dto/update-transformation.dto.ts deleted file mode 100644 index b9fcab6..0000000 --- a/src/transformations/dto/update-transformation.dto.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { PartialType } from '@nestjs/mapped-types'; -import { CreateTransformationDto } from './create-transformation.dto'; - -export class UpdateTransformationDto extends PartialType(CreateTransformationDto) { -} diff --git a/src/transformations/entities/transformation.entity.ts b/src/transformations/entities/transformation.entity.ts deleted file mode 100644 index 6f067a7..0000000 --- a/src/transformations/entities/transformation.entity.ts +++ /dev/null @@ -1,14 +0,0 @@ -export class Transformation { - - id:string; - - inputSource:string; - - table:string; - - type:string; - - params:string; - - -} diff --git a/src/transformations/proto/transformation.proto b/src/transformations/proto/transformation.proto deleted file mode 100644 index 55f553e..0000000 --- a/src/transformations/proto/transformation.proto +++ /dev/null @@ -1,49 +0,0 @@ -syntax = "proto3"; - -package transformation; - - -import "google/protobuf/timestamp.proto"; - - - -service TransformationService { - rpc Create(CreateTransformationRequest) returns (Transformation) {} - rpc Show(IdRequest) returns (Transformation) {} - rpc List(Empty) returns (ListResponse){} - rpc Update(UpdateTransformationRequest) returns (Transformation){} - rpc Remove(IdRequest) returns (Empty){} -} - -message Empty {} - -message IdRequest{ - string id = 1; -} - -message UpdateTransformationRequest{ - string id = 1; - string inputSource = 2; - string table = 3; - string type = 4; - string params = 5; -} - -message Transformation { - string id = 1; - string inputSource = 2; - string table = 3; - string type = 4; - string params = 5; -} - -message CreateTransformationRequest { - string inputSource = 1; - string table = 2; - string type = 3; - string params = 4; -} - -message ListResponse { - repeated Transformation transformations = 2; -} diff --git a/src/transformations/transformations.controller.spec.ts b/src/transformations/transformations.controller.spec.ts deleted file mode 100644 index 77899d9..0000000 --- a/src/transformations/transformations.controller.spec.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { TransformationsController } from './transformations.controller'; -import { TransformationsService } from './transformations.service'; - -describe('TransformationsController', () => { - let controller: TransformationsController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [TransformationsController], - providers: [TransformationsService], - }).compile(); - - controller = module.get( - TransformationsController, - ); - }); - - it('should be defined', () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/src/transformations/transformations.controller.ts b/src/transformations/transformations.controller.ts deleted file mode 100644 index c4206eb..0000000 --- a/src/transformations/transformations.controller.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { - Controller, - Delete, - Get, - OnModuleInit, - Param, - Post, - Put, -} from '@nestjs/common'; -import { - Client, - ClientGrpc, - MessagePattern, - Payload, -} from '@nestjs/microservices'; -import { TransformationsService } from './transformations.service'; -import { CreateTransformationDto } from './dto/create-transformation.dto'; -import { UpdateTransformationDto } from './dto/update-transformation.dto'; -import { ApiTags } from '@nestjs/swagger'; -import { GrpcClientConfiguration } from './config/grpc-client'; - -@Controller('transformation') -export class TransformationsController implements OnModuleInit { - @Client(GrpcClientConfiguration) - private transformationServiceClient: ClientGrpc; - - private transformationService: TransformationsService; - - onModuleInit() { - this.transformationService = - this.transformationServiceClient.getService( - 'TransformationService', - ); - } - - @Post() - create(@Payload() createTransformationDto: CreateTransformationDto[]) { - return createTransformationDto.map((transf) => - this.transformationService.create(transf), - ); - } - - @Get() - list() { - return this.transformationService.list(); - } - - @Get(':id') - show(@Payload() id: string) { - return this.transformationService.show(id); - } - - @Put(':id') - update( - @Param() id: string, - @Payload() updateTransformationDto: UpdateTransformationDto, - ) { - return this.transformationService.update(id, updateTransformationDto); - } - - @Delete(':id') - remove(@Param() id: string) { - return this.transformationService.remove(id); - } -} diff --git a/src/transformations/transformations.module.ts b/src/transformations/transformations.module.ts deleted file mode 100644 index 6e54df6..0000000 --- a/src/transformations/transformations.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Module } from '@nestjs/common'; -import { TransformationsService } from './transformations.service'; -import { TransformationsController } from './transformations.controller'; - -@Module({ - controllers: [TransformationsController], - providers: [TransformationsService], -}) -export class TransformationsModule {} diff --git a/src/transformations/transformations.service.spec.ts b/src/transformations/transformations.service.spec.ts deleted file mode 100644 index 1c78677..0000000 --- a/src/transformations/transformations.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { TransformationsService } from './transformations.service'; - -describe('TransformationsService', () => { - let service: TransformationsService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [TransformationsService], - }).compile(); - - service = module.get(TransformationsService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); diff --git a/src/transformations/transformations.service.ts b/src/transformations/transformations.service.ts deleted file mode 100644 index 44a373e..0000000 --- a/src/transformations/transformations.service.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { CreateTransformationDto } from './dto/create-transformation.dto'; -import { UpdateTransformationDto } from './dto/update-transformation.dto'; - -@Injectable() -export class TransformationsService { - create(createTransformationDto: CreateTransformationDto) { - return 'This action adds a new transformation'; - } - - list() { - return `This action returns all transformations`; - } - - show(id: string) { - return `This action returns a #${id} transformation`; - } - - update(id: string, updateTransformationDto: UpdateTransformationDto) { - return `This action updates a #${id} transformation`; - } - - remove(id: string) { - return `This action removes a #${id} transformation`; - } -} diff --git a/src/users-grpc-client/config/grpc-client.ts b/src/users-grpc-client/config/grpc-client.ts deleted file mode 100644 index ebec6ef..0000000 --- a/src/users-grpc-client/config/grpc-client.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { join } from 'path'; -import { ClientOptions, Transport } from '@nestjs/microservices'; - -export const GrpcClientConfiguration: ClientOptions = { - transport: Transport.GRPC, - options: { - //url: `${process.env.USERS_SVC_URL}:${process.env.USERS_SVC_PORT}`, - url: `127.0.0.1:50051`, - package: 'user', - protoPath: join(__dirname, '..', 'proto', 'user.proto'), - loader: { - enums: String, - objects: true, - arrays: true, - }, - }, -}; diff --git a/src/users-grpc-client/dto/create-users-grpc-client.dto.ts b/src/users-grpc-client/dto/create-users-grpc-client.dto.ts deleted file mode 100644 index b05e8f2..0000000 --- a/src/users-grpc-client/dto/create-users-grpc-client.dto.ts +++ /dev/null @@ -1 +0,0 @@ -export class CreateUsersGrpcClientDto {} diff --git a/src/users-grpc-client/dto/update-users-grpc-client.dto.ts b/src/users-grpc-client/dto/update-users-grpc-client.dto.ts deleted file mode 100644 index b71a964..0000000 --- a/src/users-grpc-client/dto/update-users-grpc-client.dto.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { PartialType } from '@nestjs/mapped-types'; -import { CreateUsersGrpcClientDto } from './create-users-grpc-client.dto'; - -export class UpdateUsersGrpcClientDto extends PartialType( - CreateUsersGrpcClientDto, -) { - id: number; -} diff --git a/src/users-grpc-client/entities/users-grcp-client.entity.ts b/src/users-grpc-client/entities/users-grcp-client.entity.ts deleted file mode 100644 index efc66ac..0000000 --- a/src/users-grpc-client/entities/users-grcp-client.entity.ts +++ /dev/null @@ -1 +0,0 @@ -export class UsersGrpcClient {} diff --git a/src/users-grpc-client/proto/user.proto b/src/users-grpc-client/proto/user.proto deleted file mode 100644 index 3ce8dad..0000000 --- a/src/users-grpc-client/proto/user.proto +++ /dev/null @@ -1,37 +0,0 @@ -syntax = "proto3"; - -package user; - - -import "google/protobuf/timestamp.proto"; - - - -service UserService { - rpc Create(UserRequest) returns (UserResponse) {} - rpc Show(Empty) returns (ShowResponse) {} -} - -message Empty {} - -message User { - int32 id = 1; - string name = 2; - string email = 3; - uint64 created_at = 4; - string updated_at = 5; -} - -message UserRequest { - string name = 1; - string email = 2; - -} - -message UserResponse { - User user = 1; -} - -message ShowResponse { - repeated UserResponse users = 1; -} diff --git a/src/users-grpc-client/users-grpc-client.controller.ts b/src/users-grpc-client/users-grpc-client.controller.ts deleted file mode 100644 index 88d9298..0000000 --- a/src/users-grpc-client/users-grpc-client.controller.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { - Get, - Post, - Controller, - Delete, - OnModuleInit, - Put, - Query, -} from '@nestjs/common'; -import { Client, ClientGrpc, Payload } from '@nestjs/microservices'; -import { CreateUsersGrpcClientDto } from './dto/create-users-grpc-client.dto'; -import { UpdateUsersGrpcClientDto } from './dto/update-users-grpc-client.dto'; -import { UsersGrpcClientService } from './users-grpc-client.service'; -import { GrpcClientConfiguration } from './config/grpc-client'; - -@Controller('users-grpc-client') -export class UsersGrpcClientController implements OnModuleInit { - @Client(GrpcClientConfiguration) - private usersServiceClient: ClientGrpc; - - private usersService: UsersGrpcClientService; - - onModuleInit() { - this.usersService = - this.usersServiceClient.getService('UserService'); - } - - @Post() - async create(@Payload() createUserDto: CreateUsersGrpcClientDto) { - return this.usersService.create(createUserDto); - } - - @Get() - findAll() { - return this.usersService.findAll(); - } - - @Get(':id') - findOne(@Query() id: string) { - return this.usersService.findOne(id); - } - - @Put() - update( - @Payload() updateUserDto: UpdateUsersGrpcClientDto, - @Query() id: string, - ) { - return this.usersService.update(id, updateUserDto); - } - - @Delete() - remove(@Query() id: string) { - return this.usersService.remove(id); - } -} diff --git a/src/users-grpc-client/users-grpc-client.module.ts b/src/users-grpc-client/users-grpc-client.module.ts deleted file mode 100644 index 6a10d16..0000000 --- a/src/users-grpc-client/users-grpc-client.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Module } from '@nestjs/common'; -import { UsersGrpcClientService } from './users-grpc-client.service'; -import { UsersGrpcClientController } from './users-grpc-client.controller'; - -@Module({ - controllers: [UsersGrpcClientController], - providers: [UsersGrpcClientService], -}) -export class UsersGrpcClientModule {} diff --git a/src/users-grpc-client/users-grpc-client.service.spec.ts b/src/users-grpc-client/users-grpc-client.service.spec.ts deleted file mode 100644 index 88bcaca..0000000 --- a/src/users-grpc-client/users-grpc-client.service.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { UsersGrpcClientService } from './users-grpc-client.service'; - -describe('UsersGrcpClientService', () => { - let service: UsersGrpcClientService; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [UsersGrpcClientService], - }).compile(); - - service = module.get(UsersGrpcClientService); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); -}); diff --git a/src/users-grpc-client/users-grpc-client.service.ts b/src/users-grpc-client/users-grpc-client.service.ts deleted file mode 100644 index 827816d..0000000 --- a/src/users-grpc-client/users-grpc-client.service.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { CreateUsersGrpcClientDto } from './dto/create-users-grpc-client.dto'; -import { UpdateUsersGrpcClientDto } from './dto/update-users-grpc-client.dto'; - -@Injectable() -export class UsersGrpcClientService { - create(createUsersGrcpClientDto: CreateUsersGrpcClientDto) { - return 'This action adds a new usersGrcpClient'; - } - - findAll() { - return `This action returns all usersGrcpClient`; - } - - findOne(id: string) { - return `This action returns a #${id} usersGrcpClient`; - } - - update(id: string, updateUsersGrcpClientDto: UpdateUsersGrpcClientDto) { - return `This action updates a #${id} usersGrcpClient`; - } - - remove(id: string) { - return `This action removes a #${id} usersGrcpClient`; - } -} diff --git a/src/utils/Authenticate.ts b/src/utils/Authenticate.ts index e9b4627..e36d40e 100644 --- a/src/utils/Authenticate.ts +++ b/src/utils/Authenticate.ts @@ -1,29 +1,20 @@ -import axios from "axios"; +import axios from 'axios'; +export class AuthenticateController { + private username: string; + private password: string; -export class AuthenticateController{ - - private username:string; - private password:string; - - constructor(){ - this.username = process.env.AUTH_USERNAME - this.password = process.env.AUTH_PASSWORD - } - - - - async authenticate():Promise{ - - const response = await axios.post(process.env.AUTH_ROUTE, - { - username:this.username, - password:this.password - } - ) - - return response.data.accessToken - } + constructor() { + this.username = process.env.AUTH_USERNAME; + this.password = process.env.AUTH_PASSWORD; + } + async authenticate(): Promise { + const response = await axios.post(process.env.AUTH_ROUTE, { + username: this.username, + password: this.password, + }); + return response.data.accessToken; + } } diff --git a/swagger.json b/swagger.json index 1ed2c5f..ce7c949 100644 --- a/swagger.json +++ b/swagger.json @@ -1 +1 @@ -{"openapi":"3.0.0","paths":{"/input/test-connection":{"post":{"operationId":"RestInputsController_testConnection","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/testConnectionDTO"}}}},"responses":{"201":{"description":""}},"tags":["Inputs"],"security":[{"bearer":[]}]}},"/input":{"post":{"operationId":"RestInputsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRestInputDto"}}}},"responses":{"201":{"description":""}},"tags":["Inputs"],"security":[{"bearer":[]}]},"get":{"operationId":"RestInputsController_list","parameters":[],"responses":{"200":{"description":""}},"tags":["Inputs"],"security":[{"bearer":[]}]}},"/input/{id}":{"get":{"operationId":"RestInputsController_show","parameters":[],"responses":{"200":{"description":""}},"tags":["Inputs"],"security":[{"bearer":[]}]},"put":{"operationId":"RestInputsController_update","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRestInputDto"}}}},"responses":{"200":{"description":""}},"tags":["Inputs"],"security":[{"bearer":[]}]},"delete":{"operationId":"RestInputsController_delete","parameters":[],"responses":{"200":{"description":""}},"tags":["Inputs"],"security":[{"bearer":[]}]}},"/output":{"post":{"operationId":"RestOutputsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRestOutputDto"}}}},"responses":{"201":{"description":""}},"tags":["Outputs"],"security":[{"bearer":[]}]},"get":{"operationId":"RestOutputsController_list","parameters":[],"responses":{"200":{"description":""}},"tags":["Outputs"],"security":[{"bearer":[]}]}},"/output/{id}":{"get":{"operationId":"RestOutputsController_show","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Outputs"],"security":[{"bearer":[]}]},"put":{"operationId":"RestOutputsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRestOutputDto"}}}},"responses":{"200":{"description":""}},"tags":["Outputs"],"security":[{"bearer":[]}]},"delete":{"operationId":"RestOutputsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Outputs"],"security":[{"bearer":[]}]}},"/enrichment":{"post":{"operationId":"RestEnrichmentsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRestEnrichmentDto"}}}},"responses":{"201":{"description":""}},"tags":["Enrichments"]},"get":{"operationId":"RestEnrichmentsController_list","parameters":[],"responses":{"200":{"description":""}},"tags":["Enrichments"]}},"/enrichment/{id}":{"get":{"operationId":"RestEnrichmentsController_show","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Enrichments"]},"put":{"operationId":"RestEnrichmentsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRestEnrichmentDto"}}}},"responses":{"200":{"description":""}},"tags":["Enrichments"]},"delete":{"operationId":"RestEnrichmentsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Enrichments"]}},"/transformation":{"post":{"operationId":"RestTransformationsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRestTransformationDto"}}}},"responses":{"201":{"description":""}},"tags":["Transformations"],"security":[{"bearer":[]}]},"get":{"operationId":"RestTransformationsController_list","parameters":[],"responses":{"200":{"description":""}},"tags":["Transformations"],"security":[{"bearer":[]}]}},"/transformation/{id}":{"get":{"operationId":"RestTransformationsController_show","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Transformations"],"security":[{"bearer":[]}]},"put":{"operationId":"RestTransformationsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRestTransformationDto"}}}},"responses":{"200":{"description":""}},"tags":["Transformations"],"security":[{"bearer":[]}]},"delete":{"operationId":"RestTransformationsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Transformations"],"security":[{"bearer":[]}]}},"/pipeline":{"post":{"operationId":"RestPipelinesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRestPipelineDto"}}}},"responses":{"201":{"description":""}},"tags":["Pipelines"],"security":[{"bearer":[]}]},"get":{"operationId":"RestPipelinesController_list","parameters":[],"responses":{"200":{"description":""}},"tags":["Pipelines"],"security":[{"bearer":[]}]}},"/pipeline/{id}/logs/details":{"get":{"operationId":"RestPipelinesController_showLogs","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Pipelines"],"security":[{"bearer":[]}]}},"/pipeline/{id}/status":{"get":{"operationId":"RestPipelinesController_showStatus","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Pipelines"],"security":[{"bearer":[]}]}},"/pipeline/{id}":{"get":{"operationId":"RestPipelinesController_show","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Pipelines"],"security":[{"bearer":[]}]},"put":{"operationId":"RestPipelinesController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRestPipelineDto"}}}},"responses":{"200":{"description":""}},"tags":["Pipelines"],"security":[{"bearer":[]}]},"delete":{"operationId":"RestPipelinesController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Pipelines"],"security":[{"bearer":[]}]}},"/user/register":{"post":{"operationId":"RestUserController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRestUserDto"}}}},"responses":{"201":{"description":""}},"tags":["Users"]}},"/user/auth":{"post":{"operationId":"RestUserController_auth","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserAuthDTO"}}}},"responses":{"201":{"description":""}},"tags":["Users"]}},"/user/confirm":{"post":{"operationId":"RestUserController_confirm","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserConfirmationDTO"}}}},"responses":{"201":{"description":""}},"tags":["Users"]}},"/user/resendCode":{"post":{"operationId":"RestUserController_resendCode","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResendCodeDTO"}}}},"responses":{"201":{"description":""}},"tags":["Users"]}},"/factory/start":{"get":{"operationId":"RestFactoryController_startDagFactory","parameters":[],"responses":{"200":{"description":""}},"tags":["Dag Factory"],"security":[{"bearer":[]}]}},"/factory/pipeline_params":{"get":{"operationId":"RestFactoryController_sendJSONSettingsToDagFactory","parameters":[],"responses":{"200":{"description":""}},"tags":["Dag Factory"],"security":[{"bearer":[]}]}},"/factory/start/{pipelineId}":{"get":{"operationId":"RestFactoryController_startDag","parameters":[{"name":"pipelineId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Dag Factory"],"security":[{"bearer":[]}]}},"/health":{"get":{"operationId":"HealthController_check","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":{"testConnectionDTO":{"type":"object","properties":{"plugin":{"type":"string","description":"Input Plugin Name","example":"mysql"},"values":{"type":"object","description":"Plugin name","example":{"plugin":"mysql","values":{"jdbc_user":"test","jdbc_password":"test1234","database":"users","endpoint":"dadosfera.test123.us-east-1.rds.amazonaws.com","schema":"user","port":"5432","engine":"mysql"}}}},"required":["plugin","values"]},"CronDTO":{"type":"object","properties":{"hours":{"description":"Hours to the cron","example":["3","7"],"type":"array","items":{"type":"string"}},"hour_interval":{"type":"boolean","description":"Boolean for hour interval","example":true},"hour_resourse":{"type":"boolean","description":"Boolean for hour resourse","example":true},"hour_resourse_value":{"type":"number","description":"Value for hour resourse","example":3},"month_day":{"description":"Month day to the cron","example":["3"],"type":"array","items":{"type":"string"}},"month_day_interval":{"type":"boolean","description":"Boolean for month day interval","example":true},"month_day_resourse":{"type":"boolean","description":"Boolean for month day resourse","example":false},"month_day_resourse_value":{"type":"number","description":"Value for month day resourse","example":null},"month":{"description":"Month to the cron","example":["3"],"type":"array","items":{"type":"string"}},"month_interval":{"type":"boolean","description":"Boolean from month interval","example":false},"month_resourse":{"type":"boolean","description":"Boolean from month resourse","example":false},"month_resourse_value":{"type":"number","description":"Value to month resourse","example":null},"week_days":{"description":"Week days to the cron","example":[],"type":"array","items":{"type":"string"}},"week_days_interval":{"type":"boolean","description":"Boolean for the week days","example":false},"week_days_resourse":{"type":"boolean","description":"Boolean for week day resourse","example":false},"week_days_resourse_value":{"type":"number","description":"Hours to the cron","example":null}},"required":["hours","hour_interval","hour_resourse","hour_resourse_value","month_day","month_day_interval","month_day_resourse","month_day_resourse_value","month","month_interval","month_resourse","month_resourse_value","week_days","week_days_interval","week_days_resourse","week_days_resourse_value"]},"CreateRestInputDto":{"type":"object","properties":{"cron":{"description":"Input CRON","example":{"hours":["3","7"],"hour_interval":true,"hour_resourse":true,"hour_resourse_value":3,"month_day":["3"],"month_day_interval":true,"month_day_resourse":false,"month_day_resourse_value":null,"month":["3"],"month_interval":false,"month_resourse":false,"month_resourse_value":null,"week_days":[],"week_days_interval":false,"week_days_resourse":false,"week_days_resourse_value":null},"allOf":[{"$ref":"#/components/schemas/CronDTO"}]},"name":{"type":"string","description":"Name of the input","example":"Test_Input"},"plugin":{"type":"string","description":"Plugin","example":"s3"},"values":{"type":"object","description":"Values for choosen input","example":{"jdbc_user":"user123","jdbc_password":"password123","database":"default_database","endpoint":"dadosfera-postgres-db.test123.us-east-1.rds.amazonaws.com","table":"test_table","port":"5432","engine":"postgresql"}},"operation":{"type":"string","description":"Operation name","example":"input"}},"required":["cron","name","plugin","values","operation"]},"UpdateRestInputDto":{"type":"object","properties":{"cron":{"description":"Input CRON","example":{"hours":["3","7"],"hour_interval":true,"hour_resourse":true,"hour_resourse_value":3,"month_day":["3"],"month_day_interval":true,"month_day_resourse":false,"month_day_resourse_value":null,"month":["3"],"month_interval":false,"month_resourse":false,"month_resourse_value":null,"week_days":[],"week_days_interval":false,"week_days_resourse":false,"week_days_resourse_value":null},"allOf":[{"$ref":"#/components/schemas/CronDTO"}]},"name":{"type":"string","description":"Name of the input","example":"Test_Input"},"plugin":{"type":"string","description":"Plugin","example":"s3"},"values":{"type":"object","description":"Values for choosen input","example":{"jdbc_user":"user123","jdbc_password":"password123","database":"default_database","endpoint":"dadosfera-postgres-db.test123.us-east-1.rds.amazonaws.com","table":"test_table","port":"5432","engine":"postgresql"}},"operation":{"type":"string","description":"Operation name","example":"input"}}},"CreateRestOutputDto":{"type":"object","properties":{"name":{"type":"string","description":"Output name","example":"Test Output"},"plugin":{"type":"string","description":"Plugin name","example":"Test Plugin"},"values":{"type":"object","description":"Plugin values","example":{"prefix":"test"}},"operation":{"type":"string","description":"Operation name","example":"output"}},"required":["name","plugin","values","operation"]},"UpdateRestOutputDto":{"type":"object","properties":{"name":{"type":"string","description":"Output name","example":"Test Output"},"plugin":{"type":"string","description":"Plugin name","example":"Test Plugin"},"values":{"type":"object","description":"Plugin values","example":{"prefix":"test"}},"operation":{"type":"string","description":"Operation name","example":"output"}}},"CreateRestEnrichmentDto":{"type":"object","properties":{}},"UpdateRestEnrichmentDto":{"type":"object","properties":{}},"CreateRestTransformationDto":{"type":"object","properties":{"transformations":{"type":"object","description":"Array of transformations","example":[{"type":"hide_full_name","params":[{"base_column":"full_name","column_name":"hiden_full_name"}]},{"type":"hide_cpf","params":[{"base_column":"cpf","column_name":"cpf_hashed"}]}]}},"required":["transformations"]},"UpdateRestTransformationDto":{"type":"object","properties":{"transformations":{"type":"object","description":"Array of transformations","example":[{"type":"hide_full_name","params":[{"base_column":"full_name","column_name":"hiden_full_name"}]},{"type":"hide_cpf","params":[{"base_column":"cpf","column_name":"cpf_hashed"}]}]}}},"CreateRestPipelineDto":{"type":"object","properties":{"input":{"type":"object","description":"Pipeline Input","example":{"id":"ac8f828a-708d-4f28-a5b4-0170eaf96843"}},"transformations":{"description":"Pipeline Transformations","example":[{"id":"b2579a1a-2874-47f6-b609-7568a2930468"},{"id":"6bac1a1a-3037-474f-8211-c3ceb8ea04e8"}],"type":"array","items":{"type":"string"}},"output":{"type":"object","description":"Pipeline Output","example":{"id":"06f9ce35-d9c0-4f95-a49b-c09ea00b8e48"}},"tags":{"description":"Pipeline Tags","example":[],"type":"array","items":{"type":"string"}},"name":{"type":"string","description":"Pipeline Name","example":"Dadosfera Pipeline"},"description":{"type":"string","description":"Pipeline Description","example":"Example pipeline"}},"required":["input","transformations","output","tags","name","description"]},"UpdateRestPipelineDto":{"type":"object","properties":{"input":{"type":"object","description":"Pipeline Input","example":{"id":"ac8f828a-708d-4f28-a5b4-0170eaf96843"}},"transformations":{"description":"Pipeline Transformations","example":[{"id":"b2579a1a-2874-47f6-b609-7568a2930468"},{"id":"6bac1a1a-3037-474f-8211-c3ceb8ea04e8"}],"type":"array","items":{"type":"string"}},"output":{"type":"object","description":"Pipeline Output","example":{"id":"06f9ce35-d9c0-4f95-a49b-c09ea00b8e48"}},"tags":{"description":"Pipeline Tags","example":[],"type":"array","items":{"type":"string"}},"name":{"type":"string","description":"Pipeline Name","example":"Dadosfera Pipeline"},"description":{"type":"string","description":"Pipeline Description","example":"Example pipeline"}}},"CreateRestUserDto":{"type":"object","properties":{"email":{"type":"string","description":"User Email","example":"dev@dadosfera.ai"},"password":{"type":"string","description":"User Password","example":"dadospassword123"},"username":{"type":"string","description":"User Username","example":"dev_fera"},"name":{"type":"string","description":"User name","example":"Fulano da Silva"},"customer_id":{"type":"string","description":"Customer id","example":"dadosfera"},"rules":{"type":"string","description":"User rules","example":"['admin']"}},"required":["email","password","username","name","customer_id","rules"]},"UserAuthDTO":{"type":"object","properties":{"username":{"type":"string","description":"User username","example":"dev_fera"},"password":{"type":"string","description":"User password","example":"dadospassword123"}},"required":["username","password"]},"UserConfirmationDTO":{"type":"object","properties":{"username":{"type":"string","description":"User username","example":"dev_fera"},"confirmationCode":{"type":"string","description":"Received Confirmation Code","example":"315246"}},"required":["username","confirmationCode"]},"ResendCodeDTO":{"type":"object","properties":{"username":{"type":"string","description":"User username","example":"dev_fera"}},"required":["username"]}}}} +{"openapi":"3.0.0","paths":{"/auth":{"post":{"operationId":"AuthController_signIn","parameters":[],"responses":{"201":{"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":{}}} \ No newline at end of file