ts-openapi-codegen 2.0.0 → 2.1.0-beta.2

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.
Files changed (418) hide show
  1. package/README.md +95 -2
  2. package/README.rus.md +95 -2
  3. package/dist/cli/analyzeDiff/__tests__/analyzeDiff.cli.test.d.ts +2 -0
  4. package/dist/cli/analyzeDiff/__tests__/analyzeDiff.cli.test.d.ts.map +1 -0
  5. package/dist/cli/analyzeDiff/__tests__/analyzeDiff.cli.test.js +365 -0
  6. package/dist/cli/analyzeDiff/__tests__/analyzeDiffRenameAndInvalidRegex.test.d.ts +2 -0
  7. package/dist/cli/analyzeDiff/__tests__/analyzeDiffRenameAndInvalidRegex.test.d.ts.map +1 -0
  8. package/dist/cli/analyzeDiff/__tests__/analyzeDiffRenameAndInvalidRegex.test.js +142 -0
  9. package/dist/cli/analyzeDiff/__tests__/analyzeDiffTypeCoercion.test.d.ts +2 -0
  10. package/dist/cli/analyzeDiff/__tests__/analyzeDiffTypeCoercion.test.d.ts.map +1 -0
  11. package/dist/cli/analyzeDiff/__tests__/analyzeDiffTypeCoercion.test.js +137 -0
  12. package/dist/cli/analyzeDiff/analyzeDiff.d.ts +17 -0
  13. package/dist/cli/analyzeDiff/analyzeDiff.d.ts.map +1 -0
  14. package/dist/cli/analyzeDiff/analyzeDiff.js +105 -0
  15. package/dist/cli/analyzeDiff/buildLegacyReport.d.ts +17 -0
  16. package/dist/cli/analyzeDiff/buildLegacyReport.d.ts.map +1 -0
  17. package/dist/cli/analyzeDiff/buildLegacyReport.js +54 -0
  18. package/dist/cli/analyzeDiff/ciSummary.d.ts +6 -0
  19. package/dist/cli/analyzeDiff/ciSummary.d.ts.map +1 -0
  20. package/dist/cli/analyzeDiff/ciSummary.js +20 -0
  21. package/dist/cli/analyzeDiff/diffEngine.d.ts +54 -0
  22. package/dist/cli/analyzeDiff/diffEngine.d.ts.map +1 -0
  23. package/dist/cli/analyzeDiff/diffEngine.js +209 -0
  24. package/dist/cli/analyzeDiff/ignoreRules.d.ts +33 -0
  25. package/dist/cli/analyzeDiff/ignoreRules.d.ts.map +1 -0
  26. package/dist/cli/analyzeDiff/ignoreRules.js +93 -0
  27. package/dist/cli/analyzeDiff/ignoreSemanticChanges.d.ts +10 -0
  28. package/dist/cli/analyzeDiff/ignoreSemanticChanges.d.ts.map +1 -0
  29. package/dist/cli/analyzeDiff/ignoreSemanticChanges.js +84 -0
  30. package/dist/cli/analyzeDiff/logLegacyReport.d.ts +6 -0
  31. package/dist/cli/analyzeDiff/logLegacyReport.d.ts.map +1 -0
  32. package/dist/cli/analyzeDiff/logLegacyReport.js +29 -0
  33. package/dist/cli/analyzeDiff/miracles.d.ts +89 -0
  34. package/dist/cli/analyzeDiff/miracles.d.ts.map +1 -0
  35. package/dist/cli/analyzeDiff/miracles.js +325 -0
  36. package/dist/cli/analyzeDiff/pluginPaths.d.ts +5 -0
  37. package/dist/cli/analyzeDiff/pluginPaths.d.ts.map +1 -0
  38. package/dist/cli/analyzeDiff/pluginPaths.js +13 -0
  39. package/dist/cli/analyzeDiff/report.d.ts +3 -0
  40. package/dist/cli/analyzeDiff/report.d.ts.map +1 -0
  41. package/dist/cli/analyzeDiff/report.js +7 -0
  42. package/dist/cli/analyzeDiff/semanticDiffContext.d.ts +6 -0
  43. package/dist/cli/analyzeDiff/semanticDiffContext.d.ts.map +1 -0
  44. package/dist/cli/analyzeDiff/semanticDiffContext.js +16 -0
  45. package/dist/cli/analyzeDiff/specParser.d.ts +22 -0
  46. package/dist/cli/analyzeDiff/specParser.d.ts.map +1 -0
  47. package/dist/cli/analyzeDiff/specParser.js +80 -0
  48. package/dist/cli/analyzeDiff/types.d.ts +61 -0
  49. package/dist/cli/analyzeDiff/types.d.ts.map +1 -0
  50. package/dist/cli/analyzeDiff/types.js +2 -0
  51. package/dist/cli/analyzeDiff/writeLegacyReport.d.ts +6 -0
  52. package/dist/cli/analyzeDiff/writeLegacyReport.d.ts.map +1 -0
  53. package/dist/cli/analyzeDiff/writeLegacyReport.js +21 -0
  54. package/dist/cli/checkAndUpdateConfig/checkConfig.d.ts.map +1 -1
  55. package/dist/cli/checkAndUpdateConfig/checkConfig.js +13 -8
  56. package/dist/cli/checkAndUpdateConfig/constants.d.ts +0 -9
  57. package/dist/cli/checkAndUpdateConfig/constants.d.ts.map +1 -1
  58. package/dist/cli/checkAndUpdateConfig/constants.js +1 -10
  59. package/dist/cli/checkAndUpdateConfig/updateConfig.d.ts.map +1 -1
  60. package/dist/cli/checkAndUpdateConfig/updateConfig.js +11 -7
  61. package/dist/cli/checkAndUpdateConfig/utils/selectConfigAction.d.ts.map +1 -1
  62. package/dist/cli/checkAndUpdateConfig/utils/selectConfigAction.js +6 -3
  63. package/dist/cli/checkAndUpdateConfig/utils/updateExistingConfigFile.d.ts.map +1 -1
  64. package/dist/cli/checkAndUpdateConfig/utils/updateExistingConfigFile.js +3 -2
  65. package/dist/cli/checkAndUpdateConfig/utils/writeExampleConfigFile.d.ts.map +1 -1
  66. package/dist/cli/checkAndUpdateConfig/utils/writeExampleConfigFile.js +2 -2
  67. package/dist/cli/generateOpenApiClient/__tests__/generateOpenApiClient.strict.test.d.ts +2 -0
  68. package/dist/cli/generateOpenApiClient/__tests__/generateOpenApiClient.strict.test.d.ts.map +1 -0
  69. package/dist/cli/generateOpenApiClient/__tests__/generateOpenApiClient.strict.test.js +152 -0
  70. package/dist/cli/generateOpenApiClient/generateOpenApiClient.d.ts +6 -2
  71. package/dist/cli/generateOpenApiClient/generateOpenApiClient.d.ts.map +1 -1
  72. package/dist/cli/generateOpenApiClient/generateOpenApiClient.js +54 -18
  73. package/dist/cli/index.js +57 -2
  74. package/dist/cli/initOpenApiConfig/init.d.ts.map +1 -1
  75. package/dist/cli/initOpenApiConfig/init.js +19 -6
  76. package/dist/cli/initOpenApiConfig/initConfig.d.ts +1 -0
  77. package/dist/cli/initOpenApiConfig/initConfig.d.ts.map +1 -1
  78. package/dist/cli/initOpenApiConfig/initConfig.js +47 -24
  79. package/dist/cli/initOpenApiConfig/initCustomRequest.d.ts +8 -1
  80. package/dist/cli/initOpenApiConfig/initCustomRequest.d.ts.map +1 -1
  81. package/dist/cli/initOpenApiConfig/initCustomRequest.js +40 -8
  82. package/dist/cli/initOpenApiConfig/utils/buildConfig.d.ts.map +1 -1
  83. package/dist/cli/initOpenApiConfig/utils/buildConfig.js +60 -0
  84. package/dist/cli/initOpenApiConfig/utils/validateSpecFile.d.ts.map +1 -1
  85. package/dist/cli/initOpenApiConfig/utils/validateSpecFile.js +2 -1
  86. package/dist/cli/initOpenApiConfig/utils/writeConfigFile.d.ts.map +1 -1
  87. package/dist/cli/initOpenApiConfig/utils/writeConfigFile.js +2 -1
  88. package/dist/cli/interactive/confirmDialog.d.ts.map +1 -1
  89. package/dist/cli/interactive/confirmDialog.js +3 -2
  90. package/dist/cli/interactive/constants.d.ts +2 -2
  91. package/dist/cli/interactive/constants.js +8 -8
  92. package/dist/cli/interactive/selectDialog.d.ts.map +1 -1
  93. package/dist/cli/interactive/selectDialog.js +11 -6
  94. package/dist/cli/previewChanges/previewChanges.d.ts.map +1 -1
  95. package/dist/cli/previewChanges/previewChanges.js +45 -17
  96. package/dist/cli/schemas/analyzeDiff.d.ts +14 -0
  97. package/dist/cli/schemas/analyzeDiff.d.ts.map +1 -0
  98. package/dist/cli/schemas/analyzeDiff.js +28 -0
  99. package/dist/cli/schemas/generate.d.ts +9 -0
  100. package/dist/cli/schemas/generate.d.ts.map +1 -1
  101. package/dist/cli/schemas/generate.js +9 -0
  102. package/dist/cli/schemas/index.d.ts +3 -1
  103. package/dist/cli/schemas/index.d.ts.map +1 -1
  104. package/dist/cli/schemas/index.js +2 -0
  105. package/dist/common/Consts.d.ts +1 -0
  106. package/dist/common/Consts.d.ts.map +1 -1
  107. package/dist/common/Consts.js +15 -1
  108. package/dist/common/Logger.d.ts +20 -1
  109. package/dist/common/Logger.d.ts.map +1 -1
  110. package/dist/common/Logger.js +70 -9
  111. package/dist/common/LoggerMessages.d.ts +135 -33
  112. package/dist/common/LoggerMessages.d.ts.map +1 -1
  113. package/dist/common/LoggerMessages.js +118 -45
  114. package/dist/common/VersionedSchema/AllVersionedSchemas/AllMigrationPlans.d.ts.map +1 -1
  115. package/dist/common/VersionedSchema/AllVersionedSchemas/AllMigrationPlans.js +7 -1
  116. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedBase.d.ts +4 -0
  117. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedBase.d.ts.map +1 -1
  118. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV1.d.ts +8 -0
  119. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV1.d.ts.map +1 -1
  120. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV2.d.ts +8 -0
  121. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV2.d.ts.map +1 -1
  122. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV3.d.ts +8 -0
  123. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV3.d.ts.map +1 -1
  124. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV4.d.ts +35 -0
  125. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV4.d.ts.map +1 -1
  126. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV4.js +4 -1
  127. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.d.ts +79 -0
  128. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.d.ts.map +1 -0
  129. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.js +19 -0
  130. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.d.ts +171 -0
  131. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.d.ts.map +1 -1
  132. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.js +2 -0
  133. package/dist/common/VersionedSchema/CommonSchemas.d.ts +40 -0
  134. package/dist/common/VersionedSchema/CommonSchemas.d.ts.map +1 -1
  135. package/dist/common/VersionedSchema/CommonSchemas.js +34 -1
  136. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV1.d.ts +4 -0
  137. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV1.d.ts.map +1 -1
  138. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV2.d.ts +4 -0
  139. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV2.d.ts.map +1 -1
  140. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV3.d.ts +4 -0
  141. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV3.d.ts.map +1 -1
  142. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV4.d.ts +4 -0
  143. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV4.d.ts.map +1 -1
  144. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV5.d.ts +4 -0
  145. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV5.d.ts.map +1 -1
  146. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV1.d.ts +4 -0
  147. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV1.d.ts.map +1 -1
  148. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV2.d.ts +4 -0
  149. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV2.d.ts.map +1 -1
  150. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV3.d.ts +4 -0
  151. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV3.d.ts.map +1 -1
  152. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV4.d.ts +4 -0
  153. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV4.d.ts.map +1 -1
  154. package/dist/common/VersionedSchema/Utils/__mocks__/compatibilityCases.d.ts.map +1 -1
  155. package/dist/common/VersionedSchema/Utils/__mocks__/compatibilityCases.js +23 -3
  156. package/dist/common/VersionedSchema/Utils/__tests__/migrateDataToLatestSchemaVersion.test.js +2 -2
  157. package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.d.ts.map +1 -1
  158. package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.js +2 -1
  159. package/dist/common/__tests__/Logger.test.d.ts +2 -0
  160. package/dist/common/__tests__/Logger.test.d.ts.map +1 -0
  161. package/dist/common/__tests__/Logger.test.js +100 -0
  162. package/dist/common/utils/__tests__/convertArrayToObject.test.js +3 -0
  163. package/dist/common/utils/__tests__/eslintFix.test.d.ts +2 -0
  164. package/dist/common/utils/__tests__/eslintFix.test.d.ts.map +1 -0
  165. package/dist/common/utils/__tests__/eslintFix.test.js +134 -0
  166. package/dist/common/utils/__tests__/format.test.d.ts +2 -0
  167. package/dist/common/utils/__tests__/format.test.d.ts.map +1 -0
  168. package/dist/common/utils/__tests__/format.test.js +90 -0
  169. package/dist/common/utils/convertArrayToObject.d.ts.map +1 -1
  170. package/dist/common/utils/convertArrayToObject.js +3 -0
  171. package/dist/common/utils/eslintFix.d.ts +7 -0
  172. package/dist/common/utils/eslintFix.d.ts.map +1 -0
  173. package/dist/common/utils/eslintFix.js +78 -0
  174. package/dist/common/utils/format.d.ts +1 -1
  175. package/dist/common/utils/format.d.ts.map +1 -1
  176. package/dist/common/utils/format.js +39 -15
  177. package/dist/common/utils/jsonPath.d.ts +5 -0
  178. package/dist/common/utils/jsonPath.d.ts.map +1 -0
  179. package/dist/common/utils/jsonPath.js +27 -0
  180. package/dist/common/utils/normalizeObject.d.ts +2 -0
  181. package/dist/common/utils/normalizeObject.d.ts.map +1 -0
  182. package/dist/common/utils/normalizeObject.js +63 -0
  183. package/dist/core/Context.d.ts +8 -1
  184. package/dist/core/Context.d.ts.map +1 -1
  185. package/dist/core/Context.js +23 -4
  186. package/dist/core/OpenApiClient.d.ts +2 -0
  187. package/dist/core/OpenApiClient.d.ts.map +1 -1
  188. package/dist/core/OpenApiClient.js +116 -6
  189. package/dist/core/WriteClient.d.ts +4 -0
  190. package/dist/core/WriteClient.d.ts.map +1 -1
  191. package/dist/core/WriteClient.js +38 -4
  192. package/dist/core/__tests__/WriteClient.test.js +4 -1
  193. package/dist/core/api/v2/parser/__tests__/getModel.test.d.ts +2 -0
  194. package/dist/core/api/v2/parser/__tests__/getModel.test.d.ts.map +1 -0
  195. package/dist/core/api/v2/parser/__tests__/getModel.test.js +34 -0
  196. package/dist/core/api/v2/parser/getModel.d.ts.map +1 -1
  197. package/dist/core/api/v2/parser/getModel.js +6 -1
  198. package/dist/core/api/v2/parser/getOperation.d.ts.map +1 -1
  199. package/dist/core/api/v2/parser/getOperation.js +2 -0
  200. package/dist/core/api/v2/parser/getOperationResponses.d.ts.map +1 -1
  201. package/dist/core/api/v2/parser/getOperationResponses.js +9 -1
  202. package/dist/core/api/v2/types/OpenApiSchema.model.d.ts +2 -0
  203. package/dist/core/api/v2/types/OpenApiSchema.model.d.ts.map +1 -1
  204. package/dist/core/api/v3/parser/__tests__/getContent.test.d.ts +2 -0
  205. package/dist/core/api/v3/parser/__tests__/getContent.test.d.ts.map +1 -0
  206. package/dist/core/api/v3/parser/__tests__/getContent.test.js +65 -0
  207. package/dist/core/api/v3/parser/__tests__/getModel.test.d.ts +2 -0
  208. package/dist/core/api/v3/parser/__tests__/getModel.test.d.ts.map +1 -0
  209. package/dist/core/api/v3/parser/__tests__/getModel.test.js +34 -0
  210. package/dist/core/api/v3/parser/getContent.d.ts.map +1 -1
  211. package/dist/core/api/v3/parser/getContent.js +21 -11
  212. package/dist/core/api/v3/parser/getModel.d.ts.map +1 -1
  213. package/dist/core/api/v3/parser/getModel.js +6 -1
  214. package/dist/core/api/v3/parser/getOperation.d.ts.map +1 -1
  215. package/dist/core/api/v3/parser/getOperation.js +2 -0
  216. package/dist/core/api/v3/parser/getOperationResponses.d.ts.map +1 -1
  217. package/dist/core/api/v3/parser/getOperationResponses.js +9 -1
  218. package/dist/core/api/v3/types/OpenApiSchema.model.d.ts +2 -0
  219. package/dist/core/api/v3/types/OpenApiSchema.model.d.ts.map +1 -1
  220. package/dist/core/governance/__tests__/evaluateGovernanceRules.test.d.ts +2 -0
  221. package/dist/core/governance/__tests__/evaluateGovernanceRules.test.d.ts.map +1 -0
  222. package/dist/core/governance/__tests__/evaluateGovernanceRules.test.js +100 -0
  223. package/dist/core/governance/__tests__/loadGovernanceConfig.test.d.ts +2 -0
  224. package/dist/core/governance/__tests__/loadGovernanceConfig.test.d.ts.map +1 -0
  225. package/dist/core/governance/__tests__/loadGovernanceConfig.test.js +71 -0
  226. package/dist/core/governance/evaluateGovernanceRules.d.ts +42 -0
  227. package/dist/core/governance/evaluateGovernanceRules.d.ts.map +1 -0
  228. package/dist/core/governance/evaluateGovernanceRules.js +134 -0
  229. package/dist/core/governance/governanceConfigSchema.d.ts +4 -0
  230. package/dist/core/governance/governanceConfigSchema.d.ts.map +1 -0
  231. package/dist/core/governance/governanceConfigSchema.js +39 -0
  232. package/dist/core/governance/loadGovernanceConfig.d.ts +7 -0
  233. package/dist/core/governance/loadGovernanceConfig.d.ts.map +1 -0
  234. package/dist/core/governance/loadGovernanceConfig.js +60 -0
  235. package/dist/core/index.d.ts +3 -0
  236. package/dist/core/index.d.ts.map +1 -1
  237. package/dist/core/index.js +4 -2
  238. package/dist/core/plugins/GeneratorPlugin.model.d.ts +42 -0
  239. package/dist/core/plugins/GeneratorPlugin.model.d.ts.map +1 -0
  240. package/dist/core/plugins/GeneratorPlugin.model.js +2 -0
  241. package/dist/core/plugins/__tests__/applySemanticDiffPluginHooks.test.d.ts +2 -0
  242. package/dist/core/plugins/__tests__/applySemanticDiffPluginHooks.test.d.ts.map +1 -0
  243. package/dist/core/plugins/__tests__/applySemanticDiffPluginHooks.test.js +115 -0
  244. package/dist/core/plugins/__tests__/loadGeneratorPlugins.test.d.ts +2 -0
  245. package/dist/core/plugins/__tests__/loadGeneratorPlugins.test.d.ts.map +1 -0
  246. package/dist/core/plugins/__tests__/loadGeneratorPlugins.test.js +62 -0
  247. package/dist/core/plugins/applySemanticDiffPluginHooks.d.ts +28 -0
  248. package/dist/core/plugins/applySemanticDiffPluginHooks.d.ts.map +1 -0
  249. package/dist/core/plugins/applySemanticDiffPluginHooks.js +160 -0
  250. package/dist/core/plugins/builtins/xTypescriptTypePlugin.d.ts +6 -0
  251. package/dist/core/plugins/builtins/xTypescriptTypePlugin.d.ts.map +1 -0
  252. package/dist/core/plugins/builtins/xTypescriptTypePlugin.js +13 -0
  253. package/dist/core/plugins/getBuiltinPlugins.d.ts +6 -0
  254. package/dist/core/plugins/getBuiltinPlugins.d.ts.map +1 -0
  255. package/dist/core/plugins/getBuiltinPlugins.js +10 -0
  256. package/dist/core/plugins/index.d.ts +4 -0
  257. package/dist/core/plugins/index.d.ts.map +1 -0
  258. package/dist/core/plugins/index.js +5 -0
  259. package/dist/core/plugins/loadGeneratorPlugins.d.ts +6 -0
  260. package/dist/core/plugins/loadGeneratorPlugins.d.ts.map +1 -0
  261. package/dist/core/plugins/loadGeneratorPlugins.js +94 -0
  262. package/dist/core/semanticDiff/__tests__/analyzeOpenApiDiff.test.d.ts +2 -0
  263. package/dist/core/semanticDiff/__tests__/analyzeOpenApiDiff.test.d.ts.map +1 -0
  264. package/dist/core/semanticDiff/__tests__/analyzeOpenApiDiff.test.js +537 -0
  265. package/dist/core/semanticDiff/__tests__/semanticDiffReportSchema.test.d.ts +2 -0
  266. package/dist/core/semanticDiff/__tests__/semanticDiffReportSchema.test.d.ts.map +1 -0
  267. package/dist/core/semanticDiff/__tests__/semanticDiffReportSchema.test.js +66 -0
  268. package/dist/core/semanticDiff/analyzeOpenApiDiff.d.ts +45 -0
  269. package/dist/core/semanticDiff/analyzeOpenApiDiff.d.ts.map +1 -0
  270. package/dist/core/semanticDiff/analyzeOpenApiDiff.js +640 -0
  271. package/dist/core/semanticDiff/semanticDiffReportSchema.d.ts +11 -0
  272. package/dist/core/semanticDiff/semanticDiffReportSchema.d.ts.map +1 -0
  273. package/dist/core/semanticDiff/semanticDiffReportSchema.js +132 -0
  274. package/dist/core/strict/__tests__/validateOpenApiStrict.test.d.ts +2 -0
  275. package/dist/core/strict/__tests__/validateOpenApiStrict.test.d.ts.map +1 -0
  276. package/dist/core/strict/__tests__/validateOpenApiStrict.test.js +156 -0
  277. package/dist/core/strict/validateOpenApiStrict.d.ts +43 -0
  278. package/dist/core/strict/validateOpenApiStrict.d.ts.map +1 -0
  279. package/dist/core/strict/validateOpenApiStrict.js +253 -0
  280. package/dist/core/types/base/ClientArtifacts.model.d.ts +2 -0
  281. package/dist/core/types/base/ClientArtifacts.model.d.ts.map +1 -1
  282. package/dist/core/types/base/Templates.model.d.ts +3 -0
  283. package/dist/core/types/base/Templates.model.d.ts.map +1 -1
  284. package/dist/core/types/enums/ModelsMode.enum.d.ts +5 -0
  285. package/dist/core/types/enums/ModelsMode.enum.d.ts.map +1 -0
  286. package/dist/core/types/enums/ModelsMode.enum.js +8 -0
  287. package/dist/core/types/shared/Client.model.d.ts +2 -0
  288. package/dist/core/types/shared/Client.model.d.ts.map +1 -1
  289. package/dist/core/types/shared/DiffInfo.model.d.ts +13 -0
  290. package/dist/core/types/shared/DiffInfo.model.d.ts.map +1 -0
  291. package/dist/core/types/shared/DiffInfo.model.js +2 -0
  292. package/dist/core/types/shared/Miracle.model.d.ts +13 -0
  293. package/dist/core/types/shared/Miracle.model.d.ts.map +1 -0
  294. package/dist/core/types/shared/Miracle.model.js +2 -0
  295. package/dist/core/types/shared/Model.model.d.ts +23 -0
  296. package/dist/core/types/shared/Model.model.d.ts.map +1 -1
  297. package/dist/core/types/shared/Operation.model.d.ts +5 -0
  298. package/dist/core/types/shared/Operation.model.d.ts.map +1 -1
  299. package/dist/core/utils/__mocks__/templates.d.ts.map +1 -1
  300. package/dist/core/utils/__mocks__/templates.js +9 -0
  301. package/dist/core/utils/__tests__/applyDiffReportToClient.test.d.ts +2 -0
  302. package/dist/core/utils/__tests__/applyDiffReportToClient.test.d.ts.map +1 -0
  303. package/dist/core/utils/__tests__/applyDiffReportToClient.test.js +108 -0
  304. package/dist/core/utils/__tests__/getMappedType.test.js +2 -0
  305. package/dist/core/utils/__tests__/getOperationResponseCode.test.js +7 -2
  306. package/dist/core/utils/__tests__/getOperationResults.test.d.ts +2 -0
  307. package/dist/core/utils/__tests__/getOperationResults.test.d.ts.map +1 -0
  308. package/dist/core/utils/__tests__/getOperationResults.test.js +43 -0
  309. package/dist/core/utils/__tests__/prepareDtoModels.test.d.ts +2 -0
  310. package/dist/core/utils/__tests__/prepareDtoModels.test.d.ts.map +1 -0
  311. package/dist/core/utils/__tests__/prepareDtoModels.test.js +116 -0
  312. package/dist/core/utils/__tests__/serviceHelpers.test.js +1 -0
  313. package/dist/core/utils/__tests__/writeClientModels.test.js +50 -0
  314. package/dist/core/utils/applyDiffReportToClient.d.ts +14 -0
  315. package/dist/core/utils/applyDiffReportToClient.d.ts.map +1 -0
  316. package/dist/core/utils/applyDiffReportToClient.js +367 -0
  317. package/dist/core/utils/getMappedType.d.ts.map +1 -1
  318. package/dist/core/utils/getMappedType.js +2 -0
  319. package/dist/core/utils/getOpenApiSpec.d.ts.map +1 -1
  320. package/dist/core/utils/getOpenApiSpec.js +1 -14
  321. package/dist/core/utils/getOperationResponseCode.d.ts.map +1 -1
  322. package/dist/core/utils/getOperationResponseCode.js +10 -8
  323. package/dist/core/utils/loadDiffReport.d.ts +39 -0
  324. package/dist/core/utils/loadDiffReport.d.ts.map +1 -0
  325. package/dist/core/utils/loadDiffReport.js +51 -0
  326. package/dist/core/utils/prepareDtoModels.d.ts +3 -0
  327. package/dist/core/utils/prepareDtoModels.d.ts.map +1 -0
  328. package/dist/core/utils/prepareDtoModels.js +189 -0
  329. package/dist/core/utils/registerHandlebarHelpers.d.ts.map +1 -1
  330. package/dist/core/utils/registerHandlebarHelpers.js +4 -1
  331. package/dist/core/utils/registerHandlebarTemplates.d.ts.map +1 -1
  332. package/dist/core/utils/registerHandlebarTemplates.js +6 -0
  333. package/dist/core/utils/validateRawOptions.d.ts +1 -1
  334. package/dist/core/utils/validateRawOptions.d.ts.map +1 -1
  335. package/dist/core/utils/validateRawOptions.js +4 -2
  336. package/dist/core/utils/writeClientCore.d.ts +2 -0
  337. package/dist/core/utils/writeClientCore.d.ts.map +1 -1
  338. package/dist/core/utils/writeClientCore.js +6 -1
  339. package/dist/core/utils/writeClientCoreIndex.d.ts +1 -0
  340. package/dist/core/utils/writeClientCoreIndex.d.ts.map +1 -1
  341. package/dist/core/utils/writeClientCoreIndex.js +2 -2
  342. package/dist/core/utils/writeClientExecutor.d.ts +2 -0
  343. package/dist/core/utils/writeClientExecutor.d.ts.map +1 -1
  344. package/dist/core/utils/writeClientExecutor.js +6 -2
  345. package/dist/core/utils/writeClientFullIndex.d.ts.map +1 -1
  346. package/dist/core/utils/writeClientFullIndex.js +3 -1
  347. package/dist/core/utils/writeClientModels.d.ts +6 -0
  348. package/dist/core/utils/writeClientModels.d.ts.map +1 -1
  349. package/dist/core/utils/writeClientModels.js +24 -3
  350. package/dist/core/utils/writeClientModelsIndex.d.ts +2 -0
  351. package/dist/core/utils/writeClientModelsIndex.d.ts.map +1 -1
  352. package/dist/core/utils/writeClientModelsIndex.js +2 -2
  353. package/dist/core/utils/writeClientSchemas.d.ts +2 -0
  354. package/dist/core/utils/writeClientSchemas.d.ts.map +1 -1
  355. package/dist/core/utils/writeClientSchemas.js +6 -2
  356. package/dist/core/utils/writeClientServices.d.ts +2 -0
  357. package/dist/core/utils/writeClientServices.d.ts.map +1 -1
  358. package/dist/core/utils/writeClientServices.js +6 -2
  359. package/dist/templatesCompiled/cli/openApiConfig.d.ts +4 -1
  360. package/dist/templatesCompiled/cli/openApiConfig.d.ts.map +1 -1
  361. package/dist/templatesCompiled/cli/openApiConfig.js +88 -37
  362. package/dist/templatesCompiled/client/core/ApiRequestOptions.js +1 -1
  363. package/dist/templatesCompiled/client/core/BaseDto.d.ts +8 -0
  364. package/dist/templatesCompiled/client/core/BaseDto.d.ts.map +1 -0
  365. package/dist/templatesCompiled/client/core/BaseDto.js +18 -0
  366. package/dist/templatesCompiled/client/core/axios/getResponseBody.js +1 -1
  367. package/dist/templatesCompiled/client/core/axios/request.js +2 -2
  368. package/dist/templatesCompiled/client/core/axios/sendRequest.js +4 -4
  369. package/dist/templatesCompiled/client/core/dtoUtils.d.ts +8 -0
  370. package/dist/templatesCompiled/client/core/dtoUtils.d.ts.map +1 -0
  371. package/dist/templatesCompiled/client/core/dtoUtils.js +18 -0
  372. package/dist/templatesCompiled/client/core/executor/createExecutorAdapter.js +2 -2
  373. package/dist/templatesCompiled/client/core/executor/requestExecutor.js +1 -1
  374. package/dist/templatesCompiled/client/core/fetch/getResponseBody.js +1 -1
  375. package/dist/templatesCompiled/client/core/fetch/request.js +2 -2
  376. package/dist/templatesCompiled/client/core/functions/isBinary.js +1 -1
  377. package/dist/templatesCompiled/client/core/node/getResponseBody.js +1 -1
  378. package/dist/templatesCompiled/client/core/node/request.js +2 -2
  379. package/dist/templatesCompiled/client/core/xhr/getResponseBody.js +1 -1
  380. package/dist/templatesCompiled/client/core/xhr/request.js +2 -2
  381. package/dist/templatesCompiled/client/core/xhr/sendRequest.js +4 -4
  382. package/dist/templatesCompiled/client/exportModels.d.ts +34 -0
  383. package/dist/templatesCompiled/client/exportModels.d.ts.map +1 -0
  384. package/dist/templatesCompiled/client/exportModels.js +280 -0
  385. package/dist/templatesCompiled/client/exportService.d.ts +7 -4
  386. package/dist/templatesCompiled/client/exportService.d.ts.map +1 -1
  387. package/dist/templatesCompiled/client/exportService.js +52 -33
  388. package/dist/templatesCompiled/client/indexCore.d.ts +3 -1
  389. package/dist/templatesCompiled/client/indexCore.d.ts.map +1 -1
  390. package/dist/templatesCompiled/client/indexCore.js +13 -2
  391. package/dist/templatesCompiled/client/indexFull.d.ts +9 -7
  392. package/dist/templatesCompiled/client/indexFull.d.ts.map +1 -1
  393. package/dist/templatesCompiled/client/indexFull.js +52 -34
  394. package/dist/templatesCompiled/client/indexModels.d.ts +7 -5
  395. package/dist/templatesCompiled/client/indexModels.d.ts.map +1 -1
  396. package/dist/templatesCompiled/client/indexModels.js +27 -18
  397. package/dist/templatesCompiled/client/joi/partials/joiSchemaGeneric.d.ts +27 -19
  398. package/dist/templatesCompiled/client/joi/partials/joiSchemaGeneric.d.ts.map +1 -1
  399. package/dist/templatesCompiled/client/joi/partials/joiSchemaGeneric.js +144 -63
  400. package/dist/templatesCompiled/client/jsonschema/exportSchema.d.ts +1 -0
  401. package/dist/templatesCompiled/client/jsonschema/exportSchema.d.ts.map +1 -1
  402. package/dist/templatesCompiled/client/jsonschema/exportSchema.js +17 -13
  403. package/dist/templatesCompiled/client/partials/exportInterface.d.ts +13 -5
  404. package/dist/templatesCompiled/client/partials/exportInterface.d.ts.map +1 -1
  405. package/dist/templatesCompiled/client/partials/exportInterface.js +91 -21
  406. package/dist/templatesCompiled/client/partials/result.d.ts +6 -4
  407. package/dist/templatesCompiled/client/partials/result.d.ts.map +1 -1
  408. package/dist/templatesCompiled/client/partials/result.js +16 -6
  409. package/dist/templatesCompiled/client/partials/serviceOption.d.ts +1 -0
  410. package/dist/templatesCompiled/client/partials/serviceOption.d.ts.map +1 -1
  411. package/dist/templatesCompiled/client/partials/serviceOption.js +11 -4
  412. package/dist/templatesCompiled/client/yup/partials/yupSchemaGeneric.d.ts +22 -16
  413. package/dist/templatesCompiled/client/yup/partials/yupSchemaGeneric.d.ts.map +1 -1
  414. package/dist/templatesCompiled/client/yup/partials/yupSchemaGeneric.js +72 -60
  415. package/dist/templatesCompiled/client/zod/partials/zodSchemaGeneric.d.ts +27 -19
  416. package/dist/templatesCompiled/client/zod/partials/zodSchemaGeneric.d.ts.map +1 -1
  417. package/dist/templatesCompiled/client/zod/partials/zodSchemaGeneric.js +77 -61
  418. package/package.json +7 -5
@@ -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,6 @@
1
+ import { DiffReport } from './types';
2
+ /**
3
+ * Пишет legacy summary в лог.
4
+ */
5
+ export declare function logLegacyReport(report: DiffReport, reportPath: string): void;
6
+ //# sourceMappingURL=logLegacyReport.d.ts.map
@@ -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,5 @@
1
+ /**
2
+ * Reads plugin paths from openapi config for semantic diff hooks.
3
+ */
4
+ export declare function resolvePluginPaths(openapiConfig?: string): string[];
5
+ //# sourceMappingURL=pluginPaths.d.ts.map
@@ -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,3 @@
1
+ export { buildLegacyReport as buildReport } from './buildLegacyReport';
2
+ export { writeLegacyReport as writeReportToFile } from './writeLegacyReport';
3
+ //# sourceMappingURL=report.d.ts.map
@@ -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,6 @@
1
+ import { Context } from '../../core/Context';
2
+ /**
3
+ * Creates lightweight context for OpenAPI parsing in semantic diff mode.
4
+ */
5
+ export declare function createSemanticDiffContext(input: string): Context;
6
+ //# sourceMappingURL=semanticDiffContext.d.ts.map
@@ -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"}