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
@@ -0,0 +1,163 @@
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.expandOpenApiRefsForSemanticDiff = expandOpenApiRefsForSemanticDiff;
7
+ const path_1 = __importDefault(require("path"));
8
+ const pathHelpers_1 = require("../../common/utils/pathHelpers");
9
+ function isRecord(value) {
10
+ return !!value && typeof value === 'object' && !Array.isArray(value);
11
+ }
12
+ function isUrlLike(value) {
13
+ return /^[a-z][a-z\d+\-.]*:/i.test(value);
14
+ }
15
+ function normalizeSourceFile(sourceFile) {
16
+ if (!sourceFile || isUrlLike(sourceFile)) {
17
+ return sourceFile;
18
+ }
19
+ return (0, pathHelpers_1.normalizeHelper)(sourceFile);
20
+ }
21
+ function parseRef(ref) {
22
+ const fragmentIndex = ref.indexOf('#');
23
+ if (fragmentIndex === -1) {
24
+ return { file: ref || undefined };
25
+ }
26
+ const file = ref.slice(0, fragmentIndex);
27
+ const pointer = ref.slice(fragmentIndex);
28
+ return {
29
+ file: file || undefined,
30
+ pointer: pointer || '#',
31
+ };
32
+ }
33
+ function normalizeRefFile(file, currentSourceFile) {
34
+ if (!file) {
35
+ return normalizeSourceFile(currentSourceFile);
36
+ }
37
+ if (isUrlLike(file)) {
38
+ return file;
39
+ }
40
+ if (path_1.default.isAbsolute(file)) {
41
+ return (0, pathHelpers_1.normalizeHelper)(file);
42
+ }
43
+ if (currentSourceFile && !isUrlLike(currentSourceFile)) {
44
+ return (0, pathHelpers_1.resolveHelper)(path_1.default.dirname(currentSourceFile), file);
45
+ }
46
+ return (0, pathHelpers_1.normalizeHelper)(file);
47
+ }
48
+ function createCanonicalRef(ref, currentSourceFile) {
49
+ const parsed = parseRef(ref);
50
+ const sourceFile = normalizeRefFile(parsed.file, currentSourceFile);
51
+ const pointer = parsed.pointer;
52
+ if (!sourceFile) {
53
+ return { canonicalRef: pointer ?? ref, pointer };
54
+ }
55
+ return {
56
+ canonicalRef: `${sourceFile}${pointer ?? ''}`,
57
+ sourceFile,
58
+ pointer,
59
+ };
60
+ }
61
+ function decodeJsonPointerSegment(segment) {
62
+ return decodeURIComponent(segment).replace(/~1/g, '/').replace(/~0/g, '~');
63
+ }
64
+ function resolveJsonPointer(root, pointer) {
65
+ if (!pointer || pointer === '#') {
66
+ return root;
67
+ }
68
+ if (!pointer.startsWith('#/')) {
69
+ return undefined;
70
+ }
71
+ return pointer
72
+ .slice(2)
73
+ .split('/')
74
+ .map(decodeJsonPointerSegment)
75
+ .reduce((current, segment) => {
76
+ if (Array.isArray(current)) {
77
+ const index = Number(segment);
78
+ return Number.isInteger(index) ? current[index] : undefined;
79
+ }
80
+ if (isRecord(current)) {
81
+ return current[segment];
82
+ }
83
+ return undefined;
84
+ }, root);
85
+ }
86
+ function readRefFromResolver(refs, candidates) {
87
+ if (!refs) {
88
+ return undefined;
89
+ }
90
+ for (const candidate of candidates) {
91
+ try {
92
+ if (refs.exists && !refs.exists(candidate)) {
93
+ continue;
94
+ }
95
+ const value = refs.get(candidate);
96
+ if (value !== undefined) {
97
+ return value;
98
+ }
99
+ }
100
+ catch {
101
+ continue;
102
+ }
103
+ }
104
+ return undefined;
105
+ }
106
+ function resolveRef(root, ref, currentSourceFile, options) {
107
+ const normalized = createCanonicalRef(ref, currentSourceFile);
108
+ const candidates = [normalized.canonicalRef, ref];
109
+ const resolvedFromRefs = readRefFromResolver(options.refs, [...new Set(candidates)]);
110
+ if (resolvedFromRefs !== undefined) {
111
+ return {
112
+ canonicalRef: normalized.canonicalRef,
113
+ sourceFile: normalized.sourceFile,
114
+ value: resolvedFromRefs,
115
+ };
116
+ }
117
+ const rootSourceFile = normalizeSourceFile(options.sourceFile);
118
+ const isLocalRootRef = !normalized.sourceFile || normalized.sourceFile === rootSourceFile;
119
+ if (isLocalRootRef) {
120
+ const resolvedFromRoot = resolveJsonPointer(root, normalized.pointer);
121
+ if (resolvedFromRoot !== undefined) {
122
+ return {
123
+ canonicalRef: normalized.canonicalRef,
124
+ sourceFile: rootSourceFile,
125
+ value: resolvedFromRoot,
126
+ };
127
+ }
128
+ }
129
+ return null;
130
+ }
131
+ function expandNode(root, node, currentSourceFile, options, refStack) {
132
+ if (Array.isArray(node)) {
133
+ return node.map(item => expandNode(root, item, currentSourceFile, options, refStack));
134
+ }
135
+ if (!isRecord(node)) {
136
+ return node;
137
+ }
138
+ const ref = node.$ref;
139
+ if (typeof ref === 'string') {
140
+ const target = resolveRef(root, ref, currentSourceFile, options);
141
+ if (!target) {
142
+ return { ...node };
143
+ }
144
+ if (refStack.has(target.canonicalRef)) {
145
+ return { $ref: ref };
146
+ }
147
+ const nextStack = new Set(refStack);
148
+ nextStack.add(target.canonicalRef);
149
+ return expandNode(root, target.value, target.sourceFile ?? currentSourceFile, options, nextStack);
150
+ }
151
+ return Object.fromEntries(Object.entries(node).map(([key, value]) => [key, expandNode(root, value, currentSourceFile, options, refStack)]));
152
+ }
153
+ /**
154
+ * Строит клон спецификации с развёрнутыми refs для семантического сравнения.
155
+ * Циклы и неразрешённые refs остаются стабильными `$ref`-объектами.
156
+ * @param root корневой узел OpenAPI-документа
157
+ * @param [options] опции резолва ссылок
158
+ * @returns клон с развёрнутыми refs
159
+ */
160
+ function expandOpenApiRefsForSemanticDiff(root, options = {}) {
161
+ const sourceFile = normalizeSourceFile(options.sourceFile);
162
+ return expandNode(root, root, sourceFile, options, new Set());
163
+ }
@@ -1,4 +1,10 @@
1
1
  import { Context } from '../Context';
