From 16ee7a435e6515f7f253de8fc3fbb943a712a0cd Mon Sep 17 00:00:00 2001 From: Andriy Leliv Date: Mon, 19 Oct 2020 14:50:51 +0300 Subject: [PATCH] fix: count operation tags in stats command vs only global (#219) * fix: extend tags count logic * chore: moved total calculation to DefinitionRoot --- src/cli/stats.ts | 2 +- src/rules/other/stats.ts | 29 ++++++++++++++++++++++------- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/cli/stats.ts b/src/cli/stats.ts index f290cc15..d4632dff 100644 --- a/src/cli/stats.ts +++ b/src/cli/stats.ts @@ -21,7 +21,7 @@ const statsAccumulator: StatsAccumulator = { links: { metric: '🔗 Links', total: 0, color: 'cyan', items: new Set() }, pathItems: { metric: '➡️ Path Items', total: 0, color: 'green' }, operations: { metric: '👷 Operations', total: 0, color: 'yellow' }, - tags: { metric: '🔖 Tags', total: 0, color: 'white' }, + tags: { metric: '🔖 Tags', total: 0, color: 'white', items: new Set() }, } function printStatsStylish(statsAccumulator: StatsAccumulator) { diff --git a/src/rules/other/stats.ts b/src/rules/other/stats.ts index 62090d15..290d9dd7 100644 --- a/src/rules/other/stats.ts +++ b/src/rules/other/stats.ts @@ -1,4 +1,4 @@ -import { Oas3Parameter, OasRef } from '../../typings/openapi'; +import { Oas3Parameter, OasRef, Oas3Tag } from '../../typings/openapi'; import { Oas2Parameter } from '../../typings/swagger'; import { StatsAccumulator } from '../../typings/common'; @@ -6,21 +6,36 @@ export const Stats = (statsAccumulator: StatsAccumulator) => { return { ExternalDocs: { leave() { statsAccumulator.externalDocs.total++; }}, ref: { enter(ref: OasRef) { statsAccumulator.refs.items!.add(ref['$ref']); }}, - Tag: { enter() { statsAccumulator.tags.total++; }}, + Tag: { leave(tag: Oas3Tag) { statsAccumulator.tags.items!.add(tag.name); }}, Link: { leave(link: any) { statsAccumulator.links.items!.add(link.operationId); }}, - PathMap: { + DefinitionRoot: { leave() { statsAccumulator.parameters.total = statsAccumulator.parameters.items!.size; statsAccumulator.refs.total = statsAccumulator.refs.items!.size; statsAccumulator.links.total = statsAccumulator.links.items!.size; + statsAccumulator.tags.total = statsAccumulator.tags.items!.size; }, + }, + WebhooksMap: { + Operation: { + leave(operation: any) { + operation.tags.forEach((tag: string) => { statsAccumulator.tags.items!.add(tag); }) + } + } + }, + PathMap: { PathItem: { leave() { statsAccumulator.pathItems.total++; }, - Operation: { leave() { statsAccumulator.operations.total++; }}, + Operation: { + leave(operation: any) { + statsAccumulator.operations.total++; + operation.tags.forEach((tag: string) => { statsAccumulator.tags.items!.add(tag); }) + } + }, Parameter: { leave(parameter: Oas2Parameter | Oas3Parameter) { - statsAccumulator.parameters.items!.add(parameter.name) - }} - } + statsAccumulator.parameters.items!.add(parameter.name) + }}, + }, }, NamedSchemas: { Schema: { leave() { statsAccumulator.schemas.total++; }}