ts-openapi-codegen 2.1.0-beta.1 → 2.1.0-beta.10

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 (520) hide show
  1. package/README.md +27 -934
  2. package/README.rus.md +27 -934
  3. package/dist/cli/analyzeDiff/__tests__/analyzeDiff.cli.test.js +40 -24
  4. package/dist/cli/analyzeDiff/__tests__/analyzeDiffLomMiracles.test.d.ts +2 -0
  5. package/dist/cli/analyzeDiff/__tests__/analyzeDiffLomMiracles.test.d.ts.map +1 -0
  6. package/dist/cli/analyzeDiff/__tests__/analyzeDiffLomMiracles.test.js +47 -0
  7. package/dist/cli/analyzeDiff/__tests__/analyzeDiffRenameAndInvalidRegex.test.js +17 -7
  8. package/dist/cli/analyzeDiff/__tests__/analyzeDiffTypeCoercion.test.js +17 -7
  9. package/dist/cli/analyzeDiff/analyzeDiff.d.ts +14 -2
  10. package/dist/cli/analyzeDiff/analyzeDiff.d.ts.map +1 -1
  11. package/dist/cli/analyzeDiff/analyzeDiff.js +58 -15
  12. package/dist/cli/analyzeDiff/ciSummary.d.ts +6 -3
  13. package/dist/cli/analyzeDiff/ciSummary.d.ts.map +1 -1
  14. package/dist/cli/analyzeDiff/ciSummary.js +10 -6
  15. package/dist/cli/analyzeDiff/ignoreRules.d.ts +0 -22
  16. package/dist/cli/analyzeDiff/ignoreRules.d.ts.map +1 -1
  17. package/dist/cli/analyzeDiff/ignoreRules.js +3 -25
  18. package/dist/cli/analyzeDiff/miracles.d.ts +0 -54
  19. package/dist/cli/analyzeDiff/miracles.d.ts.map +1 -1
  20. package/dist/cli/analyzeDiff/miracles.js +1 -219
  21. package/dist/cli/analyzeDiff/specParser.d.ts +0 -13
  22. package/dist/cli/analyzeDiff/specParser.d.ts.map +1 -1
  23. package/dist/cli/analyzeDiff/specParser.js +2 -23
  24. package/dist/cli/analyzeDiff/types.d.ts +0 -42
  25. package/dist/cli/analyzeDiff/types.d.ts.map +1 -1
  26. package/dist/cli/analyzeUsage/analyzeUsage.d.ts +4 -0
  27. package/dist/cli/analyzeUsage/analyzeUsage.d.ts.map +1 -0
  28. package/dist/cli/analyzeUsage/analyzeUsage.js +60 -0
  29. package/dist/cli/analyzeUsage/core/Analyzer.d.ts +9 -0
  30. package/dist/cli/analyzeUsage/core/Analyzer.d.ts.map +1 -0
  31. package/dist/cli/analyzeUsage/core/Analyzer.js +29 -0
  32. package/dist/cli/analyzeUsage/core/ProjectContext.d.ts +10 -0
  33. package/dist/cli/analyzeUsage/core/ProjectContext.d.ts.map +1 -0
  34. package/dist/cli/analyzeUsage/core/ProjectContext.js +58 -0
  35. package/dist/cli/analyzeUsage/core/Scanner.d.ts +23 -0
  36. package/dist/cli/analyzeUsage/core/Scanner.d.ts.map +1 -0
  37. package/dist/cli/analyzeUsage/core/Scanner.js +125 -0
  38. package/dist/cli/analyzeUsage/rules/ClientRule.d.ts +14 -0
  39. package/dist/cli/analyzeUsage/rules/ClientRule.d.ts.map +1 -0
  40. package/dist/cli/analyzeUsage/rules/ClientRule.js +86 -0
  41. package/dist/cli/analyzeUsage/rules/CoverageRule.d.ts +7 -0
  42. package/dist/cli/analyzeUsage/rules/CoverageRule.d.ts.map +1 -0
  43. package/dist/cli/analyzeUsage/rules/CoverageRule.js +55 -0
  44. package/dist/cli/analyzeUsage/rules/DiagnosticsRule.d.ts +6 -0
  45. package/dist/cli/analyzeUsage/rules/DiagnosticsRule.d.ts.map +1 -0
  46. package/dist/cli/analyzeUsage/rules/DiagnosticsRule.js +63 -0
  47. package/dist/cli/analyzeUsage/rules/ImportRule.d.ts +6 -0
  48. package/dist/cli/analyzeUsage/rules/ImportRule.d.ts.map +1 -0
  49. package/dist/cli/analyzeUsage/rules/ImportRule.js +50 -0
  50. package/dist/cli/analyzeUsage/rules/ModelRule.d.ts +6 -0
  51. package/dist/cli/analyzeUsage/rules/ModelRule.d.ts.map +1 -0
  52. package/dist/cli/analyzeUsage/rules/ModelRule.js +34 -0
  53. package/dist/cli/analyzeUsage/rules/SchemaRule.d.ts +6 -0
  54. package/dist/cli/analyzeUsage/rules/SchemaRule.d.ts.map +1 -0
  55. package/dist/cli/analyzeUsage/rules/SchemaRule.js +46 -0
  56. package/dist/cli/analyzeUsage/rules/ServiceRule.d.ts +15 -0
  57. package/dist/cli/analyzeUsage/rules/ServiceRule.d.ts.map +1 -0
  58. package/dist/cli/analyzeUsage/rules/ServiceRule.js +96 -0
  59. package/dist/cli/analyzeUsage/types.d.ts +52 -0
  60. package/dist/cli/analyzeUsage/types.d.ts.map +1 -0
  61. package/dist/cli/analyzeUsage/types.js +2 -0
  62. package/dist/cli/analyzeUsage/utils/fuzzy.d.ts +5 -0
  63. package/dist/cli/analyzeUsage/utils/fuzzy.d.ts.map +1 -0
  64. package/dist/cli/analyzeUsage/utils/fuzzy.js +38 -0
  65. package/dist/cli/analyzeUsage/utils/report.d.ts +16 -0
  66. package/dist/cli/analyzeUsage/utils/report.d.ts.map +1 -0
  67. package/dist/cli/analyzeUsage/utils/report.js +85 -0
  68. package/dist/cli/checkAndUpdateConfig/__tests__/checkConfig.test.d.ts +2 -0
  69. package/dist/cli/checkAndUpdateConfig/__tests__/checkConfig.test.d.ts.map +1 -0
  70. package/dist/cli/checkAndUpdateConfig/__tests__/checkConfig.test.js +53 -0
  71. package/dist/cli/checkAndUpdateConfig/__tests__/updateConfig.test.d.ts +2 -0
  72. package/dist/cli/checkAndUpdateConfig/__tests__/updateConfig.test.d.ts.map +1 -0
  73. package/dist/cli/checkAndUpdateConfig/__tests__/updateConfig.test.js +52 -0
  74. package/dist/cli/checkAndUpdateConfig/checkConfig.d.ts +2 -1
  75. package/dist/cli/checkAndUpdateConfig/checkConfig.d.ts.map +1 -1
  76. package/dist/cli/checkAndUpdateConfig/checkConfig.js +15 -6
  77. package/dist/cli/checkAndUpdateConfig/updateConfig.d.ts +2 -1
  78. package/dist/cli/checkAndUpdateConfig/updateConfig.d.ts.map +1 -1
  79. package/dist/cli/checkAndUpdateConfig/updateConfig.js +8 -5
  80. package/dist/cli/checkAndUpdateConfig/utils/__tests__/prepareConfigData.test.d.ts +2 -0
  81. package/dist/cli/checkAndUpdateConfig/utils/__tests__/prepareConfigData.test.d.ts.map +1 -0
  82. package/dist/cli/checkAndUpdateConfig/utils/__tests__/prepareConfigData.test.js +20 -0
  83. package/dist/cli/checkAndUpdateConfig/utils/__tests__/removeDefaultConfigValues.test.d.ts +2 -0
  84. package/dist/cli/checkAndUpdateConfig/utils/__tests__/removeDefaultConfigValues.test.d.ts.map +1 -0
  85. package/dist/cli/checkAndUpdateConfig/utils/__tests__/removeDefaultConfigValues.test.js +35 -0
  86. package/dist/cli/checkAndUpdateConfig/utils/__tests__/validateAndMigrateConfigData.test.d.ts +2 -0
  87. package/dist/cli/checkAndUpdateConfig/utils/__tests__/validateAndMigrateConfigData.test.d.ts.map +1 -0
  88. package/dist/cli/checkAndUpdateConfig/utils/__tests__/validateAndMigrateConfigData.test.js +59 -0
  89. package/dist/cli/checkAndUpdateConfig/utils/removeDefaultConfigValues.d.ts.map +1 -1
  90. package/dist/cli/checkAndUpdateConfig/utils/validateAndMigrateConfigData.d.ts.map +1 -1
  91. package/dist/cli/checkAndUpdateConfig/utils/validateAndMigrateConfigData.js +19 -1
  92. package/dist/cli/checkAndUpdateConfig/utils/validateExecutorSetup.d.ts +6 -0
  93. package/dist/cli/checkAndUpdateConfig/utils/validateExecutorSetup.d.ts.map +1 -0
  94. package/dist/cli/checkAndUpdateConfig/utils/validateExecutorSetup.js +55 -0
  95. package/dist/cli/checkAndUpdateConfig/utils/writeConfigFile.d.ts +1 -1
  96. package/dist/cli/checkAndUpdateConfig/utils/writeConfigFile.d.ts.map +1 -1
  97. package/dist/cli/checkAndUpdateConfig/utils/writeConfigFile.js +1 -1
  98. package/dist/cli/generateOpenApiClient/__tests__/generateOpenApiClient.strict.test.js +18 -9
  99. package/dist/cli/generateOpenApiClient/generateOpenApiClient.d.ts +2 -5
  100. package/dist/cli/generateOpenApiClient/generateOpenApiClient.d.ts.map +1 -1
  101. package/dist/cli/generateOpenApiClient/generateOpenApiClient.js +24 -20
  102. package/dist/cli/index.js +45 -9
  103. package/dist/cli/initOpenApiConfig/Types.d.ts +2 -0
  104. package/dist/cli/initOpenApiConfig/Types.d.ts.map +1 -1
  105. package/dist/cli/initOpenApiConfig/__tests__/init.test.d.ts +2 -0
  106. package/dist/cli/initOpenApiConfig/__tests__/init.test.d.ts.map +1 -0
  107. package/dist/cli/initOpenApiConfig/__tests__/init.test.js +20 -0
  108. package/dist/cli/initOpenApiConfig/__tests__/initConfig.test.d.ts +2 -0
  109. package/dist/cli/initOpenApiConfig/__tests__/initConfig.test.d.ts.map +1 -0
  110. package/dist/cli/initOpenApiConfig/__tests__/initConfig.test.js +49 -0
  111. package/dist/cli/initOpenApiConfig/init.d.ts +2 -1
  112. package/dist/cli/initOpenApiConfig/init.d.ts.map +1 -1
  113. package/dist/cli/initOpenApiConfig/init.js +52 -20
  114. package/dist/cli/initOpenApiConfig/initConfig.d.ts +5 -0
  115. package/dist/cli/initOpenApiConfig/initConfig.d.ts.map +1 -1
  116. package/dist/cli/initOpenApiConfig/initConfig.js +8 -4
  117. package/dist/cli/initOpenApiConfig/initCustomRequest.d.ts +3 -2
  118. package/dist/cli/initOpenApiConfig/initCustomRequest.d.ts.map +1 -1
  119. package/dist/cli/initOpenApiConfig/initCustomRequest.js +36 -10
  120. package/dist/cli/initOpenApiConfig/utils/__tests__/buildConfig.test.d.ts +2 -0
  121. package/dist/cli/initOpenApiConfig/utils/__tests__/buildConfig.test.d.ts.map +1 -0
  122. package/dist/cli/initOpenApiConfig/utils/__tests__/buildConfig.test.js +93 -0
  123. package/dist/cli/initOpenApiConfig/utils/__tests__/findSpecFiles.test.d.ts +2 -0
  124. package/dist/cli/initOpenApiConfig/utils/__tests__/findSpecFiles.test.d.ts.map +1 -0
  125. package/dist/cli/initOpenApiConfig/utils/__tests__/findSpecFiles.test.js +45 -0
  126. package/dist/cli/initOpenApiConfig/utils/__tests__/validateSpecFiles.test.d.ts +2 -0
  127. package/dist/cli/initOpenApiConfig/utils/__tests__/validateSpecFiles.test.d.ts.map +1 -0
  128. package/dist/cli/initOpenApiConfig/utils/__tests__/validateSpecFiles.test.js +61 -0
  129. package/dist/cli/initOpenApiConfig/utils/buildConfig.d.ts +6 -12
  130. package/dist/cli/initOpenApiConfig/utils/buildConfig.d.ts.map +1 -1
  131. package/dist/cli/initOpenApiConfig/utils/buildConfig.js +24 -19
  132. package/dist/cli/initOpenApiConfig/utils/registerHandlebarTemplates.d.ts.map +1 -1
  133. package/dist/cli/initOpenApiConfig/utils/registerHandlebarTemplates.js +2 -0
  134. package/dist/cli/interactive/constants.d.ts +0 -4
  135. package/dist/cli/interactive/constants.d.ts.map +1 -1
  136. package/dist/cli/interactive/constants.js +1 -5
  137. package/dist/cli/previewChanges/previewChanges.d.ts +2 -1
  138. package/dist/cli/previewChanges/previewChanges.d.ts.map +1 -1
  139. package/dist/cli/previewChanges/previewChanges.js +8 -8
  140. package/dist/cli/previewChanges/utils/__tests__/compareFiles.test.d.ts +2 -0
  141. package/dist/cli/previewChanges/utils/__tests__/compareFiles.test.d.ts.map +1 -0
  142. package/dist/cli/previewChanges/utils/__tests__/compareFiles.test.js +52 -0
  143. package/dist/cli/previewChanges/utils/__tests__/isDirectoryEmpty.test.d.ts +2 -0
  144. package/dist/cli/previewChanges/utils/__tests__/isDirectoryEmpty.test.d.ts.map +1 -0
  145. package/dist/cli/previewChanges/utils/__tests__/isDirectoryEmpty.test.js +43 -0
  146. package/dist/cli/previewChanges/utils/__tests__/readDirectoryRecursive.test.d.ts +2 -0
  147. package/dist/cli/previewChanges/utils/__tests__/readDirectoryRecursive.test.d.ts.map +1 -0
  148. package/dist/cli/previewChanges/utils/__tests__/readDirectoryRecursive.test.js +32 -0
  149. package/dist/cli/previewChanges/utils/__tests__/updateOutputPaths.test.d.ts +2 -0
  150. package/dist/cli/previewChanges/utils/__tests__/updateOutputPaths.test.d.ts.map +1 -0
  151. package/dist/cli/previewChanges/utils/__tests__/updateOutputPaths.test.js +68 -0
  152. package/dist/cli/previewChanges/utils/formatDiff.d.ts.map +1 -1
  153. package/dist/cli/previewChanges/utils/updateOutputPaths.d.ts.map +1 -1
  154. package/dist/cli/previewChanges/utils/updateOutputPaths.js +5 -12
  155. package/dist/cli/schemas/__tests__/checkConfigAndUpdate.test.d.ts +2 -0
  156. package/dist/cli/schemas/__tests__/checkConfigAndUpdate.test.d.ts.map +1 -0
  157. package/dist/cli/schemas/__tests__/checkConfigAndUpdate.test.js +36 -0
  158. package/dist/cli/schemas/__tests__/generateOptionsSchema.test.d.ts +2 -0
  159. package/dist/cli/schemas/__tests__/generateOptionsSchema.test.d.ts.map +1 -0
  160. package/dist/cli/schemas/__tests__/generateOptionsSchema.test.js +59 -0
  161. package/dist/cli/schemas/__tests__/initOptionsSchema.test.d.ts +2 -0
  162. package/dist/cli/schemas/__tests__/initOptionsSchema.test.d.ts.map +1 -0
  163. package/dist/cli/schemas/__tests__/initOptionsSchema.test.js +43 -0
  164. package/dist/cli/schemas/__tests__/previewChangesSchema.test.d.ts +2 -0
  165. package/dist/cli/schemas/__tests__/previewChangesSchema.test.d.ts.map +1 -0
  166. package/dist/cli/schemas/__tests__/previewChangesSchema.test.js +31 -0
  167. package/dist/cli/schemas/analyzeUsage.d.ts +13 -0
  168. package/dist/cli/schemas/analyzeUsage.d.ts.map +1 -0
  169. package/dist/cli/schemas/analyzeUsage.js +41 -0
  170. package/dist/cli/schemas/generate.d.ts +10 -2
  171. package/dist/cli/schemas/generate.d.ts.map +1 -1
  172. package/dist/cli/schemas/generate.js +7 -2
  173. package/dist/cli/schemas/index.d.ts +2 -2
  174. package/dist/cli/schemas/index.d.ts.map +1 -1
  175. package/dist/cli/schemas/index.js +1 -1
  176. package/dist/cli/schemas/init.d.ts +10 -0
  177. package/dist/cli/schemas/init.d.ts.map +1 -1
  178. package/dist/cli/schemas/init.js +3 -1
  179. package/dist/cli/types.d.ts +6 -0
  180. package/dist/cli/types.d.ts.map +1 -0
  181. package/dist/cli/types.js +2 -0
  182. package/dist/common/Consts.d.ts +1 -0
  183. package/dist/common/Consts.d.ts.map +1 -1
  184. package/dist/common/Consts.js +7 -3
  185. package/dist/common/Logger.d.ts.map +1 -1
  186. package/dist/common/Logger.js +3 -3
  187. package/dist/common/LoggerMessages.d.ts +71 -12
  188. package/dist/common/LoggerMessages.d.ts.map +1 -1
  189. package/dist/common/LoggerMessages.js +76 -18
  190. package/dist/common/TEslintFixOptions.d.ts +20 -0
  191. package/dist/common/TEslintFixOptions.d.ts.map +1 -0
  192. package/dist/common/TEslintFixOptions.js +15 -0
  193. package/dist/common/TRawOptions.d.ts.map +1 -1
  194. package/dist/common/VersionedSchema/AllVersionedSchemas/AllMigrationPlans.d.ts.map +1 -1
  195. package/dist/common/VersionedSchema/AllVersionedSchemas/AllMigrationPlans.js +2 -4
  196. package/dist/common/VersionedSchema/AllVersionedSchemas/AllVersionedSchemas.d.ts.map +1 -1
  197. package/dist/common/VersionedSchema/AllVersionedSchemas/AllVersionedSchemas.js +1 -1
  198. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedBase.d.ts.map +1 -1
  199. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedBase.js +1 -2
  200. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV1.d.ts.map +1 -1
  201. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV1.js +1 -1
  202. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV2.d.ts.map +1 -1
  203. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV2.js +1 -1
  204. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV4.d.ts.map +1 -1
  205. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.d.ts +10 -2
  206. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.d.ts.map +1 -1
  207. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.js +15 -5
  208. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.d.ts +18 -4
  209. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.d.ts.map +1 -1
  210. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.js +7 -1
  211. package/dist/common/VersionedSchema/CommonSchemas.d.ts.map +1 -1
  212. package/dist/common/VersionedSchema/CommonSchemas.js +4 -2
  213. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV2.js +1 -1
  214. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV3.d.ts.map +1 -1
  215. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV3.js +1 -1
  216. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV4.js +1 -1
  217. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV5.d.ts.map +1 -1
  218. package/dist/common/VersionedSchema/OptionsVersioned/OptionsMigrationPlans.d.ts.map +1 -1
  219. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV1.d.ts +2 -2
  220. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV1.d.ts.map +1 -1
  221. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV2.d.ts +2 -2
  222. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV3.js +1 -1
  223. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV4.d.ts +1 -1
  224. package/dist/common/VersionedSchema/Utils/__mocks__/compatibilityCases.d.ts.map +1 -1
  225. package/dist/common/VersionedSchema/Utils/__mocks__/compatibilityCases.js +7 -1
  226. package/dist/common/VersionedSchema/Utils/__tests__/allUtils.test.js +4 -16
  227. package/dist/common/VersionedSchema/Utils/buildVersionedSchema.d.ts.map +1 -1
  228. package/dist/common/VersionedSchema/Utils/createDefaultFieldsMigration.d.ts +1 -1
  229. package/dist/common/VersionedSchema/Utils/createDefaultFieldsMigration.d.ts.map +1 -1
  230. package/dist/common/VersionedSchema/Utils/createDefaultFieldsMigration.js +1 -1
  231. package/dist/common/VersionedSchema/Utils/createTrivialMigration.d.ts.map +1 -1
  232. package/dist/common/VersionedSchema/Utils/createTrivialMigration.js +1 -1
  233. package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.d.ts.map +1 -1
  234. package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.js +4 -6
  235. package/dist/common/VersionedSchema/Utils/getLatestVersionFromMigrationPlans.d.ts.map +1 -1
  236. package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.d.ts.map +1 -1
  237. package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.js +6 -8
  238. package/dist/common/VersionedSchema/Utils/replaceInvalidKeysWithMappedNames.d.ts.map +1 -1
  239. package/dist/common/VersionedSchema/Utils/replaceInvalidKeysWithMappedNames.js +1 -1
  240. package/dist/common/VersionedSchema/Utils/validateAndSuggestKeyCorrections.d.ts.map +1 -1
  241. package/dist/common/VersionedSchema/refinements/dependentOptionsRefinement.d.ts +1 -1
  242. package/dist/common/VersionedSchema/refinements/dependentOptionsRefinement.d.ts.map +1 -1
  243. package/dist/common/utils/__tests__/eslintFix.test.js +25 -67
  244. package/dist/common/utils/__tests__/extractEslintFixOptions.test.d.ts +2 -0
  245. package/dist/common/utils/__tests__/extractEslintFixOptions.test.d.ts.map +1 -0
  246. package/dist/common/utils/__tests__/extractEslintFixOptions.test.js +28 -0
  247. package/dist/common/utils/__tests__/format.test.js +26 -17
  248. package/dist/common/utils/__tests__/prepareTempTsConfig.test.d.ts +2 -0
  249. package/dist/common/utils/__tests__/prepareTempTsConfig.test.d.ts.map +1 -0
  250. package/dist/common/utils/__tests__/prepareTempTsConfig.test.js +78 -0
  251. package/dist/common/utils/codegenTempDir.d.ts +20 -0
  252. package/dist/common/utils/codegenTempDir.d.ts.map +1 -0
  253. package/dist/common/utils/codegenTempDir.js +42 -0
  254. package/dist/common/utils/convertArrayToObject.d.ts.map +1 -1
  255. package/dist/common/utils/convertArrayToObject.js +3 -8
  256. package/dist/common/utils/eslintFix.d.ts +48 -4
  257. package/dist/common/utils/eslintFix.d.ts.map +1 -1
  258. package/dist/common/utils/eslintFix.js +121 -15
  259. package/dist/common/utils/format.d.ts +1 -1
  260. package/dist/common/utils/format.d.ts.map +1 -1
  261. package/dist/common/utils/format.js +23 -11
  262. package/dist/common/utils/jsonPath.d.ts.map +1 -1
  263. package/dist/common/utils/prepareTempEslintConfig.d.ts +18 -0
  264. package/dist/common/utils/prepareTempEslintConfig.d.ts.map +1 -0
  265. package/dist/common/utils/prepareTempEslintConfig.js +55 -0
  266. package/dist/common/utils/prepareTempTsConfig.d.ts +23 -0
  267. package/dist/common/utils/prepareTempTsConfig.d.ts.map +1 -0
  268. package/dist/common/utils/prepareTempTsConfig.js +105 -0
  269. package/dist/core/Context.d.ts.map +1 -1
  270. package/dist/core/Context.js +2 -6
  271. package/dist/core/OpenApiClient.d.ts +27 -1
  272. package/dist/core/OpenApiClient.d.ts.map +1 -1
  273. package/dist/core/OpenApiClient.js +259 -19
  274. package/dist/core/WriteClient.d.ts +84 -17
  275. package/dist/core/WriteClient.d.ts.map +1 -1
  276. package/dist/core/WriteClient.js +96 -22
  277. package/dist/core/__tests__/WriteClient.test.js +2 -1
  278. package/dist/core/api/v2/parser/getOperationResponses.d.ts.map +1 -1
  279. package/dist/core/api/v2/parser/getOperationResponses.js +1 -3
  280. package/dist/core/api/v2/parser/getServiceName.d.ts +1 -1
  281. package/dist/core/api/v3/parser/getOperation.d.ts.map +1 -1
  282. package/dist/core/api/v3/parser/getOperationParameters.d.ts.map +1 -1
  283. package/dist/core/api/v3/parser/getOperationResponses.d.ts.map +1 -1
  284. package/dist/core/api/v3/parser/getOperationResponses.js +1 -3
  285. package/dist/core/api/v3/parser/getServiceName.d.ts +1 -1
  286. package/dist/core/governance/evaluateGovernanceRules.d.ts.map +1 -1
  287. package/dist/core/governance/evaluateGovernanceRules.js +1 -3
  288. package/dist/core/governance/loadGovernanceConfig.d.ts.map +1 -1
  289. package/dist/core/governance/loadGovernanceConfig.js +2 -4
  290. package/dist/core/plugins/GeneratorPlugin.model.d.ts.map +1 -1
  291. package/dist/core/plugins/applySemanticDiffPluginHooks.d.ts.map +1 -1
  292. package/dist/core/plugins/getBuiltinPlugins.d.ts.map +1 -1
  293. package/dist/core/plugins/loadGeneratorPlugins.d.ts.map +1 -1
  294. package/dist/core/plugins/loadGeneratorPlugins.js +1 -1
  295. package/dist/core/semanticDiff/__tests__/analyzeOpenApiDiff.test.js +79 -21
  296. package/dist/core/semanticDiff/__tests__/semanticDiffReportSchema.test.js +20 -1
  297. package/dist/core/semanticDiff/analyzeOpenApiDiff.d.ts +58 -6
  298. package/dist/core/semanticDiff/analyzeOpenApiDiff.d.ts.map +1 -1
  299. package/dist/core/semanticDiff/analyzeOpenApiDiff.js +47 -19
  300. package/dist/core/semanticDiff/semanticDiffReportSchema.d.ts +8 -3
  301. package/dist/core/semanticDiff/semanticDiffReportSchema.d.ts.map +1 -1
  302. package/dist/core/semanticDiff/semanticDiffReportSchema.js +139 -56
  303. package/dist/core/strict/validateOpenApiStrict.d.ts.map +1 -1
  304. package/dist/core/types/Consts.js +1 -1
  305. package/dist/core/types/DiffReport.model.d.ts +101 -0
  306. package/dist/core/types/DiffReport.model.d.ts.map +1 -0
  307. package/dist/core/types/DiffReport.model.js +5 -0
  308. package/dist/core/types/base/ClientArtifacts.model.d.ts +3 -3
  309. package/dist/core/types/base/ClientArtifacts.model.d.ts.map +1 -1
  310. package/dist/core/types/base/ExportedModel.model.d.ts +1 -1
  311. package/dist/core/types/base/ExportedModel.model.d.ts.map +1 -1
  312. package/dist/core/types/base/ExportedService.model.d.ts.map +1 -1
  313. package/dist/core/types/base/OutputPaths.model.d.ts.map +1 -1
  314. package/dist/core/types/base/PrefixArtifacts.model.d.ts.map +1 -1
  315. package/dist/core/types/base/PropertyGroup.model.d.ts +1 -1
  316. package/dist/core/types/base/SimpleClientArtifacts.model.d.ts +1 -1
  317. package/dist/core/types/base/SimpleClientArtifacts.model.d.ts.map +1 -1
  318. package/dist/core/types/base/Templates.model.d.ts +1 -0
  319. package/dist/core/types/base/Templates.model.d.ts.map +1 -1
  320. package/dist/core/types/shared/Client.model.d.ts +1 -1
  321. package/dist/core/types/shared/Client.model.d.ts.map +1 -1
  322. package/dist/core/types/shared/Model.model.d.ts +37 -1
  323. package/dist/core/types/shared/Model.model.d.ts.map +1 -1
  324. package/dist/core/utils/GenerationCache.d.ts +18 -0
  325. package/dist/core/utils/GenerationCache.d.ts.map +1 -0
  326. package/dist/core/utils/GenerationCache.js +41 -0
  327. package/dist/core/utils/__mocks__/templates.d.ts.map +1 -1
  328. package/dist/core/utils/__mocks__/templates.js +1 -0
  329. package/dist/core/utils/__tests__/GenerationCache.test.d.ts +2 -0
  330. package/dist/core/utils/__tests__/GenerationCache.test.d.ts.map +1 -0
  331. package/dist/core/utils/__tests__/GenerationCache.test.js +37 -0
  332. package/dist/core/utils/__tests__/applyDiffReportToClient.test.js +182 -0
  333. package/dist/core/utils/__tests__/buildMiraclesFromSemanticChanges.test.d.ts +2 -0
  334. package/dist/core/utils/__tests__/buildMiraclesFromSemanticChanges.test.d.ts.map +1 -0
  335. package/dist/core/utils/__tests__/buildMiraclesFromSemanticChanges.test.js +77 -0
  336. package/dist/core/utils/__tests__/expandOpenApiRefsForSemanticDiff.test.d.ts +2 -0
  337. package/dist/core/utils/__tests__/expandOpenApiRefsForSemanticDiff.test.d.ts.map +1 -0
  338. package/dist/core/utils/__tests__/expandOpenApiRefsForSemanticDiff.test.js +159 -0
  339. package/dist/core/utils/__tests__/loadDiffReport.test.d.ts +2 -0
  340. package/dist/core/utils/__tests__/loadDiffReport.test.d.ts.map +1 -0
  341. package/dist/core/utils/__tests__/loadDiffReport.test.js +246 -0
  342. package/dist/core/utils/__tests__/modelHelpers.test.js +27 -9
  343. package/dist/core/utils/__tests__/postProcessModelImports.test.js +1 -4
  344. package/dist/core/utils/__tests__/postProcessServiceImports.test.js +1 -4
  345. package/dist/core/utils/__tests__/prepareDtoModels.test.js +168 -1
  346. package/dist/core/utils/__tests__/registerHandlebarHelpers.test.js +27 -0
  347. package/dist/core/utils/__tests__/resolveClassesModeTypes.test.d.ts +2 -0
  348. package/dist/core/utils/__tests__/resolveClassesModeTypes.test.d.ts.map +1 -0
  349. package/dist/core/utils/__tests__/resolveClassesModeTypes.test.js +111 -0
  350. package/dist/core/utils/__tests__/semanticChangesToDiffEntries.test.d.ts +2 -0
  351. package/dist/core/utils/__tests__/semanticChangesToDiffEntries.test.d.ts.map +1 -0
  352. package/dist/core/utils/__tests__/semanticChangesToDiffEntries.test.js +68 -0
  353. package/dist/core/utils/__tests__/serviceHelpers.test.js +10 -11
  354. package/dist/core/utils/__tests__/sortByRequiredExtended.test.js +10 -27
  355. package/dist/core/utils/__tests__/templateRendering.test.d.ts +2 -0
  356. package/dist/core/utils/__tests__/templateRendering.test.d.ts.map +1 -0
  357. package/dist/core/utils/__tests__/templateRendering.test.js +190 -0
  358. package/dist/core/utils/__tests__/writeFileIfChanged.test.d.ts +2 -0
  359. package/dist/core/utils/__tests__/writeFileIfChanged.test.d.ts.map +1 -0
  360. package/dist/core/utils/__tests__/writeFileIfChanged.test.js +30 -0
  361. package/dist/core/utils/adapters/__tests__/semanticToStructural.test.d.ts +2 -0
  362. package/dist/core/utils/adapters/__tests__/semanticToStructural.test.d.ts.map +1 -0
  363. package/dist/core/utils/adapters/__tests__/semanticToStructural.test.js +63 -0
  364. package/dist/core/utils/adapters/extractMiraclesFromSemantic.d.ts +10 -0
  365. package/dist/core/utils/adapters/extractMiraclesFromSemantic.d.ts.map +1 -0
  366. package/dist/core/utils/adapters/extractMiraclesFromSemantic.js +13 -0
  367. package/dist/core/utils/adapters/index.d.ts +3 -0
  368. package/dist/core/utils/adapters/index.d.ts.map +1 -0
  369. package/dist/core/utils/adapters/index.js +6 -0
  370. package/dist/core/utils/adapters/semanticToStructural.d.ts +12 -0
  371. package/dist/core/utils/adapters/semanticToStructural.d.ts.map +1 -0
  372. package/dist/core/utils/adapters/semanticToStructural.js +36 -0
  373. package/dist/core/utils/applyDiffReportToClient.d.ts +13 -1
  374. package/dist/core/utils/applyDiffReportToClient.d.ts.map +1 -1
  375. package/dist/core/utils/applyDiffReportToClient.js +189 -109
  376. package/dist/core/utils/areEqual.d.ts +1 -1
  377. package/dist/core/utils/buildMiraclesFromSemanticChanges.d.ts +25 -0
  378. package/dist/core/utils/buildMiraclesFromSemanticChanges.d.ts.map +1 -0
  379. package/dist/core/utils/buildMiraclesFromSemanticChanges.js +146 -0
  380. package/dist/core/utils/expandOpenApiRefsForSemanticDiff.d.ts +23 -0
  381. package/dist/core/utils/expandOpenApiRefsForSemanticDiff.d.ts.map +1 -0
  382. package/dist/core/utils/expandOpenApiRefsForSemanticDiff.js +163 -0
  383. package/dist/core/utils/getOpenApiSpec.d.ts +6 -0
  384. package/dist/core/utils/getOpenApiSpec.d.ts.map +1 -1
  385. package/dist/core/utils/getOpenApiSpec.js +6 -0
  386. package/dist/core/utils/getOperationErrors.d.ts +2 -2
  387. package/dist/core/utils/getOperationErrors.d.ts.map +1 -1
  388. package/dist/core/utils/getOperationResults.d.ts +1 -1
  389. package/dist/core/utils/getPropertyGroupSimple.d.ts.map +1 -1
  390. package/dist/core/utils/getPropertyGroupSimple.js +1 -3
  391. package/dist/core/utils/isSubdirectory.d.ts.map +1 -1
  392. package/dist/core/utils/loadDiffReport.d.ts +11 -30
  393. package/dist/core/utils/loadDiffReport.d.ts.map +1 -1
  394. package/dist/core/utils/loadDiffReport.js +75 -9
  395. package/dist/core/utils/loadSemanticOpenApiSpec.d.ts +15 -0
  396. package/dist/core/utils/loadSemanticOpenApiSpec.d.ts.map +1 -0
  397. package/dist/core/utils/loadSemanticOpenApiSpec.js +61 -0
  398. package/dist/core/utils/modelHelpers.d.ts +13 -5
  399. package/dist/core/utils/modelHelpers.d.ts.map +1 -1
  400. package/dist/core/utils/modelHelpers.js +28 -23
  401. package/dist/core/utils/normalizeString.d.ts.map +1 -1
  402. package/dist/core/utils/normalizeString.js +1 -5
  403. package/dist/core/utils/postProcessServiceImports.d.ts.map +1 -1
  404. package/dist/core/utils/postProcessServiceImports.js +1 -3
  405. package/dist/core/utils/precompileTemplates.js +4 -2
  406. package/dist/core/utils/prepareAlias.d.ts +1 -1
  407. package/dist/core/utils/prepareDtoModels.d.ts +5 -0
  408. package/dist/core/utils/prepareDtoModels.d.ts.map +1 -1
  409. package/dist/core/utils/prepareDtoModels.js +57 -20
  410. package/dist/core/utils/registerHandlebarHelpers.d.ts +1 -0
  411. package/dist/core/utils/registerHandlebarHelpers.d.ts.map +1 -1
  412. package/dist/core/utils/registerHandlebarHelpers.js +3 -0
  413. package/dist/core/utils/registerHandlebarTemplates.d.ts +1 -0
  414. package/dist/core/utils/registerHandlebarTemplates.d.ts.map +1 -1
  415. package/dist/core/utils/registerHandlebarTemplates.js +2 -0
  416. package/dist/core/utils/resolveClassesModeTypes.d.ts +8 -0
  417. package/dist/core/utils/resolveClassesModeTypes.d.ts.map +1 -0
  418. package/dist/core/utils/resolveClassesModeTypes.js +77 -0
  419. package/dist/core/utils/semanticChangesToDiffEntries.d.ts +28 -0
  420. package/dist/core/utils/semanticChangesToDiffEntries.d.ts.map +1 -0
  421. package/dist/core/utils/semanticChangesToDiffEntries.js +98 -0
  422. package/dist/core/utils/semanticPointerToJsonPath.d.ts +7 -0
  423. package/dist/core/utils/semanticPointerToJsonPath.d.ts.map +1 -0
  424. package/dist/core/utils/semanticPointerToJsonPath.js +67 -0
  425. package/dist/core/utils/serviceHelpers.d.ts +6 -7
  426. package/dist/core/utils/serviceHelpers.d.ts.map +1 -1
  427. package/dist/core/utils/serviceHelpers.js +8 -25
  428. package/dist/core/utils/sortModelByName.d.ts +1 -1
  429. package/dist/core/utils/validateRawOptions.js +2 -2
  430. package/dist/core/utils/writeClientCore.d.ts +2 -0
  431. package/dist/core/utils/writeClientCore.d.ts.map +1 -1
  432. package/dist/core/utils/writeClientCore.js +43 -21
  433. package/dist/core/utils/writeClientCoreIndex.d.ts.map +1 -1
  434. package/dist/core/utils/writeClientCoreIndex.js +14 -4
  435. package/dist/core/utils/writeClientExecutor.d.ts +1 -3
  436. package/dist/core/utils/writeClientExecutor.d.ts.map +1 -1
  437. package/dist/core/utils/writeClientExecutor.js +6 -11
  438. package/dist/core/utils/writeClientFullIndex.js +4 -4
  439. package/dist/core/utils/writeClientModels.d.ts +1 -2
  440. package/dist/core/utils/writeClientModels.d.ts.map +1 -1
  441. package/dist/core/utils/writeClientModels.js +14 -16
  442. package/dist/core/utils/writeClientModelsIndex.d.ts +1 -1
  443. package/dist/core/utils/writeClientModelsIndex.d.ts.map +1 -1
  444. package/dist/core/utils/writeClientModelsIndex.js +14 -4
  445. package/dist/core/utils/writeClientSchemas.d.ts +1 -3
  446. package/dist/core/utils/writeClientSchemas.d.ts.map +1 -1
  447. package/dist/core/utils/writeClientSchemas.js +9 -14
  448. package/dist/core/utils/writeClientSchemasIndex.d.ts.map +1 -1
  449. package/dist/core/utils/writeClientSchemasIndex.js +14 -4
  450. package/dist/core/utils/writeClientServices.d.ts +15 -16
  451. package/dist/core/utils/writeClientServices.d.ts.map +1 -1
  452. package/dist/core/utils/writeClientServices.js +12 -19
  453. package/dist/core/utils/writeClientServicesIndex.d.ts.map +1 -1
  454. package/dist/core/utils/writeClientServicesIndex.js +14 -4
  455. package/dist/core/utils/writeClientSimpleIndex.js +4 -4
  456. package/dist/core/utils/writeFileIfChanged.d.ts +3 -0
  457. package/dist/core/utils/writeFileIfChanged.d.ts.map +1 -0
  458. package/dist/core/utils/writeFileIfChanged.js +22 -0
  459. package/dist/templatesCompiled/cli/customCreateExecutorAdapter.d.ts +8 -0
  460. package/dist/templatesCompiled/cli/customCreateExecutorAdapter.d.ts.map +1 -0
  461. package/dist/templatesCompiled/cli/customCreateExecutorAdapter.js +18 -0
  462. package/dist/templatesCompiled/cli/customRequest.js +7 -7
  463. package/dist/templatesCompiled/cli/customRequestExecutor.js +7 -7
  464. package/dist/templatesCompiled/client/core/ApiError.js +1 -1
  465. package/dist/templatesCompiled/client/core/executor/createExecutorAdapter.d.ts +0 -6
  466. package/dist/templatesCompiled/client/core/executor/createExecutorAdapter.d.ts.map +1 -1
  467. package/dist/templatesCompiled/client/core/executor/createExecutorAdapter.js +3 -22
  468. package/dist/templatesCompiled/client/core/executor/legacyRequestAdapter.d.ts +11 -0
  469. package/dist/templatesCompiled/client/core/executor/legacyRequestAdapter.d.ts.map +1 -0
  470. package/dist/templatesCompiled/client/core/executor/legacyRequestAdapter.js +28 -0
  471. package/dist/templatesCompiled/client/core/executor/requestExecutor.d.ts +2 -0
  472. package/dist/templatesCompiled/client/core/executor/requestExecutor.d.ts.map +1 -1
  473. package/dist/templatesCompiled/client/core/executor/requestExecutor.js +8 -2
  474. package/dist/templatesCompiled/client/core/functions/catchErrors.js +1 -1
  475. package/dist/templatesCompiled/client/core/interceptors/apiErrorInterceptor.js +1 -1
  476. package/dist/templatesCompiled/client/core/interceptors/interceptors.js +1 -1
  477. package/dist/templatesCompiled/client/core/interceptors/withInterceptors.js +1 -1
  478. package/dist/templatesCompiled/client/exportClient.d.ts +0 -4
  479. package/dist/templatesCompiled/client/exportClient.d.ts.map +1 -1
  480. package/dist/templatesCompiled/client/exportClient.js +9 -45
  481. package/dist/templatesCompiled/client/exportModels.d.ts +17 -11
  482. package/dist/templatesCompiled/client/exportModels.d.ts.map +1 -1
  483. package/dist/templatesCompiled/client/exportModels.js +96 -49
  484. package/dist/templatesCompiled/client/exportService.d.ts +13 -10
  485. package/dist/templatesCompiled/client/exportService.d.ts.map +1 -1
  486. package/dist/templatesCompiled/client/exportService.js +95 -67
  487. package/dist/templatesCompiled/client/indexCore.js +4 -4
  488. package/dist/templatesCompiled/client/indexFull.js +8 -8
  489. package/dist/templatesCompiled/client/indexSimple.js +2 -2
  490. package/dist/templatesCompiled/client/partials/header.d.ts +1 -0
  491. package/dist/templatesCompiled/client/partials/header.d.ts.map +1 -1
  492. package/dist/templatesCompiled/client/partials/header.js +11 -2
  493. package/dist/test/helpers/silenceLoggers.d.ts +11 -0
  494. package/dist/test/helpers/silenceLoggers.d.ts.map +1 -0
  495. package/dist/test/helpers/silenceLoggers.js +88 -0
  496. package/package.json +132 -136
  497. package/dist/cli/analyzeDiff/buildLegacyReport.d.ts +0 -17
  498. package/dist/cli/analyzeDiff/buildLegacyReport.d.ts.map +0 -1
  499. package/dist/cli/analyzeDiff/buildLegacyReport.js +0 -54
  500. package/dist/cli/analyzeDiff/diffEngine.d.ts +0 -54
  501. package/dist/cli/analyzeDiff/diffEngine.d.ts.map +0 -1
  502. package/dist/cli/analyzeDiff/diffEngine.js +0 -209
  503. package/dist/cli/analyzeDiff/logLegacyReport.d.ts +0 -6
  504. package/dist/cli/analyzeDiff/logLegacyReport.d.ts.map +0 -1
  505. package/dist/cli/analyzeDiff/logLegacyReport.js +0 -29
  506. package/dist/cli/analyzeDiff/report.d.ts +0 -3
  507. package/dist/cli/analyzeDiff/report.d.ts.map +0 -1
  508. package/dist/cli/analyzeDiff/report.js +0 -7
  509. package/dist/cli/analyzeDiff/writeLegacyReport.d.ts +0 -6
  510. package/dist/cli/analyzeDiff/writeLegacyReport.d.ts.map +0 -1
  511. package/dist/cli/analyzeDiff/writeLegacyReport.js +0 -21
  512. package/dist/common/VersionedSchema/refinements/singleOrMultiRefinement.d.ts +0 -4
  513. package/dist/common/VersionedSchema/refinements/singleOrMultiRefinement.d.ts.map +0 -1
  514. package/dist/common/VersionedSchema/refinements/singleOrMultiRefinement.js +0 -21
  515. package/dist/common/utils/normalizeObject.d.ts +0 -2
  516. package/dist/common/utils/normalizeObject.d.ts.map +0 -1
  517. package/dist/common/utils/normalizeObject.js +0 -63
  518. package/dist/core/utils/appendUniqueLinesToFile.d.ts +0 -2
  519. package/dist/core/utils/appendUniqueLinesToFile.d.ts.map +0 -1
  520. package/dist/core/utils/appendUniqueLinesToFile.js +0 -24
