ts-openapi-codegen 2.1.0-beta.7 → 2.1.0-beta.9

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 (333) hide show
  1. package/README.md +7 -0
  2. package/README.rus.md +7 -0
  3. package/dist/cli/analyzeDiff/__tests__/analyzeDiff.cli.test.js +31 -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 +8 -7
  8. package/dist/cli/analyzeDiff/__tests__/analyzeDiffTypeCoercion.test.js +8 -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 +56 -13
  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 -6
  16. package/dist/cli/analyzeDiff/ignoreRules.d.ts.map +1 -1
  17. package/dist/cli/analyzeDiff/ignoreRules.js +2 -3
  18. package/dist/cli/analyzeDiff/report.d.ts +0 -1
  19. package/dist/cli/analyzeDiff/report.d.ts.map +1 -1
  20. package/dist/cli/analyzeDiff/report.js +1 -3
  21. package/dist/cli/analyzeDiff/writeLegacyReport.d.ts +2 -0
  22. package/dist/cli/analyzeDiff/writeLegacyReport.d.ts.map +1 -1
  23. package/dist/cli/analyzeDiff/writeLegacyReport.js +2 -0
  24. package/dist/cli/analyzeUsage/analyzeUsage.d.ts +2 -2
  25. package/dist/cli/analyzeUsage/analyzeUsage.d.ts.map +1 -1
  26. package/dist/cli/analyzeUsage/analyzeUsage.js +10 -12
  27. package/dist/cli/analyzeUsage/core/ProjectContext.d.ts +1 -1
  28. package/dist/cli/analyzeUsage/core/ProjectContext.d.ts.map +1 -1
  29. package/dist/cli/analyzeUsage/core/ProjectContext.js +5 -10
  30. package/dist/cli/analyzeUsage/core/Scanner.d.ts +8 -0
  31. package/dist/cli/analyzeUsage/core/Scanner.d.ts.map +1 -1
  32. package/dist/cli/analyzeUsage/core/Scanner.js +10 -0
  33. package/dist/cli/analyzeUsage/rules/ClientRule.d.ts +10 -2
  34. package/dist/cli/analyzeUsage/rules/ClientRule.d.ts.map +1 -1
  35. package/dist/cli/analyzeUsage/rules/ClientRule.js +29 -21
  36. package/dist/cli/analyzeUsage/rules/CoverageRule.d.ts +2 -2
  37. package/dist/cli/analyzeUsage/rules/CoverageRule.d.ts.map +1 -1
  38. package/dist/cli/analyzeUsage/rules/CoverageRule.js +16 -24
  39. package/dist/cli/analyzeUsage/rules/DiagnosticsRule.d.ts.map +1 -1
  40. package/dist/cli/analyzeUsage/rules/DiagnosticsRule.js +4 -1
  41. package/dist/cli/analyzeUsage/rules/ImportRule.d.ts +2 -2
  42. package/dist/cli/analyzeUsage/rules/ImportRule.d.ts.map +1 -1
  43. package/dist/cli/analyzeUsage/rules/ImportRule.js +9 -11
  44. package/dist/cli/analyzeUsage/rules/ModelRule.d.ts +2 -2
  45. package/dist/cli/analyzeUsage/rules/ModelRule.d.ts.map +1 -1
  46. package/dist/cli/analyzeUsage/rules/ModelRule.js +4 -8
  47. package/dist/cli/analyzeUsage/rules/SchemaRule.d.ts +2 -2
  48. package/dist/cli/analyzeUsage/rules/SchemaRule.d.ts.map +1 -1
  49. package/dist/cli/analyzeUsage/rules/SchemaRule.js +8 -10
  50. package/dist/cli/analyzeUsage/rules/ServiceRule.d.ts +10 -2
  51. package/dist/cli/analyzeUsage/rules/ServiceRule.d.ts.map +1 -1
  52. package/dist/cli/analyzeUsage/rules/ServiceRule.js +27 -23
  53. package/dist/cli/analyzeUsage/types.d.ts +4 -4
  54. package/dist/cli/analyzeUsage/types.d.ts.map +1 -1
  55. package/dist/cli/analyzeUsage/utils/fuzzy.d.ts.map +1 -1
  56. package/dist/cli/analyzeUsage/utils/report.d.ts +1 -1
  57. package/dist/cli/analyzeUsage/utils/report.d.ts.map +1 -1
  58. package/dist/cli/analyzeUsage/utils/report.js +8 -8
  59. package/dist/cli/checkAndUpdateConfig/utils/removeDefaultConfigValues.d.ts.map +1 -1
  60. package/dist/cli/checkAndUpdateConfig/utils/validateAndMigrateConfigData.d.ts.map +1 -1
  61. package/dist/cli/checkAndUpdateConfig/utils/validateAndMigrateConfigData.js +1 -1
  62. package/dist/cli/checkAndUpdateConfig/utils/writeConfigFile.d.ts +1 -1
  63. package/dist/cli/checkAndUpdateConfig/utils/writeConfigFile.d.ts.map +1 -1
  64. package/dist/cli/checkAndUpdateConfig/utils/writeConfigFile.js +1 -1
  65. package/dist/cli/generateOpenApiClient/generateOpenApiClient.d.ts.map +1 -1
  66. package/dist/cli/generateOpenApiClient/generateOpenApiClient.js +9 -1
  67. package/dist/cli/index.js +3 -2
  68. package/dist/cli/initOpenApiConfig/utils/__tests__/buildConfig.test.js +2 -8
  69. package/dist/cli/initOpenApiConfig/utils/registerHandlebarTemplates.d.ts.map +1 -1
  70. package/dist/cli/interactive/constants.d.ts +0 -4
  71. package/dist/cli/interactive/constants.d.ts.map +1 -1
  72. package/dist/cli/interactive/constants.js +1 -5
  73. package/dist/cli/previewChanges/previewChanges.d.ts.map +1 -1
  74. package/dist/cli/previewChanges/utils/formatDiff.d.ts.map +1 -1
  75. package/dist/cli/previewChanges/utils/updateOutputPaths.d.ts.map +1 -1
  76. package/dist/cli/previewChanges/utils/updateOutputPaths.js +5 -12
  77. package/dist/cli/schemas/analyzeUsage.d.ts.map +1 -1
  78. package/dist/cli/schemas/analyzeUsage.js +4 -1
  79. package/dist/cli/schemas/generate.d.ts +3 -2
  80. package/dist/cli/schemas/generate.d.ts.map +1 -1
  81. package/dist/cli/schemas/generate.js +3 -2
  82. package/dist/common/Consts.d.ts.map +1 -1
  83. package/dist/common/Consts.js +1 -2
  84. package/dist/common/Logger.d.ts.map +1 -1
  85. package/dist/common/Logger.js +1 -1
  86. package/dist/common/LoggerMessages.d.ts +15 -3
  87. package/dist/common/LoggerMessages.d.ts.map +1 -1
  88. package/dist/common/LoggerMessages.js +18 -7
  89. package/dist/common/TEslintFixOptions.d.ts +20 -0
  90. package/dist/common/TEslintFixOptions.d.ts.map +1 -0
  91. package/dist/common/TEslintFixOptions.js +15 -0
  92. package/dist/common/TRawOptions.d.ts.map +1 -1
  93. package/dist/common/VersionedSchema/AllVersionedSchemas/AllMigrationPlans.d.ts.map +1 -1
  94. package/dist/common/VersionedSchema/AllVersionedSchemas/AllMigrationPlans.js +2 -4
  95. package/dist/common/VersionedSchema/AllVersionedSchemas/AllVersionedSchemas.d.ts.map +1 -1
  96. package/dist/common/VersionedSchema/AllVersionedSchemas/AllVersionedSchemas.js +1 -1
  97. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedBase.d.ts.map +1 -1
  98. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedBase.js +1 -2
  99. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV1.d.ts.map +1 -1
  100. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV1.js +1 -1
  101. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV2.d.ts.map +1 -1
  102. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV2.js +1 -1
  103. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV4.d.ts.map +1 -1
  104. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.d.ts +3 -2
  105. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.d.ts.map +1 -1
  106. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.js +10 -4
  107. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.d.ts +4 -4
  108. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.d.ts.map +1 -1
  109. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.js +7 -1
  110. package/dist/common/VersionedSchema/CommonSchemas.d.ts.map +1 -1
  111. package/dist/common/VersionedSchema/CommonSchemas.js +4 -2
  112. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV2.js +1 -1
  113. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV3.d.ts.map +1 -1
  114. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV3.js +1 -1
  115. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV4.js +1 -1
  116. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV5.d.ts.map +1 -1
  117. package/dist/common/VersionedSchema/OptionsVersioned/OptionsMigrationPlans.d.ts.map +1 -1
  118. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV1.d.ts +2 -2
  119. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV1.d.ts.map +1 -1
  120. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV2.d.ts +2 -2
  121. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV3.js +1 -1
  122. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV4.d.ts +1 -1
  123. package/dist/common/VersionedSchema/Utils/__mocks__/compatibilityCases.d.ts.map +1 -1
  124. package/dist/common/VersionedSchema/Utils/__mocks__/compatibilityCases.js +3 -2
  125. package/dist/common/VersionedSchema/Utils/__tests__/allUtils.test.js +4 -16
  126. package/dist/common/VersionedSchema/Utils/buildVersionedSchema.d.ts.map +1 -1
  127. package/dist/common/VersionedSchema/Utils/createDefaultFieldsMigration.d.ts +1 -1
  128. package/dist/common/VersionedSchema/Utils/createDefaultFieldsMigration.d.ts.map +1 -1
  129. package/dist/common/VersionedSchema/Utils/createDefaultFieldsMigration.js +1 -1
  130. package/dist/common/VersionedSchema/Utils/createTrivialMigration.d.ts.map +1 -1
  131. package/dist/common/VersionedSchema/Utils/createTrivialMigration.js +1 -1
  132. package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.d.ts.map +1 -1
  133. package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.js +1 -3
  134. package/dist/common/VersionedSchema/Utils/getLatestVersionFromMigrationPlans.d.ts.map +1 -1
  135. package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.d.ts.map +1 -1
  136. package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.js +1 -3
  137. package/dist/common/VersionedSchema/Utils/replaceInvalidKeysWithMappedNames.d.ts.map +1 -1
  138. package/dist/common/VersionedSchema/Utils/replaceInvalidKeysWithMappedNames.js +1 -1
  139. package/dist/common/VersionedSchema/Utils/validateAndSuggestKeyCorrections.d.ts.map +1 -1
  140. package/dist/common/VersionedSchema/refinements/dependentOptionsRefinement.d.ts +1 -1
  141. package/dist/common/VersionedSchema/refinements/dependentOptionsRefinement.d.ts.map +1 -1
  142. package/dist/common/utils/__tests__/eslintFix.test.js +25 -67
  143. package/dist/common/utils/__tests__/extractEslintFixOptions.test.d.ts +2 -0
  144. package/dist/common/utils/__tests__/extractEslintFixOptions.test.d.ts.map +1 -0
  145. package/dist/common/utils/__tests__/extractEslintFixOptions.test.js +28 -0
  146. package/dist/common/utils/__tests__/format.test.js +26 -17
  147. package/dist/common/utils/__tests__/prepareTempTsConfig.test.d.ts +2 -0
  148. package/dist/common/utils/__tests__/prepareTempTsConfig.test.d.ts.map +1 -0
  149. package/dist/common/utils/__tests__/prepareTempTsConfig.test.js +78 -0
  150. package/dist/common/utils/codegenTempDir.d.ts +20 -0
  151. package/dist/common/utils/codegenTempDir.d.ts.map +1 -0
  152. package/dist/common/utils/codegenTempDir.js +42 -0
  153. package/dist/common/utils/convertArrayToObject.d.ts.map +1 -1
  154. package/dist/common/utils/convertArrayToObject.js +3 -8
  155. package/dist/common/utils/eslintFix.d.ts +48 -4
  156. package/dist/common/utils/eslintFix.d.ts.map +1 -1
  157. package/dist/common/utils/eslintFix.js +121 -15
  158. package/dist/common/utils/format.d.ts +1 -1
  159. package/dist/common/utils/format.d.ts.map +1 -1
  160. package/dist/common/utils/format.js +23 -11
  161. package/dist/common/utils/jsonPath.d.ts.map +1 -1
  162. package/dist/common/utils/prepareTempEslintConfig.d.ts +18 -0
  163. package/dist/common/utils/prepareTempEslintConfig.d.ts.map +1 -0
  164. package/dist/common/utils/prepareTempEslintConfig.js +55 -0
  165. package/dist/common/utils/prepareTempTsConfig.d.ts +23 -0
  166. package/dist/common/utils/prepareTempTsConfig.d.ts.map +1 -0
  167. package/dist/common/utils/prepareTempTsConfig.js +105 -0
  168. package/dist/core/Context.d.ts.map +1 -1
  169. package/dist/core/Context.js +2 -6
  170. package/dist/core/OpenApiClient.d.ts +15 -0
  171. package/dist/core/OpenApiClient.d.ts.map +1 -1
  172. package/dist/core/OpenApiClient.js +68 -10
  173. package/dist/core/WriteClient.d.ts +73 -17
  174. package/dist/core/WriteClient.d.ts.map +1 -1
  175. package/dist/core/WriteClient.js +72 -18
  176. package/dist/core/__tests__/WriteClient.test.js +1 -1
  177. package/dist/core/api/v2/parser/getOperationResponses.d.ts.map +1 -1
  178. package/dist/core/api/v2/parser/getOperationResponses.js +1 -3
  179. package/dist/core/api/v2/parser/getServiceName.d.ts +1 -1
  180. package/dist/core/api/v3/parser/getOperation.d.ts.map +1 -1
  181. package/dist/core/api/v3/parser/getOperationParameters.d.ts.map +1 -1
  182. package/dist/core/api/v3/parser/getOperationResponses.d.ts.map +1 -1
  183. package/dist/core/api/v3/parser/getOperationResponses.js +1 -3
  184. package/dist/core/api/v3/parser/getServiceName.d.ts +1 -1
  185. package/dist/core/governance/evaluateGovernanceRules.d.ts.map +1 -1
  186. package/dist/core/governance/evaluateGovernanceRules.js +1 -3
  187. package/dist/core/governance/loadGovernanceConfig.d.ts.map +1 -1
  188. package/dist/core/governance/loadGovernanceConfig.js +2 -4
  189. package/dist/core/plugins/GeneratorPlugin.model.d.ts.map +1 -1
  190. package/dist/core/plugins/applySemanticDiffPluginHooks.d.ts.map +1 -1
  191. package/dist/core/semanticDiff/__tests__/analyzeOpenApiDiff.test.js +79 -21
  192. package/dist/core/semanticDiff/__tests__/semanticDiffReportSchema.test.js +20 -1
  193. package/dist/core/semanticDiff/analyzeOpenApiDiff.d.ts +58 -6
  194. package/dist/core/semanticDiff/analyzeOpenApiDiff.d.ts.map +1 -1
  195. package/dist/core/semanticDiff/analyzeOpenApiDiff.js +47 -19
  196. package/dist/core/semanticDiff/semanticDiffReportSchema.d.ts +9 -1
  197. package/dist/core/semanticDiff/semanticDiffReportSchema.d.ts.map +1 -1
  198. package/dist/core/semanticDiff/semanticDiffReportSchema.js +137 -53
  199. package/dist/core/strict/validateOpenApiStrict.d.ts.map +1 -1
  200. package/dist/core/types/Consts.js +1 -1
  201. package/dist/core/types/DiffReport.model.d.ts +101 -0
  202. package/dist/core/types/DiffReport.model.d.ts.map +1 -0
  203. package/dist/core/types/DiffReport.model.js +5 -0
  204. package/dist/core/types/base/ClientArtifacts.model.d.ts +3 -3
  205. package/dist/core/types/base/ClientArtifacts.model.d.ts.map +1 -1
  206. package/dist/core/types/base/ExportedModel.model.d.ts +1 -1
  207. package/dist/core/types/base/ExportedModel.model.d.ts.map +1 -1
  208. package/dist/core/types/base/ExportedService.model.d.ts.map +1 -1
  209. package/dist/core/types/base/OutputPaths.model.d.ts.map +1 -1
  210. package/dist/core/types/base/PrefixArtifacts.model.d.ts.map +1 -1
  211. package/dist/core/types/base/PropertyGroup.model.d.ts +1 -1
  212. package/dist/core/types/base/SimpleClientArtifacts.model.d.ts +1 -1
  213. package/dist/core/types/base/SimpleClientArtifacts.model.d.ts.map +1 -1
  214. package/dist/core/types/shared/Model.model.d.ts +36 -0
  215. package/dist/core/types/shared/Model.model.d.ts.map +1 -1
  216. package/dist/core/utils/__tests__/applyDiffReportToClient.test.js +182 -0
  217. package/dist/core/utils/__tests__/buildMiraclesFromSemanticChanges.test.d.ts +2 -0
  218. package/dist/core/utils/__tests__/buildMiraclesFromSemanticChanges.test.d.ts.map +1 -0
  219. package/dist/core/utils/__tests__/buildMiraclesFromSemanticChanges.test.js +77 -0
  220. package/dist/core/utils/__tests__/expandOpenApiRefsForSemanticDiff.test.d.ts +2 -0
  221. package/dist/core/utils/__tests__/expandOpenApiRefsForSemanticDiff.test.d.ts.map +1 -0
  222. package/dist/core/utils/__tests__/expandOpenApiRefsForSemanticDiff.test.js +159 -0
  223. package/dist/core/utils/__tests__/loadDiffReport.test.js +131 -0
  224. package/dist/core/utils/__tests__/modelHelpers.test.js +27 -9
  225. package/dist/core/utils/__tests__/postProcessModelImports.test.js +1 -4
  226. package/dist/core/utils/__tests__/postProcessServiceImports.test.js +1 -4
  227. package/dist/core/utils/__tests__/prepareDtoModels.test.js +74 -2
  228. package/dist/core/utils/__tests__/registerHandlebarHelpers.test.js +27 -0
  229. package/dist/core/utils/__tests__/resolveClassesModeTypes.test.d.ts +2 -0
  230. package/dist/core/utils/__tests__/resolveClassesModeTypes.test.d.ts.map +1 -0
  231. package/dist/core/utils/__tests__/resolveClassesModeTypes.test.js +111 -0
  232. package/dist/core/utils/__tests__/semanticChangesToDiffEntries.test.d.ts +2 -0
  233. package/dist/core/utils/__tests__/semanticChangesToDiffEntries.test.d.ts.map +1 -0
  234. package/dist/core/utils/__tests__/semanticChangesToDiffEntries.test.js +68 -0
  235. package/dist/core/utils/__tests__/serviceHelpers.test.js +10 -11
  236. package/dist/core/utils/__tests__/sortByRequiredExtended.test.js +10 -27
  237. package/dist/core/utils/__tests__/templateRendering.test.js +71 -0
  238. package/dist/core/utils/adapters/__tests__/semanticToStructural.test.d.ts +2 -0
  239. package/dist/core/utils/adapters/__tests__/semanticToStructural.test.d.ts.map +1 -0
  240. package/dist/core/utils/adapters/__tests__/semanticToStructural.test.js +63 -0
  241. package/dist/core/utils/adapters/extractMiraclesFromSemantic.d.ts +10 -0
  242. package/dist/core/utils/adapters/extractMiraclesFromSemantic.d.ts.map +1 -0
  243. package/dist/core/utils/adapters/extractMiraclesFromSemantic.js +13 -0
  244. package/dist/core/utils/adapters/index.d.ts +4 -0
  245. package/dist/core/utils/adapters/index.d.ts.map +1 -0
  246. package/dist/core/utils/adapters/index.js +8 -0
  247. package/dist/core/utils/adapters/semanticToStructural.d.ts +12 -0
  248. package/dist/core/utils/adapters/semanticToStructural.d.ts.map +1 -0
  249. package/dist/core/utils/adapters/semanticToStructural.js +36 -0
  250. package/dist/core/utils/appendUniqueLinesToFile.js +1 -1
  251. package/dist/core/utils/applyDiffReportToClient.d.ts +13 -1
  252. package/dist/core/utils/applyDiffReportToClient.d.ts.map +1 -1
  253. package/dist/core/utils/applyDiffReportToClient.js +189 -109
  254. package/dist/core/utils/areEqual.d.ts +1 -1
  255. package/dist/core/utils/buildMiraclesFromSemanticChanges.d.ts +25 -0
  256. package/dist/core/utils/buildMiraclesFromSemanticChanges.d.ts.map +1 -0
  257. package/dist/core/utils/buildMiraclesFromSemanticChanges.js +146 -0
  258. package/dist/core/utils/expandOpenApiRefsForSemanticDiff.d.ts +23 -0
  259. package/dist/core/utils/expandOpenApiRefsForSemanticDiff.d.ts.map +1 -0
  260. package/dist/core/utils/expandOpenApiRefsForSemanticDiff.js +163 -0
  261. package/dist/core/utils/getOpenApiSpec.d.ts +18 -0
  262. package/dist/core/utils/getOpenApiSpec.d.ts.map +1 -1
  263. package/dist/core/utils/getOpenApiSpec.js +35 -0
  264. package/dist/core/utils/getOperationErrors.d.ts +2 -2
  265. package/dist/core/utils/getOperationErrors.d.ts.map +1 -1
  266. package/dist/core/utils/getOperationResults.d.ts +1 -1
  267. package/dist/core/utils/getPropertyGroupSimple.d.ts.map +1 -1
  268. package/dist/core/utils/getPropertyGroupSimple.js +1 -3
  269. package/dist/core/utils/isSubdirectory.d.ts.map +1 -1
  270. package/dist/core/utils/loadDiffReport.d.ts +11 -30
  271. package/dist/core/utils/loadDiffReport.d.ts.map +1 -1
  272. package/dist/core/utils/loadDiffReport.js +69 -3
  273. package/dist/core/utils/loadSemanticOpenApiSpec.d.ts +15 -0
  274. package/dist/core/utils/loadSemanticOpenApiSpec.d.ts.map +1 -0
  275. package/dist/core/utils/loadSemanticOpenApiSpec.js +61 -0
  276. package/dist/core/utils/modelHelpers.d.ts +13 -5
  277. package/dist/core/utils/modelHelpers.d.ts.map +1 -1
  278. package/dist/core/utils/modelHelpers.js +28 -23
  279. package/dist/core/utils/normalizeString.d.ts.map +1 -1
  280. package/dist/core/utils/normalizeString.js +1 -5
  281. package/dist/core/utils/postProcessServiceImports.d.ts.map +1 -1
  282. package/dist/core/utils/postProcessServiceImports.js +1 -3
  283. package/dist/core/utils/precompileTemplates.js +1 -0
  284. package/dist/core/utils/prepareAlias.d.ts +1 -1
  285. package/dist/core/utils/prepareDtoModels.d.ts +5 -0
  286. package/dist/core/utils/prepareDtoModels.d.ts.map +1 -1
  287. package/dist/core/utils/prepareDtoModels.js +56 -13
  288. package/dist/core/utils/registerHandlebarHelpers.d.ts +1 -0
  289. package/dist/core/utils/registerHandlebarHelpers.d.ts.map +1 -1
  290. package/dist/core/utils/registerHandlebarHelpers.js +3 -0
  291. package/dist/core/utils/registerHandlebarTemplates.d.ts +1 -0
  292. package/dist/core/utils/registerHandlebarTemplates.d.ts.map +1 -1
  293. package/dist/core/utils/resolveClassesModeTypes.d.ts +8 -0
  294. package/dist/core/utils/resolveClassesModeTypes.d.ts.map +1 -0
  295. package/dist/core/utils/resolveClassesModeTypes.js +77 -0
  296. package/dist/core/utils/semanticChangesToDiffEntries.d.ts +37 -0
  297. package/dist/core/utils/semanticChangesToDiffEntries.d.ts.map +1 -0
  298. package/dist/core/utils/semanticChangesToDiffEntries.js +99 -0
  299. package/dist/core/utils/semanticPointerToJsonPath.d.ts +7 -0
  300. package/dist/core/utils/semanticPointerToJsonPath.d.ts.map +1 -0
  301. package/dist/core/utils/semanticPointerToJsonPath.js +67 -0
  302. package/dist/core/utils/serviceHelpers.d.ts +6 -7
  303. package/dist/core/utils/serviceHelpers.d.ts.map +1 -1
  304. package/dist/core/utils/serviceHelpers.js +8 -25
  305. package/dist/core/utils/sortModelByName.d.ts +1 -1
  306. package/dist/core/utils/writeClientExecutor.d.ts +1 -2
  307. package/dist/core/utils/writeClientExecutor.d.ts.map +1 -1
  308. package/dist/core/utils/writeClientExecutor.js +2 -6
  309. package/dist/core/utils/writeClientModels.d.ts +1 -2
  310. package/dist/core/utils/writeClientModels.d.ts.map +1 -1
  311. package/dist/core/utils/writeClientModels.js +4 -6
  312. package/dist/core/utils/writeClientSchemas.d.ts +1 -3
  313. package/dist/core/utils/writeClientSchemas.d.ts.map +1 -1
  314. package/dist/core/utils/writeClientSchemas.js +2 -7
  315. package/dist/core/utils/writeClientServices.d.ts +15 -16
  316. package/dist/core/utils/writeClientServices.d.ts.map +1 -1
  317. package/dist/core/utils/writeClientServices.js +6 -13
  318. package/dist/templatesCompiled/client/exportModels.d.ts +17 -11
  319. package/dist/templatesCompiled/client/exportModels.d.ts.map +1 -1
  320. package/dist/templatesCompiled/client/exportModels.js +96 -49
  321. package/dist/templatesCompiled/client/exportService.d.ts +13 -10
  322. package/dist/templatesCompiled/client/exportService.d.ts.map +1 -1
  323. package/dist/templatesCompiled/client/exportService.js +95 -67
  324. package/dist/templatesCompiled/client/partials/header.d.ts +1 -0
  325. package/dist/templatesCompiled/client/partials/header.d.ts.map +1 -1
  326. package/dist/templatesCompiled/client/partials/header.js +11 -2
  327. package/package.json +130 -136
  328. package/dist/cli/analyzeDiff/buildLegacyReport.d.ts +0 -17
  329. package/dist/cli/analyzeDiff/buildLegacyReport.d.ts.map +0 -1
  330. package/dist/cli/analyzeDiff/buildLegacyReport.js +0 -54
  331. package/dist/cli/analyzeDiff/diffEngine.d.ts +0 -54
  332. package/dist/cli/analyzeDiff/diffEngine.d.ts.map +0 -1
  333. package/dist/cli/analyzeDiff/diffEngine.js +0 -209