2
2
  import { CommonOpenApi } from '../types/shared/CommonOpenApi.model';
3
+ /**
4
+ * Загружает и резолвит OpenAPI-спецификацию для генерации клиента.
5
+ * @param context контекст генерации
6
+ * @param input путь к файлу спецификации
7
+ * @returns загруженная OpenAPI-спецификация
8
+ */
3
9
  export declare function getOpenApiSpec(context: Context, input: string): Promise<CommonOpenApi>;
4
10
  //# sourceMappingURL=getOpenApiSpec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getOpenApiSpec.d.ts","sourceRoot":"","sources":["../../../src/core/utils/getOpenApiSpec.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE,wBAAsB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAyB5F"}
1
+ {"version":3,"file":"getOpenApiSpec.d.ts","sourceRoot":"","sources":["../../../src/core/utils/getOpenApiSpec.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAyB5F"}
@@ -7,6 +7,12 @@ exports.getOpenApiSpec = getOpenApiSpec;
7
7
  const swagger_parser_1 = __importDefault(require("@apidevtools/swagger-parser"));
8
8
  const fileSystemHelpers_1 = require("../../common/utils/fileSystemHelpers");
9
9
  const pathHelpers_1 = require("../../common/utils/pathHelpers");
10
+ /**
11
+ * Загружает и резолвит OpenAPI-спецификацию для генерации клиента.
12
+ * @param context контекст генерации
13
+ * @param input путь к файлу спецификации
14
+ * @returns загруженная OpenAPI-спецификация
15
+ */
10
16
  async function getOpenApiSpec(context, input) {
11
17
  const absoluteInput = (0, pathHelpers_1.resolveHelper)(process.cwd(), input);
12
18
  if (!input) {
@@ -1,4 +1,4 @@
1
- import { OperationError } from "../types/shared/OperationError.model";
2
- import { OperationResponse } from "../types/shared/OperationResponse.model";
1
+ import { OperationError } from '../types/shared/OperationError.model';
2
+ import { OperationResponse } from '../types/shared/OperationResponse.model';
3
3
  export declare function getOperationErrors(operationResponses: OperationResponse[]): OperationError[];
4
4
  //# sourceMappingURL=getOperationErrors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getOperationErrors.d.ts","sourceRoot":"","sources":["../../../src/core/utils/getOperationErrors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAI5E,wBAAgB,kBAAkB,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,cAAc,EAAE,CAS5F"}
1
+ {"version":3,"file":"getOperationErrors.d.ts","sourceRoot":"","sources":["../../../src/core/utils/getOperationErrors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAG5E,wBAAgB,kBAAkB,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,cAAc,EAAE,CAS5F"}
@@ -1,3 +1,3 @@
1
- import { OperationResponse } from "../types/shared/OperationResponse.model";
1
+ import { OperationResponse } from '../types/shared/OperationResponse.model';
2
2
  export declare function getOperationResults(operationResponses: OperationResponse[]): OperationResponse[];
3
3
  //# sourceMappingURL=getOperationResults.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getPropertyGroupSimple.d.ts","sourceRoot":"","sources":["../../../src/core/utils/getPropertyGroupSimple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,GAAG,mBAAmB,CAIrE"}
1
+ {"version":3,"file":"getPropertyGroupSimple.d.ts","sourceRoot":"","sources":["../../../src/core/utils/getPropertyGroupSimple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,GAAG,mBAAmB,CAErE"}
@@ -3,7 +3,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getPropertyGroupSimple = getPropertyGroupSimple;
4
4
  // Auxiliary function for defining a property group
5
5
  function getPropertyGroupSimple(prop) {
6
- return prop.isRequired && prop.default === undefined
7
- ? 'requires-value'
8
- : 'other';
6
+ return prop.isRequired && prop.default === undefined ? 'requires-value' : 'other';
9
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"isSubdirectory.d.ts","sourceRoot":"","sources":["../../../src/core/utils/isSubdirectory.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,WAK3D"}
1
+ {"version":3,"file":"isSubdirectory.d.ts","sourceRoot":"","sources":["../../../src/core/utils/isSubdirectory.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,WAK3D"}
@@ -1,39 +1,20 @@
1
1
  import type { Logger } from '../../common/Logger';
2
- import type { DiffInfo } from '../types/shared/DiffInfo.model';
3
- import type { MiracleEntry } from '../types/shared/Miracle.model';
4
- export interface DiffReportEntry extends DiffInfo {
5
- action: DiffInfo['action'];
6
- }
7
- export interface DiffReport {
8
- version?: string;
9
- timestamp?: string;
10
- metadata?: {
11
- base?: string;
12
- target?: string;
13
- baseHash?: string;
14
- targetHash?: string;
15
- };
16
- stats?: {
17
- totalChanges?: number;
18
- added?: number;
19
- removed?: number;
20
- changed?: number;
21
- ignored?: number;
22
- };
23
- diff?: {
24
- breaking?: DiffReportEntry[];
25
- warnings?: DiffReportEntry[];
26
- info?: DiffReportEntry[];
27
- all?: DiffReportEntry[];
28
- };
29
- miracles?: MiracleEntry[];
30
- }
2
+ import { type DiffReport, type DiffReportEntry } from '../types/DiffReport.model';
3
+ /** Реэкспорт типов legacy diff-отчёта. */
4
+ export type { DiffReport, DiffReportEntry };
31
5
  type LoadDiffReportParams = {
32
6
  useHistory?: boolean;
33
7
  diffReport?: string;
34
8
  inputPath?: string;
35
9
  logger: Logger;
36
10
  };
11
+ /**
12
+ * Загружает diff-отчёт с диска и приводит его к legacy-формату для генерации.
13
+ * @param useHistory признак использования истории изменений; отчёт загружается только при true
14
+ * @param [diffReport] путь к файлу отчёта
15
+ * @param [inputPath] путь к входной спецификации для проверки актуальности отчёта
16
+ * @param logger логгер для диагностических сообщений
17
+ * @returns legacy diff-отчёт или null, если отчёт отсутствует или устарел
18
+ */
37
19
  export declare const loadDiffReport: ({ useHistory, diffReport, inputPath, logger }: LoadDiffReportParams) => DiffReport | null;
38
- export {};
39
20
  //# sourceMappingURL=loadDiffReport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadDiffReport.d.ts","sourceRoot":"","sources":["../../../src/core/utils/loadDiffReport.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,WAAW,eAAgB,SAAQ,QAAQ;IAC7C,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,KAAK,CAAC,EAAE;QACJ,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,IAAI,CAAC,EAAE;QACH,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;QAC7B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;QAC7B,IAAI,CAAC,EAAE,eAAe,EAAE,CAAC;QACzB,GAAG,CAAC,EAAE,eAAe,EAAE,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC7B;AAED,KAAK,oBAAoB,GAAG;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAaF,eAAO,MAAM,cAAc,GAAI,+CAA+C,oBAAoB,KAAG,UAAU,GAAG,IA8BjH,CAAC"}
1
+ {"version":3,"file":"loadDiffReport.d.ts","sourceRoot":"","sources":["../../../src/core/utils/loadDiffReport.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAA8D,MAAM,2BAA2B,CAAC;AAG9I,0CAA0C;AAC1C,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;AAE5C,KAAK,oBAAoB,GAAG;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAqDF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GAAI,+CAA+C,oBAAoB,KAAG,UAAU,GAAG,IAuDjH,CAAC"}
@@ -6,6 +6,43 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.loadDiffReport = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const Consts_1 = require("../../common/Consts");
9
+ const LoggerMessages_1 = require("../../common/LoggerMessages");
10
+ const analyzeOpenApiDiff_1 = require("../semanticDiff/analyzeOpenApiDiff");
11
+ const DiffReport_model_1 = require("../types/DiffReport.model");
12
+ const adapters_1 = require("./adapters");
13
+ const isSemanticDiffReport = (value) => {
14
+ if (!value || typeof value !== 'object') {
15
+ return false;
16
+ }
17
+ const report = value;
18
+ return report.schemaVersion === analyzeOpenApiDiff_1.SEMANTIC_DIFF_REPORT_SCHEMA_VERSION && Array.isArray(report.changes);
19
+ };
20
+ const isUnifiedDiffReport = (value) => {
21
+ if (!value || typeof value !== 'object') {
22
+ return false;
23
+ }
24
+ const report = value;
25
+ return report.schemaVersion === DiffReport_model_1.UNIFIED_DIFF_REPORT_SCHEMA_VERSION && !!report.structural && Array.isArray(report.structural.diff?.all);
26
+ };
27
+ const convertSemanticReportToLegacy = (report) => {
28
+ const structural = (0, adapters_1.adaptSemanticToStructural)(report);
29
+ return {
30
+ version: report.schemaVersion,
31
+ diff: structural.diff,
32
+ miracles: structural.miracles,
33
+ stats: structural.stats,
34
+ };
35
+ };
36
+ const convertUnifiedReportToLegacy = (report) => {
37
+ return {
38
+ version: report.schemaVersion,
39
+ timestamp: report.timestamp,
40
+ metadata: report.metadata,
41
+ diff: report.structural.diff,
42
+ miracles: report.structural.miracles,
43
+ stats: report.structural.stats,
44
+ };
45
+ };
9
46
  const isFreshEnough = (reportPath, inputPath) => {
10
47
  if (!inputPath)
11
48
  return true;
@@ -18,33 +55,62 @@ const isFreshEnough = (reportPath, inputPath) => {
18
55
  return true;
19
56
  }
20
57
  };
58
+ /**
59
+ * Загружает diff-отчёт с диска и приводит его к legacy-формату для генерации.
60
+ * @param useHistory признак использования истории изменений; отчёт загружается только при true
61
+ * @param [diffReport] путь к файлу отчёта
62
+ * @param [inputPath] путь к входной спецификации для проверки актуальности отчёта
63
+ * @param logger логгер для диагностических сообщений
64
+ * @returns legacy diff-отчёт или null, если отчёт отсутствует или устарел
65
+ */
21
66
  const loadDiffReport = ({ useHistory, diffReport, inputPath, logger }) => {
22
- const shouldLoad = useHistory || !!diffReport;
23
- if (!shouldLoad)
67
+ if (!useHistory)
24
68
  return null;
25
69
  const reportPath = diffReport || Consts_1.DEFAULT_ANALYZE_DIFF_REPORT_PATH;
26
70
  if (!fs_1.default.existsSync(reportPath)) {
27
- logger.info(`[openapi-codegen] Diff report not found at "${reportPath}". Skipping history annotations.`);
71
+ logger.info(LoggerMessages_1.LOGGER_MESSAGES.DIFF_REPORT.NOT_FOUND(reportPath));
28
72
  return null;
29
73
  }
30
74
  if (!isFreshEnough(reportPath, inputPath)) {
31
- logger.warn(`[openapi-codegen] Diff report "${reportPath}" is older than the input spec. Skipping history annotations.`);
75
+ logger.warn(LoggerMessages_1.LOGGER_MESSAGES.DIFF_REPORT.STALE(reportPath));
32
76
  return null;
33
77
  }
34
78
  try {
35
79
  const raw = fs_1.default.readFileSync(reportPath, 'utf-8');
36
80
  const parsed = JSON.parse(raw);
37
- const hasDiffEntries = !!parsed?.diff?.all?.length;
38
- const hasMiracles = !!parsed?.miracles?.length;
81
+ if (isUnifiedDiffReport(parsed)) {
82
+ const legacyReport = convertUnifiedReportToLegacy(parsed);
83
+ const hasDiffEntries = !!legacyReport.diff?.all?.length;
84
+ const hasMiracles = !!legacyReport.miracles?.length;
85
+ if (!hasDiffEntries && !hasMiracles) {
86
+ logger.info(LoggerMessages_1.LOGGER_MESSAGES.DIFF_REPORT.EMPTY(reportPath));
87
+ return null;
88
+ }
89
+ logger.info(LoggerMessages_1.LOGGER_MESSAGES.DIFF_REPORT.LOADED(reportPath, legacyReport.diff?.all?.length ?? 0, legacyReport.miracles?.length ?? 0));
90
+ return legacyReport;
91
+ }
92
+ if (isSemanticDiffReport(parsed)) {
93
+ if (!parsed.changes.length) {
94
+ logger.info(LoggerMessages_1.LOGGER_MESSAGES.DIFF_REPORT.EMPTY(reportPath));
95
+ return null;
96
+ }
97
+ const legacyReport = convertSemanticReportToLegacy(parsed);
98
+ logger.info(LoggerMessages_1.LOGGER_MESSAGES.DIFF_REPORT.LOADED(reportPath, legacyReport.diff?.all?.length ?? 0, legacyReport.miracles?.length ?? 0));
99
+ return legacyReport;
100
+ }
101
+ const legacyReport = parsed;
102
+ const hasDiffEntries = !!legacyReport?.diff?.all?.length;
103
+ const hasMiracles = !!legacyReport?.miracles?.length;
39
104
  if (!hasDiffEntries && !hasMiracles) {
40
- logger.info(`[openapi-codegen] Diff report "${reportPath}" has no entries. Skipping history annotations.`);
105
+ logger.info(LoggerMessages_1.LOGGER_MESSAGES.DIFF_REPORT.EMPTY(reportPath));
41
106
  return null;
42
107
  }
43
- return parsed;
108
+ logger.info(LoggerMessages_1.LOGGER_MESSAGES.DIFF_REPORT.LOADED(reportPath, legacyReport.diff?.all?.length ?? 0, legacyReport.miracles?.length ?? 0));
109
+ return legacyReport;
44
110
  }
45
111
  catch (error) {
46
112
  const message = error instanceof Error ? error.message : String(error);
47
- logger.warn(`[openapi-codegen] Failed to read diff report "${reportPath}": ${message}`);
113
+ logger.warn(LoggerMessages_1.LOGGER_MESSAGES.DIFF_REPORT.READ_FAILED(reportPath, message));
48
114
  return null;
49
115
  }
50
116
  };
@@ -0,0 +1,15 @@
1
+ import { CommonOpenApi } from '../types/shared/CommonOpenApi.model';
2
+ /**
3
+ * Загружает OpenAPI-файл для семантического diff без полного dereference.
4
+ * @param input путь к файлу спецификации
5
+ * @returns спецификация с развёрнутыми refs для семантического сравнения
6
+ */
7
+ export declare function loadSemanticOpenApiSpec(input: string): Promise<CommonOpenApi>;
8
+ /**
9
+ * Разворачивает уже загруженный OpenAPI-объект для семантического diff.
10
+ * @param spec загруженная спецификация
11
+ * @param [sourceFile] исходный путь к файлу для резолва внешних refs
12
+ * @returns спецификация с развёрнутыми refs для семантического сравнения
13
+ */
14
+ export declare function loadSemanticOpenApiObject(spec: unknown, sourceFile?: string): Promise<CommonOpenApi>;
15
+ //# sourceMappingURL=loadSemanticOpenApiSpec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadSemanticOpenApiSpec.d.ts","sourceRoot":"","sources":["../../../src/core/utils/loadSemanticOpenApiSpec.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAqBpE;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAqBnF;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAW1G"}
@@ -0,0 +1,61 @@
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.loadSemanticOpenApiSpec = loadSemanticOpenApiSpec;
7
+ exports.loadSemanticOpenApiObject = loadSemanticOpenApiObject;
8
+ const swagger_parser_1 = __importDefault(require("@apidevtools/swagger-parser"));
9
+ const fileSystemHelpers_1 = require("../../common/utils/fileSystemHelpers");
10
+ const pathHelpers_1 = require("../../common/utils/pathHelpers");
11
+ const expandOpenApiRefsForSemanticDiff_1 = require("./expandOpenApiRefsForSemanticDiff");
12
+ function createSwaggerRefsResolver(refs) {
13
+ return {
14
+ exists: ref => refs.exists(ref),
15
+ get: ref => refs.get(ref),
16
+ };
17
+ }
18
+ function assertOpenApiObject(spec, source) {
19
+ if (!spec || typeof spec !== 'object' || Array.isArray(spec)) {
20
+ throw new Error(`Invalid OpenAPI schema at ${source}`);
21
+ }
22
+ }
23
+ /**
24
+ * Загружает OpenAPI-файл для семантического diff без полного dereference.
25
+ * @param input путь к файлу спецификации
26
+ * @returns спецификация с развёрнутыми refs для семантического сравнения
27
+ */
28
+ async function loadSemanticOpenApiSpec(input) {
29
+ const absoluteInput = (0, pathHelpers_1.resolveHelper)(process.cwd(), input);
30
+ if (!input) {
31
+ throw new Error(`OpenAPI spec path is empty`);
32
+ }
33
+ const exists = await fileSystemHelpers_1.fileSystemHelpers.exists(absoluteInput);
34
+ if (!exists) {
35
+ throw new Error(`OpenAPI spec not found: ${absoluteInput}`);
36
+ }
37
+ const parser = new swagger_parser_1.default();
38
+ const resolved = (await parser.resolve(absoluteInput));
39
+ const raw = resolved.get(absoluteInput);
40
+ assertOpenApiObject(raw, absoluteInput);
41
+ return (0, expandOpenApiRefsForSemanticDiff_1.expandOpenApiRefsForSemanticDiff)(raw, {
42
+ refs: createSwaggerRefsResolver(resolved),
43
+ sourceFile: absoluteInput,
44
+ });
45
+ }
46
+ /**
47
+ * Разворачивает уже загруженный OpenAPI-объект для семантического diff.
48
+ * @param spec загруженная спецификация
49
+ * @param [sourceFile] исходный путь к файлу для резолва внешних refs
50
+ * @returns спецификация с развёрнутыми refs для семантического сравнения
51
+ */
52
+ async function loadSemanticOpenApiObject(spec, sourceFile) {
53
+ assertOpenApiObject(spec, sourceFile ?? 'in-memory OpenAPI object');
54
+ const parser = new swagger_parser_1.default();
55
+ const resolved = (await parser.resolve(spec));
56
+ const absoluteSourceFile = sourceFile ? (0, pathHelpers_1.resolveHelper)(process.cwd(), sourceFile) : undefined;
57
+ return (0, expandOpenApiRefsForSemanticDiff_1.expandOpenApiRefsForSemanticDiff)(spec, {
58
+ refs: createSwaggerRefsResolver(resolved),
59
+ sourceFile: absoluteSourceFile,
60
+ });
61
+ }
@@ -1,11 +1,18 @@
1
1
  import type { Model } from '../types/shared/Model.model';
2
+ type AliasAssignable = {
3
+ name: string;
4
+ alias: string;
5
+ };
6
+ /**
7
+ * Назначает различающие алиасы, когда несколько элементов имеют одно имя.
8
+ * Первое вхождение сохраняет имя без алиаса; следующие получают $2, $3 и т.д.
9
+ * @param items массив элементов с полями name и alias
10
+ * @returns тот же массив с обновлёнными алиасами
11
+ */
12
+ export declare const assignDuplicateAliases: <T extends AliasAssignable>(items: T[]) => T[];
2
13
  /**
3
14
  * Assigns alias to models with the same name.
4
- * Modifies objects of in-place models and returns an array.
5
- *
6
- * Example: if there are two models with name="Pet", the following will be assigned:
7
- * - first: alias="Pet$1"
8
- * - second: alias="Pet$2"
15
+ * Modifies objects in-place and returns the same array.
9
16
  *
10
17
  * @param models - an array of models sorted by name
11
18
  * @returns the same array of models (modified)
@@ -25,4 +32,5 @@ export declare function setDuplicateModelAliases(models: Model[]): Model[];
25
32
  * @returns the same array of models (modified)
26
33
  */
27
34
  export declare function resolveModelImports(models: Model[], outputModelsDir: string): Model[];
35
+ export {};
28
36
  //# sourceMappingURL=modelHelpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modelHelpers.d.ts","sourceRoot":"","sources":["../../../src/core/utils/modelHelpers.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAkBjE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,MAAM,GAAG,KAAK,EAAE,CA4ErF"}
1
+ {"version":3,"file":"modelHelpers.d.ts","sourceRoot":"","sources":["../../../src/core/utils/modelHelpers.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEzD,KAAK,eAAe,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,eAAe,EAAE,OAAO,CAAC,EAAE,KAAG,CAAC,EAoB/E,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAEjE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,MAAM,GAAG,KAAK,EAAE,CAyErF"}
@@ -3,40 +3,45 @@ 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.assignDuplicateAliases = void 0;
6
7
  exports.setDuplicateModelAliases = setDuplicateModelAliases;
7
8
  exports.resolveModelImports = resolveModelImports;
8
9
  const path_1 = __importDefault(require("path"));
9
10
  const pathHelpers_1 = require("../../common/utils/pathHelpers");
11
+ /**
12
+ * Назначает различающие алиасы, когда несколько элементов имеют одно имя.
13
+ * Первое вхождение сохраняет имя без алиаса; следующие получают $2, $3 и т.д.
14
+ * @param items массив элементов с полями name и alias
15
+ * @returns тот же массив с обновлёнными алиасами
16
+ */
17
+ const assignDuplicateAliases = (items) => {
18
+ const nameCounts = new Map();
19
+ items.forEach(item => {
20
+ nameCounts.set(item.name, (nameCounts.get(item.name) ?? 0) + 1);
21
+ });
22
+ const nameIndex = new Map();
23
+ items.forEach(item => {
24
+ const count = nameCounts.get(item.name) ?? 1;
25
+ if (count <= 1) {
26
+ item.alias = '';
27
+ return;
28
+ }
29
+ const index = (nameIndex.get(item.name) ?? 0) + 1;
30
+ nameIndex.set(item.name, index);
31
+ item.alias = index === 1 ? '' : `${item.name}$${index}`;
32
+ });
33
+ return items;
34
+ };
35
+ exports.assignDuplicateAliases = assignDuplicateAliases;
10
36
  /**
11
37
  * Assigns alias to models with the same name.
12
- * Modifies objects of in-place models and returns an array.
13
- *
14
- * Example: if there are two models with name="Pet", the following will be assigned:
15
- * - first: alias="Pet$1"
16
- * - second: alias="Pet$2"
38
+ * Modifies objects in-place and returns the same array.
17
39
  *
18
40
  * @param models - an array of models sorted by name
19
41
  * @returns the same array of models (modified)
20
42
  */
21
43
  function setDuplicateModelAliases(models) {
22
- let previous;
23
- let index = 1;
24
- models.forEach(model => {
25
- if (previous && previous.name === model.name) {
26
- if (index === 1) {
27
- previous.alias = `${model.name}$${index}`;
28
- index++;
29
- }
30
- model.alias = `${model.name}$${index}`;
31
- index++;
32
- }
33
- else {
34
- model.alias = '';
35
- index = 1;
36
- }
37
- previous = model;
38
- });
39
- return models;
44
+ return (0, exports.assignDuplicateAliases)(models);
40
45
  }
41
46
  /**
42
47
  * Adjusts the imports fields of the models to relative paths and correct aliases,
@@ -1 +1 @@
1
- {"version":3,"file":"normalizeString.d.ts","sourceRoot":"","sources":["../../../src/core/utils/normalizeString.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAUzE"}
1
+ {"version":3,"file":"normalizeString.d.ts","sourceRoot":"","sources":["../../../src/core/utils/normalizeString.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAMzE"}
@@ -6,9 +6,5 @@ function normalizeString(value) {
6
6
  if (!value) {
7
7
  return value;
8
8
  }
9
- return value
10
- .replace(Consts_1.REGEX_BACKSLASH, '/')
11
- .replace(Consts_1.REGEX_MULTIPLE_SLASHES, '/')
12
- .replace(Consts_1.REGEX_DOT_SLASH, '/')
13
- .replace(Consts_1.REGEX_LEADING_DOT_SLASH, './');
9
+ return value.replace(Consts_1.REGEX_BACKSLASH, '/').replace(Consts_1.REGEX_MULTIPLE_SLASHES, '/').replace(Consts_1.REGEX_DOT_SLASH, '/').replace(Consts_1.REGEX_LEADING_DOT_SLASH, './');
14
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"postProcessServiceImports.d.ts","sourceRoot":"","sources":["../../../src/core/utils/postProcessServiceImports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAI7D;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAIpE"}
1
+ {"version":3,"file":"postProcessServiceImports.d.ts","sourceRoot":"","sources":["../../../src/core/utils/postProcessServiceImports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAI7D;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAEpE"}
@@ -8,7 +8,5 @@ const unique_1 = require("./unique");
8
8
  * @param service
9
9
  */
10
10
  function postProcessServiceImports(service) {
11
- return service.imports
12
- .filter(unique_1.unique)
13
- .sort(sort_1.sort);
11
+ return service.imports.filter(unique_1.unique).sort(sort_1.sort);
14
12
  }