ts-openapi-codegen 2.1.0-beta.6 → 2.1.0-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/README.rus.md +3 -0
- package/dist/cli/analyzeDiff/__tests__/analyzeDiff.cli.test.js +9 -0
- package/dist/cli/analyzeDiff/__tests__/analyzeDiffRenameAndInvalidRegex.test.js +9 -0
- package/dist/cli/analyzeDiff/__tests__/analyzeDiffTypeCoercion.test.js +9 -0
- package/dist/cli/analyzeDiff/ignoreRules.d.ts +0 -6
- package/dist/cli/analyzeDiff/ignoreRules.d.ts.map +1 -1
- package/dist/cli/analyzeDiff/ignoreRules.js +2 -3
- package/dist/cli/analyzeUsage/analyzeUsage.d.ts +4 -0
- package/dist/cli/analyzeUsage/analyzeUsage.d.ts.map +1 -0
- package/dist/cli/analyzeUsage/analyzeUsage.js +60 -0
- package/dist/cli/analyzeUsage/core/Analyzer.d.ts +9 -0
- package/dist/cli/analyzeUsage/core/Analyzer.d.ts.map +1 -0
- package/dist/cli/analyzeUsage/core/Analyzer.js +29 -0
- package/dist/cli/analyzeUsage/core/ProjectContext.d.ts +10 -0
- package/dist/cli/analyzeUsage/core/ProjectContext.d.ts.map +1 -0
- package/dist/cli/analyzeUsage/core/ProjectContext.js +58 -0
- package/dist/cli/analyzeUsage/core/Scanner.d.ts +15 -0
- package/dist/cli/analyzeUsage/core/Scanner.d.ts.map +1 -0
- package/dist/cli/analyzeUsage/core/Scanner.js +115 -0
- package/dist/cli/analyzeUsage/rules/ClientRule.d.ts +6 -0
- package/dist/cli/analyzeUsage/rules/ClientRule.d.ts.map +1 -0
- package/dist/cli/analyzeUsage/rules/ClientRule.js +76 -0
- package/dist/cli/analyzeUsage/rules/CoverageRule.d.ts +7 -0
- package/dist/cli/analyzeUsage/rules/CoverageRule.d.ts.map +1 -0
- package/dist/cli/analyzeUsage/rules/CoverageRule.js +55 -0
- package/dist/cli/analyzeUsage/rules/DiagnosticsRule.d.ts +6 -0
- package/dist/cli/analyzeUsage/rules/DiagnosticsRule.d.ts.map +1 -0
- package/dist/cli/analyzeUsage/rules/DiagnosticsRule.js +63 -0
- package/dist/cli/analyzeUsage/rules/ImportRule.d.ts +6 -0
- package/dist/cli/analyzeUsage/rules/ImportRule.d.ts.map +1 -0
- package/dist/cli/analyzeUsage/rules/ImportRule.js +50 -0
- package/dist/cli/analyzeUsage/rules/ModelRule.d.ts +6 -0
- package/dist/cli/analyzeUsage/rules/ModelRule.d.ts.map +1 -0
- package/dist/cli/analyzeUsage/rules/ModelRule.js +34 -0
- package/dist/cli/analyzeUsage/rules/SchemaRule.d.ts +6 -0
- package/dist/cli/analyzeUsage/rules/SchemaRule.d.ts.map +1 -0
- package/dist/cli/analyzeUsage/rules/SchemaRule.js +46 -0
- package/dist/cli/analyzeUsage/rules/ServiceRule.d.ts +7 -0
- package/dist/cli/analyzeUsage/rules/ServiceRule.d.ts.map +1 -0
- package/dist/cli/analyzeUsage/rules/ServiceRule.js +86 -0
- package/dist/cli/analyzeUsage/types.d.ts +52 -0
- package/dist/cli/analyzeUsage/types.d.ts.map +1 -0
- package/dist/cli/analyzeUsage/types.js +2 -0
- package/dist/cli/analyzeUsage/utils/fuzzy.d.ts +5 -0
- package/dist/cli/analyzeUsage/utils/fuzzy.d.ts.map +1 -0
- package/dist/cli/analyzeUsage/utils/fuzzy.js +38 -0
- package/dist/cli/analyzeUsage/utils/report.d.ts +16 -0
- package/dist/cli/analyzeUsage/utils/report.d.ts.map +1 -0
- package/dist/cli/analyzeUsage/utils/report.js +85 -0
- package/dist/cli/checkAndUpdateConfig/__tests__/checkConfig.test.js +10 -20
- package/dist/cli/checkAndUpdateConfig/__tests__/updateConfig.test.js +10 -20
- package/dist/cli/checkAndUpdateConfig/checkConfig.d.ts +2 -1
- package/dist/cli/checkAndUpdateConfig/checkConfig.d.ts.map +1 -1
- package/dist/cli/checkAndUpdateConfig/checkConfig.js +8 -4
- package/dist/cli/checkAndUpdateConfig/updateConfig.d.ts +2 -1
- package/dist/cli/checkAndUpdateConfig/updateConfig.d.ts.map +1 -1
- package/dist/cli/checkAndUpdateConfig/updateConfig.js +6 -3
- package/dist/cli/checkAndUpdateConfig/utils/removeDefaultConfigValues.d.ts.map +1 -1
- package/dist/cli/checkAndUpdateConfig/utils/validateAndMigrateConfigData.d.ts.map +1 -1
- package/dist/cli/checkAndUpdateConfig/utils/validateAndMigrateConfigData.js +19 -1
- package/dist/cli/checkAndUpdateConfig/utils/writeConfigFile.d.ts +1 -1
- package/dist/cli/checkAndUpdateConfig/utils/writeConfigFile.d.ts.map +1 -1
- package/dist/cli/checkAndUpdateConfig/utils/writeConfigFile.js +1 -1
- package/dist/cli/generateOpenApiClient/__tests__/generateOpenApiClient.strict.test.js +18 -9
- package/dist/cli/generateOpenApiClient/generateOpenApiClient.d.ts +2 -5
- package/dist/cli/generateOpenApiClient/generateOpenApiClient.d.ts.map +1 -1
- package/dist/cli/generateOpenApiClient/generateOpenApiClient.js +21 -17
- package/dist/cli/index.js +44 -11
- package/dist/cli/initOpenApiConfig/__tests__/init.test.js +4 -14
- package/dist/cli/initOpenApiConfig/__tests__/initConfig.test.js +3 -1
- package/dist/cli/initOpenApiConfig/init.d.ts +2 -1
- package/dist/cli/initOpenApiConfig/init.d.ts.map +1 -1
- package/dist/cli/initOpenApiConfig/init.js +3 -3
- package/dist/cli/initOpenApiConfig/initCustomRequest.d.ts +0 -1
- package/dist/cli/initOpenApiConfig/initCustomRequest.d.ts.map +1 -1
- package/dist/cli/initOpenApiConfig/initCustomRequest.js +1 -2
- package/dist/cli/initOpenApiConfig/utils/__tests__/buildConfig.test.js +2 -8
- package/dist/cli/initOpenApiConfig/utils/__tests__/validateSpecFiles.test.js +9 -0
- package/dist/cli/initOpenApiConfig/utils/buildConfig.d.ts.map +1 -1
- package/dist/cli/initOpenApiConfig/utils/buildConfig.js +0 -4
- package/dist/cli/initOpenApiConfig/utils/registerHandlebarTemplates.d.ts.map +1 -1
- package/dist/cli/interactive/constants.d.ts +0 -4
- package/dist/cli/interactive/constants.d.ts.map +1 -1
- package/dist/cli/interactive/constants.js +1 -5
- package/dist/cli/previewChanges/previewChanges.d.ts +2 -1
- package/dist/cli/previewChanges/previewChanges.d.ts.map +1 -1
- package/dist/cli/previewChanges/previewChanges.js +6 -6
- package/dist/cli/previewChanges/utils/formatDiff.d.ts.map +1 -1
- package/dist/cli/previewChanges/utils/updateOutputPaths.d.ts.map +1 -1
- package/dist/cli/previewChanges/utils/updateOutputPaths.js +5 -12
- package/dist/cli/schemas/analyzeUsage.d.ts +13 -0
- package/dist/cli/schemas/analyzeUsage.d.ts.map +1 -0
- package/dist/cli/schemas/analyzeUsage.js +41 -0
- package/dist/cli/schemas/generate.d.ts +10 -2
- package/dist/cli/schemas/generate.d.ts.map +1 -1
- package/dist/cli/schemas/generate.js +7 -2
- package/dist/cli/schemas/index.d.ts +2 -2
- package/dist/cli/schemas/index.d.ts.map +1 -1
- package/dist/cli/schemas/index.js +1 -1
- package/dist/cli/schemas/init.d.ts +0 -1
- package/dist/cli/schemas/init.d.ts.map +1 -1
- package/dist/cli/schemas/init.js +0 -1
- package/dist/cli/types.d.ts +6 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +2 -0
- package/dist/common/Consts.d.ts +1 -0
- package/dist/common/Consts.d.ts.map +1 -1
- package/dist/common/Consts.js +7 -4
- package/dist/common/Logger.d.ts.map +1 -1
- package/dist/common/Logger.js +3 -3
- package/dist/common/LoggerMessages.d.ts +66 -12
- package/dist/common/LoggerMessages.d.ts.map +1 -1
- package/dist/common/LoggerMessages.js +72 -18
- package/dist/common/TEslintFixOptions.d.ts +20 -0
- package/dist/common/TEslintFixOptions.d.ts.map +1 -0
- package/dist/common/TEslintFixOptions.js +15 -0
- package/dist/common/TRawOptions.d.ts.map +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/AllMigrationPlans.d.ts.map +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/AllMigrationPlans.js +2 -4
- package/dist/common/VersionedSchema/AllVersionedSchemas/AllVersionedSchemas.d.ts.map +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/AllVersionedSchemas.js +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedBase.d.ts +0 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedBase.d.ts.map +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedBase.js +1 -2
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV1.d.ts +0 -2
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV1.d.ts.map +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV1.js +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV2.d.ts +0 -2
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV2.d.ts.map +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV2.js +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV3.d.ts +0 -2
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV3.d.ts.map +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV4.d.ts +0 -2
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV4.d.ts.map +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.d.ts +10 -4
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.d.ts.map +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.js +15 -5
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.d.ts +18 -15
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.d.ts.map +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.js +7 -1
- package/dist/common/VersionedSchema/CommonSchemas.d.ts +0 -2
- package/dist/common/VersionedSchema/CommonSchemas.d.ts.map +1 -1
- package/dist/common/VersionedSchema/CommonSchemas.js +4 -3
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsMigrationPlan.d.ts.map +1 -1
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsMigrationPlan.js +0 -1
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV2.js +1 -1
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV3.d.ts +0 -1
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV3.d.ts.map +1 -1
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV3.js +1 -1
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV4.d.ts +0 -1
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV4.d.ts.map +1 -1
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV4.js +1 -1
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV5.d.ts +0 -1
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV5.d.ts.map +1 -1
- package/dist/common/VersionedSchema/OptionsVersioned/OptionsMigrationPlans.d.ts.map +1 -1
- package/dist/common/VersionedSchema/OptionsVersioned/OptionsMigrationPlans.js +0 -1
- package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV1.d.ts +2 -2
- package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV1.d.ts.map +1 -1
- package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV2.d.ts +2 -2
- package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV3.d.ts +0 -1
- package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV3.d.ts.map +1 -1
- package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV3.js +1 -1
- package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV4.d.ts +1 -2
- package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV4.d.ts.map +1 -1
- package/dist/common/VersionedSchema/Utils/__mocks__/compatibilityCases.js +9 -9
- package/dist/common/VersionedSchema/Utils/__tests__/allUtils.test.js +4 -16
- package/dist/common/VersionedSchema/Utils/buildVersionedSchema.d.ts.map +1 -1
- package/dist/common/VersionedSchema/Utils/createDefaultFieldsMigration.d.ts +1 -1
- package/dist/common/VersionedSchema/Utils/createDefaultFieldsMigration.d.ts.map +1 -1
- package/dist/common/VersionedSchema/Utils/createDefaultFieldsMigration.js +1 -1
- package/dist/common/VersionedSchema/Utils/createTrivialMigration.d.ts.map +1 -1
- package/dist/common/VersionedSchema/Utils/createTrivialMigration.js +1 -1
- package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.d.ts.map +1 -1
- package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.js +1 -3
- package/dist/common/VersionedSchema/Utils/getLatestVersionFromMigrationPlans.d.ts.map +1 -1
- package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.d.ts.map +1 -1
- package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.js +2 -4
- package/dist/common/VersionedSchema/Utils/replaceInvalidKeysWithMappedNames.d.ts.map +1 -1
- package/dist/common/VersionedSchema/Utils/replaceInvalidKeysWithMappedNames.js +1 -1
- package/dist/common/VersionedSchema/Utils/validateAndSuggestKeyCorrections.d.ts.map +1 -1
- package/dist/common/VersionedSchema/refinements/dependentOptionsRefinement.d.ts +1 -1
- package/dist/common/VersionedSchema/refinements/dependentOptionsRefinement.d.ts.map +1 -1
- package/dist/common/utils/__tests__/convertArrayToObject.test.js +0 -3
- package/dist/common/utils/__tests__/eslintFix.test.js +25 -67
- package/dist/common/utils/__tests__/extractEslintFixOptions.test.d.ts +2 -0
- package/dist/common/utils/__tests__/extractEslintFixOptions.test.d.ts.map +1 -0
- package/dist/common/utils/__tests__/extractEslintFixOptions.test.js +28 -0
- package/dist/common/utils/__tests__/format.test.js +26 -17
- package/dist/common/utils/__tests__/prepareTempTsConfig.test.d.ts +2 -0
- package/dist/common/utils/__tests__/prepareTempTsConfig.test.d.ts.map +1 -0
- package/dist/common/utils/__tests__/prepareTempTsConfig.test.js +78 -0
- package/dist/common/utils/codegenTempDir.d.ts +20 -0
- package/dist/common/utils/codegenTempDir.d.ts.map +1 -0
- package/dist/common/utils/codegenTempDir.js +42 -0
- package/dist/common/utils/convertArrayToObject.d.ts.map +1 -1
- package/dist/common/utils/convertArrayToObject.js +3 -10
- package/dist/common/utils/eslintFix.d.ts +48 -4
- package/dist/common/utils/eslintFix.d.ts.map +1 -1
- package/dist/common/utils/eslintFix.js +121 -15
- package/dist/common/utils/format.d.ts +1 -1
- package/dist/common/utils/format.d.ts.map +1 -1
- package/dist/common/utils/format.js +23 -11
- package/dist/common/utils/jsonPath.d.ts.map +1 -1
- package/dist/common/utils/prepareTempEslintConfig.d.ts +18 -0
- package/dist/common/utils/prepareTempEslintConfig.d.ts.map +1 -0
- package/dist/common/utils/prepareTempEslintConfig.js +55 -0
- package/dist/common/utils/prepareTempTsConfig.d.ts +23 -0
- package/dist/common/utils/prepareTempTsConfig.d.ts.map +1 -0
- package/dist/common/utils/prepareTempTsConfig.js +105 -0
- package/dist/core/Context.d.ts.map +1 -1
- package/dist/core/Context.js +2 -6
- package/dist/core/OpenApiClient.d.ts +19 -1
- package/dist/core/OpenApiClient.d.ts.map +1 -1
- package/dist/core/OpenApiClient.js +243 -22
- package/dist/core/WriteClient.d.ts +33 -5
- package/dist/core/WriteClient.d.ts.map +1 -1
- package/dist/core/WriteClient.js +60 -18
- package/dist/core/__tests__/WriteClient.test.js +1 -1
- package/dist/core/api/v2/parser/getOperationResponses.d.ts.map +1 -1
- package/dist/core/api/v2/parser/getOperationResponses.js +1 -3
- package/dist/core/api/v2/parser/getServiceName.d.ts +1 -1
- package/dist/core/api/v3/parser/getOperation.d.ts.map +1 -1
- package/dist/core/api/v3/parser/getOperationParameters.d.ts.map +1 -1
- package/dist/core/api/v3/parser/getOperationResponses.d.ts.map +1 -1
- package/dist/core/api/v3/parser/getOperationResponses.js +1 -3
- package/dist/core/api/v3/parser/getServiceName.d.ts +1 -1
- package/dist/core/governance/evaluateGovernanceRules.d.ts.map +1 -1
- package/dist/core/governance/evaluateGovernanceRules.js +1 -3
- package/dist/core/governance/loadGovernanceConfig.d.ts.map +1 -1
- package/dist/core/governance/loadGovernanceConfig.js +2 -4
- package/dist/core/plugins/GeneratorPlugin.model.d.ts.map +1 -1
- package/dist/core/plugins/applySemanticDiffPluginHooks.d.ts.map +1 -1
- package/dist/core/plugins/getBuiltinPlugins.d.ts.map +1 -1
- package/dist/core/plugins/loadGeneratorPlugins.d.ts.map +1 -1
- package/dist/core/plugins/loadGeneratorPlugins.js +1 -1
- package/dist/core/semanticDiff/__tests__/analyzeOpenApiDiff.test.js +7 -21
- package/dist/core/semanticDiff/analyzeOpenApiDiff.d.ts.map +1 -1
- package/dist/core/semanticDiff/semanticDiffReportSchema.d.ts +0 -2
- package/dist/core/semanticDiff/semanticDiffReportSchema.d.ts.map +1 -1
- package/dist/core/semanticDiff/semanticDiffReportSchema.js +3 -9
- package/dist/core/strict/validateOpenApiStrict.d.ts.map +1 -1
- package/dist/core/types/Consts.js +1 -1
- package/dist/core/types/base/ClientArtifacts.model.d.ts +3 -3
- package/dist/core/types/base/ClientArtifacts.model.d.ts.map +1 -1
- package/dist/core/types/base/ExportedModel.model.d.ts +1 -1
- package/dist/core/types/base/ExportedModel.model.d.ts.map +1 -1
- package/dist/core/types/base/ExportedService.model.d.ts.map +1 -1
- package/dist/core/types/base/OutputPaths.model.d.ts.map +1 -1
- package/dist/core/types/base/PrefixArtifacts.model.d.ts.map +1 -1
- package/dist/core/types/base/PropertyGroup.model.d.ts +1 -1
- package/dist/core/types/base/SimpleClientArtifacts.model.d.ts +1 -1
- package/dist/core/types/base/SimpleClientArtifacts.model.d.ts.map +1 -1
- package/dist/core/types/shared/Client.model.d.ts +1 -1
- package/dist/core/types/shared/Client.model.d.ts.map +1 -1
- package/dist/core/types/shared/Model.model.d.ts +1 -1
- package/dist/core/types/shared/Model.model.d.ts.map +1 -1
- package/dist/core/utils/__tests__/postProcessModelImports.test.js +1 -4
- package/dist/core/utils/__tests__/postProcessServiceImports.test.js +1 -4
- package/dist/core/utils/__tests__/prepareDtoModels.test.js +95 -0
- package/dist/core/utils/__tests__/registerHandlebarHelpers.test.js +27 -0
- package/dist/core/utils/__tests__/sortByRequiredExtended.test.js +10 -27
- package/dist/core/utils/__tests__/writeClientServices.test.js +0 -1
- package/dist/core/utils/appendUniqueLinesToFile.js +1 -1
- package/dist/core/utils/applyDiffReportToClient.d.ts.map +1 -1
- package/dist/core/utils/applyDiffReportToClient.js +2 -2
- package/dist/core/utils/areEqual.d.ts +1 -1
- package/dist/core/utils/getOperationErrors.d.ts +2 -2
- package/dist/core/utils/getOperationErrors.d.ts.map +1 -1
- package/dist/core/utils/getOperationResults.d.ts +1 -1
- package/dist/core/utils/getPropertyGroupSimple.d.ts.map +1 -1
- package/dist/core/utils/getPropertyGroupSimple.js +1 -3
- package/dist/core/utils/isSubdirectory.d.ts.map +1 -1
- package/dist/core/utils/loadDiffReport.d.ts.map +1 -1
- package/dist/core/utils/loadDiffReport.js +5 -4
- package/dist/core/utils/modelHelpers.d.ts.map +1 -1
- package/dist/core/utils/normalizeString.d.ts.map +1 -1
- package/dist/core/utils/normalizeString.js +1 -5
- package/dist/core/utils/postProcessServiceImports.d.ts.map +1 -1
- package/dist/core/utils/postProcessServiceImports.js +1 -3
- package/dist/core/utils/precompileTemplates.js +4 -2
- package/dist/core/utils/prepareAlias.d.ts +1 -1
- package/dist/core/utils/prepareDtoModels.d.ts.map +1 -1
- package/dist/core/utils/prepareDtoModels.js +2 -8
- package/dist/core/utils/registerHandlebarHelpers.d.ts +1 -0
- package/dist/core/utils/registerHandlebarHelpers.d.ts.map +1 -1
- package/dist/core/utils/registerHandlebarHelpers.js +3 -0
- package/dist/core/utils/registerHandlebarTemplates.d.ts +1 -0
- package/dist/core/utils/registerHandlebarTemplates.d.ts.map +1 -1
- package/dist/core/utils/sortModelByName.d.ts +1 -1
- package/dist/core/utils/writeClientCore.d.ts +0 -2
- package/dist/core/utils/writeClientCore.d.ts.map +1 -1
- package/dist/core/utils/writeClientCore.js +19 -18
- package/dist/core/utils/writeClientCoreIndex.d.ts.map +1 -1
- package/dist/core/utils/writeClientCoreIndex.js +14 -4
- package/dist/core/utils/writeClientExecutor.d.ts +1 -2
- package/dist/core/utils/writeClientExecutor.d.ts.map +1 -1
- package/dist/core/utils/writeClientExecutor.js +6 -10
- package/dist/core/utils/writeClientFullIndex.js +4 -4
- package/dist/core/utils/writeClientModels.d.ts +1 -2
- package/dist/core/utils/writeClientModels.d.ts.map +1 -1
- package/dist/core/utils/writeClientModels.js +14 -16
- package/dist/core/utils/writeClientModelsIndex.d.ts +1 -1
- package/dist/core/utils/writeClientModelsIndex.d.ts.map +1 -1
- package/dist/core/utils/writeClientModelsIndex.js +14 -4
- package/dist/core/utils/writeClientSchemas.d.ts +1 -3
- package/dist/core/utils/writeClientSchemas.d.ts.map +1 -1
- package/dist/core/utils/writeClientSchemas.js +9 -14
- package/dist/core/utils/writeClientSchemasIndex.d.ts.map +1 -1
- package/dist/core/utils/writeClientSchemasIndex.js +14 -4
- package/dist/core/utils/writeClientServices.d.ts +1 -4
- package/dist/core/utils/writeClientServices.d.ts.map +1 -1
- package/dist/core/utils/writeClientServices.js +9 -13
- package/dist/core/utils/writeClientServicesIndex.d.ts.map +1 -1
- package/dist/core/utils/writeClientServicesIndex.js +14 -4
- package/dist/core/utils/writeClientSimpleIndex.js +4 -4
- package/dist/templatesCompiled/cli/customRequest.d.ts +2 -6
- package/dist/templatesCompiled/cli/customRequest.d.ts.map +1 -1
- package/dist/templatesCompiled/cli/customRequest.js +8 -28
- package/dist/templatesCompiled/cli/customRequestExecutor.d.ts +0 -3
- package/dist/templatesCompiled/cli/customRequestExecutor.d.ts.map +1 -1
- package/dist/templatesCompiled/cli/customRequestExecutor.js +5 -28
- package/dist/templatesCompiled/client/core/axios/request.d.ts +2 -6
- package/dist/templatesCompiled/client/core/axios/request.d.ts.map +1 -1
- package/dist/templatesCompiled/client/core/axios/request.js +2 -22
- package/dist/templatesCompiled/client/core/executor/createExecutorAdapter.d.ts +2 -5
- package/dist/templatesCompiled/client/core/executor/createExecutorAdapter.d.ts.map +1 -1
- package/dist/templatesCompiled/client/core/executor/createExecutorAdapter.js +12 -42
- package/dist/templatesCompiled/client/core/executor/requestExecutor.d.ts +0 -2
- package/dist/templatesCompiled/client/core/executor/requestExecutor.d.ts.map +1 -1
- package/dist/templatesCompiled/client/core/executor/requestExecutor.js +3 -11
- package/dist/templatesCompiled/client/core/fetch/request.d.ts +2 -6
- package/dist/templatesCompiled/client/core/fetch/request.d.ts.map +1 -1
- package/dist/templatesCompiled/client/core/fetch/request.js +2 -22
- package/dist/templatesCompiled/client/core/interceptors/withInterceptors.d.ts +0 -2
- package/dist/templatesCompiled/client/core/interceptors/withInterceptors.d.ts.map +1 -1
- package/dist/templatesCompiled/client/core/interceptors/withInterceptors.js +3 -11
- package/dist/templatesCompiled/client/core/node/request.d.ts +2 -6
- package/dist/templatesCompiled/client/core/node/request.d.ts.map +1 -1
- package/dist/templatesCompiled/client/core/node/request.js +2 -22
- package/dist/templatesCompiled/client/core/xhr/request.d.ts +2 -6
- package/dist/templatesCompiled/client/core/xhr/request.d.ts.map +1 -1
- package/dist/templatesCompiled/client/core/xhr/request.js +2 -22
- package/dist/templatesCompiled/client/exportService.d.ts +9 -11
- package/dist/templatesCompiled/client/exportService.d.ts.map +1 -1
- package/dist/templatesCompiled/client/exportService.js +64 -82
- package/dist/templatesCompiled/client/partials/header.d.ts +1 -0
- package/dist/templatesCompiled/client/partials/header.d.ts.map +1 -1
- package/dist/templatesCompiled/client/partials/header.js +11 -2
- package/dist/test/helpers/silenceLoggers.d.ts +11 -0
- package/dist/test/helpers/silenceLoggers.d.ts.map +1 -0
- package/dist/test/helpers/silenceLoggers.js +88 -0
- package/package.json +132 -135
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.OpenApiClient = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
4
5
|
const Consts_1 = require("../common/Consts");
|
|
5
6
|
const Logger_1 = require("../common/Logger");
|
|
6
7
|
const LoggerMessages_1 = require("../common/LoggerMessages");
|
|
8
|
+
const TEslintFixOptions_1 = require("../common/TEslintFixOptions");
|
|
9
|
+
const eslintFix_1 = require("../common/utils/eslintFix");
|
|
7
10
|
const fileSystemHelpers_1 = require("../common/utils/fileSystemHelpers");
|
|
8
11
|
const pathHelpers_1 = require("../common/utils/pathHelpers");
|
|
9
12
|
const Parser_1 = require("./api/v2/Parser");
|
|
@@ -16,6 +19,7 @@ const EmptySchemaStrategy_enum_1 = require("./types/enums/EmptySchemaStrategy.en
|
|
|
16
19
|
const ModelsMode_enum_1 = require("./types/enums/ModelsMode.enum");
|
|
17
20
|
const ValidationLibrary_enum_1 = require("./types/enums/ValidationLibrary.enum");
|
|
18
21
|
const applyDiffReportToClient_1 = require("./utils/applyDiffReportToClient");
|
|
22
|
+
const GenerationCache_1 = require("./utils/GenerationCache");
|
|
19
23
|
const getOpenApiSpec_1 = require("./utils/getOpenApiSpec");
|
|
20
24
|
const getOpenApiVersion_1 = require("./utils/getOpenApiVersion");
|
|
21
25
|
const getOutputPaths_1 = require("./utils/getOutputPaths");
|
|
@@ -25,7 +29,11 @@ const prepareDtoModels_1 = require("./utils/prepareDtoModels");
|
|
|
25
29
|
const registerHandlebarTemplates_1 = require("./utils/registerHandlebarTemplates");
|
|
26
30
|
const WriteClient_1 = require("./WriteClient");
|
|
27
31
|
class OpenApiClient {
|
|
32
|
+
static CACHE_FINGERPRINT_VERSION = 1;
|
|
33
|
+
static DEFAULT_CACHE_FILENAME = '.openapi-codegen-cache.json';
|
|
28
34
|
_writeClient = null;
|
|
35
|
+
/** ESLint paths from top-level rawOptions (not per items[] entry). */
|
|
36
|
+
eslintFixOptions = {};
|
|
29
37
|
get writeClient() {
|
|
30
38
|
if (!this._writeClient) {
|
|
31
39
|
throw new Error('WriteClient must be initialized');
|
|
@@ -52,7 +60,6 @@ class OpenApiClient {
|
|
|
52
60
|
enumPrefix: rawOptions.enumPrefix,
|
|
53
61
|
typePrefix: rawOptions.typePrefix,
|
|
54
62
|
useCancelableRequest: rawOptions.useCancelableRequest,
|
|
55
|
-
useRequestRaw: rawOptions.useRequestRaw,
|
|
56
63
|
logLevel: rawOptions.logLevel,
|
|
57
64
|
logTarget: rawOptions.logTarget,
|
|
58
65
|
sortByRequired: rawOptions.sortByRequired,
|
|
@@ -65,6 +72,11 @@ class OpenApiClient {
|
|
|
65
72
|
strictOpenapi: rawOptions.strictOpenapi,
|
|
66
73
|
reportFile: rawOptions.reportFile,
|
|
67
74
|
governanceConfig: rawOptions.governanceConfig,
|
|
75
|
+
cache: rawOptions.cache,
|
|
76
|
+
cachePath: rawOptions.cachePath,
|
|
77
|
+
cacheStrategy: rawOptions.cacheStrategy,
|
|
78
|
+
cacheDebug: rawOptions.cacheDebug,
|
|
79
|
+
prettierConfigPath: rawOptions.prettierConfigPath,
|
|
68
80
|
}));
|
|
69
81
|
}
|
|
70
82
|
else {
|
|
@@ -89,7 +101,6 @@ class OpenApiClient {
|
|
|
89
101
|
enumPrefix: rawOptions.enumPrefix,
|
|
90
102
|
typePrefix: rawOptions.typePrefix,
|
|
91
103
|
useCancelableRequest: rawOptions.useCancelableRequest,
|
|
92
|
-
useRequestRaw: rawOptions.useRequestRaw,
|
|
93
104
|
logLevel: rawOptions.logLevel,
|
|
94
105
|
logTarget: rawOptions.logTarget,
|
|
95
106
|
sortByRequired: rawOptions.sortByRequired,
|
|
@@ -102,6 +113,11 @@ class OpenApiClient {
|
|
|
102
113
|
strictOpenapi: rawOptions.strictOpenapi,
|
|
103
114
|
reportFile: rawOptions.reportFile,
|
|
104
115
|
governanceConfig: rawOptions.governanceConfig,
|
|
116
|
+
cache: rawOptions.cache,
|
|
117
|
+
cachePath: rawOptions.cachePath,
|
|
118
|
+
cacheStrategy: rawOptions.cacheStrategy,
|
|
119
|
+
cacheDebug: rawOptions.cacheDebug,
|
|
120
|
+
prettierConfigPath: rawOptions.prettierConfigPath,
|
|
105
121
|
},
|
|
106
122
|
];
|
|
107
123
|
}
|
|
@@ -126,7 +142,6 @@ class OpenApiClient {
|
|
|
126
142
|
enumPrefix: item.enumPrefix || Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.enumPrefix,
|
|
127
143
|
typePrefix: item.typePrefix || Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.typePrefix,
|
|
128
144
|
useCancelableRequest: item.useCancelableRequest ?? Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.useCancelableRequest,
|
|
129
|
-
useRequestRaw: item.useRequestRaw ?? Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.useRequestRaw,
|
|
130
145
|
logLevel: item.logLevel || Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.logLevel,
|
|
131
146
|
logTarget: item.logTarget || Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.logTarget,
|
|
132
147
|
sortByRequired: item.sortByRequired ?? Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.sortByRequired,
|
|
@@ -141,18 +156,57 @@ class OpenApiClient {
|
|
|
141
156
|
miracles: item.miracles || Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.miracles,
|
|
142
157
|
strictOpenapi: item.strictOpenapi ?? Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.strictOpenapi,
|
|
143
158
|
reportFile: item.reportFile || Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.reportFile,
|
|
144
|
-
|
|
145
|
-
useEslintFix: item.useEslintFix ?? Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.useEslintFix,
|
|
159
|
+
prettierConfigPath: item.prettierConfigPath ?? Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.prettierConfigPath,
|
|
146
160
|
governanceConfig: item.governanceConfig || Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.governanceConfig,
|
|
161
|
+
cache: item.cache ?? Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.cache,
|
|
162
|
+
cachePath: item.cachePath || Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.cachePath,
|
|
163
|
+
cacheStrategy: item.cacheStrategy ?? Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.cacheStrategy,
|
|
164
|
+
cacheDebug: item.cacheDebug ?? Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.cacheDebug,
|
|
147
165
|
};
|
|
148
166
|
}
|
|
149
|
-
|
|
150
|
-
const
|
|
151
|
-
for (const
|
|
152
|
-
|
|
153
|
-
|
|
167
|
+
getOutputRoots(items) {
|
|
168
|
+
const roots = new Set();
|
|
169
|
+
for (const item of items) {
|
|
170
|
+
const outputDirs = [item.output, item.outputCore, item.outputSchemas, item.outputModels, item.outputServices];
|
|
171
|
+
for (const dir of outputDirs) {
|
|
172
|
+
if (dir) {
|
|
173
|
+
roots.add((0, pathHelpers_1.resolveHelper)(process.cwd(), dir));
|
|
174
|
+
}
|
|
154
175
|
}
|
|
155
176
|
}
|
|
177
|
+
return Array.from(roots);
|
|
178
|
+
}
|
|
179
|
+
async cleanupStaleOutputs(items) {
|
|
180
|
+
const outputRoots = this.getOutputRoots(items);
|
|
181
|
+
const expectedFiles = this.writeClient.getExpectedOutputFiles();
|
|
182
|
+
for (const root of outputRoots) {
|
|
183
|
+
await this.removeStaleFilesInDirectory(root, expectedFiles);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
async removeStaleFilesInDirectory(path, expectedFiles) {
|
|
187
|
+
const stats = await fs_1.promises.stat(path).catch(() => null);
|
|
188
|
+
if (!stats) {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
if (stats.isFile()) {
|
|
192
|
+
if (!expectedFiles.has(path)) {
|
|
193
|
+
await fileSystemHelpers_1.fileSystemHelpers.rmdir(path);
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
const entries = await fs_1.promises.readdir(path);
|
|
199
|
+
let hasAnyFile = false;
|
|
200
|
+
for (const entry of entries) {
|
|
201
|
+
const childPath = (0, pathHelpers_1.resolveHelper)(path, entry);
|
|
202
|
+
const childHasFiles = await this.removeStaleFilesInDirectory(childPath, expectedFiles);
|
|
203
|
+
hasAnyFile = hasAnyFile || childHasFiles;
|
|
204
|
+
}
|
|
205
|
+
if (!hasAnyFile) {
|
|
206
|
+
await fileSystemHelpers_1.fileSystemHelpers.rmdir(path);
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
return true;
|
|
156
210
|
}
|
|
157
211
|
async generateCodeForItems(items) {
|
|
158
212
|
if (items.length === 0) {
|
|
@@ -161,12 +215,27 @@ class OpenApiClient {
|
|
|
161
215
|
this.writeClient.logger.forceInfo(LoggerMessages_1.LOGGER_MESSAGES.GENERATION.STARTED(items.length));
|
|
162
216
|
try {
|
|
163
217
|
const start = process.hrtime.bigint();
|
|
164
|
-
|
|
165
|
-
|
|
218
|
+
const cacheEnabled = items[0]?.cache === true;
|
|
219
|
+
const generationCaches = new Map();
|
|
220
|
+
if (!cacheEnabled) {
|
|
221
|
+
this.warnOnSharedOutputsWithoutCache(items);
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
for (const outputRoot of this.getUniqueResolvedOutputs(items)) {
|
|
225
|
+
const sampleItem = items.find(item => this.resolveOutputRoot(item.output) === outputRoot);
|
|
226
|
+
if (!sampleItem) {
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
const cachePath = this.resolveCachePathForOutput(sampleItem.output, sampleItem.cachePath);
|
|
230
|
+
const generationCache = new GenerationCache_1.GenerationCache(cachePath);
|
|
231
|
+
await generationCache.load();
|
|
232
|
+
generationCaches.set(outputRoot, generationCache);
|
|
233
|
+
}
|
|
166
234
|
}
|
|
167
235
|
for (const option of items) {
|
|
168
236
|
const fileStart = process.hrtime.bigint();
|
|
169
|
-
|
|
237
|
+
const generationCache = cacheEnabled ? (generationCaches.get(this.resolveOutputRoot(option.output)) ?? null) : null;
|
|
238
|
+
await this.generateSingle(option, generationCache);
|
|
170
239
|
const fileEnd = process.hrtime.bigint();
|
|
171
240
|
const fileDurationInSeconds = Number(fileEnd - fileStart) / 1e9;
|
|
172
241
|
this.writeClient.logger.forceInfo(LoggerMessages_1.LOGGER_MESSAGES.GENERATION.DURATION_FOR_FILE(option.input, fileDurationInSeconds.toFixed(3)));
|
|
@@ -177,6 +246,15 @@ class OpenApiClient {
|
|
|
177
246
|
else {
|
|
178
247
|
await this.writeClient.combineAndWrite();
|
|
179
248
|
}
|
|
249
|
+
await this.cleanupStaleOutputs(items);
|
|
250
|
+
if (cacheEnabled) {
|
|
251
|
+
for (const generationCache of generationCaches.values()) {
|
|
252
|
+
await generationCache.save();
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
const writeStats = this.writeClient.getWriteStats();
|
|
256
|
+
this.writeClient.logger.info(LoggerMessages_1.LOGGER_MESSAGES.GENERATION.WRITE_STATS(writeStats.written, writeStats.unchanged));
|
|
257
|
+
await this.runBatchEslintFixIfEnabled();
|
|
180
258
|
this.writeClient.logger.forceInfo(LoggerMessages_1.LOGGER_MESSAGES.GENERATION.FINISHED);
|
|
181
259
|
const end = process.hrtime.bigint();
|
|
182
260
|
const durationInSeconds = Number(end - start) / 1e9;
|
|
@@ -188,8 +266,34 @@ class OpenApiClient {
|
|
|
188
266
|
}
|
|
189
267
|
this.writeClient.logger.shutdownLogger();
|
|
190
268
|
}
|
|
191
|
-
|
|
192
|
-
|
|
269
|
+
getUniqueResolvedOutputs(items) {
|
|
270
|
+
return Array.from(new Set(items.map(item => this.resolveOutputRoot(item.output))));
|
|
271
|
+
}
|
|
272
|
+
resolveOutputRoot(output) {
|
|
273
|
+
return (0, pathHelpers_1.resolveHelper)(process.cwd(), output);
|
|
274
|
+
}
|
|
275
|
+
resolveCachePathForOutput(output, cachePath) {
|
|
276
|
+
if (cachePath.startsWith('/') || /^[A-Za-z]:[\\/]/.test(cachePath)) {
|
|
277
|
+
return cachePath;
|
|
278
|
+
}
|
|
279
|
+
return (0, pathHelpers_1.resolveHelper)(this.resolveOutputRoot(output), cachePath || OpenApiClient.DEFAULT_CACHE_FILENAME);
|
|
280
|
+
}
|
|
281
|
+
warnOnSharedOutputsWithoutCache(items) {
|
|
282
|
+
const countByOutput = new Map();
|
|
283
|
+
for (const item of items) {
|
|
284
|
+
const output = this.resolveOutputRoot(item.output);
|
|
285
|
+
countByOutput.set(output, (countByOutput.get(output) ?? 0) + 1);
|
|
286
|
+
}
|
|
287
|
+
const duplicatedOutputs = Array.from(countByOutput.entries())
|
|
288
|
+
.filter(([, count]) => count > 1)
|
|
289
|
+
.map(([output]) => output);
|
|
290
|
+
if (duplicatedOutputs.length === 0) {
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
this.writeClient.logger.warn(LoggerMessages_1.LOGGER_MESSAGES.GENERATION.CACHE_SHARED_OUTPUT_WARNING(duplicatedOutputs.map(output => `- ${output}`).join('\n')));
|
|
294
|
+
}
|
|
295
|
+
async generateSingle(item, generationCache) {
|
|
296
|
+
const { input, output, outputCore, outputServices, outputModels, outputSchemas, httpClient, useOptions, useUnionTypes, excludeCoreServiceFiles, request, plugins, customExecutorPath, interfacePrefix, enumPrefix, typePrefix, useCancelableRequest, sortByRequired, useSeparatedIndexes, validationLibrary = ValidationLibrary_enum_1.ValidationLibrary.NONE, emptySchemaStrategy = EmptySchemaStrategy_enum_1.EmptySchemaStrategy.KEEP, useHistory, diffReport, modelsMode = ModelsMode_enum_1.ModelsMode.INTERFACES, strictOpenapi, reportFile, prettierConfigPath, governanceConfig, } = item;
|
|
193
297
|
const outputPaths = (0, getOutputPaths_1.getOutputPaths)({
|
|
194
298
|
output,
|
|
195
299
|
outputCore,
|
|
@@ -198,6 +302,28 @@ class OpenApiClient {
|
|
|
198
302
|
outputSchemas,
|
|
199
303
|
});
|
|
200
304
|
const absoluteInput = (0, pathHelpers_1.resolveHelper)(process.cwd(), input);
|
|
305
|
+
const cacheKey = this.getCacheKey(item, absoluteInput);
|
|
306
|
+
const cacheFingerprint = await this.getCacheFingerprint(item, absoluteInput);
|
|
307
|
+
const useEntityCache = item.cache && item.cacheStrategy === 'entity' && generationCache !== null;
|
|
308
|
+
if (useEntityCache) {
|
|
309
|
+
const cachedEntry = generationCache.get(cacheKey);
|
|
310
|
+
if (cachedEntry && cachedEntry.fingerprint === cacheFingerprint) {
|
|
311
|
+
const allFilesExist = await this.filesExist(cachedEntry.files);
|
|
312
|
+
if (allFilesExist) {
|
|
313
|
+
for (const filePath of cachedEntry.files) {
|
|
314
|
+
this.writeClient.registerOutputFile(filePath);
|
|
315
|
+
}
|
|
316
|
+
if (item.cacheDebug) {
|
|
317
|
+
this.writeClient.logger.info(LoggerMessages_1.LOGGER_MESSAGES.GENERATION.CACHE_HIT(input));
|
|
318
|
+
}
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
if (item.cacheDebug) {
|
|
323
|
+
this.writeClient.logger.info(LoggerMessages_1.LOGGER_MESSAGES.GENERATION.CACHE_MISS(input));
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
const knownFilesBefore = new Set(this.writeClient.getExpectedOutputFilesArray());
|
|
201
327
|
const generatorPlugins = await (0, loadGeneratorPlugins_1.loadGeneratorPlugins)(plugins);
|
|
202
328
|
const context = new Context_1.Context({
|
|
203
329
|
input: absoluteInput,
|
|
@@ -217,7 +343,7 @@ class OpenApiClient {
|
|
|
217
343
|
governanceConfig: governancePolicy,
|
|
218
344
|
});
|
|
219
345
|
const reportPath = await (0, validateOpenApiStrict_1.writeOpenApiStrictReport)(strictReport, reportFile);
|
|
220
|
-
this.writeClient.logger.forceInfo(
|
|
346
|
+
this.writeClient.logger.forceInfo(LoggerMessages_1.LOGGER_MESSAGES.GENERATION.STRICT_REPORT_CREATED(reportPath));
|
|
221
347
|
if (strictReport.summary.errors > 0) {
|
|
222
348
|
throw new Error(`Strict OpenAPI validation failed with ${strictReport.summary.errors} error(s). Report: ${reportPath}`);
|
|
223
349
|
}
|
|
@@ -228,6 +354,7 @@ class OpenApiClient {
|
|
|
228
354
|
useUnionTypes,
|
|
229
355
|
useOptions,
|
|
230
356
|
validationLibrary,
|
|
357
|
+
useBatchEslintFix: Boolean(this.eslintFixOptions.tsconfigPath && this.eslintFixOptions.eslintConfigPath),
|
|
231
358
|
});
|
|
232
359
|
const diffReportData = await this.loadDiffReportIfNeeded({
|
|
233
360
|
useHistory,
|
|
@@ -261,13 +388,11 @@ class OpenApiClient {
|
|
|
261
388
|
request,
|
|
262
389
|
customExecutorPath,
|
|
263
390
|
useCancelableRequest,
|
|
264
|
-
useRequestRaw,
|
|
265
391
|
useSeparatedIndexes,
|
|
266
392
|
validationLibrary,
|
|
267
393
|
emptySchemaStrategy,
|
|
268
394
|
modelsMode,
|
|
269
|
-
|
|
270
|
-
useEslintFix,
|
|
395
|
+
prettierConfigPath,
|
|
271
396
|
});
|
|
272
397
|
break;
|
|
273
398
|
}
|
|
@@ -296,17 +421,112 @@ class OpenApiClient {
|
|
|
296
421
|
request,
|
|
297
422
|
customExecutorPath,
|
|
298
423
|
useCancelableRequest,
|
|
299
|
-
useRequestRaw,
|
|
300
424
|
useSeparatedIndexes,
|
|
301
425
|
validationLibrary,
|
|
302
426
|
emptySchemaStrategy,
|
|
303
427
|
modelsMode,
|
|
304
|
-
|
|
305
|
-
useEslintFix,
|
|
428
|
+
prettierConfigPath,
|
|
306
429
|
});
|
|
307
430
|
break;
|
|
308
431
|
}
|
|
309
432
|
}
|
|
433
|
+
const generatedFiles = this.writeClient.getExpectedOutputFilesArray().filter(filePath => !knownFilesBefore.has(filePath));
|
|
434
|
+
if (item.cache && generationCache) {
|
|
435
|
+
generationCache.set({
|
|
436
|
+
key: cacheKey,
|
|
437
|
+
fingerprint: cacheFingerprint,
|
|
438
|
+
files: generatedFiles,
|
|
439
|
+
updatedAt: Date.now(),
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
getCacheKey(item, absoluteInput) {
|
|
444
|
+
return GenerationCache_1.GenerationCache.hash(JSON.stringify({
|
|
445
|
+
input: absoluteInput,
|
|
446
|
+
output: item.output,
|
|
447
|
+
outputCore: item.outputCore,
|
|
448
|
+
outputServices: item.outputServices,
|
|
449
|
+
outputModels: item.outputModels,
|
|
450
|
+
outputSchemas: item.outputSchemas,
|
|
451
|
+
}));
|
|
452
|
+
}
|
|
453
|
+
async getCacheFingerprint(item, absoluteInput) {
|
|
454
|
+
const specContent = await fileSystemHelpers_1.fileSystemHelpers.readFile(absoluteInput, 'utf8');
|
|
455
|
+
const fingerprint = {
|
|
456
|
+
cacheFingerprintVersion: OpenApiClient.CACHE_FINGERPRINT_VERSION,
|
|
457
|
+
generatorVersion: process.env.npm_package_version || 'dev',
|
|
458
|
+
specHash: GenerationCache_1.GenerationCache.hash(specContent),
|
|
459
|
+
options: {
|
|
460
|
+
httpClient: item.httpClient,
|
|
461
|
+
useOptions: item.useOptions,
|
|
462
|
+
useUnionTypes: item.useUnionTypes,
|
|
463
|
+
includeSchemasFiles: item.includeSchemasFiles,
|
|
464
|
+
excludeCoreServiceFiles: item.excludeCoreServiceFiles,
|
|
465
|
+
request: item.request,
|
|
466
|
+
plugins: item.plugins,
|
|
467
|
+
customExecutorPath: item.customExecutorPath,
|
|
468
|
+
interfacePrefix: item.interfacePrefix,
|
|
469
|
+
enumPrefix: item.enumPrefix,
|
|
470
|
+
typePrefix: item.typePrefix,
|
|
471
|
+
useCancelableRequest: item.useCancelableRequest,
|
|
472
|
+
sortByRequired: item.sortByRequired,
|
|
473
|
+
useSeparatedIndexes: item.useSeparatedIndexes,
|
|
474
|
+
validationLibrary: item.validationLibrary,
|
|
475
|
+
emptySchemaStrategy: item.emptySchemaStrategy,
|
|
476
|
+
useHistory: item.useHistory,
|
|
477
|
+
diffReport: item.diffReport,
|
|
478
|
+
modelsMode: item.modelsMode,
|
|
479
|
+
strictOpenapi: item.strictOpenapi,
|
|
480
|
+
},
|
|
481
|
+
};
|
|
482
|
+
return GenerationCache_1.GenerationCache.hash(JSON.stringify(fingerprint));
|
|
483
|
+
}
|
|
484
|
+
async filesExist(paths) {
|
|
485
|
+
for (const filePath of paths) {
|
|
486
|
+
const exists = await fileSystemHelpers_1.fileSystemHelpers.exists(filePath);
|
|
487
|
+
if (!exists) {
|
|
488
|
+
return false;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
return true;
|
|
492
|
+
}
|
|
493
|
+
/**
|
|
494
|
+
* Runs batch ESLint fix after combineAndWrite / combineAndWrightSimple when both paths are set.
|
|
495
|
+
* Warns and skips when only one path is provided; always clears the WriteClient lint registry.
|
|
496
|
+
*/
|
|
497
|
+
async runBatchEslintFixIfEnabled() {
|
|
498
|
+
const opts = this.eslintFixOptions;
|
|
499
|
+
const hasTsconfig = !!opts.tsconfigPath;
|
|
500
|
+
const hasEslintConfig = !!opts.eslintConfigPath;
|
|
501
|
+
if (!hasTsconfig && !hasEslintConfig) {
|
|
502
|
+
this.writeClient.clearLintTargets();
|
|
503
|
+
return;
|
|
504
|
+
}
|
|
505
|
+
if (!hasTsconfig || !hasEslintConfig) {
|
|
506
|
+
this.writeClient.logger.warn(LoggerMessages_1.LOGGER_MESSAGES.FORMATTING.ESLINT_PATHS_MISSING);
|
|
507
|
+
this.writeClient.clearLintTargets();
|
|
508
|
+
return;
|
|
509
|
+
}
|
|
510
|
+
try {
|
|
511
|
+
const { files, includeGlobs } = this.writeClient.getLintTargets();
|
|
512
|
+
if (files.length === 0) {
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
const fixStart = process.hrtime.bigint();
|
|
516
|
+
this.writeClient.logger.forceInfo(LoggerMessages_1.LOGGER_MESSAGES.FORMATTING.ESLINT_BATCH_STARTED);
|
|
517
|
+
await (0, eslintFix_1.eslintFixBatch)({
|
|
518
|
+
files,
|
|
519
|
+
includeGlobs,
|
|
520
|
+
tsconfigPath: opts.tsconfigPath,
|
|
521
|
+
eslintConfigPath: opts.eslintConfigPath,
|
|
522
|
+
});
|
|
523
|
+
const fixEnd = process.hrtime.bigint();
|
|
524
|
+
const durationInSeconds = Number(fixEnd - fixStart) / 1e9;
|
|
525
|
+
this.writeClient.logger.forceInfo(LoggerMessages_1.LOGGER_MESSAGES.FORMATTING.ESLINT_BATCH_FINISHED(durationInSeconds.toFixed(3)));
|
|
526
|
+
}
|
|
527
|
+
finally {
|
|
528
|
+
this.writeClient.clearLintTargets();
|
|
529
|
+
}
|
|
310
530
|
}
|
|
311
531
|
async loadDiffReportIfNeeded(params) {
|
|
312
532
|
return (0, loadDiffReport_1.loadDiffReport)({
|
|
@@ -335,6 +555,7 @@ class OpenApiClient {
|
|
|
335
555
|
logOutput: rawOptions.logTarget ?? Consts_1.COMMON_DEFAULT_OPTIONS_VALUES.logTarget,
|
|
336
556
|
});
|
|
337
557
|
this._writeClient = new WriteClient_1.WriteClient(logger);
|
|
558
|
+
this.eslintFixOptions = (0, TEslintFixOptions_1.extractEslintFixOptions)(rawOptions);
|
|
338
559
|
const items = this.normalizeOptions(rawOptions).map(item => this.addDefaultValues(item));
|
|
339
560
|
await this.generateCodeForItems(items);
|
|
340
561
|
}
|
|
@@ -18,6 +18,7 @@ import { writeClientSchemasIndex } from './utils/writeClientSchemasIndex';
|
|
|
18
18
|
import { writeClientServices } from './utils/writeClientServices';
|
|
19
19
|
import { writeClientServicesIndex } from './utils/writeClientServicesIndex';
|
|
20
20
|
import { writeClientSimpleIndex } from './utils/writeClientSimpleIndex';
|
|
21
|
+
import { WriteFileIfChangedResult } from './utils/writeFileIfChanged';
|
|
21
22
|
/**
|
|
22
23
|
* @param client Client object with all the models, services, etc.
|
|
23
24
|
* @param templates Templates wrapper with all loaded Handlebars templates
|
|
@@ -28,7 +29,6 @@ import { writeClientSimpleIndex } from './utils/writeClientSimpleIndex';
|
|
|
28
29
|
* @param excludeCoreServiceFiles The generation of the core and services is excluded
|
|
29
30
|
* @param request: Path to custom request file
|
|
30
31
|
* @param useCancelableRequest Use cancelable request type.
|
|
31
|
-
* @param useRequestRaw Generate requestRaw methods and ApiResult-based raw stack.
|
|
32
32
|
* @param useSeparatedIndexes Use separate index files for the core, models, schemas, and services
|
|
33
33
|
* @param validationLibrary Validation library to use for schema validation
|
|
34
34
|
*/
|
|
@@ -43,15 +43,13 @@ type TWriteClientProps = {
|
|
|
43
43
|
request?: string;
|
|
44
44
|
customExecutorPath?: string;
|
|
45
45
|
useCancelableRequest?: boolean;
|
|
46
|
-
useRequestRaw?: boolean;
|
|
47
46
|
useSeparatedIndexes?: boolean;
|
|
48
47
|
validationLibrary?: ValidationLibrary;
|
|
49
48
|
emptySchemaStrategy: EmptySchemaStrategy;
|
|
50
49
|
modelsMode?: ModelsMode;
|
|
51
|
-
|
|
52
|
-
useEslintFix?: boolean;
|
|
50
|
+
prettierConfigPath?: string;
|
|
53
51
|
};
|
|
54
|
-
type TAPIClientGeneratorConfig = Omit<TWriteClientProps, 'httpClient' | 'useOptions' | 'request' | 'useCancelableRequest' | '
|
|
52
|
+
type TAPIClientGeneratorConfig = Omit<TWriteClientProps, 'httpClient' | 'useOptions' | 'request' | 'useCancelableRequest' | 'useSeparatedIndexes'> & {
|
|
55
53
|
schemaModels: Model[];
|
|
56
54
|
};
|
|
57
55
|
/**
|
|
@@ -59,6 +57,12 @@ type TAPIClientGeneratorConfig = Omit<TWriteClientProps, 'httpClient' | 'useOpti
|
|
|
59
57
|
*/
|
|
60
58
|
export declare class WriteClient {
|
|
61
59
|
private config;
|
|
60
|
+
private expectedOutputFiles;
|
|
61
|
+
private writeStats;
|
|
62
|
+
/** Absolute paths of generated model/service files for batch ESLint. */
|
|
63
|
+
private lintTargetFiles;
|
|
64
|
+
/** Output directory globs for the temporary tsconfig include. */
|
|
65
|
+
private lintIncludeGlobs;
|
|
62
66
|
private _logger;
|
|
63
67
|
constructor(logger?: Logger);
|
|
64
68
|
/**
|
|
@@ -74,6 +78,30 @@ export declare class WriteClient {
|
|
|
74
78
|
combineAndWrite(): Promise<void>;
|
|
75
79
|
combineAndWrightSimple(): Promise<void>;
|
|
76
80
|
get logger(): Logger;
|
|
81
|
+
writeOutputFile(filePath: string, content: string): Promise<WriteFileIfChangedResult>;
|
|
82
|
+
registerOutputFile(filePath: string): void;
|
|
83
|
+
getExpectedOutputFiles(): Set<string>;
|
|
84
|
+
getExpectedOutputFilesArray(): string[];
|
|
85
|
+
getWriteStats(): {
|
|
86
|
+
written: number;
|
|
87
|
+
unchanged: number;
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Registers a generated file for the post-generation batch ESLint pass.
|
|
91
|
+
*
|
|
92
|
+
* @param filePath - Written file path (absolute or relative to cwd).
|
|
93
|
+
* @param outputRoot - Models or services output directory used to build a narrow tsconfig glob.
|
|
94
|
+
*/
|
|
95
|
+
registerLintTarget(filePath: string, outputRoot: string): void;
|
|
96
|
+
/**
|
|
97
|
+
* Returns collected lint targets after all writeClient* calls.
|
|
98
|
+
*/
|
|
99
|
+
getLintTargets(): {
|
|
100
|
+
files: string[];
|
|
101
|
+
includeGlobs: string[];
|
|
102
|
+
};
|
|
103
|
+
/** Clears the lint registry after batch ESLint finishes or is skipped. */
|
|
104
|
+
clearLintTargets(): void;
|
|
77
105
|
private buildSimpleClientIndexMap;
|
|
78
106
|
private buildClientIndexMap;
|
|
79
107
|
private finalizeAndWrite;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WriteClient.d.ts","sourceRoot":"","sources":["../../src/core/WriteClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAM1C,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAIxD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"WriteClient.d.ts","sourceRoot":"","sources":["../../src/core/WriteClient.ts"],"names":[],"mappings":"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"}
|
package/dist/core/WriteClient.js
CHANGED
|
@@ -21,11 +21,18 @@ const writeClientSchemasIndex_1 = require("./utils/writeClientSchemasIndex");
|
|
|
21
21
|
const writeClientServices_1 = require("./utils/writeClientServices");
|
|
22
22
|
const writeClientServicesIndex_1 = require("./utils/writeClientServicesIndex");
|
|
23
23
|
const writeClientSimpleIndex_1 = require("./utils/writeClientSimpleIndex");
|
|
24
|
+
const writeFileIfChanged_1 = require("./utils/writeFileIfChanged");
|
|
24
25
|
/**
|
|
25
26
|
* The client which is writing all items and keep the parameters to write index file
|
|
26
27
|
*/
|
|
27
28
|
class WriteClient {
|
|
28
29
|
config = new Map();
|
|
30
|
+
expectedOutputFiles = new Set();
|
|
31
|
+
writeStats = { written: 0, unchanged: 0 };
|
|
32
|
+
/** Absolute paths of generated model/service files for batch ESLint. */
|
|
33
|
+
lintTargetFiles = new Set();
|
|
34
|
+
/** Output directory globs for the temporary tsconfig include. */
|
|
35
|
+
lintIncludeGlobs = new Set();
|
|
29
36
|
_logger;
|
|
30
37
|
constructor(logger) {
|
|
31
38
|
this._logger =
|
|
@@ -40,14 +47,14 @@ class WriteClient {
|
|
|
40
47
|
* Write our OpenAPI client, using the given templates at the given output
|
|
41
48
|
*/
|
|
42
49
|
async writeClient(options) {
|
|
43
|
-
const { client, templates, outputPaths, httpClient, useOptions, useUnionTypes, excludeCoreServiceFiles = false, request, customExecutorPath, useCancelableRequest = false,
|
|
50
|
+
const { client, templates, outputPaths, httpClient, useOptions, useUnionTypes, excludeCoreServiceFiles = false, request, customExecutorPath, useCancelableRequest = false, useSeparatedIndexes = false, validationLibrary = ValidationLibrary_enum_1.ValidationLibrary.NONE, emptySchemaStrategy, modelsMode, prettierConfigPath, } = options;
|
|
44
51
|
if (!excludeCoreServiceFiles) {
|
|
45
52
|
const executorPath = (0, pathHelpers_1.resolveHelper)(outputPaths.outputCore, 'executor');
|
|
46
53
|
const interceptorsPath = (0, pathHelpers_1.resolveHelper)(outputPaths.outputCore, 'interceptors');
|
|
47
54
|
await fileSystemHelpers_1.fileSystemHelpers.mkdir(outputPaths.outputCore);
|
|
48
55
|
await fileSystemHelpers_1.fileSystemHelpers.mkdir(executorPath);
|
|
49
56
|
await fileSystemHelpers_1.fileSystemHelpers.mkdir(interceptorsPath);
|
|
50
|
-
await this.writeClientCore({ client, templates, outputCorePath: outputPaths.outputCore, httpClient, request, useCancelableRequest,
|
|
57
|
+
await this.writeClientCore({ client, templates, outputCorePath: outputPaths.outputCore, httpClient, request, useCancelableRequest, modelsMode });
|
|
51
58
|
await this.writeClientCoreIndex({
|
|
52
59
|
templates,
|
|
53
60
|
outputCorePath: outputPaths.outputCore,
|
|
@@ -69,9 +76,7 @@ class WriteClient {
|
|
|
69
76
|
useUnionTypes,
|
|
70
77
|
useOptions,
|
|
71
78
|
useCancelableRequest,
|
|
72
|
-
|
|
73
|
-
useProjectPrettier,
|
|
74
|
-
useEslintFix,
|
|
79
|
+
prettierConfigPath,
|
|
75
80
|
});
|
|
76
81
|
await this.writeClientServicesIndex({
|
|
77
82
|
services: client.services,
|
|
@@ -86,8 +91,7 @@ class WriteClient {
|
|
|
86
91
|
templates,
|
|
87
92
|
request,
|
|
88
93
|
customExecutorPath,
|
|
89
|
-
|
|
90
|
-
useEslintFix,
|
|
94
|
+
prettierConfigPath,
|
|
91
95
|
});
|
|
92
96
|
}
|
|
93
97
|
/**
|
|
@@ -104,8 +108,7 @@ class WriteClient {
|
|
|
104
108
|
useUnionTypes,
|
|
105
109
|
validationLibrary,
|
|
106
110
|
emptySchemaStrategy,
|
|
107
|
-
|
|
108
|
-
useEslintFix,
|
|
111
|
+
prettierConfigPath,
|
|
109
112
|
});
|
|
110
113
|
await this.writeClientSchemasIndex({
|
|
111
114
|
models: schemaModels,
|
|
@@ -129,8 +132,7 @@ class WriteClient {
|
|
|
129
132
|
emptySchemaStrategy,
|
|
130
133
|
modelsMode,
|
|
131
134
|
schemaModels,
|
|
132
|
-
|
|
133
|
-
useEslintFix,
|
|
135
|
+
prettierConfigPath,
|
|
134
136
|
});
|
|
135
137
|
return;
|
|
136
138
|
}
|
|
@@ -150,17 +152,16 @@ class WriteClient {
|
|
|
150
152
|
emptySchemaStrategy,
|
|
151
153
|
modelsMode,
|
|
152
154
|
schemaModels: [],
|
|
153
|
-
|
|
154
|
-
useEslintFix,
|
|
155
|
+
prettierConfigPath,
|
|
155
156
|
});
|
|
156
157
|
}
|
|
157
158
|
async writeModelsAndFinalize(config) {
|
|
158
|
-
const { client, templates, outputPaths, httpClient, useUnionTypes, useOptions, useSeparatedIndexes, excludeCoreServiceFiles, validationLibrary, emptySchemaStrategy, modelsMode, schemaModels,
|
|
159
|
+
const { client, templates, outputPaths, httpClient, useUnionTypes, useOptions, useSeparatedIndexes, excludeCoreServiceFiles, validationLibrary, emptySchemaStrategy, modelsMode, schemaModels, prettierConfigPath, } = config;
|
|
159
160
|
await fileSystemHelpers_1.fileSystemHelpers.mkdir(outputPaths.outputModels);
|
|
160
161
|
const shouldInlineDtoCore = modelsMode === ModelsMode_enum_1.ModelsMode.CLASSES && excludeCoreServiceFiles;
|
|
161
162
|
if (shouldInlineDtoCore) {
|
|
162
|
-
await
|
|
163
|
-
await
|
|
163
|
+
await this.writeOutputFile((0, pathHelpers_1.resolveHelper)(outputPaths.outputModels, 'BaseDto.ts'), templates.core.baseDto({}));
|
|
164
|
+
await this.writeOutputFile((0, pathHelpers_1.resolveHelper)(outputPaths.outputModels, 'dtoUtils.ts'), templates.core.dtoUtils({}));
|
|
164
165
|
}
|
|
165
166
|
await this.writeClientModels({
|
|
166
167
|
models: client.models,
|
|
@@ -171,8 +172,7 @@ class WriteClient {
|
|
|
171
172
|
useOptions,
|
|
172
173
|
modelsMode,
|
|
173
174
|
outputCorePath: shouldInlineDtoCore ? './' : (0, pathHelpers_1.relativeHelper)(outputPaths.outputModels, outputPaths.outputCore),
|
|
174
|
-
|
|
175
|
-
useEslintFix,
|
|
175
|
+
prettierConfigPath,
|
|
176
176
|
});
|
|
177
177
|
await this.writeClientModelsIndex({
|
|
178
178
|
models: client.models,
|
|
@@ -219,6 +219,48 @@ class WriteClient {
|
|
|
219
219
|
get logger() {
|
|
220
220
|
return this._logger;
|
|
221
221
|
}
|
|
222
|
+
async writeOutputFile(filePath, content) {
|
|
223
|
+
this.expectedOutputFiles.add((0, pathHelpers_1.resolveHelper)(process.cwd(), filePath));
|
|
224
|
+
const result = await (0, writeFileIfChanged_1.writeFileIfChanged)(filePath, content);
|
|
225
|
+
this.writeStats[result] += 1;
|
|
226
|
+
return result;
|
|
227
|
+
}
|
|
228
|
+
registerOutputFile(filePath) {
|
|
229
|
+
this.expectedOutputFiles.add((0, pathHelpers_1.resolveHelper)(process.cwd(), filePath));
|
|
230
|
+
}
|
|
231
|
+
getExpectedOutputFiles() {
|
|
232
|
+
return this.expectedOutputFiles;
|
|
233
|
+
}
|
|
234
|
+
getExpectedOutputFilesArray() {
|
|
235
|
+
return Array.from(this.expectedOutputFiles);
|
|
236
|
+
}
|
|
237
|
+
getWriteStats() {
|
|
238
|
+
return { ...this.writeStats };
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Registers a generated file for the post-generation batch ESLint pass.
|
|
242
|
+
*
|
|
243
|
+
* @param filePath - Written file path (absolute or relative to cwd).
|
|
244
|
+
* @param outputRoot - Models or services output directory used to build a narrow tsconfig glob.
|
|
245
|
+
*/
|
|
246
|
+
registerLintTarget(filePath, outputRoot) {
|
|
247
|
+
this.lintTargetFiles.add((0, pathHelpers_1.resolveHelper)(process.cwd(), filePath));
|
|
248
|
+
this.lintIncludeGlobs.add(`${outputRoot.replace(/\\/g, '/')}/**/*.ts`);
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Returns collected lint targets after all writeClient* calls.
|
|
252
|
+
*/
|
|
253
|
+
getLintTargets() {
|
|
254
|
+
return {
|
|
255
|
+
files: [...this.lintTargetFiles],
|
|
256
|
+
includeGlobs: [...this.lintIncludeGlobs],
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
/** Clears the lint registry after batch ESLint finishes or is skipped. */
|
|
260
|
+
clearLintTargets() {
|
|
261
|
+
this.lintTargetFiles.clear();
|
|
262
|
+
this.lintIncludeGlobs.clear();
|
|
263
|
+
}
|
|
222
264
|
buildSimpleClientIndexMap() {
|
|
223
265
|
const result = new Map();
|
|
224
266
|
for (const [key, value] of this.config.entries()) {
|
|
@@ -61,7 +61,7 @@ const WriteClient_1 = require("../WriteClient");
|
|
|
61
61
|
interceptors: () => 'interceptors',
|
|
62
62
|
withInterceptors: () => 'withInterceptors',
|
|
63
63
|
baseDto: () => 'baseDto',
|
|
64
|
-
dtoUtils: () => 'dtoUtils'
|
|
64
|
+
dtoUtils: () => 'dtoUtils',
|
|
65
65
|
},
|
|
66
66
|
};
|
|
67
67
|
const outputPaths = (0, getOutputPaths_1.getOutputPaths)({ output: './dist' });
|