@@ -13,19 +13,17 @@ const analyzeUsage = async (options) => {
13
13
  try {
14
14
  // Валидация входных данных
15
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." };
16
+ console.error('❌ Error: --sourcePath (-s) and --projectPath (-p) are required.');
17
+ return { success: false, error: '--sourcePath (-s) and --projectPath (-p) are required.' };
18
18
  }
19
19
  const projectPath = path_1.default.resolve(options.projectPath);
20
20
  const sourcePath = path_1.default.resolve(options.sourcePath);
21
- const tsconfigPath = options.tsconfigPath
22
- ? path_1.default.resolve(options.tsconfigPath)
23
- : undefined;
24
- console.log("🏗️ Initializing project context...");
21
+ const tsconfigPath = options.tsconfigPath ? path_1.default.resolve(options.tsconfigPath) : undefined;
22
+ console.log('🏗️ Initializing project context...');
25
23
  const context = new ProjectContext_1.ProjectContext(projectPath, tsconfigPath);
26
24
  // Добавляем файл генерации в проект для работы TypeChecker
27
25
  const generatedFile = context.project.addSourceFileAtPath(sourcePath);
28
- console.log("🔍 Scanning API contract...");
26
+ console.log('🔍 Scanning API contract...');
29
27
  const scanner = new Scanner_1.Scanner(generatedFile);
30
28
  const contract = scanner.scan();
31
29
  // Инициализация объекта статистики для подсчета Coverage
@@ -34,7 +32,7 @@ const analyzeUsage = async (options) => {
34
32
  usedSchemas: new Set(),
35
33
  usedModels: new Set(),
36
34
  };
37
- console.log("🧪 Running semantic analysis...");
35
+ console.log('🧪 Running semantic analysis...');
38
36
  const analyzer = new Analyzer_1.Analyzer(context, contract);
39
37
  const findings = await analyzer.run(stats);
40
38
  // 1. Расчет покрытия API (через Reporter)
@@ -45,13 +43,13 @@ const analyzeUsage = async (options) => {
45
43
  report_1.Reporter.saveJsonReport(options.output, findings, coverage);
46
44
  // 4. Логика выхода для CI пайплайнов
47
45
  if (options.check) {
48
- const hasErrors = findings.some((f) => f.severity === "ERROR");
46
+ const hasErrors = findings.some(f => f.severity === 'ERROR');
49
47
  if (hasErrors) {
50
- console.error("\n🛑 CI check failed: critical API contract mismatches were found.");
51
- return { success: false, error: "CI check failed: critical API contract mismatches were found." };
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.' };
52
50
  }
53
51
  }
54
- console.log("\n✅ Done!");
52
+ console.log('\n✅ Done!');
55
53
  return { success: true };
56
54
  }
57
55
  catch (error) {
@@ -1,4 +1,4 @@
1
- import { Project } from "ts-morph";
1
+ import { Project } from 'ts-morph';
2
2
  export declare class ProjectContext {
3
3
  readonly project: Project;
4
4
  readonly projectPath: string;
@@ -1 +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;IA2C/C,cAAc;IAId,cAAc;IAId,sBAAsB;CAMhC"}
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"}
@@ -27,18 +27,15 @@ class ProjectContext {
27
27
  esModuleInterop: true,
28
28
  // БЕЗ ЭТОГО НЕ БУДЕТ ВИДЕТЬ ТИПЫ БИБЛИОТЕК:
29
29
  skipLibCheck: true,
30
- typeRoots: [path_1.default.resolve(projectPath, "node_modules/@types")],
31
- lib: ["lib.esnext.d.ts", "lib.dom.d.ts"]
30
+ typeRoots: [path_1.default.resolve(projectPath, 'node_modules/@types')],
31
+ lib: ['lib.esnext.d.ts', 'lib.dom.d.ts'],
32
32
  };
33
33
  }
34
34
  this.project = new ts_morph_1.Project(options);
35
35
  // Если мы не используем tsconfig, нужно принудительно добавить файлы
36
36
  if (!tsConfigPath) {
37
37
  console.log('📂 Adding project files manually...');
38
- this.project.addSourceFilesAtPaths([
39
- path_1.default.join(projectPath, "src/**/*.{ts,tsx}"),
40
- "!**/node_modules/**",
41
- ]);
38
+ this.project.addSourceFilesAtPaths([path_1.default.join(projectPath, 'src/**/*.{ts,tsx}'), '!**/node_modules/**']);
42
39
  }
43
40
  // ПРОВЕРКА: Проверяем, видит ли проект файлы
44
41
  const fileCount = this.project.getSourceFiles().length;
@@ -54,10 +51,8 @@ class ProjectContext {
54
51
  return this.project.getSourceFiles();
55
52
  }
56
53
  getConsumerSourceFiles() {
57
- const srcRoot = path_1.default.resolve(this.projectPath, "src") + path_1.default.sep;
58
- return this.project
59
- .getSourceFiles()
60
- .filter((file) => file.getFilePath().startsWith(srcRoot));
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));
61
56
  }
