ts-openapi-codegen 2.0.0 → 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.
Files changed (418) hide show
  1. package/README.md +91 -2
  2. package/README.rus.md +91 -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,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"}
@@ -0,0 +1,80 @@
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.readSpecFromGit = exports.parseSpecContent = exports.parseSpecFile = void 0;
7
+ const child_process_1 = require("child_process");
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const os_1 = __importDefault(require("os"));
10
+ const path_1 = __importDefault(require("path"));
11
+ /**
12
+ * Читает и парсит спецификацию из файла. Поддерживает JSON и YAML через SwaggerParser.
13
+ * @param specPath путь к файлу спецификации
14
+ * @returns распарсенная спецификация
15
+ */
16
+ const parseSpecFile = async (specPath) => {
17
+ const content = fs_1.default.readFileSync(specPath, 'utf-8');
18
+ const trimmed = content.trim();
19
+ if (!trimmed) {
20
+ throw new Error(`Specification file is empty: ${specPath}`);
21
+ }
22
+ if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
23
+ return JSON.parse(trimmed);
24
+ }
25
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
26
+ const SwaggerParser = require('@apidevtools/swagger-parser');
27
+ const parser = new SwaggerParser();
28
+ return parser.parse(specPath);
29
+ };
30
+ exports.parseSpecFile = parseSpecFile;
31
+ /**
32
+ * Парсит содержимое спецификации, переданное как строка. При YAML создаёт временный файл для парсинга.
33
+ * @param content строковое содержимое спецификации
34
+ * @param sourcePath исходный путь/идентификатор (используется для расширения временного файла)
35
+ * @returns распарсенная спецификация
36
+ */
37
+ const parseSpecContent = async (content, sourcePath) => {
38
+ const trimmed = content.trim();
39
+ if (!trimmed) {
40
+ throw new Error(`Specification content is empty: ${sourcePath}`);
41
+ }
42
+ if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
43
+ return JSON.parse(trimmed);
44
+ }
45
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
46
+ const SwaggerParser = require('@apidevtools/swagger-parser');
47
+ const parser = new SwaggerParser();
48
+ const tmpDir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'openapi-diff-'));
49
+ const ext = path_1.default.extname(sourcePath) || '.yaml';
50
+ const tmpFile = path_1.default.join(tmpDir, `spec${ext}`);
51
+ try {
52
+ fs_1.default.writeFileSync(tmpFile, content, 'utf-8');
53
+ return await parser.parse(tmpFile);
54
+ }
55
+ finally {
56
+ fs_1.default.rmSync(tmpDir, { recursive: true, force: true });
57
+ }
58
+ };
59
+ exports.parseSpecContent = parseSpecContent;
60
+ /**
61
+ * Извлекает содержимое файла спецификации из Git по ref и парсит его.
62
+ * @param ref git-реф (например, HEAD~1)
63
+ * @param specPath путь к спецификации в репозитории
64
+ * @returns распарсенная спецификация из git
65
+ */
66
+ const readSpecFromGit = async (ref, specPath) => {
67
+ const relativePath = path_1.default.isAbsolute(specPath) ? path_1.default.relative(process.cwd(), specPath) : specPath;
68
+ const normalizedPath = path_1.default.normalize(relativePath);
69
+ const gitCommand = `git show ${ref}:${normalizedPath}`;
70
+ let content;
71
+ try {
72
+ content = (0, child_process_1.execSync)(gitCommand, { encoding: 'utf-8' });
73
+ }
74
+ catch (err) {
75
+ const hint = `Failed to read '${specPath}' from git ref '${ref}'. Ensure you run this command in a git repository and the path exists at the specified ref.`;
76
+ throw new Error(`${hint} (${String(err)})`);
77
+ }
78
+ return (0, exports.parseSpecContent)(content, `${ref}:${normalizedPath}`);
79
+ };
80
+ exports.readSpecFromGit = readSpecFromGit;
@@ -0,0 +1,61 @@
1
+ export type JsonValue = unknown;
2
+ export type DiffAction = 'added' | 'removed' | 'changed';
3
+ export type DiffSeverity = 'breaking' | 'warning' | 'info';
4
+ export interface DiffEntry {
5
+ action: DiffAction;
6
+ path: string;
7
+ from?: JsonValue;
8
+ to?: JsonValue;
9
+ severity: DiffSeverity;
10
+ note?: string;
11
+ type?: string;
12
+ }
13
+ export interface DiffStats {
14
+ totalChanges: number;
15
+ added: number;
16
+ removed: number;
17
+ changed: number;
18
+ ignored?: number;
19
+ stabilityScore?: number;
20
+ }
21
+ export interface DiffReport {
22
+ version: string;
23
+ timestamp: string;
24
+ metadata: {
25
+ base: string;
26
+ target: string;
27
+ baseHash?: string;
28
+ targetHash?: string;
29
+ };
30
+ stats: DiffStats;
31
+ diff: {
32
+ breaking: DiffEntry[];
33
+ warnings: DiffEntry[];
34
+ info: DiffEntry[];
35
+ all: DiffEntry[];
36
+ };
37
+ miracles: MiracleEntry[];
38
+ }
39
+ export type MiracleType = 'RENAME' | 'TYPE_COERCION';
40
+ export type MiracleStatus = 'auto-generated' | 'confirmed';
41
+ export interface MiracleEntry {
42
+ oldPath: string;
43
+ newPath: string;
44
+ type: MiracleType;
45
+ confidence: number;
46
+ status: MiracleStatus;
47
+ }
48
+ export type IgnoreRule = {
49
+ path?: string;
50
+ pattern?: string;
51
+ reason?: string;
52
+ until?: string;
53
+ };
54
+ export type AnalyzeDiffResult = {
55
+ success: boolean;
56
+ reportPath?: string;
57
+ skipped?: boolean;
58
+ ignored?: number;
59
+ error?: string;
60
+ };
61
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/analyzeDiff/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC;AAEhC,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAEzD,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,SAAS;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE;QACF,QAAQ,EAAE,SAAS,EAAE,CAAC;QACtB,QAAQ,EAAE,SAAS,EAAE,CAAC;QACtB,IAAI,EAAE,SAAS,EAAE,CAAC;QAClB,GAAG,EAAE,SAAS,EAAE,CAAC;KACpB,CAAC;IACF,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,eAAe,CAAC;AAErD,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,WAAW,CAAC;AAE3D,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,MAAM,UAAU,GAAG;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import { DiffReport } from './types';
2
+ /**
3
+ * Сохраняет legacy report на диск и логирует summary.
4
+ */
5
+ export declare function writeLegacyReport(report: DiffReport, reportPath?: string): void;
6
+ //# sourceMappingURL=writeLegacyReport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeLegacyReport.d.ts","sourceRoot":"","sources":["../../../src/cli/analyzeDiff/writeLegacyReport.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,GAAE,MAAyC,GAAG,IAAI,CASjH"}
@@ -0,0 +1,21 @@
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.writeLegacyReport = writeLegacyReport;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const Consts_1 = require("../../common/Consts");
10
+ const logLegacyReport_1 = require("./logLegacyReport");
11
+ /**
12
+ * Сохраняет legacy report на диск и логирует summary.
13
+ */
14
+ function writeLegacyReport(report, reportPath = Consts_1.DEFAULT_ANALYZE_DIFF_REPORT_PATH) {
15
+ const reportDir = path_1.default.dirname(reportPath);
16
+ if (reportDir && reportDir !== '.' && !fs_1.default.existsSync(reportDir)) {
17
+ fs_1.default.mkdirSync(reportDir, { recursive: true });
18
+ }
19
+ fs_1.default.writeFileSync(reportPath, JSON.stringify(report, null, 2), 'utf-8');
20
+ (0, logLegacyReport_1.logLegacyReport)(report, reportPath);
21
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"checkConfig.d.ts","sourceRoot":"","sources":["../../../src/cli/checkAndUpdateConfig/checkConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAUzC;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA4CtE"}
1
+ {"version":3,"file":"checkConfig.d.ts","sourceRoot":"","sources":["../../../src/cli/checkAndUpdateConfig/checkConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAWzC;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDtE"}