@@ -1,14 +1,3 @@
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
1
  /**
13
2
  * Нормализует строковое имя (удаляет спецсимволы, приводит к camelCase и lower-case).
14
3
  * @param value исходная строка
@@ -27,33 +16,6 @@ export declare const getTypeSignature: (payload: Record<string, unknown>) => str
27
16
  * @returns нормализованный скалярный тип или undefined
28
17
  */
29
18
  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
19
  /**
58
20
  * Вычисляет бонус к confidence на основе схожести описаний свойств.
59
21
  * @param removed описание для удалённого свойства
@@ -70,20 +32,4 @@ export declare const descriptionSimilarityBonus: (removed?: string, added?: stri
70
32
  * @returns итоговое confidence
71
33
  */
72
34
  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
35
  //# sourceMappingURL=miracles.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"miracles.d.ts","sourceRoot":"","sources":["../../../src/cli/analyzeDiff/miracles.ts"],"names":[],"mappings":"AAGA;;;;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;;;;;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"}
@@ -3,10 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
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;
6
+ exports.computeConfidence = exports.descriptionSimilarityBonus = exports.normalizeScalarType = exports.getTypeSignature = exports.normalizeName = void 0;
7
7
  const camelcase_1 = __importDefault(require("camelcase"));
8
8
  const leven_1 = __importDefault(require("leven"));