62
57
  }
63
58
  exports.ProjectContext = ProjectContext;
@@ -1,8 +1,16 @@
1
1
  import { SourceFile } from 'ts-morph';
2
2
  import type { Contract } from '../types';
3
+ /** Сканер экспортов сгенерированного API-файла для построения контракта. */
3
4
  export declare class Scanner {
4
5
  private generatedFile;
6
+ /**
7
+ * @param generatedFile сгенерированный исходный файл API
8
+ */
5
9
  constructor(generatedFile: SourceFile);
10
+ /**
11
+ * Сканирует экспорты файла и собирает контракт сервисов, моделей и схем.
12
+ * @returns контракт сгенерированного API
13
+ */
6
14
  scan(): Contract;
7
15
  private extractMethodsFromDeclaration;
8
16
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Scanner.d.ts","sourceRoot":"","sources":["../../../../src/cli/analyzeUsage/core/Scanner.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,UAAU,EAAc,MAAM,UAAU,CAAC;AAEvD,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,UAAU,CAAC;AAEzD,qBAAa,OAAO;IACJ,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,UAAU;IAEtC,IAAI,IAAI,QAAQ;IA4CvB,OAAO,CAAC,6BAA6B;IA0CrC;;;OAGG;IACH,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,cAAc;CAGzB"}
1
+ {"version":3,"file":"Scanner.d.ts","sourceRoot":"","sources":["../../../../src/cli/analyzeUsage/core/Scanner.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,UAAU,EAAc,MAAM,UAAU,CAAC;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,UAAU,CAAC;AAEzD,4EAA4E;AAC5E,qBAAa,OAAO;IAIJ,OAAO,CAAC,aAAa;IAHjC;;OAEG;gBACiB,aAAa,EAAE,UAAU;IAE7C;;;OAGG;IACI,IAAI,IAAI,QAAQ;IA4CvB,OAAO,CAAC,6BAA6B;IA0CrC;;;OAGG;IACH,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,cAAc;CAGzB"}
@@ -2,11 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Scanner = void 0;
4
4
  const ts_morph_1 = require("ts-morph");
5
+ /** Сканер экспортов сгенерированного API-файла для построения контракта. */
5
6
  class Scanner {
6
7
  generatedFile;
8
+ /**
9
+ * @param generatedFile сгенерированный исходный файл API
10
+ */
7
11
  constructor(generatedFile) {
8
12
  this.generatedFile = generatedFile;
9
13
  }
14
+ /**
15
+ * Сканирует экспорты файла и собирает контракт сервисов, моделей и схем.
16
+ * @returns контракт сгенерированного API
17
+ */
10
18
  scan() {
11
19
  const exports = this.generatedFile.getExportedDeclarations();
12
20
  console.log(`DEBUG SCANNER: File exports:`, Array.from(exports.keys()));
@@ -102,6 +110,8 @@ class Scanner {
102
110
  name,
103
111
  params: sig?.getParameters().map(p => ({
104
112
  name: p.getName(),
113
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
114
+ // @ts-ignore
105
115
  isOptional: p.isOptional(),
106
116
  type: p.getTypeAtLocation(node).getText(),
107
117
  })) || [],
@@ -1,6 +1,14 @@
1
- import type { ProjectContext } from "../core/ProjectContext";
2
- import type { Contract, Finding, Rule, Stats } from "../types";
1
+ import type { ProjectContext } from '../core/ProjectContext';
2
+ import type { Contract, Finding, Rule, Stats } from '../types';
3
+ /** Правило проверки использования createClient и ClientOptions в потребителях API. */
3
4
  export declare class ClientRule implements Rule {
5
+ /**
6
+ * Проверяет вызовы createClient и соответствие ClientOptions.
7
+ * @param context контекст проекта
8
+ * @param contract контракт сгенерированного API
9
+ * @param stats накопительная статистика использования
10
+ * @returns список найденных проблем
11
+ */
4
12
  check(context: ProjectContext, contract: Contract, stats: Stats): Promise<Finding[]>;
5
13
  }
6
14
  //# sourceMappingURL=ClientRule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClientRule.d.ts","sourceRoot":"","sources":["../../../../src/cli/analyzeUsage/rules/ClientRule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE/D,qBAAa,UAAW,YAAW,IAAI;IAC/B,KAAK,CACT,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,OAAO,EAAE,CAAC;CA8EtB"}
1
+ {"version":3,"file":"ClientRule.d.ts","sourceRoot":"","sources":["../../../../src/cli/analyzeUsage/rules/ClientRule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE/D,sFAAsF;AACtF,qBAAa,UAAW,YAAW,IAAI;IACnC;;;;;;OAMG;IACG,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CA4E7F"}
@@ -2,20 +2,26 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ClientRule = void 0;
4
4
  const ts_morph_1 = require("ts-morph");
5
+ /** Правило проверки использования createClient и ClientOptions в потребителях API. */
5
6
  class ClientRule {
7
+ /**
8
+ * Проверяет вызовы createClient и соответствие ClientOptions.
9
+ * @param context контекст проекта
10
+ * @param contract контракт сгенерированного API
11
+ * @param stats накопительная статистика использования
12
+ * @returns список найденных проблем
13
+ */
6
14
  async check(context, contract, stats) {
7
15
  const findings = [];
8
16
  const checker = context.getTypeChecker();
9
- const clientOptionsDecl = contract.sourceFile
10
- .getExportedDeclarations()
11
- .get("ClientOptions")?.[0];
17
+ const clientOptionsDecl = contract.sourceFile.getExportedDeclarations().get('ClientOptions')?.[0];
12
18
  const expectedType = clientOptionsDecl?.getType();
13
19
  if (!expectedType) {
14
20
  findings.push({
15
- id: "CLIENT_OPTIONS_TYPE_NOT_FOUND",
16
- category: "CONFIG",
17
- severity: "WARNING",
18
- message: "ClientOptions type was not found in the contract. createClient argument validation is limited.",
21
+ id: 'CLIENT_OPTIONS_TYPE_NOT_FOUND',
22
+ category: 'CONFIG',
23
+ severity: 'WARNING',
24
+ message: 'ClientOptions type was not found in the contract. createClient argument validation is limited.',
19
25
  file: contract.sourceFile.getFilePath(),
20
26
  line: 0,
21
27
  });
@@ -25,12 +31,12 @@ class ClientRule {
25
31
  const createClientNames = new Set();
26
32
  for (const imp of imports) {
27
33
  const moduleName = imp.getModuleSpecifierValue();
28
- if (moduleName !== "@lom-api" && !moduleName.startsWith("@lom-api/")) {
34
+ if (moduleName !== '@lom-api' && !moduleName.startsWith('@lom-api/')) {
29
35
  continue;
30
36
  }
31
37
  for (const namedImport of imp.getNamedImports()) {
32
- if (namedImport.getName() === "createClient") {
33
- createClientNames.add(namedImport.getAliasNode()?.getText() || "createClient");
38
+ if (namedImport.getName() === 'createClient') {
39
+ createClientNames.add(namedImport.getAliasNode()?.getText() || 'createClient');
34
40
  }
35
41
  }
36
42
  }
@@ -43,18 +49,20 @@ class ClientRule {
43
49
  continue;
44
50
  if (!createClientNames.has(expression.getText()))
45
51
  continue;
46
- stats.usedMethods.add("createClient");
52
+ stats.usedMethods.add('createClient');
47
53
  const args = call.getArguments();
48
54
  if (args.length === 0)
49
55
  continue;
50
56
  if (expectedType) {
51
57
  const providedType = checker.getTypeAtLocation(args[0]);
58
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
59
+ // @ts-ignore
52
60
  if (!providedType.isAssignableTo(expectedType)) {
53
61
  findings.push({
54
- id: "CLIENT_OPTIONS_MISMATCH",
55
- category: "TYPE_MISMATCH",
56
- severity: "ERROR",
57
- message: "createClient configuration object does not match ClientOptions from the generated API.",
62
+ id: 'CLIENT_OPTIONS_MISMATCH',
63
+ category: 'TYPE_MISMATCH',
64
+ severity: 'ERROR',
65
+ message: 'createClient configuration object does not match ClientOptions from the generated API.',
58
66
  file: file.getFilePath(),
59
67
  line: args[0].getStartLineNumber(),
60
68
  });
@@ -62,13 +70,13 @@ class ClientRule {
62
70
  }
63
71
  }
64
72
  }
65
- if (!stats.usedMethods.has("createClient")) {
73
+ if (!stats.usedMethods.has('createClient')) {
66
74
  findings.push({
67
- id: "CLIENT_NOT_FOUND",
68
- category: "USAGE",
69
- severity: "WARNING",
70
- message: "No createClient call from @lom-api was found in src.",
71
- file: "Global",
75
+ id: 'CLIENT_NOT_FOUND',
76
+ category: 'USAGE',
77
+ severity: 'WARNING',
78
+ message: 'No createClient call from @lom-api was found in src.',
79
+ file: 'Global',
72
80
  line: 0,
73
81
  });
74
82
  }
@@ -1,5 +1,5 @@
1
- import { ProjectContext } from "../core/ProjectContext";
2
- import type { Contract, Finding, Rule, Stats } from "../types";
1
+ import { ProjectContext } from '../core/ProjectContext';
2
+ import type { Contract, Finding, Rule, Stats } from '../types';
3
3
  export declare class CoverageRule implements Rule {
4
4
  private readonly ignoredUnusedModels;
5
5
  check(_context: ProjectContext, contract: Contract, stats: Stats): Promise<Finding[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"CoverageRule.d.ts","sourceRoot":"","sources":["../../../../src/cli/analyzeUsage/rules/CoverageRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE/D,qBAAa,YAAa,YAAW,IAAI;IACvC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAQjC;IAEG,KAAK,CACT,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,OAAO,EAAE,CAAC;CAmDtB"}
1
+ {"version":3,"file":"CoverageRule.d.ts","sourceRoot":"","sources":["../../../../src/cli/analyzeUsage/rules/CoverageRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE/D,qBAAa,YAAa,YAAW,IAAI;IACrC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAoI;IAElK,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAmD9F"}
@@ -2,56 +2,48 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CoverageRule = void 0;
4
4
  class CoverageRule {
5
- ignoredUnusedModels = new Set([
6
- "ApiError",
7
- "RequestConfig",
8
- "RequestExecutor",
9
- "TOpenAPIConfig",
10
- "OpenAPI",
11
- "createExecutorAdapter",
12
- "ClientOptions",
13
- ]);
5
+ ignoredUnusedModels = new Set(['ApiError', 'RequestConfig', 'RequestExecutor', 'TOpenAPIConfig', 'OpenAPI', 'createExecutorAdapter', 'ClientOptions']);
14
6
  async check(_context, contract, stats) {
15
7
  const findings = [];
16
8
  // Проверка неиспользуемых схем
17
- contract.schemas.forEach((schema) => {
9
+ contract.schemas.forEach(schema => {
18
10
  if (!stats.usedSchemas.has(schema)) {
19
11
  findings.push({
20
- id: "UNUSED_SCHEMA",
21
- category: "UNUSED",
22
- severity: "WARNING",
12
+ id: 'UNUSED_SCHEMA',
13
+ category: 'UNUSED',
14
+ severity: 'WARNING',
23
15
  message: `Schema "${schema}" is exported by the API but not used in the project.`,
24
- file: "API Contract",
16
+ file: 'API Contract',
25
17
  line: 0,
26
18
  });
27
19
  }
28
20
  });
29
21
  // Проверка неиспользуемых моделей
30
- contract.models.forEach((model) => {
22
+ contract.models.forEach(model => {
31
23
  if (this.ignoredUnusedModels.has(model))
32
24
  return;
33
25
  if (!stats.usedModels.has(model)) {
34
26
  findings.push({
35
- id: "UNUSED_MODEL",
36
- category: "UNUSED",
37
- severity: "WARNING",
27
+ id: 'UNUSED_MODEL',
28
+ category: 'UNUSED',
29
+ severity: 'WARNING',
38
30
  message: `Model "${model}" is exported by the API but not used in the project.`,
39
- file: "API Contract",
31
+ file: 'API Contract',
40
32
  line: 0,
41
33
  });
42
34
  }
43
35
  });
44
36
  // Проверка неиспользуемых методов
45
37
  Object.entries(contract.services).forEach(([serviceName, methods]) => {
46
- methods.forEach((method) => {
38
+ methods.forEach(method => {
47
39
  const methodKey = `${serviceName}.${method.name}`;
48
40
  if (!stats.usedMethods.has(methodKey)) {
49
41
  findings.push({
50
- id: "UNUSED_METHOD",
51
- category: "UNUSED",
52
- severity: "WARNING",
42
+ id: 'UNUSED_METHOD',
43
+ category: 'UNUSED',
44
+ severity: 'WARNING',
53
45
  message: `Method "${methodKey}" is exported by the API but not used in the project.`,
54
- file: "API Contract",
46
+ file: 'API Contract',
55
47
  line: 0,
56
48
  });
57
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DiagnosticsRule.d.ts","sourceRoot":"","sources":["../../../../src/cli/analyzeUsage/rules/DiagnosticsRule.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE/D,qBAAa,eAAgB,YAAW,IAAI;IAClC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAsD/F"}
1
+ {"version":3,"file":"DiagnosticsRule.d.ts","sourceRoot":"","sources":["../../../../src/cli/analyzeUsage/rules/DiagnosticsRule.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE/D,qBAAa,eAAgB,YAAW,IAAI;IAClC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CA0D/F"}
@@ -41,7 +41,10 @@ class DiagnosticsRule {
41
41
  else if (typeof messageText === 'object') {
42
42
  // For multiline messages, concatenate the text parts.
43
43
  const mainMessage = messageText.getMessageText();
44
- const details = messageText.getNext()?.map(part => part.getMessageText()).join(' ') ?? '';
44
+ const details = messageText
45
+ .getNext()
46
+ ?.map(part => part.getMessageText())
47
+ .join(' ') ?? '';
45
48
  findings.push({
46
49
  id: `TS_DIAGNOSTIC_${diagnostic.getCode()}`,
47
50
  category: 'TYPE_MISMATCH',
@@ -1,5 +1,5 @@
1
- import type { ProjectContext } from "../core/ProjectContext";
2
- import type { Contract, Finding, Rule, Stats } from "../types";
1
+ import type { ProjectContext } from '../core/ProjectContext';
2
+ import type { Contract, Finding, Rule, Stats } from '../types';
3
3
  export declare class ImportRule implements Rule {
4
4
  check(context: ProjectContext, contract: Contract, _stats: Stats): Promise<Finding[]>;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ImportRule.d.ts","sourceRoot":"","sources":["../../../../src/cli/analyzeUsage/rules/ImportRule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAG/D,qBAAa,UAAW,YAAW,IAAI;IAC/B,KAAK,CACT,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,EAElB,MAAM,EAAE,KAAK,GACZ,OAAO,CAAC,OAAO,EAAE,CAAC;CAiDtB"}
1
+ {"version":3,"file":"ImportRule.d.ts","sourceRoot":"","sources":["../../../../src/cli/analyzeUsage/rules/ImportRule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAG/D,qBAAa,UAAW,YAAW,IAAI;IAC7B,KAAK,CACP,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,EAElB,MAAM,EAAE,KAAK,GACd,OAAO,CAAC,OAAO,EAAE,CAAC;CA8CxB"}
@@ -11,34 +11,32 @@ class ImportRule {
11
11
  for (const file of context.getConsumerSourceFiles()) {
12
12
  for (const imp of file.getImportDeclarations()) {
13
13
  const moduleName = imp.getModuleSpecifierValue();
14
- if (moduleName !== "@lom-api" && !moduleName.startsWith("@lom-api/")) {
14
+ if (moduleName !== '@lom-api' && !moduleName.startsWith('@lom-api/')) {
15
15
  continue;
16
16
  }
17
17
  const importedSource = imp.getModuleSpecifierSourceFile();
18
18
  if (!importedSource) {
19
19
  findings.push({
20
- id: "INVALID_IMPORT_PATH",
21
- category: "INVALID_IMPORT",
22
- severity: "ERROR",
20
+ id: 'INVALID_IMPORT_PATH',
21
+ category: 'INVALID_IMPORT',
22
+ severity: 'ERROR',
23
23
  message: `Import "${moduleName}" could not be resolved.`,
24
24
  file: file.getFilePath(),
25
25
  line: imp.getStartLineNumber(),
26
26
  });
27
27
  continue;
28
28
  }
29
- const allowedExports = moduleName === "@lom-api"
30
- ? rootExports
31
- : new Set(importedSource.getExportedDeclarations().keys());
29
+ const allowedExports = moduleName === '@lom-api' ? rootExports : new Set(importedSource.getExportedDeclarations().keys());
32
30
  for (const namedImport of imp.getNamedImports()) {
33
31
  const importedName = namedImport.getName();
34
32
  if (allowedExports.has(importedName))
35
33
  continue;
36
34
  const suggestion = (0, fuzzy_1.findBestMatch)(importedName, [...allowedExports]);
37
35
  findings.push({
38
- id: "INVALID_IMPORT_NAME",
39
- category: suggestion ? "RENAMED_SYMBOL" : "MISSING_EXPORT",
40
- severity: "ERROR",
41
- message: `Import "${importedName}" is not exported by "${moduleName}".${suggestion ? ` Did you mean "${suggestion}"?` : ""}`,
36
+ id: 'INVALID_IMPORT_NAME',
37
+ category: suggestion ? 'RENAMED_SYMBOL' : 'MISSING_EXPORT',
38
+ severity: 'ERROR',
39
+ message: `Import "${importedName}" is not exported by "${moduleName}".${suggestion ? ` Did you mean "${suggestion}"?` : ''}`,
42
40
  file: file.getFilePath(),
43
41
  line: namedImport.getStartLineNumber(),
44
42
  context: { suggestion },
@@ -1,5 +1,5 @@
1
- import type { ProjectContext } from "../core/ProjectContext";
2
- import type { Contract, Finding, Rule, Stats } from "../types";
1
+ import type { ProjectContext } from '../core/ProjectContext';
2
+ import type { Contract, Finding, Rule, Stats } from '../types';
3
3
  export declare class ModelRule implements Rule {
4
4
  check(context: ProjectContext, contract: Contract, stats: Stats): Promise<Finding[]>;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ModelRule.d.ts","sourceRoot":"","sources":["../../../../src/cli/analyzeUsage/rules/ModelRule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE/D,qBAAa,SAAU,YAAW,IAAI;IAC9B,KAAK,CACT,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,OAAO,EAAE,CAAC;CAuCtB"}
1
+ {"version":3,"file":"ModelRule.d.ts","sourceRoot":"","sources":["../../../../src/cli/analyzeUsage/rules/ModelRule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE/D,qBAAa,SAAU,YAAW,IAAI;IAC5B,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CA+B7F"}
@@ -9,23 +9,19 @@ class ModelRule {
9
9
  for (const file of context.getConsumerSourceFiles()) {
10
10
  for (const imp of file.getImportDeclarations()) {
11
11
  const moduleName = imp.getModuleSpecifierValue();
12
- if (moduleName !== "@lom-api" && !moduleName.startsWith("@lom-api/")) {
12
+ if (moduleName !== '@lom-api' && !moduleName.startsWith('@lom-api/')) {
13
13
  continue;
14
14
  }
15
15
  for (const namedImport of imp.getNamedImports()) {
16
16
  const importedName = namedImport.getName();
17
- if (importedName.endsWith("Schema") ||
18
- importedName.endsWith("Service") ||
19
- importedName === "createClient") {
17
+ if (importedName.endsWith('Schema') || importedName.endsWith('Service') || importedName === 'createClient') {
20
18
  continue;
21
19
  }
22
20
  const localName = namedImport.getAliasNode()?.getText() || importedName;
23
21
  if (!knownModels.has(importedName))
24
22
  continue;
25
- const identifiers = file
26
- .getDescendantsOfKind(ts_morph_1.SyntaxKind.Identifier)
27
- .filter((id) => id.getText() === localName);
28
- const usedOutsideImport = identifiers.some((id) => id.getFirstAncestorByKind(ts_morph_1.SyntaxKind.ImportDeclaration) == null);
23
+ const identifiers = file.getDescendantsOfKind(ts_morph_1.SyntaxKind.Identifier).filter(id => id.getText() === localName);
24
+ const usedOutsideImport = identifiers.some(id => id.getFirstAncestorByKind(ts_morph_1.SyntaxKind.ImportDeclaration) == null);
29
25
  if (usedOutsideImport) {
30
26
  stats.usedModels.add(importedName);
31
27
  }
@@ -1,5 +1,5 @@
1
- import type { ProjectContext } from "../core/ProjectContext";
2
- import type { Contract, Finding, Rule, Stats } from "../types";
1
+ import type { ProjectContext } from '../core/ProjectContext';
2
+ import type { Contract, Finding, Rule, Stats } from '../types';
3
3
  export declare class SchemaRule implements Rule {
4
4
  check(context: ProjectContext, contract: Contract, stats: Stats): Promise<Finding[]>;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaRule.d.ts","sourceRoot":"","sources":["../../../../src/cli/analyzeUsage/rules/SchemaRule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAG/D,qBAAa,UAAW,YAAW,IAAI;IAC/B,KAAK,CACT,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,OAAO,EAAE,CAAC;CAgDtB"}
1
+ {"version":3,"file":"SchemaRule.d.ts","sourceRoot":"","sources":["../../../../src/cli/analyzeUsage/rules/SchemaRule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAG/D,qBAAa,UAAW,YAAW,IAAI;IAC7B,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CA4C7F"}
@@ -11,31 +11,29 @@ class SchemaRule {
11
11
  const imports = file.getImportDeclarations();
12
12
  for (const imp of imports) {
13
13
  const moduleName = imp.getModuleSpecifierValue();
14
- if (moduleName !== "@lom-api" && !moduleName.startsWith("@lom-api/")) {
14
+ if (moduleName !== '@lom-api' && !moduleName.startsWith('@lom-api/')) {
15
15
  continue;
16
16
  }
17
17
  for (const namedImport of imp.getNamedImports()) {
18
18
  const importedName = namedImport.getName();
19
- if (!importedName.endsWith("Schema"))
19
+ if (!importedName.endsWith('Schema'))
20
20
  continue;
21
21
  const localName = namedImport.getAliasNode()?.getText() || importedName;
22
22
  if (!knownSchemas.has(importedName)) {
23
23
  const suggestion = (0, fuzzy_1.findBestMatch)(importedName, contract.schemas);
24
24
  findings.push({
25
- id: "SCHEMA_NOT_FOUND",
26
- category: suggestion ? "RENAMED_SYMBOL" : "MISSING_EXPORT",
27
- severity: "ERROR",
28
- message: `Schema "${importedName}" was not found in the API.${suggestion ? ` Did you mean "${suggestion}"?` : ""}`,
25
+ id: 'SCHEMA_NOT_FOUND',
26
+ category: suggestion ? 'RENAMED_SYMBOL' : 'MISSING_EXPORT',
27
+ severity: 'ERROR',
28
+ message: `Schema "${importedName}" was not found in the API.${suggestion ? ` Did you mean "${suggestion}"?` : ''}`,
29
29
  file: file.getFilePath(),
30
30
  line: namedImport.getStartLineNumber(),
31
31
  context: { suggestion },
32
32
  });
33
33
  continue;
34
34
  }
35
- const identifiers = file
36
- .getDescendantsOfKind(ts_morph_1.SyntaxKind.Identifier)
37
- .filter((id) => id.getText() === localName);
38
- const usedOutsideImport = identifiers.some((id) => id.getFirstAncestorByKind(ts_morph_1.SyntaxKind.ImportDeclaration) == null);
35
+ const identifiers = file.getDescendantsOfKind(ts_morph_1.SyntaxKind.Identifier).filter(id => id.getText() === localName);
36
+ const usedOutsideImport = identifiers.some(id => id.getFirstAncestorByKind(ts_morph_1.SyntaxKind.ImportDeclaration) == null);
39
37
  if (usedOutsideImport) {
40
38
  stats.usedSchemas.add(importedName);
41
39
  }
@@ -1,6 +1,14 @@
1
- import type { ProjectContext } from "../core/ProjectContext";
2
- import type { Contract, Finding, Rule, Stats } from "../types";
1
+ import type { ProjectContext } from '../core/ProjectContext';
2
+ import type { Contract, Finding, Rule, Stats } from '../types';
3
+ /** Правило проверки вызовов методов сгенерированных сервисов в потребителях API. */
3
4
  export declare class ServiceRule implements Rule {
5
+ /**
6
+ * Проверяет вызовы методов сервисов и соответствие их сигнатурам.
7
+ * @param context контекст проекта
8
+ * @param contract контракт сгенерированного API
9
+ * @param stats накопительная статистика использования
10
+ * @returns список найденных проблем
11
+ */
4
12
  check(context: ProjectContext, contract: Contract, stats: Stats): Promise<Finding[]>;
5
13
  private getExpectedParameterType;
6
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceRule.d.ts","sourceRoot":"","sources":["../../../../src/cli/analyzeUsage/rules/ServiceRule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAG/D,qBAAa,WAAY,YAAW,IAAI;IAChC,KAAK,CACT,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,OAAO,EAAE,CAAC;IA0FrB,OAAO,CAAC,wBAAwB;CAiBjC"}
1
+ {"version":3,"file":"ServiceRule.d.ts","sourceRoot":"","sources":["../../../../src/cli/analyzeUsage/rules/ServiceRule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAG/D,oFAAoF;AACpF,qBAAa,WAAY,YAAW,IAAI;IACpC;;;;;;OAMG;IACG,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAgF1F,OAAO,CAAC,wBAAwB;CASnC"}