From ed966090116e631ef1d702e21a2c5e862bbf8d60 Mon Sep 17 00:00:00 2001 From: Victor Radael Date: Thu, 1 Dec 2022 14:56:41 -0300 Subject: [PATCH 1/6] FEAT: Upload CSV --- docsfera.json | 4 ++-- package-lock.json | 57 +++++++++++++---------------------------------- package.json | 4 ++-- 3 files changed, 20 insertions(+), 45 deletions(-) diff --git a/docsfera.json b/docsfera.json index 3642ccc..8b69ffc 100644 --- a/docsfera.json +++ b/docsfera.json @@ -3216,9 +3216,9 @@ } }, "info": { - "title": "Maestro - feat/incremental-table", + "title": "Maestro - main", "description": "Documentation for Maestro gateway", - "version": "16.11.2022 - 16:46", + "version": "1.12.2022 - 14:46", "contact": {} }, "tags": [], diff --git a/package-lock.json b/package-lock.json index 94fbd56..94feb7c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.4", - "@dadosfera/protospack-v2": "3.20.0", + "@dadosfera/protospack-v2": "v3.21.1-beta.2", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", @@ -36,7 +36,7 @@ "mixpanel": "^0.17.0", "passport": "^0.6.0", "passport-facebook": "^3.0.0", - "passport-forcedotcom": "^0.1.5", + "passport-forcedotcom": "^0.2.0", "passport-google-oauth20": "^2.0.0", "passport-hubspot-oauth2": "^1.0.3", "passport-mailchimp": "^1.1.0", @@ -1727,9 +1727,9 @@ } }, "node_modules/@dadosfera/protospack-v2": { - "version": "3.20.0", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.20.0.tgz", - "integrity": "sha512-eatmjfYmfD2Rqxi3L6/XDOqkImYc9PvChTTXO03RgiOk2IDEALvacPGp6j1bce2jfNMA2LoP3Bd1ugklecDPgg==", + "version": "3.21.1-beta.2", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.21.1-beta.2.tgz", + "integrity": "sha512-7lc52e6XwaeVXfLfKj/xVpZ1Ii88fd1OB4Uihr5v+OgdV6HNmqgPjGFt7nwP2IcAshFekgekUa6s9IdxqTaNGg==", "dependencies": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", @@ -8713,24 +8713,11 @@ } }, "node_modules/passport-forcedotcom": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/passport-forcedotcom/-/passport-forcedotcom-0.1.5.tgz", - "integrity": "sha512-raDRQqBJtTEHDxLkxLG+9sYE0xpPy9PqriMPbMy9jmpIcU2+mOq9PgczvUPrU8UjfcZp3gqkDHqujcUWiGOVNQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/passport-forcedotcom/-/passport-forcedotcom-0.2.0.tgz", + "integrity": "sha512-gRI5+zQK9iVAZ1hJgt3TkWLeDw8SYrNWUsmVk0d0RyvUviQ4mT52x3JbYRiyZefoeID8afmLsJH8VOHjWdPf3Q==", "dependencies": { - "passport-oauth2": "1.3.x" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/passport-forcedotcom/node_modules/passport-oauth2": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.3.0.tgz", - "integrity": "sha512-AisRXcC7Vx8WSx5C9O8UNib/Y91/IOphs5tImlOMs7T+QTEJdmS+OxgXSskbnDdGQT/8mU5T3yMT6136rBjYXg==", - "dependencies": { - "oauth": "0.9.x", - "passport-strategy": "1.x.x", - "uid2": "0.0.x" + "passport-oauth2": "^1.6.1" }, "engines": { "node": ">= 0.4.0" @@ -12330,9 +12317,9 @@ } }, "@dadosfera/protospack-v2": { - "version": "3.20.0", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.20.0.tgz", - "integrity": "sha512-eatmjfYmfD2Rqxi3L6/XDOqkImYc9PvChTTXO03RgiOk2IDEALvacPGp6j1bce2jfNMA2LoP3Bd1ugklecDPgg==", + "version": "3.21.1-beta.2", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.21.1-beta.2.tgz", + "integrity": "sha512-7lc52e6XwaeVXfLfKj/xVpZ1Ii88fd1OB4Uihr5v+OgdV6HNmqgPjGFt7nwP2IcAshFekgekUa6s9IdxqTaNGg==", "requires": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", @@ -17093,23 +17080,11 @@ } }, "passport-forcedotcom": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/passport-forcedotcom/-/passport-forcedotcom-0.1.5.tgz", - "integrity": "sha512-raDRQqBJtTEHDxLkxLG+9sYE0xpPy9PqriMPbMy9jmpIcU2+mOq9PgczvUPrU8UjfcZp3gqkDHqujcUWiGOVNQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/passport-forcedotcom/-/passport-forcedotcom-0.2.0.tgz", + "integrity": "sha512-gRI5+zQK9iVAZ1hJgt3TkWLeDw8SYrNWUsmVk0d0RyvUviQ4mT52x3JbYRiyZefoeID8afmLsJH8VOHjWdPf3Q==", "requires": { - "passport-oauth2": "1.3.x" - }, - "dependencies": { - "passport-oauth2": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.3.0.tgz", - "integrity": "sha512-AisRXcC7Vx8WSx5C9O8UNib/Y91/IOphs5tImlOMs7T+QTEJdmS+OxgXSskbnDdGQT/8mU5T3yMT6136rBjYXg==", - "requires": { - "oauth": "0.9.x", - "passport-strategy": "1.x.x", - "uid2": "0.0.x" - } - } + "passport-oauth2": "^1.6.1" } }, "passport-google-oauth20": { diff --git a/package.json b/package.json index e936e51..e08c445 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.4", - "@dadosfera/protospack-v2": "3.20.0", + "@dadosfera/protospack-v2": "v3.21.1-beta.2", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", @@ -52,7 +52,7 @@ "mixpanel": "^0.17.0", "passport": "^0.6.0", "passport-facebook": "^3.0.0", - "passport-forcedotcom": "^0.1.5", + "passport-forcedotcom": "^0.2.0", "passport-google-oauth20": "^2.0.0", "passport-hubspot-oauth2": "^1.0.3", "passport-mailchimp": "^1.1.0", From be228b7425fcc773b2907fbd1926cbe65f1425f7 Mon Sep 17 00:00:00 2001 From: Victor Radael Date: Thu, 1 Dec 2022 17:50:44 -0300 Subject: [PATCH 2/6] FEAT: upload 50MB file --- docsfera.json | 28 +++++++++++++++-- src/modules/pipelinesV2/pipelines-client.ts | 8 ++--- .../pipelinesV2/pipelines.controller.ts | 30 ++++++++++++++++++- src/modules/pipelinesV2/pipelines.service.ts | 21 +++++++++++++ 4 files changed, 80 insertions(+), 7 deletions(-) diff --git a/docsfera.json b/docsfera.json index 020f580..e4e2b79 100644 --- a/docsfera.json +++ b/docsfera.json @@ -2381,6 +2381,30 @@ ] } }, + "/pipelinesV2/upload": { + "post": { + "operationId": "PipelinesController_uploadFile", + "parameters": [], + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object" + } + } + } + } + } + }, + "tags": [ + "PipelinesV2" + ] + } + }, "/inputs/available-entities/{plugin}": { "get": { "operationId": "InputsController_getAvailableEntities", @@ -3233,9 +3257,9 @@ } }, "info": { - "title": "Maestro - main", + "title": "Maestro - feat/upload-csv", "description": "Documentation for Maestro gateway", - "version": "1.12.2022 - 14:46", + "version": "1.0.0", "contact": {} }, "tags": [], diff --git a/src/modules/pipelinesV2/pipelines-client.ts b/src/modules/pipelinesV2/pipelines-client.ts index 0ddce5a..37f942b 100644 --- a/src/modules/pipelinesV2/pipelines-client.ts +++ b/src/modules/pipelinesV2/pipelines-client.ts @@ -16,10 +16,10 @@ export class PipelinesClientConfiguration { options: { url: process.env.PIFACTORY_URL, package: [ProtoPackages.ReadPackage, ProtoPackages.WritePackage], - credentials: - process.env.LOCAL_ENV || process.env.ENV === 'local' - ? undefined - : credentials.createSsl(), + // credentials: + // process.env.LOCAL_ENV || process.env.ENV === 'local' + // ? undefined + // : credentials.createSsl(), protoPath: [ProtoPaths.ReadFilePath, ProtoPaths.WriteFilePath], loader: { keepCase: true, diff --git a/src/modules/pipelinesV2/pipelines.controller.ts b/src/modules/pipelinesV2/pipelines.controller.ts index c2d828a..49a4386 100644 --- a/src/modules/pipelinesV2/pipelines.controller.ts +++ b/src/modules/pipelinesV2/pipelines.controller.ts @@ -13,13 +13,19 @@ import { HttpCode, HttpStatus, Patch, + UseInterceptors, + UploadedFiles, } from '@nestjs/common'; import { + ApiConsumes, ApiCreatedResponse, ApiNoContentResponse, ApiTags, } from '@nestjs/swagger'; -import { AuthenticateCondition } from 'src/authentication/authentication.decorator'; +import { + AuthenticateCondition, + RequireAllPermissions, +} from 'src/authentication/authentication.decorator'; import { PERMISSIONS_GROUPS } from '../../authentication/permissions.enum'; import { PipelinesService } from './pipelines.service'; import { DadosferaLogger } from '@dadosfera/dadosfera-logs'; @@ -30,6 +36,7 @@ import { PackTheMetadata } from 'src/utils/ PackTheMetadata'; import { PipelinesService as OldPipelineService } from 'src/modules/pipelines/pipelines.service'; import { ICreatePipelineV2Req, IPipelineV2 } from './interfaces'; import { GrpcToHttpExceptionFilter } from 'src/error/grpc-to-http-exception.filter'; +import { FilesInterceptor } from '@nestjs/platform-express'; @UseFilters(new GrpcToHttpExceptionFilter()) @ApiTags('PipelinesV2') @@ -240,4 +247,25 @@ export class PipelinesController { await this.pipelinesClientService.remove({ id, metadata, user }); this.logger.info('PipelinesController - delete: OK'); } + + @Post('/upload') + @RequireAllPermissions(PERMISSIONS_GROUPS.PIPELINE.permissions.CREATE) + @ApiConsumes('multipart/form-data') + @UseInterceptors(FilesInterceptor('file')) + async uploadFile(@User() user: RequestUser, @UploadedFiles() files) { + this.logger.info('/upload - Upload Connector Route'); + const metadata = PackTheMetadata({ ...user }); + const promises = files.map(async (file) => { + return await this.pipelinesClientService.uploadFile( + { + file, + name: file.originalname.split('.')[0], + }, + metadata, + ); + }); + + const response = await Promise.all(promises); + return response; + } } diff --git a/src/modules/pipelinesV2/pipelines.service.ts b/src/modules/pipelinesV2/pipelines.service.ts index 7162314..47f8a40 100644 --- a/src/modules/pipelinesV2/pipelines.service.ts +++ b/src/modules/pipelinesV2/pipelines.service.ts @@ -1,5 +1,7 @@ import { BadRequestException, + HttpException, + HttpStatus, Inject, InternalServerErrorException, OnModuleInit, @@ -238,4 +240,23 @@ export class PipelinesService implements OnModuleInit { }, }; } + + async uploadFile(uploadFile, metadata) { + const body: Messages.PipelineV2UploadFileRequest = { + file: { + buffer: uploadFile.file.buffer, + mimetypes: uploadFile.file.mimetype, + }, + name: uploadFile.name, + }; + + return lastValueFrom( + this.pipelineWriteService.PipelineV2UploadFile(body, metadata), + ).catch((err) => { + throw new HttpException( + err.details, + err.code === 6 ? HttpStatus.CONFLICT : 400, + ); + }); + } } From ea7ec52e1f71b97660f5b2abe966a30bc311eedd Mon Sep 17 00:00:00 2001 From: Victor Radael Date: Thu, 1 Dec 2022 18:55:48 -0300 Subject: [PATCH 3/6] FEAT: upload 50MB file --- src/modules/pipelinesV2/pipelines-client.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/modules/pipelinesV2/pipelines-client.ts b/src/modules/pipelinesV2/pipelines-client.ts index 37f942b..0ddce5a 100644 --- a/src/modules/pipelinesV2/pipelines-client.ts +++ b/src/modules/pipelinesV2/pipelines-client.ts @@ -16,10 +16,10 @@ export class PipelinesClientConfiguration { options: { url: process.env.PIFACTORY_URL, package: [ProtoPackages.ReadPackage, ProtoPackages.WritePackage], - // credentials: - // process.env.LOCAL_ENV || process.env.ENV === 'local' - // ? undefined - // : credentials.createSsl(), + credentials: + process.env.LOCAL_ENV || process.env.ENV === 'local' + ? undefined + : credentials.createSsl(), protoPath: [ProtoPaths.ReadFilePath, ProtoPaths.WriteFilePath], loader: { keepCase: true, From 2c207f068c88fb193026d264879efde853f2f3ee Mon Sep 17 00:00:00 2001 From: Victor Radael Date: Mon, 5 Dec 2022 20:34:04 -0300 Subject: [PATCH 4/6] FEAT: Create Upload CSV Pipeline --- docsfera.json | 47 +++++++++++-- src/modules/pipelinesV2/interfaces.ts | 20 ++++++ .../pipelinesV2/pipelines.controller.ts | 66 ++++++++++++++----- 3 files changed, 114 insertions(+), 19 deletions(-) diff --git a/docsfera.json b/docsfera.json index e4e2b79..b4d4fae 100644 --- a/docsfera.json +++ b/docsfera.json @@ -2385,16 +2385,23 @@ "post": { "operationId": "PipelinesController_uploadFile", "parameters": [], + "requestBody": { + "required": true, + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/IUploadCSVFile" + } + } + } + }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "type": "object" - } + "type": "object" } } } @@ -5122,6 +5129,38 @@ "updated_at" ] }, + "IUploadCSVFile": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "encoding": { + "type": "string" + }, + "sep": { + "type": "string" + }, + "header": { + "type": "boolean" + } + }, + "required": [ + "file", + "name", + "description", + "encoding", + "sep", + "header" + ] + }, "AvailableEntity": { "type": "object", "properties": { diff --git a/src/modules/pipelinesV2/interfaces.ts b/src/modules/pipelinesV2/interfaces.ts index 5553c1a..2759545 100644 --- a/src/modules/pipelinesV2/interfaces.ts +++ b/src/modules/pipelinesV2/interfaces.ts @@ -66,3 +66,23 @@ export interface IGetPipelineLogsRequest { id: string; details: string; } + +export class IUploadCSVFile { + @ApiProperty({ format: 'binary' }) + file: string; + + @ApiProperty() + name: string; + + @ApiProperty() + description: string; + + @ApiProperty() + encoding: string; + + @ApiProperty() + sep: string; + + @ApiProperty() + header: boolean; +} diff --git a/src/modules/pipelinesV2/pipelines.controller.ts b/src/modules/pipelinesV2/pipelines.controller.ts index 49a4386..d891553 100644 --- a/src/modules/pipelinesV2/pipelines.controller.ts +++ b/src/modules/pipelinesV2/pipelines.controller.ts @@ -14,7 +14,7 @@ import { HttpStatus, Patch, UseInterceptors, - UploadedFiles, + UploadedFile, } from '@nestjs/common'; import { ApiConsumes, @@ -34,9 +34,13 @@ import { RequestUser, User } from 'src/authentication/user.decorator'; import { PackTheMetadata } from 'src/utils/ PackTheMetadata'; import { PipelinesService as OldPipelineService } from 'src/modules/pipelines/pipelines.service'; -import { ICreatePipelineV2Req, IPipelineV2 } from './interfaces'; +import { + ICreatePipelineV2Req, + IPipelineV2, + IUploadCSVFile, +} from './interfaces'; import { GrpcToHttpExceptionFilter } from 'src/error/grpc-to-http-exception.filter'; -import { FilesInterceptor } from '@nestjs/platform-express'; +import { FileInterceptor } from '@nestjs/platform-express'; @UseFilters(new GrpcToHttpExceptionFilter()) @ApiTags('PipelinesV2') @@ -251,21 +255,53 @@ export class PipelinesController { @Post('/upload') @RequireAllPermissions(PERMISSIONS_GROUPS.PIPELINE.permissions.CREATE) @ApiConsumes('multipart/form-data') - @UseInterceptors(FilesInterceptor('file')) - async uploadFile(@User() user: RequestUser, @UploadedFiles() files) { + @UseInterceptors( + FileInterceptor('file', { limits: { fileSize: 50 * 1000 * 1000 + 1 } }), + ) + async uploadFile( + @User() user: RequestUser, + @UploadedFile() file, + @Body() body: IUploadCSVFile, + ) { this.logger.info('/upload - Upload Connector Route'); const metadata = PackTheMetadata({ ...user }); - const promises = files.map(async (file) => { - return await this.pipelinesClientService.uploadFile( - { - file, - name: file.originalname.split('.')[0], - }, - metadata, - ); - }); + let name = `${new Date().getTime()}_${file.originalname.split('.')[0]}`; + body.name ? (name = `${new Date().getTime()}_${body.name}`) : name; + const response = await this.pipelinesClientService.uploadFile( + { + file, + name, + }, + metadata, + ); + + const { sep, header, encoding, description } = body; + + const p = { + connection_id: process.env.UPLOAD_FILE_AGENT_CONNECTION, + connector_name: 'Amazon S3', + connector_plugin: 'aws_s3', + connector_version: '1.0.0', + image_url: 'https://assets.dadosfera.ai/images/connectors/csv.svg', + name: body.name || file.originalname.split('.')[0], + description, + transformations_ids: [], + tags: [], + cron: '@once', + config: { cron: '@once', tables: [] }, + properties: { + engine: 'csv', + source_bucket: process.env.BUCKET_CUSTOMER_CSV_ASSETS, + source_prefix: name, + file_format_params: { sep, encoding, header: Boolean(header) }, + is_a_upload_csv: true, + }, + input_id: undefined, + }; + + const pipeline = await this.pipelinesClientService.create(p, metadata); + console.log(pipeline); - const response = await Promise.all(promises); return response; } } From eaddca7eb3c03e08530ba44aff4d606111f6807f Mon Sep 17 00:00:00 2001 From: Victor Radael Date: Tue, 6 Dec 2022 18:06:32 -0300 Subject: [PATCH 5/6] FEAT: Creat a Upload CSV Pipeline --- src/modules/pipelinesV2/pipelines.controller.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/modules/pipelinesV2/pipelines.controller.ts b/src/modules/pipelinesV2/pipelines.controller.ts index d891553..56baed6 100644 --- a/src/modules/pipelinesV2/pipelines.controller.ts +++ b/src/modules/pipelinesV2/pipelines.controller.ts @@ -277,13 +277,15 @@ export class PipelinesController { const { sep, header, encoding, description } = body; - const p = { + const [file_name, file_format] = file.originalname.split('.'); + + const upload_pipeline = { connection_id: process.env.UPLOAD_FILE_AGENT_CONNECTION, connector_name: 'Amazon S3', connector_plugin: 'aws_s3', connector_version: '1.0.0', image_url: 'https://assets.dadosfera.ai/images/connectors/csv.svg', - name: body.name || file.originalname.split('.')[0], + name: body.name || file_name, description, transformations_ids: [], tags: [], @@ -292,16 +294,18 @@ export class PipelinesController { properties: { engine: 'csv', source_bucket: process.env.BUCKET_CUSTOMER_CSV_ASSETS, - source_prefix: name, + source_prefix: `${user.customer_name}/${name}.${file_format}`, file_format_params: { sep, encoding, header: Boolean(header) }, is_a_upload_csv: true, }, input_id: undefined, }; - const pipeline = await this.pipelinesClientService.create(p, metadata); - console.log(pipeline); + const pipeline = await this.pipelinesClientService.create( + upload_pipeline, + metadata, + ); - return response; + return pipeline; } } From ff5e735121132b771b0ad8d855f1aaf14697d1ee Mon Sep 17 00:00:00 2001 From: Victor Radael Date: Fri, 9 Dec 2022 08:29:27 -0300 Subject: [PATCH 6/6] FEAT: Find a file pipeline --- package-lock.json | 72 +++++++++++++++++++++++++++++------------------ package.json | 2 +- 2 files changed, 46 insertions(+), 28 deletions(-) diff --git a/package-lock.json b/package-lock.json index 94feb7c..335e97e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.4", - "@dadosfera/protospack-v2": "v3.21.1-beta.2", + "@dadosfera/protospack-v2": "v3.22.0-beta.3", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", @@ -1727,9 +1727,9 @@ } }, "node_modules/@dadosfera/protospack-v2": { - "version": "3.21.1-beta.2", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.21.1-beta.2.tgz", - "integrity": "sha512-7lc52e6XwaeVXfLfKj/xVpZ1Ii88fd1OB4Uihr5v+OgdV6HNmqgPjGFt7nwP2IcAshFekgekUa6s9IdxqTaNGg==", + "version": "3.22.0-beta.3", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.22.0-beta.3.tgz", + "integrity": "sha512-oLKfWyNLvnnZNcBQqzJWD3IstFBg+CGFXCfNj6buvHysktlDQ8qsZFValLt+DsCXyvIC18WXkSCiukili80v4g==", "dependencies": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", @@ -3699,8 +3699,9 @@ }, "node_modules/asap": { "version": "2.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true }, "node_modules/asn1.js": { "version": "5.4.1", @@ -4705,9 +4706,10 @@ } }, "node_modules/dezalgo": { - "version": "1.0.3", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "dev": true, - "license": "ISC", "dependencies": { "asap": "^2.0.0", "wrappy": "1" @@ -5902,23 +5904,28 @@ } }, "node_modules/formidable": { - "version": "2.0.1", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.1.tgz", + "integrity": "sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ==", "dev": true, - "license": "MIT", "dependencies": { - "dezalgo": "1.0.3", - "hexoid": "1.0.0", - "once": "1.4.0", - "qs": "6.9.3" + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" }, "funding": { "url": "https://ko-fi.com/tunnckoCore/commissions" } }, "node_modules/formidable/node_modules/qs": { - "version": "6.9.3", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, - "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { "node": ">=0.6" }, @@ -12317,9 +12324,9 @@ } }, "@dadosfera/protospack-v2": { - "version": "3.21.1-beta.2", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.21.1-beta.2.tgz", - "integrity": "sha512-7lc52e6XwaeVXfLfKj/xVpZ1Ii88fd1OB4Uihr5v+OgdV6HNmqgPjGFt7nwP2IcAshFekgekUa6s9IdxqTaNGg==", + "version": "3.22.0-beta.3", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.22.0-beta.3.tgz", + "integrity": "sha512-oLKfWyNLvnnZNcBQqzJWD3IstFBg+CGFXCfNj6buvHysktlDQ8qsZFValLt+DsCXyvIC18WXkSCiukili80v4g==", "requires": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", @@ -13662,6 +13669,8 @@ }, "asap": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true }, "asn1.js": { @@ -14359,7 +14368,9 @@ "dev": true }, "dezalgo": { - "version": "1.0.3", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "dev": true, "requires": { "asap": "^2.0.0", @@ -15201,18 +15212,25 @@ } }, "formidable": { - "version": "2.0.1", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.1.tgz", + "integrity": "sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ==", "dev": true, "requires": { - "dezalgo": "1.0.3", - "hexoid": "1.0.0", - "once": "1.4.0", - "qs": "6.9.3" + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" }, "dependencies": { "qs": { - "version": "6.9.3", - "dev": true + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } } } }, diff --git a/package.json b/package.json index e08c445..c4524e9 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.4", - "@dadosfera/protospack-v2": "v3.21.1-beta.2", + "@dadosfera/protospack-v2": "v3.22.0-beta.3", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7",