9
- const jsonPath_1 = require("../../common/utils/jsonPath");
10
9
  /**
11
10
  * Нормализует строковое имя (удаляет спецсимволы, приводит к camelCase и lower-case).
12
11
  * @param value исходная строка
@@ -66,76 +65,6 @@ const normalizeScalarType = (value) => {
66
65
  return undefined;
67
66
  };
68
67
  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
68
  /**
140
69
  * Вычисляет бонус к confidence на основе схожести описаний свойств.
141
70
  * @param removed описание для удалённого свойства
@@ -176,150 +105,3 @@ const computeConfidence = (nameRatio, sameType, onlyCandidate, descBonus) => {
176
105
  return Number(confidence.toFixed(3));
177
106
  };
178
107
  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;
@@ -1,17 +1,4 @@
1
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
2
  /**
16
3
  * Извлекает содержимое файла спецификации из Git по ref и парсит его.
17
4
  * @param ref git-реф (например, HEAD~1)
@@ -1 +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"}
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;AAiCzC;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAU,KAAK,MAAM,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC,SAAS,CAYtF,CAAC"}
@@ -3,31 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.readSpecFromGit = exports.parseSpecContent = exports.parseSpecFile = void 0;
6
+ exports.readSpecFromGit = void 0;
7
7
  const child_process_1 = require("child_process");
8
8
  const fs_1 = __importDefault(require("fs"));
9
9
  const os_1 = __importDefault(require("os"));
10
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
11
  /**
32
12
  * Парсит содержимое спецификации, переданное как строка. При YAML создаёт временный файл для парсинга.
33
13
  * @param content строковое содержимое спецификации
@@ -56,7 +36,6 @@ const parseSpecContent = async (content, sourcePath) => {
56
36
  fs_1.default.rmSync(tmpDir, { recursive: true, force: true });
57
37
  }
58
38
  };
59
- exports.parseSpecContent = parseSpecContent;
60
39
  /**
61
40
  * Извлекает содержимое файла спецификации из Git по ref и парсит его.
62
41
  * @param ref git-реф (например, HEAD~1)
@@ -75,6 +54,6 @@ const readSpecFromGit = async (ref, specPath) => {
75
54
  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
55
  throw new Error(`${hint} (${String(err)})`);
77
56
  }
78
- return (0, exports.parseSpecContent)(content, `${ref}:${normalizedPath}`);
57
+ return parseSpecContent(content, `${ref}:${normalizedPath}`);
79
58
  };
80
59
  exports.readSpecFromGit = readSpecFromGit;
@@ -10,52 +10,10 @@ export interface DiffEntry {
10
10
  note?: string;
11
11
  type?: string;
12
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
13
  export type IgnoreRule = {
49
14
  path?: string;
50
15
  pattern?: string;
51
16
  reason?: string;
52
17
  until?: string;
53
18
  };
54
- export type AnalyzeDiffResult = {
55
- success: boolean;
56
- reportPath?: string;
57
- skipped?: boolean;
58
- ignored?: number;
59
- error?: string;
60
- };
61
19
  //# sourceMappingURL=types.d.ts.map
@@ -1 +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"}
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,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"}
@@ -0,0 +1,4 @@
1
+ import { OptionValues } from 'commander';
2
+ import { CLICommandResult } from '../types';
3
+ export declare const analyzeUsage: (options: OptionValues) => Promise<CLICommandResult>;
4
+ //# sourceMappingURL=analyzeUsage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzeUsage.d.ts","sourceRoot":"","sources":["../../../src/cli/analyzeUsage/analyzeUsage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAO5C,eAAO,MAAM,YAAY,GAAU,SAAS,YAAY,KAAG,OAAO,CAAC,gBAAgB,CAwDlF,CAAC"}
@@ -0,0 +1,60 @@
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.analyzeUsage = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const Analyzer_1 = require("./core/Analyzer");
9
+ const ProjectContext_1 = require("./core/ProjectContext");
10
+ const Scanner_1 = require("./core/Scanner");
11
+ const report_1 = require("./utils/report");
12
+ const analyzeUsage = async (options) => {
13
+ try {
14
+ // Валидация входных данных
15
+ if (!options.sourcePath || !options.projectPath) {
16
+ console.error('❌ Error: --sourcePath (-s) and --projectPath (-p) are required.');
17
+ return { success: false, error: '--sourcePath (-s) and --projectPath (-p) are required.' };
18
+ }
19
+ const projectPath = path_1.default.resolve(options.projectPath);
20
+ const sourcePath = path_1.default.resolve(options.sourcePath);
21
+ const tsconfigPath = options.tsconfigPath ? path_1.default.resolve(options.tsconfigPath) : undefined;
22
+ console.log('🏗️ Initializing project context...');
23
+ const context = new ProjectContext_1.ProjectContext(projectPath, tsconfigPath);
24
+ // Добавляем файл генерации в проект для работы TypeChecker
25
+ const generatedFile = context.project.addSourceFileAtPath(sourcePath);
26
+ console.log('🔍 Scanning API contract...');
27
+ const scanner = new Scanner_1.Scanner(generatedFile);
28
+ const contract = scanner.scan();
29
+ // Инициализация объекта статистики для подсчета Coverage
30
+ const stats = {
31
+ usedMethods: new Set(),
32
+ usedSchemas: new Set(),
33
+ usedModels: new Set(),
34
+ };
35
+ console.log('🧪 Running semantic analysis...');
36
+ const analyzer = new Analyzer_1.Analyzer(context, contract);
37
+ const findings = await analyzer.run(stats);
38
+ // 1. Расчет покрытия API (через Reporter)
39
+ const coverage = report_1.Reporter.calculateCoverage(stats, contract);
40
+ // 2. Вывод результатов в консоль (таблица и сводка)
41
+ report_1.Reporter.renderConsole(findings, coverage);
42
+ // 3. Сохранение детального JSON-отчета
43
+ report_1.Reporter.saveJsonReport(options.output, findings, coverage);
44
+ // 4. Логика выхода для CI пайплайнов
45
+ if (options.check) {
46
+ const hasErrors = findings.some(f => f.severity === 'ERROR');
47
+ if (hasErrors) {
48
+ console.error('\n🛑 CI check failed: critical API contract mismatches were found.');
49
+ return { success: false, error: 'CI check failed: critical API contract mismatches were found.' };
50
+ }
51
+ }
52
+ console.log('\n✅ Done!');
53
+ return { success: true };
54
+ }
55
+ catch (error) {
56
+ console.error(`\n💥 Fatal error: ${error.message}`);
57
+ return { success: false, error: error?.message ?? String(error) };
58
+ }
59
+ };
60
+ exports.analyzeUsage = analyzeUsage;
@@ -0,0 +1,9 @@
1
+ import type { Contract, Finding, Stats } from '../types';
2
+ import type { ProjectContext } from './ProjectContext';
3
+ export declare class Analyzer {
4
+ private _context;
5
+ private _contract;
6
+ constructor(context: ProjectContext, contract: Contract);
7
+ run(stats: Stats): Promise<Finding[]>;
8
+ }
9
+ //# sourceMappingURL=Analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Analyzer.d.ts","sourceRoot":"","sources":["../../../../src/cli/analyzeUsage/core/Analyzer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,qBAAa,QAAQ;IACjB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,SAAS,CAAW;gBAEhB,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ;IAKjD,GAAG,CAAC,KAAK,EAAE,KAAK;CAazB"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Analyzer = void 0;
4
+ const ClientRule_1 = require("../rules/ClientRule");
5
+ const CoverageRule_1 = require("../rules/CoverageRule");
6
+ const DiagnosticsRule_1 = require("../rules/DiagnosticsRule");
7
+ const ImportRule_1 = require("../rules/ImportRule");
8
+ const ModelRule_1 = require("../rules/ModelRule");
9
+ const SchemaRule_1 = require("../rules/SchemaRule");
10
+ const ServiceRule_1 = require("../rules/ServiceRule");
11
+ class Analyzer {
12
+ _context;
13
+ _contract;
14
+ constructor(context, contract) {
15
+ this._context = context;
16
+ this._contract = contract;
17
+ }
18
+ async run(stats) {
19
+ const findings = [];
20
+ // Порядок важен: сначала собираем статистику, потом анализируем покрытие
21
+ const rules = [new ImportRule_1.ImportRule(), new ClientRule_1.ClientRule(), new ServiceRule_1.ServiceRule(), new SchemaRule_1.SchemaRule(), new ModelRule_1.ModelRule(), new DiagnosticsRule_1.DiagnosticsRule(), new CoverageRule_1.CoverageRule()];
22
+ for (const rule of rules) {
23
+ const results = await rule.check(this._context, this._contract, stats);
24
+ findings.push(...results);
25
+ }
26
+ return findings;
27
+ }
28
+ }
29
+ exports.Analyzer = Analyzer;
@@ -0,0 +1,10 @@
1
+ import { Project } from 'ts-morph';
2
+ export declare class ProjectContext {
3
+ readonly project: Project;
4
+ readonly projectPath: string;
5
+ constructor(projectPath: string, tsConfigPath?: string);
6
+ getTypeChecker(): import("ts-morph").TypeChecker;
7
+ getSourceFiles(): import("ts-morph").SourceFile[];
8
+ getConsumerSourceFiles(): import("ts-morph").SourceFile[];
9
+ }
10
+ //# sourceMappingURL=ProjectContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectContext.d.ts","sourceRoot":"","sources":["../../../../src/cli/analyzeUsage/core/ProjectContext.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,qBAAa,cAAc;IACvB,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,SAAgB,WAAW,EAAE,MAAM,CAAC;gBAExB,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IAwC/C,cAAc;IAId,cAAc;IAId,sBAAsB;CAIhC"}
@@ -0,0 +1,58 @@
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.ProjectContext = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const ts_morph_1 = require("ts-morph");
9
+ class ProjectContext {
10
+ project;
11
+ projectPath;
12
+ constructor(projectPath, tsConfigPath) {
13
+ this.projectPath = projectPath;
14
+ const options = {
15
+ // Очень важно для CLI:
16
+ skipAddingFilesFromTsConfig: false,
17
+ };
18
+ if (tsConfigPath) {
19
+ options.tsConfigFilePath = tsConfigPath;
20
+ }
21
+ else {
22
+ options.compilerOptions = {
23
+ allowJs: true,
24
+ jsx: 4, // React 17+ (react-jsx)
25
+ target: 99, // ESNext
26
+ moduleResolution: 2, // Node
27
+ esModuleInterop: true,
28
+ // БЕЗ ЭТОГО НЕ БУДЕТ ВИДЕТЬ ТИПЫ БИБЛИОТЕК:
29
+ skipLibCheck: true,
30
+ typeRoots: [path_1.default.resolve(projectPath, 'node_modules/@types')],
31
+ lib: ['lib.esnext.d.ts', 'lib.dom.d.ts'],
32
+ };
33
+ }
34
+ this.project = new ts_morph_1.Project(options);
35
+ // Если мы не используем tsconfig, нужно принудительно добавить файлы
36
+ if (!tsConfigPath) {
37
+ console.log('📂 Adding project files manually...');
38
+ this.project.addSourceFilesAtPaths([path_1.default.join(projectPath, 'src/**/*.{ts,tsx}'), '!**/node_modules/**']);
39
+ }
40
+ // ПРОВЕРКА: Проверяем, видит ли проект файлы
41
+ const fileCount = this.project.getSourceFiles().length;
42
+ console.log(`count: ${fileCount} files loaded into context.`);
43
+ if (fileCount === 0) {
44
+ throw new Error(`Project at path ${projectPath} is empty or no files were found.`);
45
+ }
46
+ }
47
+ getTypeChecker() {
48
+ return this.project.getTypeChecker();
49
+ }
50
+ getSourceFiles() {
51
+ return this.project.getSourceFiles();
52
+ }
53
+ getConsumerSourceFiles() {
54
+ const srcRoot = path_1.default.resolve(this.projectPath, 'src') + path_1.default.sep;
55
+ return this.project.getSourceFiles().filter(file => file.getFilePath().startsWith(srcRoot));
56
+ }
57
+ }
58
+ exports.ProjectContext = ProjectContext;