Skip to content

Commit 8073a1b

Browse files
committed
fix: issues found during dev-test
1 parent f72c004 commit 8073a1b

File tree

3 files changed

+24
-7
lines changed

3 files changed

+24
-7
lines changed

src/components/package.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,12 @@ export const createVersionPackage = async (
9595
return await zip.buildResult(options)
9696

9797
case BUILD_TYPE.EXPORT_VERSION:
98+
if (buildResult.config.format !== HTML_EXPORT_GROUP_FORMAT && buildResult.exportDocuments.length === 1) {
99+
return Buffer.from(await dumpRestDocument(buildResultDto.exportDocuments[0], ctx.config.format).arrayBuffer())
100+
}
101+
await createExportDocumentDataFiles(zip, buildResultDto.exportDocuments, ctx)
102+
return await zip.buildResult(options)
103+
98104
case BUILD_TYPE.EXPORT_REST_OPERATIONS_GROUP:
99105
await createExportDocumentDataFiles(zip, buildResultDto.exportDocuments, ctx)
100106
return await zip.buildResult(options)

src/strategies/export-version.strategy.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import { OpenApiExtensionKey } from '@netcracker/qubership-apihub-api-unifier'
3838
import { isRestDocument, isTextDocument } from '../apitypes'
3939

4040
function extractTypeAndSubtype(type: string): string {
41-
return type.split('.')[0]
41+
return type.split(';')[0]
4242
}
4343

4444
async function prepareData(file: File): Promise<ZippableDocument['data']> {
@@ -107,15 +107,17 @@ export class ExportVersionStrategy implements BuilderStrategy {
107107

108108
buildResult.exportDocuments.push(...transformedDocuments)
109109

110-
if (buildResult.exportDocuments.length === 1) {
111-
buildResult.exportFileName = createSingleFileExportName(packageId, version, getDocumentTitle(buildResult.exportDocuments[0].fileId), format)
112-
return buildResult
113-
}
114-
115110
if (format === HTML_EXPORT_GROUP_FORMAT) {
116111
const readme = buildResult.exportDocuments.find(({fileId}) => fileId.toLowerCase() === 'readme.md')?.description
117112
buildResult.exportDocuments.push(createExportDocument('index.html', await generateIndexHtmlPage(packageId, version, generatedHtmlExportDocuments, readme)))
118113
buildResult.exportDocuments.push(...await createCommonStaticExportDocuments(packageId, version))
114+
buildResult.exportFileName = `${packageId}_${version}.zip`
115+
return buildResult
116+
}
117+
118+
if (buildResult.exportDocuments.length === 1) {
119+
buildResult.exportFileName = createSingleFileExportName(packageId, version, getDocumentTitle(buildResult.exportDocuments[0].fileId), format)
120+
return buildResult
119121
}
120122

121123
buildResult.exportFileName = `${packageId}_${version}.zip`

src/utils/export.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,21 @@ export async function generateHtmlPage(document: string, fileTitle: string, pack
6262
.replace('{{packageName}}', packageId)
6363
.replace('{{version}}', version)
6464
.replace('{{breadcrumbs}}', breadcrumbs)
65-
.replace('{{spec}}', document)
65+
.replace('{{spec}}', escapeHTML(document))
6666
// todo use packageName instead of packageId
6767
.replace('{{packageNameAndVersion}}', `${packageId} ${version}`)
6868
return new Blob([filled])
6969
}
7070

71+
function escapeHTML(str: string): string {
72+
return str
73+
.replace(/&/g, '&amp;')
74+
.replace(/'/g, '&#39;')
75+
.replace(/</g, '&lt;')
76+
.replace(/>/g, '&gt;')
77+
.replace(/"/g, '&#34;')
78+
}
79+
7180
async function generateReadmeParts(readme?: string): Promise<[string, string]> {
7281
if (!readme) {
7382
return ['', '']

0 commit comments

Comments
 (0)