Skip to content

Commit 40f8436

Browse files
committed
refactor: refine types
1 parent 357c3ff commit 40f8436

File tree

16 files changed

+84
-44
lines changed

16 files changed

+84
-44
lines changed

src/apitypes/unknown/unknown.parser.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import YAML from 'js-yaml'
1818

1919
import { DOCUMENT_TYPE, FILE_FORMAT, SUPPORTED_FILE_FORMATS } from '../../consts'
20-
import { BinaryFile, FILE_KIND, TextFile } from '../../types/internal'
20+
import { BinaryFile, FILE_KIND, FileFormat, TextFile } from '../../types/internal'
2121
import { getFileExtension } from '../../utils'
2222

2323
export const parseUnknownFile = async (fileId: string, source: Blob): Promise<TextFile | undefined> => {
@@ -47,6 +47,6 @@ export const parseUnknownFile = async (fileId: string, source: Blob): Promise<Te
4747

4848
export const unknownParsedFile = (fileId: string, source: Blob): BinaryFile => {
4949
const extension = getFileExtension(fileId)
50-
const format = SUPPORTED_FILE_FORMATS.includes(extension) ? extension : FILE_FORMAT.UNKNOWN
50+
const format = (SUPPORTED_FILE_FORMATS as string[]).includes(extension) ? extension as FileFormat : FILE_FORMAT.UNKNOWN
5151
return { fileId, type: DOCUMENT_TYPE.UNKNOWN, format: format, source, kind: FILE_KIND.BINARY }
5252
}

src/builder.ts

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,9 @@ import {
2525
PackageId,
2626
ResolvedComparisonSummary,
2727
ResolvedDeprecatedOperations,
28-
ResolvedDocuments,
28+
ResolvedGroupDocuments,
2929
ResolvedOperations,
3030
ResolvedVersionOperationsHashMap,
31-
VALIDATION_RULES_SEVERITY_LEVEL_WARNING,
3231
VersionId,
3332
VersionsComparison,
3433
} from './types'
@@ -172,7 +171,7 @@ export class PackageVersionBuilder implements IPackageVersionBuilder {
172171
config: this.config,
173172
configuration: this.params.configuration,
174173
builderRunOptions: this.builderRunOptions,
175-
versionDocumentsResolver: this.versionDocumentsResolver.bind(this),
174+
groupDocumentsResolver: this.groupDocumentsResolver.bind(this),
176175
templateResolver: this.params.resolvers.templateResolver,
177176
versionLabels: this.config.metadata?.versionLabels as Array<string>,
178177
}
@@ -336,20 +335,20 @@ export class PackageVersionBuilder implements IPackageVersionBuilder {
336335
return operations
337336
}
338337

339-
async versionDocumentsResolver(
338+
async groupDocumentsResolver(
340339
apiType: OperationsApiType,
341340
version: VersionId,
342341
packageId: PackageId,
343342
filterByOperationGroup: string,
344-
): Promise<ResolvedDocuments | null> {
343+
): Promise<ResolvedGroupDocuments | null> {
345344
packageId = packageId ?? this.config.packageId
346345

347-
const { versionDocumentsResolver } = this.params.resolvers
348-
if (!versionDocumentsResolver) {
349-
throw new Error('No versionDocumentsResolver provided')
346+
const { groupDocumentsResolver } = this.params.resolvers
347+
if (!groupDocumentsResolver) {
348+
throw new Error('No groupDocumentsResolver provided')
350349
}
351350

352-
const documents = await versionDocumentsResolver(
351+
const documents = await groupDocumentsResolver(
353352
apiType,
354353
version,
355354
packageId,
@@ -542,7 +541,7 @@ export class PackageVersionBuilder implements IPackageVersionBuilder {
542541
return this.parsedFiles.get(fileId) ?? null
543542
}
544543

545-
if (SUPPORTED_FILE_FORMATS.includes(getFileExtension(fileId))) {
544+
if ((SUPPORTED_FILE_FORMATS as string[]).includes(getFileExtension(fileId))) {
546545
for (const { parser } of this.apiBuilders) {
547546
try {
548547
// todo check source.type

src/components/document.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616

1717
import { BuildConfigFile, BuilderContext, File, FILE_KIND, TextFile, VersionDocument } from '../types'
18-
import { API_KIND, API_KIND_LABEL, DOCUMENT_TYPE } from '../consts'
18+
import { API_KIND, API_KIND_LABEL, DOCUMENT_TYPE, FILE_FORMAT_UNKNOWN } from '../consts'
1919
import { getDocumentTitle, getFileExtension, rawToApiKind } from '../utils'
2020
import { buildBinaryDocument, unknownApiBuilder } from '../apitypes'
2121

@@ -24,7 +24,7 @@ export const buildErrorDocument = (file: BuildConfigFile, parsedFile?: TextFile)
2424
return {
2525
fileId: fileId,
2626
type: DOCUMENT_TYPE.UNKNOWN,
27-
format: getFileExtension(fileId),
27+
format: FILE_FORMAT_UNKNOWN,
2828
data: '',
2929
slug,
3030
publish,

src/consts.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ export const FILE_FORMAT_UNKNOWN = 'unknown'
114114
export const FILE_FORMAT_GRAPHQL = 'graphql'
115115
export const FILE_FORMAT_GQL = 'gql'
116116
export const FILE_FORMAT_MD = 'md'
117+
export const FILE_FORMAT_PROTO = 'proto'
117118

118119
export const FILE_FORMAT = {
119120
JSON: FILE_FORMAT_JSON,
@@ -123,7 +124,8 @@ export const FILE_FORMAT = {
123124
GRAPHQL: FILE_FORMAT_GRAPHQL,
124125
GQL: FILE_FORMAT_GQL,
125126
MD: FILE_FORMAT_MD,
126-
}
127+
PROTO: FILE_FORMAT_PROTO,
128+
} as const
127129

128130
export const SUPPORTED_FILE_FORMATS = Object.values(FILE_FORMAT)
129131

src/strategies/document-group.strategy.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import {
2121
BuildTypeContexts,
2222
FileFormat,
2323
JSON_EXPORT_GROUP_FORMAT,
24-
ResolvedDocument,
24+
ResolvedGroupDocument,
2525
ResolvedReferenceMap,
2626
VersionDocument,
2727
} from '../types'
@@ -41,7 +41,7 @@ import { INLINE_REFS_FLAG, NORMALIZE_OPTIONS } from '../consts'
4141
import { normalize } from '@netcracker/qubership-apihub-api-unifier'
4242
import { calculateSpecRefs, extractCommonPathItemProperties } from '../apitypes/rest/rest.operation'
4343

44-
async function getTransformedDocument(document: ResolvedDocument, format: FileFormat, packages: ResolvedReferenceMap): Promise<VersionRestDocument> {
44+
async function getTransformedDocument(document: ResolvedGroupDocument, format: FileFormat, packages: ResolvedReferenceMap): Promise<VersionRestDocument> {
4545
const versionDocument = toVersionDocument(document, format)
4646

4747
const source = extractDocumentData(versionDocument)
@@ -88,7 +88,7 @@ export class DocumentGroupStrategy implements BuilderStrategy {
8888

8989
const builderContextObject = builderContext(config)
9090

91-
const { documents, packages } = await builderContextObject.versionDocumentsResolver(
91+
const { documents, packages } = await builderContextObject.groupDocumentsResolver(
9292
REST_API_TYPE,
9393
version,
9494
packageId,

src/strategies/merged-document-group.strategy.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ export class MergedDocumentGroupStrategy extends DocumentGroupStrategy {
7676
buildResult.merged = {
7777
fileId: info.title,
7878
type: firstDocument.type,
79+
// todo html will be handled in api-processor
80+
// @ts-ignore
7981
format: format,
8082
data: mergeOpenapiDocuments(specs, info, templateDocument),
8183
slug: info.title,

src/types/external/documents.ts

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,29 +16,57 @@
1616

1717
import { OperationsApiType, PackageId, VersionId } from './types'
1818
import { ResolvedReferenceMap } from './references'
19+
import { FileFormat } from '../internal'
1920

2021
export type VersionDocumentsResolver = (
2122
apiType: OperationsApiType,
2223
version: VersionId,
2324
packageId: PackageId,
2425
filterByOperationGroup: string,
25-
) => Promise<ResolvedDocuments | null>
26+
) => Promise<ResolvedVersionDocuments | null>
2627

27-
export type ResolvedDocuments = {
28-
documents: ReadonlyArray<ResolvedDocument>
28+
export type ResolvedVersionDocuments = {
29+
documents: ReadonlyArray<ResolvedVersionDocument>
2930
packages: ResolvedReferenceMap
3031
}
3132

32-
export type ResolvedDocument = {
33+
export type ResolvedVersionDocument = {
3334
fileId: string
3435
filename: string
3536
slug: string
3637
type: string
37-
format: string
38+
format: FileFormat
3839
title: string
3940
version?: string
40-
labels: string[]
41+
labels?: Labels
42+
packageRef?: string
43+
}
44+
45+
export type Labels = string[]
46+
47+
export type GroupDocumentsResolver = (
48+
apiType: OperationsApiType,
49+
version: VersionId,
50+
packageId: PackageId,
51+
filterByOperationGroup: string,
52+
) => Promise<ResolvedGroupDocuments | null>
53+
54+
export type ResolvedGroupDocuments = {
55+
documents: ReadonlyArray<ResolvedGroupDocument>
56+
packages: ResolvedReferenceMap
57+
}
58+
59+
export type ResolvedGroupDocument = {
60+
fileId: string
61+
filename: string
62+
slug: string
63+
type: string
64+
format: FileFormat
65+
title: string
66+
version?: string
67+
labels?: Labels
4168
includedOperationIds?: string[]
4269
data?: string
4370
packageRef?: string
71+
description: string
4472
}

src/types/external/resolvers.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
import { VersionComparisonResolver } from './comparison'
1818
import { VersionDeprecatedResolver } from './deprecated'
19-
import { VersionDocumentsResolver } from './documents'
19+
import { GroupDocumentsResolver, VersionDocumentsResolver } from './documents'
2020
import { VersionOperationsResolver } from './operations'
2121
import { VersionReferencesResolver } from './references'
2222
import { VersionResolver } from './version'
@@ -32,6 +32,7 @@ export interface BuilderResolvers {
3232
versionReferencesResolver?: VersionReferencesResolver
3333
versionDeprecatedResolver?: VersionDeprecatedResolver
3434
versionComparisonResolver?: VersionComparisonResolver
35+
groupDocumentsResolver?: GroupDocumentsResolver
3536
versionDocumentsResolver?: VersionDocumentsResolver
3637
templateResolver?: TemplateResolver
3738
}

src/types/internal/apiBuilder.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import {
2323
PackageId,
2424
ResolvedOperation,
2525
VersionDeprecatedResolver,
26-
VersionDocumentsResolver,
26+
GroupDocumentsResolver,
2727
VersionId,
2828
} from '../external'
2929
import { CompareContext, OperationChanges } from './compare'
@@ -54,7 +54,7 @@ export interface BuilderContext<T = any> {
5454
config: BuildConfig
5555
builderRunOptions: BuilderRunOptions
5656
configuration?: BuilderConfiguration
57-
versionDocumentsResolver: VersionDocumentsResolver
57+
groupDocumentsResolver: GroupDocumentsResolver
5858
templateResolver?: TemplateResolver
5959
versionLabels?: Array<string>
6060
}

src/types/internal/documents.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export interface VersionDocuments {
2424
export interface VersionDocument<T = any> {
2525
fileId: FileId
2626
type: string
27-
format: string
27+
format: FileFormat
2828
data: T
2929
slug: string
3030
title: string

0 commit comments

Comments
 (0)