ts-openapi-codegen 2.0.0-beta.9 → 2.1.0-beta.1
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 +177 -18
- package/README.rus.md +177 -21
- package/dist/cli/analyzeDiff/__tests__/analyzeDiff.cli.test.d.ts +2 -0
- package/dist/cli/analyzeDiff/__tests__/analyzeDiff.cli.test.d.ts.map +1 -0
- package/dist/cli/analyzeDiff/__tests__/analyzeDiff.cli.test.js +365 -0
- package/dist/cli/analyzeDiff/__tests__/analyzeDiffRenameAndInvalidRegex.test.d.ts +2 -0
- package/dist/cli/analyzeDiff/__tests__/analyzeDiffRenameAndInvalidRegex.test.d.ts.map +1 -0
- package/dist/cli/analyzeDiff/__tests__/analyzeDiffRenameAndInvalidRegex.test.js +142 -0
- package/dist/cli/analyzeDiff/__tests__/analyzeDiffTypeCoercion.test.d.ts +2 -0
- package/dist/cli/analyzeDiff/__tests__/analyzeDiffTypeCoercion.test.d.ts.map +1 -0
- package/dist/cli/analyzeDiff/__tests__/analyzeDiffTypeCoercion.test.js +137 -0
- package/dist/cli/analyzeDiff/analyzeDiff.d.ts +17 -0
- package/dist/cli/analyzeDiff/analyzeDiff.d.ts.map +1 -0
- package/dist/cli/analyzeDiff/analyzeDiff.js +105 -0
- package/dist/cli/analyzeDiff/buildLegacyReport.d.ts +17 -0
- package/dist/cli/analyzeDiff/buildLegacyReport.d.ts.map +1 -0
- package/dist/cli/analyzeDiff/buildLegacyReport.js +54 -0
- package/dist/cli/analyzeDiff/ciSummary.d.ts +6 -0
- package/dist/cli/analyzeDiff/ciSummary.d.ts.map +1 -0
- package/dist/cli/analyzeDiff/ciSummary.js +20 -0
- package/dist/cli/analyzeDiff/diffEngine.d.ts +54 -0
- package/dist/cli/analyzeDiff/diffEngine.d.ts.map +1 -0
- package/dist/cli/analyzeDiff/diffEngine.js +209 -0
- package/dist/cli/analyzeDiff/ignoreRules.d.ts +33 -0
- package/dist/cli/analyzeDiff/ignoreRules.d.ts.map +1 -0
- package/dist/cli/analyzeDiff/ignoreRules.js +93 -0
- package/dist/cli/analyzeDiff/ignoreSemanticChanges.d.ts +10 -0
- package/dist/cli/analyzeDiff/ignoreSemanticChanges.d.ts.map +1 -0
- package/dist/cli/analyzeDiff/ignoreSemanticChanges.js +84 -0
- package/dist/cli/analyzeDiff/logLegacyReport.d.ts +6 -0
- package/dist/cli/analyzeDiff/logLegacyReport.d.ts.map +1 -0
- package/dist/cli/analyzeDiff/logLegacyReport.js +29 -0
- package/dist/cli/analyzeDiff/miracles.d.ts +89 -0
- package/dist/cli/analyzeDiff/miracles.d.ts.map +1 -0
- package/dist/cli/analyzeDiff/miracles.js +325 -0
- package/dist/cli/analyzeDiff/pluginPaths.d.ts +5 -0
- package/dist/cli/analyzeDiff/pluginPaths.d.ts.map +1 -0
- package/dist/cli/analyzeDiff/pluginPaths.js +13 -0
- package/dist/cli/analyzeDiff/report.d.ts +3 -0
- package/dist/cli/analyzeDiff/report.d.ts.map +1 -0
- package/dist/cli/analyzeDiff/report.js +7 -0
- package/dist/cli/analyzeDiff/semanticDiffContext.d.ts +6 -0
- package/dist/cli/analyzeDiff/semanticDiffContext.d.ts.map +1 -0
- package/dist/cli/analyzeDiff/semanticDiffContext.js +16 -0
- package/dist/cli/analyzeDiff/specParser.d.ts +22 -0
- package/dist/cli/analyzeDiff/specParser.d.ts.map +1 -0
- package/dist/cli/analyzeDiff/specParser.js +80 -0
- package/dist/cli/analyzeDiff/types.d.ts +61 -0
- package/dist/cli/analyzeDiff/types.d.ts.map +1 -0
- package/dist/cli/analyzeDiff/types.js +2 -0
- package/dist/cli/analyzeDiff/writeLegacyReport.d.ts +6 -0
- package/dist/cli/analyzeDiff/writeLegacyReport.d.ts.map +1 -0
- package/dist/cli/analyzeDiff/writeLegacyReport.js +21 -0
- package/dist/cli/checkAndUpdateConfig/checkConfig.d.ts.map +1 -1
- package/dist/cli/checkAndUpdateConfig/checkConfig.js +13 -8
- package/dist/cli/checkAndUpdateConfig/constants.d.ts +0 -9
- package/dist/cli/checkAndUpdateConfig/constants.d.ts.map +1 -1
- package/dist/cli/checkAndUpdateConfig/constants.js +1 -10
- package/dist/cli/checkAndUpdateConfig/updateConfig.d.ts.map +1 -1
- package/dist/cli/checkAndUpdateConfig/updateConfig.js +11 -7
- package/dist/cli/checkAndUpdateConfig/utils/selectConfigAction.d.ts.map +1 -1
- package/dist/cli/checkAndUpdateConfig/utils/selectConfigAction.js +6 -3
- package/dist/cli/checkAndUpdateConfig/utils/updateExistingConfigFile.d.ts.map +1 -1
- package/dist/cli/checkAndUpdateConfig/utils/updateExistingConfigFile.js +3 -2
- package/dist/cli/checkAndUpdateConfig/utils/validateAndMigrateConfigData.d.ts.map +1 -1
- package/dist/cli/checkAndUpdateConfig/utils/validateAndMigrateConfigData.js +5 -0
- package/dist/cli/checkAndUpdateConfig/utils/writeExampleConfigFile.d.ts.map +1 -1
- package/dist/cli/checkAndUpdateConfig/utils/writeExampleConfigFile.js +2 -2
- package/dist/cli/generateOpenApiClient/__tests__/generateOpenApiClient.strict.test.d.ts +2 -0
- package/dist/cli/generateOpenApiClient/__tests__/generateOpenApiClient.strict.test.d.ts.map +1 -0
- package/dist/cli/generateOpenApiClient/__tests__/generateOpenApiClient.strict.test.js +152 -0
- package/dist/cli/generateOpenApiClient/generateOpenApiClient.d.ts +6 -2
- package/dist/cli/generateOpenApiClient/generateOpenApiClient.d.ts.map +1 -1
- package/dist/cli/generateOpenApiClient/generateOpenApiClient.js +70 -22
- package/dist/cli/index.js +62 -5
- package/dist/cli/initOpenApiConfig/init.d.ts.map +1 -1
- package/dist/cli/initOpenApiConfig/init.js +19 -6
- package/dist/cli/initOpenApiConfig/initConfig.d.ts +1 -0
- package/dist/cli/initOpenApiConfig/initConfig.d.ts.map +1 -1
- package/dist/cli/initOpenApiConfig/initConfig.js +47 -24
- package/dist/cli/initOpenApiConfig/initCustomRequest.d.ts +8 -1
- package/dist/cli/initOpenApiConfig/initCustomRequest.d.ts.map +1 -1
- package/dist/cli/initOpenApiConfig/initCustomRequest.js +40 -8
- package/dist/cli/initOpenApiConfig/utils/buildConfig.d.ts.map +1 -1
- package/dist/cli/initOpenApiConfig/utils/buildConfig.js +60 -0
- package/dist/cli/initOpenApiConfig/utils/validateSpecFile.d.ts.map +1 -1
- package/dist/cli/initOpenApiConfig/utils/validateSpecFile.js +2 -1
- package/dist/cli/initOpenApiConfig/utils/writeConfigFile.d.ts.map +1 -1
- package/dist/cli/initOpenApiConfig/utils/writeConfigFile.js +2 -1
- package/dist/cli/interactive/confirmDialog.d.ts.map +1 -1
- package/dist/cli/interactive/confirmDialog.js +3 -2
- package/dist/cli/interactive/constants.d.ts +2 -2
- package/dist/cli/interactive/constants.js +8 -8
- package/dist/cli/interactive/selectDialog.d.ts.map +1 -1
- package/dist/cli/interactive/selectDialog.js +11 -6
- package/dist/cli/previewChanges/previewChanges.d.ts.map +1 -1
- package/dist/cli/previewChanges/previewChanges.js +151 -39
- package/dist/cli/previewChanges/utils/updateOutputPaths.d.ts.map +1 -1
- package/dist/cli/previewChanges/utils/updateOutputPaths.js +6 -0
- package/dist/cli/schemas/analyzeDiff.d.ts +14 -0
- package/dist/cli/schemas/analyzeDiff.d.ts.map +1 -0
- package/dist/cli/schemas/analyzeDiff.js +28 -0
- package/dist/cli/schemas/generate.d.ts +9 -0
- package/dist/cli/schemas/generate.d.ts.map +1 -1
- package/dist/cli/schemas/generate.js +9 -0
- package/dist/cli/schemas/index.d.ts +3 -1
- package/dist/cli/schemas/index.d.ts.map +1 -1
- package/dist/cli/schemas/index.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 +19 -2
- package/dist/common/Logger.d.ts +20 -1
- package/dist/common/Logger.d.ts.map +1 -1
- package/dist/common/Logger.js +70 -9
- package/dist/common/LoggerMessages.d.ts +136 -33
- package/dist/common/LoggerMessages.d.ts.map +1 -1
- package/dist/common/LoggerMessages.js +119 -45
- package/dist/common/VersionedSchema/AllVersionedSchemas/AllMigrationPlans.d.ts +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/AllMigrationPlans.d.ts.map +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/AllMigrationPlans.js +20 -4
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedBase.d.ts +4 -0
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedBase.d.ts.map +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV1.d.ts +10 -2
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV1.d.ts.map +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV2.d.ts +10 -2
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV2.d.ts.map +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV3.d.ts +10 -2
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV3.d.ts.map +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV4.d.ts +77 -0
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV4.d.ts.map +1 -0
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV4.js +41 -0
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.d.ts +79 -0
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.d.ts.map +1 -0
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.js +19 -0
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.d.ts +326 -28
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.d.ts.map +1 -1
- package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.js +15 -17
- package/dist/common/VersionedSchema/CommonSchemas.d.ts +52 -4
- package/dist/common/VersionedSchema/CommonSchemas.d.ts.map +1 -1
- package/dist/common/VersionedSchema/CommonSchemas.js +48 -7
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV1.d.ts +6 -2
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV1.d.ts.map +1 -1
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV2.d.ts +4 -0
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV2.d.ts.map +1 -1
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV3.d.ts +4 -0
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV3.d.ts.map +1 -1
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV4.d.ts +6 -2
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV4.d.ts.map +1 -1
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV5.d.ts +6 -2
- package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV5.d.ts.map +1 -1
- package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV1.d.ts +6 -2
- package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV1.d.ts.map +1 -1
- package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV2.d.ts +4 -0
- package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV2.d.ts.map +1 -1
- package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV3.d.ts +4 -0
- package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV3.d.ts.map +1 -1
- package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV4.d.ts +6 -2
- package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV4.d.ts.map +1 -1
- package/dist/common/VersionedSchema/Utils/__mocks__/compatibilityCases.d.ts.map +1 -1
- package/dist/common/VersionedSchema/Utils/__mocks__/compatibilityCases.js +40 -1
- package/dist/common/VersionedSchema/Utils/__tests__/allUtils.test.d.ts +2 -0
- package/dist/common/VersionedSchema/Utils/__tests__/allUtils.test.d.ts.map +1 -0
- package/dist/common/VersionedSchema/Utils/__tests__/allUtils.test.js +185 -0
- package/dist/common/VersionedSchema/Utils/__tests__/compareShapes.test.js +20 -3
- package/dist/common/VersionedSchema/Utils/__tests__/migrateDataToLatestSchemaVersion.test.js +19 -1
- package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.d.ts +4 -0
- package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.d.ts.map +1 -1
- package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.js +68 -23
- package/dist/common/VersionedSchema/Utils/getUniqueKeysFromSchemas.d.ts +1 -1
- package/dist/common/VersionedSchema/Utils/getUniqueKeysFromSchemas.js +1 -1
- package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.d.ts +10 -0
- package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.d.ts.map +1 -1
- package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.js +34 -15
- package/dist/common/__tests__/Logger.test.d.ts +2 -0
- package/dist/common/__tests__/Logger.test.d.ts.map +1 -0
- package/dist/common/__tests__/Logger.test.js +100 -0
- package/dist/common/utils/__tests__/convertArrayToObject.test.js +67 -169
- package/dist/common/utils/__tests__/eslintFix.test.d.ts +2 -0
- package/dist/common/utils/__tests__/eslintFix.test.d.ts.map +1 -0
- package/dist/common/utils/__tests__/eslintFix.test.js +134 -0
- package/dist/common/utils/__tests__/format.test.d.ts +2 -0
- package/dist/common/utils/__tests__/format.test.d.ts.map +1 -0
- package/dist/common/utils/__tests__/format.test.js +90 -0
- package/dist/common/utils/convertArrayToObject.d.ts.map +1 -1
- package/dist/common/utils/convertArrayToObject.js +54 -14
- package/dist/common/utils/eslintFix.d.ts +7 -0
- package/dist/common/utils/eslintFix.d.ts.map +1 -0
- package/dist/common/utils/eslintFix.js +78 -0
- 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 +39 -15
- package/dist/common/utils/jsonPath.d.ts +5 -0
- package/dist/common/utils/jsonPath.d.ts.map +1 -0
- package/dist/common/utils/jsonPath.js +27 -0
- package/dist/common/utils/normalizeObject.d.ts +2 -0
- package/dist/common/utils/normalizeObject.d.ts.map +1 -0
- package/dist/common/utils/normalizeObject.js +63 -0
- package/dist/core/Context.d.ts +8 -1
- package/dist/core/Context.d.ts.map +1 -1
- package/dist/core/Context.js +23 -4
- package/dist/core/OpenApiClient.d.ts +2 -0
- package/dist/core/OpenApiClient.d.ts.map +1 -1
- package/dist/core/OpenApiClient.js +127 -6
- package/dist/core/WriteClient.d.ts +12 -1
- package/dist/core/WriteClient.d.ts.map +1 -1
- package/dist/core/WriteClient.js +83 -8
- package/dist/core/__tests__/WriteClient.test.js +6 -1
- package/dist/core/api/v2/parser/__tests__/getModel.test.d.ts +2 -0
- package/dist/core/api/v2/parser/__tests__/getModel.test.d.ts.map +1 -0
- package/dist/core/api/v2/parser/__tests__/getModel.test.js +34 -0
- package/dist/core/api/v2/parser/getModel.d.ts.map +1 -1
- package/dist/core/api/v2/parser/getModel.js +6 -1
- package/dist/core/api/v2/parser/getOperation.d.ts.map +1 -1
- package/dist/core/api/v2/parser/getOperation.js +2 -0
- package/dist/core/api/v2/parser/getOperationResponses.d.ts.map +1 -1
- package/dist/core/api/v2/parser/getOperationResponses.js +9 -1
- package/dist/core/api/v2/parser/getType.d.ts.map +1 -1
- package/dist/core/api/v2/parser/getType.js +2 -1
- package/dist/core/api/v2/types/OpenApiSchema.model.d.ts +2 -0
- package/dist/core/api/v2/types/OpenApiSchema.model.d.ts.map +1 -1
- package/dist/core/api/v3/parser/__tests__/getContent.test.d.ts +2 -0
- package/dist/core/api/v3/parser/__tests__/getContent.test.d.ts.map +1 -0
- package/dist/core/api/v3/parser/__tests__/getContent.test.js +65 -0
- package/dist/core/api/v3/parser/__tests__/getModel.test.d.ts +2 -0
- package/dist/core/api/v3/parser/__tests__/getModel.test.d.ts.map +1 -0
- package/dist/core/api/v3/parser/__tests__/getModel.test.js +34 -0
- package/dist/core/api/v3/parser/getContent.d.ts.map +1 -1
- package/dist/core/api/v3/parser/getContent.js +21 -11
- package/dist/core/api/v3/parser/getModel.d.ts.map +1 -1
- package/dist/core/api/v3/parser/getModel.js +6 -1
- package/dist/core/api/v3/parser/getOperation.d.ts.map +1 -1
- package/dist/core/api/v3/parser/getOperation.js +2 -0
- package/dist/core/api/v3/parser/getOperationResponses.d.ts.map +1 -1
- package/dist/core/api/v3/parser/getOperationResponses.js +9 -1
- package/dist/core/api/v3/parser/getType.d.ts.map +1 -1
- package/dist/core/api/v3/parser/getType.js +2 -1
- package/dist/core/api/v3/types/OpenApiSchema.model.d.ts +2 -0
- package/dist/core/api/v3/types/OpenApiSchema.model.d.ts.map +1 -1
- package/dist/core/governance/__tests__/evaluateGovernanceRules.test.d.ts +2 -0
- package/dist/core/governance/__tests__/evaluateGovernanceRules.test.d.ts.map +1 -0
- package/dist/core/governance/__tests__/evaluateGovernanceRules.test.js +100 -0
- package/dist/core/governance/__tests__/loadGovernanceConfig.test.d.ts +2 -0
- package/dist/core/governance/__tests__/loadGovernanceConfig.test.d.ts.map +1 -0
- package/dist/core/governance/__tests__/loadGovernanceConfig.test.js +71 -0
- package/dist/core/governance/evaluateGovernanceRules.d.ts +42 -0
- package/dist/core/governance/evaluateGovernanceRules.d.ts.map +1 -0
- package/dist/core/governance/evaluateGovernanceRules.js +134 -0
- package/dist/core/governance/governanceConfigSchema.d.ts +4 -0
- package/dist/core/governance/governanceConfigSchema.d.ts.map +1 -0
- package/dist/core/governance/governanceConfigSchema.js +39 -0
- package/dist/core/governance/loadGovernanceConfig.d.ts +7 -0
- package/dist/core/governance/loadGovernanceConfig.d.ts.map +1 -0
- package/dist/core/governance/loadGovernanceConfig.js +60 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +4 -2
- package/dist/core/plugins/GeneratorPlugin.model.d.ts +42 -0
- package/dist/core/plugins/GeneratorPlugin.model.d.ts.map +1 -0
- package/dist/core/plugins/GeneratorPlugin.model.js +2 -0
- package/dist/core/plugins/__tests__/applySemanticDiffPluginHooks.test.d.ts +2 -0
- package/dist/core/plugins/__tests__/applySemanticDiffPluginHooks.test.d.ts.map +1 -0
- package/dist/core/plugins/__tests__/applySemanticDiffPluginHooks.test.js +115 -0
- package/dist/core/plugins/__tests__/loadGeneratorPlugins.test.d.ts +2 -0
- package/dist/core/plugins/__tests__/loadGeneratorPlugins.test.d.ts.map +1 -0
- package/dist/core/plugins/__tests__/loadGeneratorPlugins.test.js +62 -0
- package/dist/core/plugins/applySemanticDiffPluginHooks.d.ts +28 -0
- package/dist/core/plugins/applySemanticDiffPluginHooks.d.ts.map +1 -0
- package/dist/core/plugins/applySemanticDiffPluginHooks.js +160 -0
- package/dist/core/plugins/builtins/xTypescriptTypePlugin.d.ts +6 -0
- package/dist/core/plugins/builtins/xTypescriptTypePlugin.d.ts.map +1 -0
- package/dist/core/plugins/builtins/xTypescriptTypePlugin.js +13 -0
- package/dist/core/plugins/getBuiltinPlugins.d.ts +6 -0
- package/dist/core/plugins/getBuiltinPlugins.d.ts.map +1 -0
- package/dist/core/plugins/getBuiltinPlugins.js +10 -0
- package/dist/core/plugins/index.d.ts +4 -0
- package/dist/core/plugins/index.d.ts.map +1 -0
- package/dist/core/plugins/index.js +5 -0
- package/dist/core/plugins/loadGeneratorPlugins.d.ts +6 -0
- package/dist/core/plugins/loadGeneratorPlugins.d.ts.map +1 -0
- package/dist/core/plugins/loadGeneratorPlugins.js +94 -0
- package/dist/core/semanticDiff/__tests__/analyzeOpenApiDiff.test.d.ts +2 -0
- package/dist/core/semanticDiff/__tests__/analyzeOpenApiDiff.test.d.ts.map +1 -0
- package/dist/core/semanticDiff/__tests__/analyzeOpenApiDiff.test.js +537 -0
- package/dist/core/semanticDiff/__tests__/semanticDiffReportSchema.test.d.ts +2 -0
- package/dist/core/semanticDiff/__tests__/semanticDiffReportSchema.test.d.ts.map +1 -0
- package/dist/core/semanticDiff/__tests__/semanticDiffReportSchema.test.js +66 -0
- package/dist/core/semanticDiff/analyzeOpenApiDiff.d.ts +45 -0
- package/dist/core/semanticDiff/analyzeOpenApiDiff.d.ts.map +1 -0
- package/dist/core/semanticDiff/analyzeOpenApiDiff.js +640 -0
- package/dist/core/semanticDiff/semanticDiffReportSchema.d.ts +11 -0
- package/dist/core/semanticDiff/semanticDiffReportSchema.d.ts.map +1 -0
- package/dist/core/semanticDiff/semanticDiffReportSchema.js +132 -0
- package/dist/core/strict/__tests__/validateOpenApiStrict.test.d.ts +2 -0
- package/dist/core/strict/__tests__/validateOpenApiStrict.test.d.ts.map +1 -0
- package/dist/core/strict/__tests__/validateOpenApiStrict.test.js +156 -0
- package/dist/core/strict/validateOpenApiStrict.d.ts +43 -0
- package/dist/core/strict/validateOpenApiStrict.d.ts.map +1 -0
- package/dist/core/strict/validateOpenApiStrict.js +253 -0
- package/dist/core/types/base/ClientArtifacts.model.d.ts +2 -0
- package/dist/core/types/base/ClientArtifacts.model.d.ts.map +1 -1
- package/dist/core/types/base/Templates.model.d.ts +4 -1
- package/dist/core/types/base/Templates.model.d.ts.map +1 -1
- package/dist/core/types/enums/EmptySchemaStrategy.enum.d.ts +6 -0
- package/dist/core/types/enums/EmptySchemaStrategy.enum.d.ts.map +1 -0
- package/dist/core/types/enums/EmptySchemaStrategy.enum.js +9 -0
- package/dist/core/types/enums/ModelsMode.enum.d.ts +5 -0
- package/dist/core/types/enums/ModelsMode.enum.d.ts.map +1 -0
- package/dist/core/types/enums/ModelsMode.enum.js +8 -0
- package/dist/core/types/shared/Client.model.d.ts +2 -0
- package/dist/core/types/shared/Client.model.d.ts.map +1 -1
- package/dist/core/types/shared/DiffInfo.model.d.ts +13 -0
- package/dist/core/types/shared/DiffInfo.model.d.ts.map +1 -0
- package/dist/core/types/shared/DiffInfo.model.js +2 -0
- package/dist/core/types/shared/Miracle.model.d.ts +13 -0
- package/dist/core/types/shared/Miracle.model.d.ts.map +1 -0
- package/dist/core/types/shared/Miracle.model.js +2 -0
- package/dist/core/types/shared/Model.model.d.ts +23 -0
- package/dist/core/types/shared/Model.model.d.ts.map +1 -1
- package/dist/core/types/shared/Operation.model.d.ts +5 -0
- package/dist/core/types/shared/Operation.model.d.ts.map +1 -1
- package/dist/core/utils/__mocks__/templates.d.ts.map +1 -1
- package/dist/core/utils/__mocks__/templates.js +9 -0
- package/dist/core/utils/__tests__/applyDiffReportToClient.test.d.ts +2 -0
- package/dist/core/utils/__tests__/applyDiffReportToClient.test.d.ts.map +1 -0
- package/dist/core/utils/__tests__/applyDiffReportToClient.test.js +108 -0
- package/dist/core/utils/__tests__/getMappedType.test.js +2 -0
- package/dist/core/utils/__tests__/getOperationResponseCode.test.js +7 -2
- package/dist/core/utils/__tests__/getOperationResults.test.d.ts +2 -0
- package/dist/core/utils/__tests__/getOperationResults.test.d.ts.map +1 -0
- package/dist/core/utils/__tests__/getOperationResults.test.js +43 -0
- package/dist/core/utils/__tests__/getRelativeModelPath.test.d.ts +2 -0
- package/dist/core/utils/__tests__/getRelativeModelPath.test.d.ts.map +1 -0
- package/dist/core/utils/__tests__/getRelativeModelPath.test.js +27 -0
- package/dist/core/utils/__tests__/modelHelpers.test.d.ts +2 -0
- package/dist/core/utils/__tests__/modelHelpers.test.d.ts.map +1 -0
- package/dist/core/utils/__tests__/modelHelpers.test.js +151 -0
- package/dist/core/utils/__tests__/postProcessModelImports.test.d.ts +2 -0
- package/dist/core/utils/__tests__/postProcessModelImports.test.d.ts.map +1 -0
- package/dist/core/utils/__tests__/postProcessModelImports.test.js +67 -0
- package/dist/core/utils/__tests__/postProcessServiceImports.test.d.ts +2 -0
- package/dist/core/utils/__tests__/postProcessServiceImports.test.d.ts.map +1 -0
- package/dist/core/utils/__tests__/postProcessServiceImports.test.js +26 -0
- package/dist/core/utils/__tests__/prepareDtoModels.test.d.ts +2 -0
- package/dist/core/utils/__tests__/prepareDtoModels.test.d.ts.map +1 -0
- package/dist/core/utils/__tests__/prepareDtoModels.test.js +116 -0
- package/dist/core/utils/__tests__/resolveRefPath.test.d.ts +2 -0
- package/dist/core/utils/__tests__/resolveRefPath.test.d.ts.map +1 -0
- package/dist/core/utils/__tests__/resolveRefPath.test.js +22 -0
- package/dist/core/utils/__tests__/serviceHelpers.test.d.ts +2 -0
- package/dist/core/utils/__tests__/serviceHelpers.test.d.ts.map +1 -0
- package/dist/core/utils/__tests__/serviceHelpers.test.js +122 -0
- package/dist/core/utils/__tests__/writeClientExecutor.test.d.ts +2 -0
- package/dist/core/utils/__tests__/writeClientExecutor.test.d.ts.map +1 -0
- package/dist/core/utils/__tests__/writeClientExecutor.test.js +20 -0
- package/dist/core/utils/__tests__/writeClientModels.test.js +50 -0
- package/dist/core/utils/__tests__/writeClientSchemas.test.js +2 -0
- package/dist/core/utils/applyDiffReportToClient.d.ts +14 -0
- package/dist/core/utils/applyDiffReportToClient.d.ts.map +1 -0
- package/dist/core/utils/applyDiffReportToClient.js +367 -0
- package/dist/core/utils/getMappedType.d.ts.map +1 -1
- package/dist/core/utils/getMappedType.js +2 -0
- package/dist/core/utils/getOperationResponseCode.d.ts.map +1 -1
- package/dist/core/utils/getOperationResponseCode.js +10 -8
- package/dist/core/utils/getRelativeModelPath.d.ts +9 -0
- package/dist/core/utils/getRelativeModelPath.d.ts.map +1 -0
- package/dist/core/utils/getRelativeModelPath.js +37 -0
- package/dist/core/utils/loadDiffReport.d.ts +39 -0
- package/dist/core/utils/loadDiffReport.d.ts.map +1 -0
- package/dist/core/utils/loadDiffReport.js +51 -0
- package/dist/core/utils/modelHelpers.d.ts.map +1 -1
- package/dist/core/utils/modelHelpers.js +37 -3
- package/dist/core/utils/postProcessModelImports.d.ts.map +1 -1
- package/dist/core/utils/postProcessModelImports.js +14 -1
- package/dist/core/utils/postProcessServiceImports.d.ts.map +1 -1
- package/dist/core/utils/postProcessServiceImports.js +1 -2
- package/dist/core/utils/precompileTemplates.js +1 -0
- package/dist/core/utils/prepareDtoModels.d.ts +3 -0
- package/dist/core/utils/prepareDtoModels.d.ts.map +1 -0
- package/dist/core/utils/prepareDtoModels.js +189 -0
- package/dist/core/utils/registerHandlebarHelpers.d.ts.map +1 -1
- package/dist/core/utils/registerHandlebarHelpers.js +29 -1
- package/dist/core/utils/registerHandlebarTemplates.d.ts.map +1 -1
- package/dist/core/utils/registerHandlebarTemplates.js +48 -41
- package/dist/core/utils/resolveRefPath.d.ts.map +1 -1
- package/dist/core/utils/resolveRefPath.js +1 -4
- package/dist/core/utils/validateRawOptions.d.ts +1 -1
- package/dist/core/utils/validateRawOptions.d.ts.map +1 -1
- package/dist/core/utils/validateRawOptions.js +4 -2
- package/dist/core/utils/writeClientCore.d.ts +2 -0
- package/dist/core/utils/writeClientCore.d.ts.map +1 -1
- package/dist/core/utils/writeClientCore.js +6 -1
- package/dist/core/utils/writeClientCoreIndex.d.ts +1 -0
- package/dist/core/utils/writeClientCoreIndex.d.ts.map +1 -1
- package/dist/core/utils/writeClientCoreIndex.js +2 -2
- package/dist/core/utils/writeClientExecutor.d.ts +6 -1
- package/dist/core/utils/writeClientExecutor.d.ts.map +1 -1
- package/dist/core/utils/writeClientExecutor.js +22 -3
- package/dist/core/utils/writeClientFullIndex.d.ts.map +1 -1
- package/dist/core/utils/writeClientFullIndex.js +3 -1
- package/dist/core/utils/writeClientModels.d.ts +6 -0
- package/dist/core/utils/writeClientModels.d.ts.map +1 -1
- package/dist/core/utils/writeClientModels.js +24 -3
- package/dist/core/utils/writeClientModelsIndex.d.ts +2 -0
- package/dist/core/utils/writeClientModelsIndex.d.ts.map +1 -1
- package/dist/core/utils/writeClientModelsIndex.js +2 -2
- package/dist/core/utils/writeClientSchemas.d.ts +6 -1
- package/dist/core/utils/writeClientSchemas.d.ts.map +1 -1
- package/dist/core/utils/writeClientSchemas.js +16 -3
- package/dist/core/utils/writeClientServices.d.ts +2 -0
- package/dist/core/utils/writeClientServices.d.ts.map +1 -1
- package/dist/core/utils/writeClientServices.js +6 -2
- package/dist/templatesCompiled/cli/openApiConfig.d.ts +4 -1
- package/dist/templatesCompiled/cli/openApiConfig.d.ts.map +1 -1
- package/dist/templatesCompiled/cli/openApiConfig.js +88 -37
- package/dist/templatesCompiled/client/core/ApiError.js +1 -1
- package/dist/templatesCompiled/client/core/ApiRequestOptions.js +1 -1
- package/dist/templatesCompiled/client/core/ApiResult.js +1 -1
- package/dist/templatesCompiled/client/core/BaseDto.d.ts +8 -0
- package/dist/templatesCompiled/client/core/BaseDto.d.ts.map +1 -0
- package/dist/templatesCompiled/client/core/BaseDto.js +18 -0
- package/dist/templatesCompiled/client/core/axios/getResponseBody.js +1 -1
- package/dist/templatesCompiled/client/core/axios/request.js +3 -3
- package/dist/templatesCompiled/client/core/axios/sendRequest.js +4 -4
- package/dist/templatesCompiled/client/core/dtoUtils.d.ts +8 -0
- package/dist/templatesCompiled/client/core/dtoUtils.d.ts.map +1 -0
- package/dist/templatesCompiled/client/core/dtoUtils.js +18 -0
- package/dist/templatesCompiled/client/core/executor/createExecutorAdapter.d.ts +2 -0
- package/dist/templatesCompiled/client/core/executor/createExecutorAdapter.d.ts.map +1 -1
- package/dist/templatesCompiled/client/core/executor/createExecutorAdapter.js +13 -8
- package/dist/templatesCompiled/client/core/executor/requestExecutor.js +1 -1
- package/dist/templatesCompiled/client/core/fetch/getResponseBody.js +1 -1
- package/dist/templatesCompiled/client/core/fetch/request.js +3 -3
- package/dist/templatesCompiled/client/core/functions/catchErrors.js +1 -1
- package/dist/templatesCompiled/client/core/functions/isBinary.js +1 -1
- package/dist/templatesCompiled/client/core/interceptors/withInterceptors.js +1 -1
- package/dist/templatesCompiled/client/core/node/getResponseBody.js +1 -1
- package/dist/templatesCompiled/client/core/node/request.js +3 -3
- package/dist/templatesCompiled/client/core/xhr/getResponseBody.js +1 -1
- package/dist/templatesCompiled/client/core/xhr/request.js +3 -3
- package/dist/templatesCompiled/client/core/xhr/sendRequest.js +4 -4
- package/dist/templatesCompiled/client/exportClient.d.ts +4 -0
- package/dist/templatesCompiled/client/exportClient.d.ts.map +1 -1
- package/dist/templatesCompiled/client/exportClient.js +51 -13
- package/dist/templatesCompiled/client/exportModels.d.ts +34 -0
- package/dist/templatesCompiled/client/exportModels.d.ts.map +1 -0
- package/dist/templatesCompiled/client/exportModels.js +280 -0
- package/dist/templatesCompiled/client/exportSchema.d.ts +5 -1
- package/dist/templatesCompiled/client/exportSchema.d.ts.map +1 -1
- package/dist/templatesCompiled/client/exportSchema.js +37 -7
- package/dist/templatesCompiled/client/exportService.d.ts +9 -4
- package/dist/templatesCompiled/client/exportService.d.ts.map +1 -1
- package/dist/templatesCompiled/client/exportService.js +96 -37
- package/dist/templatesCompiled/client/indexCore.d.ts +3 -1
- package/dist/templatesCompiled/client/indexCore.d.ts.map +1 -1
- package/dist/templatesCompiled/client/indexCore.js +13 -2
- package/dist/templatesCompiled/client/indexFull.d.ts +10 -7
- package/dist/templatesCompiled/client/indexFull.d.ts.map +1 -1
- package/dist/templatesCompiled/client/indexFull.js +54 -33
- package/dist/templatesCompiled/client/indexModels.d.ts +7 -5
- package/dist/templatesCompiled/client/indexModels.d.ts.map +1 -1
- package/dist/templatesCompiled/client/indexModels.js +27 -18
- package/dist/templatesCompiled/client/indexSimple.d.ts +1 -0
- package/dist/templatesCompiled/client/indexSimple.d.ts.map +1 -1
- package/dist/templatesCompiled/client/indexSimple.js +4 -1
- package/dist/templatesCompiled/client/joi/exportSchema.js +5 -5
- package/dist/templatesCompiled/client/joi/partials/joiSchema.js +7 -7
- package/dist/templatesCompiled/client/joi/partials/joiSchemaComposition.js +4 -4
- package/dist/templatesCompiled/client/joi/partials/joiSchemaGeneric.d.ts +27 -19
- package/dist/templatesCompiled/client/joi/partials/joiSchemaGeneric.d.ts.map +1 -1
- package/dist/templatesCompiled/client/joi/partials/joiSchemaGeneric.js +144 -63
- package/dist/templatesCompiled/client/joi/partials/joiSchemaInterface.d.ts +5 -3
- package/dist/templatesCompiled/client/joi/partials/joiSchemaInterface.d.ts.map +1 -1
- package/dist/templatesCompiled/client/joi/partials/joiSchemaInterface.js +39 -12
- package/dist/templatesCompiled/client/jsonschema/exportSchema.d.ts +1 -0
- package/dist/templatesCompiled/client/jsonschema/exportSchema.d.ts.map +1 -1
- package/dist/templatesCompiled/client/jsonschema/exportSchema.js +21 -17
- package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchema.js +7 -7
- package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaArray.js +5 -5
- package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaComposition.js +2 -2
- package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaDictionary.js +5 -5
- package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaInterface.d.ts +3 -1
- package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaInterface.d.ts.map +1 -1
- package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaInterface.js +45 -15
- package/dist/templatesCompiled/client/partials/exportInterface.d.ts +13 -5
- package/dist/templatesCompiled/client/partials/exportInterface.d.ts.map +1 -1
- package/dist/templatesCompiled/client/partials/exportInterface.js +91 -21
- package/dist/templatesCompiled/client/partials/result.d.ts +6 -4
- package/dist/templatesCompiled/client/partials/result.d.ts.map +1 -1
- package/dist/templatesCompiled/client/partials/result.js +16 -6
- package/dist/templatesCompiled/client/partials/serviceOption.d.ts +1 -0
- package/dist/templatesCompiled/client/partials/serviceOption.d.ts.map +1 -1
- package/dist/templatesCompiled/client/partials/serviceOption.js +11 -4
- package/dist/templatesCompiled/client/yup/exportSchema.js +3 -3
- package/dist/templatesCompiled/client/yup/partials/yupSchema.js +7 -7
- package/dist/templatesCompiled/client/yup/partials/yupSchemaComposition.js +4 -4
- package/dist/templatesCompiled/client/yup/partials/yupSchemaGeneric.d.ts +22 -16
- package/dist/templatesCompiled/client/yup/partials/yupSchemaGeneric.d.ts.map +1 -1
- package/dist/templatesCompiled/client/yup/partials/yupSchemaGeneric.js +72 -60
- package/dist/templatesCompiled/client/yup/partials/yupSchemaInterface.d.ts +5 -3
- package/dist/templatesCompiled/client/yup/partials/yupSchemaInterface.d.ts.map +1 -1
- package/dist/templatesCompiled/client/yup/partials/yupSchemaInterface.js +39 -12
- package/dist/templatesCompiled/client/zod/exportSchema.js +3 -3
- package/dist/templatesCompiled/client/zod/partials/zodSchema.js +7 -7
- package/dist/templatesCompiled/client/zod/partials/zodSchemaArray.d.ts +5 -6
- package/dist/templatesCompiled/client/zod/partials/zodSchemaArray.d.ts.map +1 -1
- package/dist/templatesCompiled/client/zod/partials/zodSchemaArray.js +14 -28
- package/dist/templatesCompiled/client/zod/partials/zodSchemaComposition.d.ts +3 -0
- package/dist/templatesCompiled/client/zod/partials/zodSchemaComposition.d.ts.map +1 -1
- package/dist/templatesCompiled/client/zod/partials/zodSchemaComposition.js +32 -8
- package/dist/templatesCompiled/client/zod/partials/zodSchemaDictionary.d.ts +3 -4
- package/dist/templatesCompiled/client/zod/partials/zodSchemaDictionary.d.ts.map +1 -1
- package/dist/templatesCompiled/client/zod/partials/zodSchemaDictionary.js +9 -23
- package/dist/templatesCompiled/client/zod/partials/zodSchemaGeneric.d.ts +27 -19
- package/dist/templatesCompiled/client/zod/partials/zodSchemaGeneric.d.ts.map +1 -1
- package/dist/templatesCompiled/client/zod/partials/zodSchemaGeneric.js +77 -61
- package/dist/templatesCompiled/client/zod/partials/zodSchemaInterface.d.ts +4 -2
- package/dist/templatesCompiled/client/zod/partials/zodSchemaInterface.d.ts.map +1 -1
- package/dist/templatesCompiled/client/zod/partials/zodSchemaInterface.js +18 -7
- package/package.json +8 -6
- package/dist/common/defaultOptions.d.ts +0 -3
- package/dist/common/defaultOptions.d.ts.map +0 -1
- package/dist/common/defaultOptions.js +0 -28
- package/dist/core/utils/advancedDeduplicatePath.d.ts +0 -5
- package/dist/core/utils/advancedDeduplicatePath.d.ts.map +0 -1
- package/dist/core/utils/advancedDeduplicatePath.js +0 -29
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.filterSemanticChangesByIgnoreRules = filterSemanticChangesByIgnoreRules;
|
|
4
|
+
const ignoreRules_1 = require("./ignoreRules");
|
|
5
|
+
/**
|
|
6
|
+
* Rebuilds summary counters from current semantic changes.
|
|
7
|
+
*/
|
|
8
|
+
function rebuildSummary(report) {
|
|
9
|
+
return report.changes.reduce((acc, change) => {
|
|
10
|
+
if (change.severity === 'breaking') {
|
|
11
|
+
acc.breaking += 1;
|
|
12
|
+
}
|
|
13
|
+
else if (change.severity === 'non-breaking') {
|
|
14
|
+
acc.nonBreaking += 1;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
acc.informational += 1;
|
|
18
|
+
}
|
|
19
|
+
return acc;
|
|
20
|
+
}, { breaking: 0, nonBreaking: 0, informational: 0 });
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Rebuilds recommendation based on recalculated summary.
|
|
24
|
+
*/
|
|
25
|
+
function rebuildRecommendation(summary) {
|
|
26
|
+
let semver = 'patch';
|
|
27
|
+
let confidence = 'high';
|
|
28
|
+
let reason = 'No breaking or feature-level changes detected.';
|
|
29
|
+
let reasons = ['NO_API_SURFACE_CHANGES'];
|
|
30
|
+
if (summary.breaking > 0) {
|
|
31
|
+
semver = 'major';
|
|
32
|
+
confidence = summary.breaking >= 3 ? 'high' : 'medium';
|
|
33
|
+
reason = 'Breaking changes detected.';
|
|
34
|
+
reasons = ['HAS_BREAKING_CHANGES'];
|
|
35
|
+
}
|
|
36
|
+
else if (summary.nonBreaking > 0) {
|
|
37
|
+
semver = 'minor';
|
|
38
|
+
confidence = summary.nonBreaking >= 3 ? 'high' : 'medium';
|
|
39
|
+
reason = 'Backward-compatible feature changes detected.';
|
|
40
|
+
reasons = ['HAS_BACKWARD_COMPATIBLE_CHANGES'];
|
|
41
|
+
}
|
|
42
|
+
else if (summary.informational > 0) {
|
|
43
|
+
semver = 'patch';
|
|
44
|
+
confidence = 'medium';
|
|
45
|
+
reason = 'Only informational changes detected.';
|
|
46
|
+
reasons = ['HAS_INFORMATIONAL_ONLY_CHANGES'];
|
|
47
|
+
}
|
|
48
|
+
return { semver, confidence, reason, reasons };
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Applies legacy analyze.ignore rules to semantic changes and returns ignored count.
|
|
52
|
+
*/
|
|
53
|
+
function filterSemanticChangesByIgnoreRules(report, ignoreRules) {
|
|
54
|
+
if (!ignoreRules.length) {
|
|
55
|
+
return { report, ignored: 0 };
|
|
56
|
+
}
|
|
57
|
+
let ignored = 0;
|
|
58
|
+
const filteredChanges = report.changes.filter(change => {
|
|
59
|
+
const diffEntry = {
|
|
60
|
+
action: 'changed',
|
|
61
|
+
path: change.path,
|
|
62
|
+
severity: 'info',
|
|
63
|
+
};
|
|
64
|
+
const ignoredByRule = ignoreRules.some(rule => (0, ignoreRules_1.matchesIgnoreRule)(diffEntry, rule));
|
|
65
|
+
if (ignoredByRule) {
|
|
66
|
+
ignored += 1;
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
return true;
|
|
70
|
+
});
|
|
71
|
+
if (ignored === 0) {
|
|
72
|
+
return { report, ignored: 0 };
|
|
73
|
+
}
|
|
74
|
+
const summary = rebuildSummary({ ...report, changes: filteredChanges });
|
|
75
|
+
return {
|
|
76
|
+
report: {
|
|
77
|
+
...report,
|
|
78
|
+
changes: filteredChanges,
|
|
79
|
+
summary,
|
|
80
|
+
recommendation: rebuildRecommendation(summary),
|
|
81
|
+
},
|
|
82
|
+
ignored,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logLegacyReport.d.ts","sourceRoot":"","sources":["../../../src/cli/analyzeDiff/logLegacyReport.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CA0B5E"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.logLegacyReport = logLegacyReport;
|
|
4
|
+
const Consts_1 = require("../../common/Consts");
|
|
5
|
+
const LoggerMessages_1 = require("../../common/LoggerMessages");
|
|
6
|
+
/**
|
|
7
|
+
* Пишет legacy summary в лог.
|
|
8
|
+
*/
|
|
9
|
+
function logLegacyReport(report, reportPath) {
|
|
10
|
+
Consts_1.APP_LOGGER.info(LoggerMessages_1.LOGGER_MESSAGES.SEPARATOR);
|
|
11
|
+
Consts_1.APP_LOGGER.info(LoggerMessages_1.LOGGER_MESSAGES.ANALYZE_DIFF.SUMMARY(report, reportPath));
|
|
12
|
+
Consts_1.APP_LOGGER.info(LoggerMessages_1.LOGGER_MESSAGES.ANALYZE_DIFF.LEGACY_BASE(report.metadata.base));
|
|
13
|
+
Consts_1.APP_LOGGER.info(LoggerMessages_1.LOGGER_MESSAGES.ANALYZE_DIFF.LEGACY_TARGET(report.metadata.target));
|
|
14
|
+
if (report.stats.stabilityScore !== undefined) {
|
|
15
|
+
Consts_1.APP_LOGGER.info(LoggerMessages_1.LOGGER_MESSAGES.ANALYZE_DIFF.LEGACY_STABILITY_SCORE(report.stats.stabilityScore));
|
|
16
|
+
}
|
|
17
|
+
Consts_1.APP_LOGGER.info(LoggerMessages_1.LOGGER_MESSAGES.ANALYZE_DIFF.LEGACY_CHANGES(report.stats));
|
|
18
|
+
if (report.diff.breaking.length > 0) {
|
|
19
|
+
Consts_1.APP_LOGGER.error(LoggerMessages_1.LOGGER_MESSAGES.ANALYZE_DIFF.LEGACY_BREAKING(report.diff.breaking.length));
|
|
20
|
+
}
|
|
21
|
+
if (report.diff.warnings.length > 0) {
|
|
22
|
+
Consts_1.APP_LOGGER.warn(LoggerMessages_1.LOGGER_MESSAGES.ANALYZE_DIFF.LEGACY_WARNINGS(report.diff.warnings.length));
|
|
23
|
+
}
|
|
24
|
+
const ignored = report.stats.ignored ?? 0;
|
|
25
|
+
if (ignored > 0) {
|
|
26
|
+
Consts_1.APP_LOGGER.info(LoggerMessages_1.LOGGER_MESSAGES.ANALYZE_DIFF.LEGACY_IGNORED(ignored));
|
|
27
|
+
}
|
|
28
|
+
Consts_1.APP_LOGGER.info(LoggerMessages_1.LOGGER_MESSAGES.ANALYZE_DIFF.REPORT_CREATED(reportPath));
|
|
29
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { DiffEntry, JsonValue, MiracleEntry } from './types';
|
|
2
|
+
type PropertyChange = {
|
|
3
|
+
schemaPath: string;
|
|
4
|
+
schemaName: string;
|
|
5
|
+
propertyName: string;
|
|
6
|
+
entry: DiffEntry;
|
|
7
|
+
payload: Record<string, unknown>;
|
|
8
|
+
typeSignature?: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
scalarType?: string;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Нормализует строковое имя (удаляет спецсимволы, приводит к camelCase и lower-case).
|
|
14
|
+
* @param value исходная строка
|
|
15
|
+
* @returns нормализованное имя
|
|
16
|
+
*/
|
|
17
|
+
export declare const normalizeName: (value: string) => string;
|
|
18
|
+
/**
|
|
19
|
+
* Получает сигнатуру типа из описания свойства схемы (учитывает $ref, type, oneOf/anyOf/allOf).
|
|
20
|
+
* @param payload объект описания свойства
|
|
21
|
+
* @returns строковая сигнатура типа или undefined
|
|
22
|
+
*/
|
|
23
|
+
export declare const getTypeSignature: (payload: Record<string, unknown>) => string | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Приводит разные обозначения скалярных типов к общим (number/string/boolean).
|
|
26
|
+
* @param value строковая сигнатура типа
|
|
27
|
+
* @returns нормализованный скалярный тип или undefined
|
|
28
|
+
*/
|
|
29
|
+
export declare const normalizeScalarType: (value?: string) => string | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Извлекает и тримит описание свойства, если оно присутствует.
|
|
32
|
+
* @param payload объект описания свойства
|
|
33
|
+
* @returns описание или undefined
|
|
34
|
+
*/
|
|
35
|
+
export declare const getDescription: (payload: Record<string, unknown>) => string | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Пытается извлечь подробную информацию об изменении свойства схемы из записи diff.
|
|
38
|
+
* Возвращает null если запись не представляет изменение свойства.
|
|
39
|
+
* @param entry запись diff
|
|
40
|
+
* @returns объект PropertyChange или null
|
|
41
|
+
*/
|
|
42
|
+
export declare const extractPropertyChange: (entry: DiffEntry) => PropertyChange | null;
|
|
43
|
+
/**
|
|
44
|
+
* Определяет, указывает ли путь записи на свойство в схеме (содержит 'properties').
|
|
45
|
+
* @param entry запись diff
|
|
46
|
+
* @returns true если путь относится к свойству схемы
|
|
47
|
+
*/
|
|
48
|
+
export declare const isSchemaPropertyPath: (entry: DiffEntry) => boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Оценивает, могут ли два изменения (удаление и добавление) являться кандидатами на совпадение (rename).
|
|
51
|
+
* Сравнивает путь схемы и, при наличии, сигнатуры типов.
|
|
52
|
+
* @param removed информация об удалённом свойстве
|
|
53
|
+
* @param added информация о добавленном свойстве
|
|
54
|
+
* @returns true если кандидаты совместимы
|
|
55
|
+
*/
|
|
56
|
+
export declare const isSimilarityCandidate: (removed: PropertyChange, added: PropertyChange) => boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Вычисляет бонус к confidence на основе схожести описаний свойств.
|
|
59
|
+
* @param removed описание для удалённого свойства
|
|
60
|
+
* @param added описание для добавленного свойства
|
|
61
|
+
* @returns числовой бонус (0..0.05)
|
|
62
|
+
*/
|
|
63
|
+
export declare const descriptionSimilarityBonus: (removed?: string, added?: string) => number;
|
|
64
|
+
/**
|
|
65
|
+
* Комбинирует факторы в итоговую confidence (0..1) для RENAME эвристики.
|
|
66
|
+
* @param nameRatio нормализованное расстояние имён
|
|
67
|
+
* @param sameType флаг совпадения сигнатур типов
|
|
68
|
+
* @param onlyCandidate флаг единственного кандидата
|
|
69
|
+
* @param descBonus бонус от схожести описаний
|
|
70
|
+
* @returns итоговое confidence
|
|
71
|
+
*/
|
|
72
|
+
export declare const computeConfidence: (nameRatio: number, sameType: boolean, onlyCandidate: boolean, descBonus: number) => number;
|
|
73
|
+
/**
|
|
74
|
+
* Собирает карту путей свойств → нормализованный скалярный тип из спецификации.
|
|
75
|
+
* @param spec спецификация OpenAPI
|
|
76
|
+
* @returns Map с json-path как ключом и скалярным типом как значением
|
|
77
|
+
*/
|
|
78
|
+
export declare const collectPropertyScalarTypes: (spec: JsonValue) => Map<string, string>;
|
|
79
|
+
/**
|
|
80
|
+
* Формирует список эвристических находок (miracles): переименования и коэрцирования типов.
|
|
81
|
+
* Сравнивает удалённые/добавленные свойства и изменения типов, добавляет записи с confidence.
|
|
82
|
+
* @param entries все собранные записи diff
|
|
83
|
+
* @param oldSpec нормализованная старая спецификация
|
|
84
|
+
* @param newSpec нормализованная новая спецификация
|
|
85
|
+
* @returns массив MiracleEntry
|
|
86
|
+
*/
|
|
87
|
+
export declare const buildMiracles: (entries: DiffEntry[], oldSpec: JsonValue, newSpec: JsonValue) => MiracleEntry[];
|
|
88
|
+
export {};
|
|
89
|
+
//# sourceMappingURL=miracles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"miracles.d.ts","sourceRoot":"","sources":["../../../src/cli/analyzeDiff/miracles.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAElE,KAAK,cAAc,GAAG;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,MAM7C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM,GAAG,SAiB5E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,QAAQ,MAAM,KAAG,MAAM,GAAG,SAS7D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM,GAAG,SAK1E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,OAAO,SAAS,KAAG,cAAc,GAAG,IAyBzE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,OAAO,SAAS,KAAG,OAGvD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS,cAAc,EAAE,OAAO,cAAc,KAAG,OAQtF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,GAAI,UAAU,MAAM,EAAE,QAAQ,MAAM,KAAG,MAQ7E,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAAI,WAAW,MAAM,EAAE,UAAU,OAAO,EAAE,eAAe,OAAO,EAAE,WAAW,MAAM,KAAG,MAQnH,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,GAAI,MAAM,SAAS,KAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CA6B9E,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,SAAS,EAAE,EAAE,SAAS,SAAS,EAAE,SAAS,SAAS,KAAG,YAAY,EAsGxG,CAAC"}
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.buildMiracles = exports.collectPropertyScalarTypes = exports.computeConfidence = exports.descriptionSimilarityBonus = exports.isSimilarityCandidate = exports.isSchemaPropertyPath = exports.extractPropertyChange = exports.getDescription = exports.normalizeScalarType = exports.getTypeSignature = exports.normalizeName = void 0;
|
|
7
|
+
const camelcase_1 = __importDefault(require("camelcase"));
|
|
8
|
+
const leven_1 = __importDefault(require("leven"));
|
|
9
|
+
const jsonPath_1 = require("../../common/utils/jsonPath");
|
|
10
|
+
/**
|
|
11
|
+
* Нормализует строковое имя (удаляет спецсимволы, приводит к camelCase и lower-case).
|
|
12
|
+
* @param value исходная строка
|
|
13
|
+
* @returns нормализованное имя
|
|
14
|
+
*/
|
|
15
|
+
const normalizeName = (value) => {
|
|
16
|
+
const clean = value.replace(/[^a-zA-Z0-9]+/g, ' ').trim();
|
|
17
|
+
if (!clean) {
|
|
18
|
+
return value.toLowerCase();
|
|
19
|
+
}
|
|
20
|
+
return (0, camelcase_1.default)(clean).toLowerCase();
|
|
21
|
+
};
|
|
22
|
+
exports.normalizeName = normalizeName;
|
|
23
|
+
/**
|
|
24
|
+
* Получает сигнатуру типа из описания свойства схемы (учитывает $ref, type, oneOf/anyOf/allOf).
|
|
25
|
+
* @param payload объект описания свойства
|
|
26
|
+
* @returns строковая сигнатура типа или undefined
|
|
27
|
+
*/
|
|
28
|
+
const getTypeSignature = (payload) => {
|
|
29
|
+
if (typeof payload.$ref === 'string') {
|
|
30
|
+
return `ref:${payload.$ref}`;
|
|
31
|
+
}
|
|
32
|
+
if (typeof payload.type === 'string') {
|
|
33
|
+
return String(payload.type);
|
|
34
|
+
}
|
|
35
|
+
if (Array.isArray(payload.oneOf)) {
|
|
36
|
+
return 'oneOf';
|
|
37
|
+
}
|
|
38
|
+
if (Array.isArray(payload.anyOf)) {
|
|
39
|
+
return 'anyOf';
|
|
40
|
+
}
|
|
41
|
+
if (Array.isArray(payload.allOf)) {
|
|
42
|
+
return 'allOf';
|
|
43
|
+
}
|
|
44
|
+
return undefined;
|
|
45
|
+
};
|
|
46
|
+
exports.getTypeSignature = getTypeSignature;
|
|
47
|
+
/**
|
|
48
|
+
* Приводит разные обозначения скалярных типов к общим (number/string/boolean).
|
|
49
|
+
* @param value строковая сигнатура типа
|
|
50
|
+
* @returns нормализованный скалярный тип или undefined
|
|
51
|
+
*/
|
|
52
|
+
const normalizeScalarType = (value) => {
|
|
53
|
+
if (!value)
|
|
54
|
+
return undefined;
|
|
55
|
+
const normalized = value.toLowerCase();
|
|
56
|
+
if (normalized === 'int' || normalized === 'integer')
|
|
57
|
+
return 'number';
|
|
58
|
+
if (normalized === 'float' || normalized === 'double')
|
|
59
|
+
return 'number';
|
|
60
|
+
if (normalized === 'string')
|
|
61
|
+
return 'string';
|
|
62
|
+
if (normalized === 'number')
|
|
63
|
+
return 'number';
|
|
64
|
+
if (normalized === 'boolean')
|
|
65
|
+
return 'boolean';
|
|
66
|
+
return undefined;
|
|
67
|
+
};
|
|
68
|
+
exports.normalizeScalarType = normalizeScalarType;
|
|
69
|
+
/**
|
|
70
|
+
* Извлекает и тримит описание свойства, если оно присутствует.
|
|
71
|
+
* @param payload объект описания свойства
|
|
72
|
+
* @returns описание или undefined
|
|
73
|
+
*/
|
|
74
|
+
const getDescription = (payload) => {
|
|
75
|
+
if (typeof payload.description === 'string') {
|
|
76
|
+
return payload.description.trim();
|
|
77
|
+
}
|
|
78
|
+
return undefined;
|
|
79
|
+
};
|
|
80
|
+
exports.getDescription = getDescription;
|
|
81
|
+
/**
|
|
82
|
+
* Пытается извлечь подробную информацию об изменении свойства схемы из записи diff.
|
|
83
|
+
* Возвращает null если запись не представляет изменение свойства.
|
|
84
|
+
* @param entry запись diff
|
|
85
|
+
* @returns объект PropertyChange или null
|
|
86
|
+
*/
|
|
87
|
+
const extractPropertyChange = (entry) => {
|
|
88
|
+
const segments = (0, jsonPath_1.parseJsonPath)(entry.path);
|
|
89
|
+
const propertiesIndex = segments.indexOf('properties');
|
|
90
|
+
if (propertiesIndex === -1 || propertiesIndex + 1 !== segments.length - 1) {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
const schemaPath = segments.slice(0, propertiesIndex).join('.');
|
|
94
|
+
const schemaName = segments[propertiesIndex - 1] ?? '';
|
|
95
|
+
const propertyName = segments[propertiesIndex + 1];
|
|
96
|
+
if (!schemaName || !propertyName)
|
|
97
|
+
return null;
|
|
98
|
+
const payload = (entry.action === 'removed' ? entry.from : entry.to);
|
|
99
|
+
if (!payload || typeof payload !== 'object')
|
|
100
|
+
return null;
|
|
101
|
+
return {
|
|
102
|
+
schemaPath,
|
|
103
|
+
schemaName,
|
|
104
|
+
propertyName,
|
|
105
|
+
entry,
|
|
106
|
+
payload,
|
|
107
|
+
typeSignature: (0, exports.getTypeSignature)(payload),
|
|
108
|
+
description: (0, exports.getDescription)(payload),
|
|
109
|
+
scalarType: (0, exports.normalizeScalarType)((0, exports.getTypeSignature)(payload)),
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
exports.extractPropertyChange = extractPropertyChange;
|
|
113
|
+
/**
|
|
114
|
+
* Определяет, указывает ли путь записи на свойство в схеме (содержит 'properties').
|
|
115
|
+
* @param entry запись diff
|
|
116
|
+
* @returns true если путь относится к свойству схемы
|
|
117
|
+
*/
|
|
118
|
+
const isSchemaPropertyPath = (entry) => {
|
|
119
|
+
const segments = (0, jsonPath_1.parseJsonPath)(entry.path);
|
|
120
|
+
return segments.includes('properties');
|
|
121
|
+
};
|
|
122
|
+
exports.isSchemaPropertyPath = isSchemaPropertyPath;
|
|
123
|
+
/**
|
|
124
|
+
* Оценивает, могут ли два изменения (удаление и добавление) являться кандидатами на совпадение (rename).
|
|
125
|
+
* Сравнивает путь схемы и, при наличии, сигнатуры типов.
|
|
126
|
+
* @param removed информация об удалённом свойстве
|
|
127
|
+
* @param added информация о добавленном свойстве
|
|
128
|
+
* @returns true если кандидаты совместимы
|
|
129
|
+
*/
|
|
130
|
+
const isSimilarityCandidate = (removed, added) => {
|
|
131
|
+
if (removed.schemaPath !== added.schemaPath)
|
|
132
|
+
return false;
|
|
133
|
+
if (removed.typeSignature && added.typeSignature) {
|
|
134
|
+
return removed.typeSignature === added.typeSignature;
|
|
135
|
+
}
|
|
136
|
+
return true;
|
|
137
|
+
};
|
|
138
|
+
exports.isSimilarityCandidate = isSimilarityCandidate;
|
|
139
|
+
/**
|
|
140
|
+
* Вычисляет бонус к confidence на основе схожести описаний свойств.
|
|
141
|
+
* @param removed описание для удалённого свойства
|
|
142
|
+
* @param added описание для добавленного свойства
|
|
143
|
+
* @returns числовой бонус (0..0.05)
|
|
144
|
+
*/
|
|
145
|
+
const descriptionSimilarityBonus = (removed, added) => {
|
|
146
|
+
if (!removed || !added)
|
|
147
|
+
return 0;
|
|
148
|
+
const a = (0, exports.normalizeName)(removed);
|
|
149
|
+
const b = (0, exports.normalizeName)(added);
|
|
150
|
+
if (!a || !b)
|
|
151
|
+
return 0;
|
|
152
|
+
const distance = (0, leven_1.default)(a, b);
|
|
153
|
+
const ratio = distance / Math.max(a.length, b.length);
|
|
154
|
+
return ratio <= 0.4 ? 0.05 : 0;
|
|
155
|
+
};
|
|
156
|
+
exports.descriptionSimilarityBonus = descriptionSimilarityBonus;
|
|
157
|
+
/**
|
|
158
|
+
* Комбинирует факторы в итоговую confidence (0..1) для RENAME эвристики.
|
|
159
|
+
* @param nameRatio нормализованное расстояние имён
|
|
160
|
+
* @param sameType флаг совпадения сигнатур типов
|
|
161
|
+
* @param onlyCandidate флаг единственного кандидата
|
|
162
|
+
* @param descBonus бонус от схожести описаний
|
|
163
|
+
* @returns итоговое confidence
|
|
164
|
+
*/
|
|
165
|
+
const computeConfidence = (nameRatio, sameType, onlyCandidate, descBonus) => {
|
|
166
|
+
let confidence = 1 - nameRatio;
|
|
167
|
+
if (sameType)
|
|
168
|
+
confidence += 0.1;
|
|
169
|
+
if (onlyCandidate)
|
|
170
|
+
confidence += 0.05;
|
|
171
|
+
confidence += descBonus;
|
|
172
|
+
if (confidence > 1)
|
|
173
|
+
confidence = 1;
|
|
174
|
+
if (confidence < 0)
|
|
175
|
+
confidence = 0;
|
|
176
|
+
return Number(confidence.toFixed(3));
|
|
177
|
+
};
|
|
178
|
+
exports.computeConfidence = computeConfidence;
|
|
179
|
+
/**
|
|
180
|
+
* Собирает карту путей свойств → нормализованный скалярный тип из спецификации.
|
|
181
|
+
* @param spec спецификация OpenAPI
|
|
182
|
+
* @returns Map с json-path как ключом и скалярным типом как значением
|
|
183
|
+
*/
|
|
184
|
+
const collectPropertyScalarTypes = (spec) => {
|
|
185
|
+
const result = new Map();
|
|
186
|
+
if (!spec || typeof spec !== 'object')
|
|
187
|
+
return result;
|
|
188
|
+
const record = spec;
|
|
189
|
+
const schemas = (record.components && typeof record.components === 'object' ? record.components.schemas : undefined) ?? record.definitions;
|
|
190
|
+
if (!schemas || typeof schemas !== 'object')
|
|
191
|
+
return result;
|
|
192
|
+
for (const [schemaName, schemaValue] of Object.entries(schemas)) {
|
|
193
|
+
if (!schemaValue || typeof schemaValue !== 'object')
|
|
194
|
+
continue;
|
|
195
|
+
const schema = schemaValue;
|
|
196
|
+
const properties = schema.properties;
|
|
197
|
+
if (!properties || typeof properties !== 'object')
|
|
198
|
+
continue;
|
|
199
|
+
for (const [propertyName, propertyValue] of Object.entries(properties)) {
|
|
200
|
+
if (!propertyValue || typeof propertyValue !== 'object')
|
|
201
|
+
continue;
|
|
202
|
+
const property = propertyValue;
|
|
203
|
+
const typeSignature = (0, exports.getTypeSignature)(property);
|
|
204
|
+
const scalar = (0, exports.normalizeScalarType)(typeSignature);
|
|
205
|
+
if (!scalar)
|
|
206
|
+
continue;
|
|
207
|
+
const baseSegments = record.components ? ['components', 'schemas', schemaName] : ['definitions', schemaName];
|
|
208
|
+
const path = (0, jsonPath_1.toJsonPath)([...baseSegments, 'properties', propertyName]);
|
|
209
|
+
result.set(path, scalar);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return result;
|
|
213
|
+
};
|
|
214
|
+
exports.collectPropertyScalarTypes = collectPropertyScalarTypes;
|
|
215
|
+
/**
|
|
216
|
+
* Формирует список эвристических находок (miracles): переименования и коэрцирования типов.
|
|
217
|
+
* Сравнивает удалённые/добавленные свойства и изменения типов, добавляет записи с confidence.
|
|
218
|
+
* @param entries все собранные записи diff
|
|
219
|
+
* @param oldSpec нормализованная старая спецификация
|
|
220
|
+
* @param newSpec нормализованная новая спецификация
|
|
221
|
+
* @returns массив MiracleEntry
|
|
222
|
+
*/
|
|
223
|
+
const buildMiracles = (entries, oldSpec, newSpec) => {
|
|
224
|
+
const removedProps = [];
|
|
225
|
+
const addedProps = [];
|
|
226
|
+
const changedTypeProps = [];
|
|
227
|
+
for (const entry of entries) {
|
|
228
|
+
if (!(0, exports.isSchemaPropertyPath)(entry))
|
|
229
|
+
continue;
|
|
230
|
+
if (entry.action === 'removed' || entry.action === 'added') {
|
|
231
|
+
const change = (0, exports.extractPropertyChange)(entry);
|
|
232
|
+
if (!change)
|
|
233
|
+
continue;
|
|
234
|
+
if (entry.action === 'removed') {
|
|
235
|
+
removedProps.push(change);
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
addedProps.push(change);
|
|
239
|
+
}
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
if (entry.action === 'changed') {
|
|
243
|
+
const segments = (0, jsonPath_1.parseJsonPath)(entry.path);
|
|
244
|
+
if (segments[segments.length - 1] !== 'type')
|
|
245
|
+
continue;
|
|
246
|
+
const propertyPath = (0, jsonPath_1.toJsonPath)(segments.slice(0, -1));
|
|
247
|
+
const fromTypeRaw = typeof entry.from === 'string' ? entry.from : (0, exports.getTypeSignature)((entry.from ?? {}));
|
|
248
|
+
const toTypeRaw = typeof entry.to === 'string' ? entry.to : (0, exports.getTypeSignature)((entry.to ?? {}));
|
|
249
|
+
const fromType = (0, exports.normalizeScalarType)(fromTypeRaw);
|
|
250
|
+
const toType = (0, exports.normalizeScalarType)(toTypeRaw);
|
|
251
|
+
if (!fromType || !toType || fromType === toType)
|
|
252
|
+
continue;
|
|
253
|
+
changedTypeProps.push({
|
|
254
|
+
path: propertyPath,
|
|
255
|
+
fromType,
|
|
256
|
+
toType,
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
const miracles = [];
|
|
261
|
+
for (const removed of removedProps) {
|
|
262
|
+
const candidates = addedProps.filter(added => (0, exports.isSimilarityCandidate)(removed, added));
|
|
263
|
+
if (candidates.length === 0)
|
|
264
|
+
continue;
|
|
265
|
+
const removedName = (0, exports.normalizeName)(removed.propertyName);
|
|
266
|
+
if (!removedName)
|
|
267
|
+
continue;
|
|
268
|
+
let best = null;
|
|
269
|
+
for (const candidate of candidates) {
|
|
270
|
+
const addedName = (0, exports.normalizeName)(candidate.propertyName);
|
|
271
|
+
if (!addedName)
|
|
272
|
+
continue;
|
|
273
|
+
const distance = (0, leven_1.default)(removedName, addedName);
|
|
274
|
+
const ratio = distance / Math.max(removedName.length, addedName.length);
|
|
275
|
+
if (!best || ratio < best.ratio) {
|
|
276
|
+
best = { candidate, ratio };
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
if (!best)
|
|
280
|
+
continue;
|
|
281
|
+
if (best.ratio > 0.2)
|
|
282
|
+
continue;
|
|
283
|
+
const sameType = !!removed.typeSignature && !!best.candidate.typeSignature && removed.typeSignature === best.candidate.typeSignature;
|
|
284
|
+
const onlyCandidate = candidates.length === 1;
|
|
285
|
+
const descBonus = (0, exports.descriptionSimilarityBonus)(removed.description, best.candidate.description);
|
|
286
|
+
const confidence = (0, exports.computeConfidence)(best.ratio, sameType, onlyCandidate, descBonus);
|
|
287
|
+
miracles.push({
|
|
288
|
+
oldPath: removed.entry.path,
|
|
289
|
+
newPath: best.candidate.entry.path,
|
|
290
|
+
type: 'RENAME',
|
|
291
|
+
confidence,
|
|
292
|
+
status: 'auto-generated',
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
const typeCoercionPaths = new Set();
|
|
296
|
+
for (const change of changedTypeProps) {
|
|
297
|
+
typeCoercionPaths.add(change.path);
|
|
298
|
+
miracles.push({
|
|
299
|
+
oldPath: change.path,
|
|
300
|
+
newPath: change.path,
|
|
301
|
+
type: 'TYPE_COERCION',
|
|
302
|
+
confidence: 1,
|
|
303
|
+
status: 'auto-generated',
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
const oldTypes = (0, exports.collectPropertyScalarTypes)(oldSpec);
|
|
307
|
+
const newTypes = (0, exports.collectPropertyScalarTypes)(newSpec);
|
|
308
|
+
for (const [path, oldType] of oldTypes.entries()) {
|
|
309
|
+
const newType = newTypes.get(path);
|
|
310
|
+
if (!newType || newType === oldType)
|
|
311
|
+
continue;
|
|
312
|
+
if (typeCoercionPaths.has(path))
|
|
313
|
+
continue;
|
|
314
|
+
typeCoercionPaths.add(path);
|
|
315
|
+
miracles.push({
|
|
316
|
+
oldPath: path,
|
|
317
|
+
newPath: path,
|
|
318
|
+
type: 'TYPE_COERCION',
|
|
319
|
+
confidence: 1,
|
|
320
|
+
status: 'auto-generated',
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
return miracles;
|
|
324
|
+
};
|
|
325
|
+
exports.buildMiracles = buildMiracles;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pluginPaths.d.ts","sourceRoot":"","sources":["../../../src/cli/analyzeDiff/pluginPaths.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAInE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolvePluginPaths = resolvePluginPaths;
|
|
4
|
+
const convertArrayToObject_1 = require("../../common/utils/convertArrayToObject");
|
|
5
|
+
const loadConfigIfExists_1 = require("../../common/utils/loadConfigIfExists");
|
|
6
|
+
/**
|
|
7
|
+
* Reads plugin paths from openapi config for semantic diff hooks.
|
|
8
|
+
*/
|
|
9
|
+
function resolvePluginPaths(openapiConfig) {
|
|
10
|
+
const configData = (0, loadConfigIfExists_1.loadConfigIfExists)(openapiConfig);
|
|
11
|
+
const config = (0, convertArrayToObject_1.convertArrayToObject)(configData);
|
|
12
|
+
return Array.isArray(config.plugins) ? config.plugins.filter((item) => typeof item === 'string' && !!item.trim()) : [];
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/cli/analyzeDiff/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.writeReportToFile = exports.buildReport = void 0;
|
|
4
|
+
var buildLegacyReport_1 = require("./buildLegacyReport");
|
|
5
|
+
Object.defineProperty(exports, "buildReport", { enumerable: true, get: function () { return buildLegacyReport_1.buildLegacyReport; } });
|
|
6
|
+
var writeLegacyReport_1 = require("./writeLegacyReport");
|
|
7
|
+
Object.defineProperty(exports, "writeReportToFile", { enumerable: true, get: function () { return writeLegacyReport_1.writeLegacyReport; } });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semanticDiffContext.d.ts","sourceRoot":"","sources":["../../../src/cli/analyzeDiff/semanticDiffContext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAK7C;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKhE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSemanticDiffContext = createSemanticDiffContext;
|
|
4
|
+
const pathHelpers_1 = require("../../common/utils/pathHelpers");
|
|
5
|
+
const Context_1 = require("../../core/Context");
|
|
6
|
+
const getOutputPaths_1 = require("../../core/utils/getOutputPaths");
|
|
7
|
+
const SEMANTIC_DIFF_TMP_OUTPUT = './test/generated/.semantic-diff-tmp';
|
|
8
|
+
/**
|
|
9
|
+
* Creates lightweight context for OpenAPI parsing in semantic diff mode.
|
|
10
|
+
*/
|
|
11
|
+
function createSemanticDiffContext(input) {
|
|
12
|
+
return new Context_1.Context({
|
|
13
|
+
input: (0, pathHelpers_1.resolveHelper)(process.cwd(), input),
|
|
14
|
+
output: (0, getOutputPaths_1.getOutputPaths)({ output: SEMANTIC_DIFF_TMP_OUTPUT }),
|
|
15
|
+
});
|
|
16
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { JsonValue } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Читает и парсит спецификацию из файла. Поддерживает JSON и YAML через SwaggerParser.
|
|
4
|
+
* @param specPath путь к файлу спецификации
|
|
5
|
+
* @returns распарсенная спецификация
|
|
6
|
+
*/
|
|
7
|
+
export declare const parseSpecFile: (specPath: string) => Promise<JsonValue>;
|
|
8
|
+
/**
|
|
9
|
+
* Парсит содержимое спецификации, переданное как строка. При YAML создаёт временный файл для парсинга.
|
|
10
|
+
* @param content строковое содержимое спецификации
|
|
11
|
+
* @param sourcePath исходный путь/идентификатор (используется для расширения временного файла)
|
|
12
|
+
* @returns распарсенная спецификация
|
|
13
|
+
*/
|
|
14
|
+
export declare const parseSpecContent: (content: string, sourcePath: string) => Promise<JsonValue>;
|
|
15
|
+
/**
|
|
16
|
+
* Извлекает содержимое файла спецификации из Git по ref и парсит его.
|
|
17
|
+
* @param ref git-реф (например, HEAD~1)
|
|
18
|
+
* @param specPath путь к спецификации в репозитории
|
|
19
|
+
* @returns распарсенная спецификация из git
|
|
20
|
+
*/
|
|
21
|
+
export declare const readSpecFromGit: (ref: string, specPath: string) => Promise<JsonValue>;
|
|
22
|
+
//# sourceMappingURL=specParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specParser.d.ts","sourceRoot":"","sources":["../../../src/cli/analyzeDiff/specParser.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,SAAS,CAgBvE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAU,SAAS,MAAM,EAAE,YAAY,MAAM,KAAG,OAAO,CAAC,SAAS,CAuB7F,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAU,KAAK,MAAM,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC,SAAS,CAYtF,CAAC"}
|