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

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 (232) hide show
  1. package/README.md +3 -0
  2. package/README.rus.md +3 -0
  3. package/dist/cli/analyzeDiff/ignoreRules.d.ts +0 -6
  4. package/dist/cli/analyzeDiff/ignoreRules.d.ts.map +1 -1
  5. package/dist/cli/analyzeDiff/ignoreRules.js +2 -3
  6. package/dist/cli/analyzeUsage/analyzeUsage.d.ts +2 -2
  7. package/dist/cli/analyzeUsage/analyzeUsage.d.ts.map +1 -1
  8. package/dist/cli/analyzeUsage/analyzeUsage.js +10 -12
  9. package/dist/cli/analyzeUsage/core/ProjectContext.d.ts +1 -1
  10. package/dist/cli/analyzeUsage/core/ProjectContext.d.ts.map +1 -1
  11. package/dist/cli/analyzeUsage/core/ProjectContext.js +5 -10
  12. package/dist/cli/analyzeUsage/core/Scanner.d.ts.map +1 -1
  13. package/dist/cli/analyzeUsage/rules/ClientRule.d.ts +2 -2
  14. package/dist/cli/analyzeUsage/rules/ClientRule.d.ts.map +1 -1
  15. package/dist/cli/analyzeUsage/rules/ClientRule.js +19 -21
  16. package/dist/cli/analyzeUsage/rules/CoverageRule.d.ts +2 -2
  17. package/dist/cli/analyzeUsage/rules/CoverageRule.d.ts.map +1 -1
  18. package/dist/cli/analyzeUsage/rules/CoverageRule.js +16 -24
  19. package/dist/cli/analyzeUsage/rules/DiagnosticsRule.d.ts.map +1 -1
  20. package/dist/cli/analyzeUsage/rules/DiagnosticsRule.js +4 -1
  21. package/dist/cli/analyzeUsage/rules/ImportRule.d.ts +2 -2
  22. package/dist/cli/analyzeUsage/rules/ImportRule.d.ts.map +1 -1
  23. package/dist/cli/analyzeUsage/rules/ImportRule.js +9 -11
  24. package/dist/cli/analyzeUsage/rules/ModelRule.d.ts +2 -2
  25. package/dist/cli/analyzeUsage/rules/ModelRule.d.ts.map +1 -1
  26. package/dist/cli/analyzeUsage/rules/ModelRule.js +4 -8
  27. package/dist/cli/analyzeUsage/rules/SchemaRule.d.ts +2 -2
  28. package/dist/cli/analyzeUsage/rules/SchemaRule.d.ts.map +1 -1
  29. package/dist/cli/analyzeUsage/rules/SchemaRule.js +8 -10
  30. package/dist/cli/analyzeUsage/rules/ServiceRule.d.ts +2 -2
  31. package/dist/cli/analyzeUsage/rules/ServiceRule.d.ts.map +1 -1
  32. package/dist/cli/analyzeUsage/rules/ServiceRule.js +17 -23
  33. package/dist/cli/analyzeUsage/types.d.ts +4 -4
  34. package/dist/cli/analyzeUsage/types.d.ts.map +1 -1
  35. package/dist/cli/analyzeUsage/utils/fuzzy.d.ts.map +1 -1
  36. package/dist/cli/analyzeUsage/utils/report.d.ts +1 -1
  37. package/dist/cli/analyzeUsage/utils/report.d.ts.map +1 -1
  38. package/dist/cli/analyzeUsage/utils/report.js +8 -8
  39. package/dist/cli/checkAndUpdateConfig/utils/removeDefaultConfigValues.d.ts.map +1 -1
  40. package/dist/cli/checkAndUpdateConfig/utils/validateAndMigrateConfigData.d.ts.map +1 -1
  41. package/dist/cli/checkAndUpdateConfig/utils/validateAndMigrateConfigData.js +1 -1
  42. package/dist/cli/checkAndUpdateConfig/utils/writeConfigFile.d.ts +1 -1
  43. package/dist/cli/checkAndUpdateConfig/utils/writeConfigFile.d.ts.map +1 -1
  44. package/dist/cli/checkAndUpdateConfig/utils/writeConfigFile.js +1 -1
  45. package/dist/cli/generateOpenApiClient/generateOpenApiClient.d.ts.map +1 -1
  46. package/dist/cli/generateOpenApiClient/generateOpenApiClient.js +9 -1
  47. package/dist/cli/index.js +3 -2
  48. package/dist/cli/initOpenApiConfig/utils/__tests__/buildConfig.test.js +2 -8
  49. package/dist/cli/initOpenApiConfig/utils/registerHandlebarTemplates.d.ts.map +1 -1
  50. package/dist/cli/interactive/constants.d.ts +0 -4
  51. package/dist/cli/interactive/constants.d.ts.map +1 -1
  52. package/dist/cli/interactive/constants.js +1 -5
  53. package/dist/cli/previewChanges/previewChanges.d.ts.map +1 -1
  54. package/dist/cli/previewChanges/utils/formatDiff.d.ts.map +1 -1
  55. package/dist/cli/previewChanges/utils/updateOutputPaths.d.ts.map +1 -1
  56. package/dist/cli/previewChanges/utils/updateOutputPaths.js +5 -12
  57. package/dist/cli/schemas/analyzeUsage.d.ts.map +1 -1
  58. package/dist/cli/schemas/analyzeUsage.js +4 -1
  59. package/dist/cli/schemas/generate.d.ts +3 -2
  60. package/dist/cli/schemas/generate.d.ts.map +1 -1
  61. package/dist/cli/schemas/generate.js +3 -2
  62. package/dist/common/Consts.d.ts.map +1 -1
  63. package/dist/common/Consts.js +1 -2
  64. package/dist/common/Logger.d.ts.map +1 -1
  65. package/dist/common/Logger.js +1 -1
  66. package/dist/common/LoggerMessages.d.ts +10 -3
  67. package/dist/common/LoggerMessages.d.ts.map +1 -1
  68. package/dist/common/LoggerMessages.js +14 -7
  69. package/dist/common/TEslintFixOptions.d.ts +20 -0
  70. package/dist/common/TEslintFixOptions.d.ts.map +1 -0
  71. package/dist/common/TEslintFixOptions.js +15 -0
  72. package/dist/common/TRawOptions.d.ts.map +1 -1
  73. package/dist/common/VersionedSchema/AllVersionedSchemas/AllMigrationPlans.d.ts.map +1 -1
  74. package/dist/common/VersionedSchema/AllVersionedSchemas/AllMigrationPlans.js +2 -4
  75. package/dist/common/VersionedSchema/AllVersionedSchemas/AllVersionedSchemas.d.ts.map +1 -1
  76. package/dist/common/VersionedSchema/AllVersionedSchemas/AllVersionedSchemas.js +1 -1
  77. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedBase.d.ts.map +1 -1
  78. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedBase.js +1 -2
  79. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV1.d.ts.map +1 -1
  80. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV1.js +1 -1
  81. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV2.d.ts.map +1 -1
  82. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV2.js +1 -1
  83. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV4.d.ts.map +1 -1
  84. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.d.ts +3 -2
  85. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.d.ts.map +1 -1
  86. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.js +10 -4
  87. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.d.ts +4 -4
  88. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.d.ts.map +1 -1
  89. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.js +7 -1
  90. package/dist/common/VersionedSchema/CommonSchemas.d.ts.map +1 -1
  91. package/dist/common/VersionedSchema/CommonSchemas.js +4 -2
  92. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV2.js +1 -1
  93. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV3.d.ts.map +1 -1
  94. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV3.js +1 -1
  95. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV4.js +1 -1
  96. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV5.d.ts.map +1 -1
  97. package/dist/common/VersionedSchema/OptionsVersioned/OptionsMigrationPlans.d.ts.map +1 -1
  98. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV1.d.ts +2 -2
  99. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV1.d.ts.map +1 -1
  100. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV2.d.ts +2 -2
  101. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV3.js +1 -1
  102. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV4.d.ts +1 -1
  103. package/dist/common/VersionedSchema/Utils/__mocks__/compatibilityCases.d.ts.map +1 -1
  104. package/dist/common/VersionedSchema/Utils/__mocks__/compatibilityCases.js +3 -2
  105. package/dist/common/VersionedSchema/Utils/__tests__/allUtils.test.js +4 -16
  106. package/dist/common/VersionedSchema/Utils/buildVersionedSchema.d.ts.map +1 -1
  107. package/dist/common/VersionedSchema/Utils/createDefaultFieldsMigration.d.ts +1 -1
  108. package/dist/common/VersionedSchema/Utils/createDefaultFieldsMigration.d.ts.map +1 -1
  109. package/dist/common/VersionedSchema/Utils/createDefaultFieldsMigration.js +1 -1
  110. package/dist/common/VersionedSchema/Utils/createTrivialMigration.d.ts.map +1 -1
  111. package/dist/common/VersionedSchema/Utils/createTrivialMigration.js +1 -1
  112. package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.d.ts.map +1 -1
  113. package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.js +1 -3
  114. package/dist/common/VersionedSchema/Utils/getLatestVersionFromMigrationPlans.d.ts.map +1 -1
  115. package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.d.ts.map +1 -1
  116. package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.js +1 -3
  117. package/dist/common/VersionedSchema/Utils/replaceInvalidKeysWithMappedNames.d.ts.map +1 -1
  118. package/dist/common/VersionedSchema/Utils/replaceInvalidKeysWithMappedNames.js +1 -1
  119. package/dist/common/VersionedSchema/Utils/validateAndSuggestKeyCorrections.d.ts.map +1 -1
  120. package/dist/common/VersionedSchema/refinements/dependentOptionsRefinement.d.ts +1 -1
  121. package/dist/common/VersionedSchema/refinements/dependentOptionsRefinement.d.ts.map +1 -1
  122. package/dist/common/utils/__tests__/eslintFix.test.js +25 -67
  123. package/dist/common/utils/__tests__/extractEslintFixOptions.test.d.ts +2 -0
  124. package/dist/common/utils/__tests__/extractEslintFixOptions.test.d.ts.map +1 -0
  125. package/dist/common/utils/__tests__/extractEslintFixOptions.test.js +28 -0
  126. package/dist/common/utils/__tests__/format.test.js +26 -17
  127. package/dist/common/utils/__tests__/prepareTempTsConfig.test.d.ts +2 -0
  128. package/dist/common/utils/__tests__/prepareTempTsConfig.test.d.ts.map +1 -0
  129. package/dist/common/utils/__tests__/prepareTempTsConfig.test.js +78 -0
  130. package/dist/common/utils/codegenTempDir.d.ts +20 -0
  131. package/dist/common/utils/codegenTempDir.d.ts.map +1 -0
  132. package/dist/common/utils/codegenTempDir.js +42 -0
  133. package/dist/common/utils/convertArrayToObject.d.ts.map +1 -1
  134. package/dist/common/utils/convertArrayToObject.js +3 -8
  135. package/dist/common/utils/eslintFix.d.ts +48 -4
  136. package/dist/common/utils/eslintFix.d.ts.map +1 -1
  137. package/dist/common/utils/eslintFix.js +121 -15
  138. package/dist/common/utils/format.d.ts +1 -1
  139. package/dist/common/utils/format.d.ts.map +1 -1
  140. package/dist/common/utils/format.js +23 -11
  141. package/dist/common/utils/jsonPath.d.ts.map +1 -1
  142. package/dist/common/utils/prepareTempEslintConfig.d.ts +18 -0
  143. package/dist/common/utils/prepareTempEslintConfig.d.ts.map +1 -0
  144. package/dist/common/utils/prepareTempEslintConfig.js +55 -0
  145. package/dist/common/utils/prepareTempTsConfig.d.ts +23 -0
  146. package/dist/common/utils/prepareTempTsConfig.d.ts.map +1 -0
  147. package/dist/common/utils/prepareTempTsConfig.js +105 -0
  148. package/dist/core/Context.d.ts.map +1 -1
  149. package/dist/core/Context.js +2 -6
  150. package/dist/core/OpenApiClient.d.ts +7 -0
  151. package/dist/core/OpenApiClient.d.ts.map +1 -1
  152. package/dist/core/OpenApiClient.js +52 -8
  153. package/dist/core/WriteClient.d.ts +21 -2
  154. package/dist/core/WriteClient.d.ts.map +1 -1
  155. package/dist/core/WriteClient.js +36 -14
  156. package/dist/core/__tests__/WriteClient.test.js +1 -1
  157. package/dist/core/api/v2/parser/getOperationResponses.d.ts.map +1 -1
  158. package/dist/core/api/v2/parser/getOperationResponses.js +1 -3
  159. package/dist/core/api/v2/parser/getServiceName.d.ts +1 -1
  160. package/dist/core/api/v3/parser/getOperation.d.ts.map +1 -1
  161. package/dist/core/api/v3/parser/getOperationParameters.d.ts.map +1 -1
  162. package/dist/core/api/v3/parser/getOperationResponses.d.ts.map +1 -1
  163. package/dist/core/api/v3/parser/getOperationResponses.js +1 -3
  164. package/dist/core/api/v3/parser/getServiceName.d.ts +1 -1
  165. package/dist/core/governance/evaluateGovernanceRules.d.ts.map +1 -1
  166. package/dist/core/governance/evaluateGovernanceRules.js +1 -3
  167. package/dist/core/governance/loadGovernanceConfig.d.ts.map +1 -1
  168. package/dist/core/governance/loadGovernanceConfig.js +2 -4
  169. package/dist/core/plugins/GeneratorPlugin.model.d.ts.map +1 -1
  170. package/dist/core/plugins/applySemanticDiffPluginHooks.d.ts.map +1 -1
  171. package/dist/core/semanticDiff/__tests__/analyzeOpenApiDiff.test.js +7 -21
  172. package/dist/core/semanticDiff/analyzeOpenApiDiff.d.ts.map +1 -1
  173. package/dist/core/semanticDiff/semanticDiffReportSchema.d.ts +0 -2
  174. package/dist/core/semanticDiff/semanticDiffReportSchema.d.ts.map +1 -1
  175. package/dist/core/semanticDiff/semanticDiffReportSchema.js +3 -9
  176. package/dist/core/strict/validateOpenApiStrict.d.ts.map +1 -1
  177. package/dist/core/types/Consts.js +1 -1
  178. package/dist/core/types/base/ClientArtifacts.model.d.ts +3 -3
  179. package/dist/core/types/base/ClientArtifacts.model.d.ts.map +1 -1
  180. package/dist/core/types/base/ExportedModel.model.d.ts +1 -1
  181. package/dist/core/types/base/ExportedModel.model.d.ts.map +1 -1
  182. package/dist/core/types/base/ExportedService.model.d.ts.map +1 -1
  183. package/dist/core/types/base/OutputPaths.model.d.ts.map +1 -1
  184. package/dist/core/types/base/PrefixArtifacts.model.d.ts.map +1 -1
  185. package/dist/core/types/base/PropertyGroup.model.d.ts +1 -1
  186. package/dist/core/types/base/SimpleClientArtifacts.model.d.ts +1 -1
  187. package/dist/core/types/base/SimpleClientArtifacts.model.d.ts.map +1 -1
  188. package/dist/core/utils/__tests__/postProcessModelImports.test.js +1 -4
  189. package/dist/core/utils/__tests__/postProcessServiceImports.test.js +1 -4
  190. package/dist/core/utils/__tests__/registerHandlebarHelpers.test.js +27 -0
  191. package/dist/core/utils/__tests__/sortByRequiredExtended.test.js +10 -27
  192. package/dist/core/utils/appendUniqueLinesToFile.js +1 -1
  193. package/dist/core/utils/applyDiffReportToClient.d.ts.map +1 -1
  194. package/dist/core/utils/applyDiffReportToClient.js +2 -2
  195. package/dist/core/utils/areEqual.d.ts +1 -1
  196. package/dist/core/utils/getOperationErrors.d.ts +2 -2
  197. package/dist/core/utils/getOperationErrors.d.ts.map +1 -1
  198. package/dist/core/utils/getOperationResults.d.ts +1 -1
  199. package/dist/core/utils/getPropertyGroupSimple.d.ts.map +1 -1
  200. package/dist/core/utils/getPropertyGroupSimple.js +1 -3
  201. package/dist/core/utils/isSubdirectory.d.ts.map +1 -1
  202. package/dist/core/utils/modelHelpers.d.ts.map +1 -1
  203. package/dist/core/utils/normalizeString.d.ts.map +1 -1
  204. package/dist/core/utils/normalizeString.js +1 -5
  205. package/dist/core/utils/postProcessServiceImports.d.ts.map +1 -1
  206. package/dist/core/utils/postProcessServiceImports.js +1 -3
  207. package/dist/core/utils/precompileTemplates.js +1 -0
  208. package/dist/core/utils/prepareAlias.d.ts +1 -1
  209. package/dist/core/utils/prepareDtoModels.d.ts.map +1 -1
  210. package/dist/core/utils/prepareDtoModels.js +1 -1
  211. package/dist/core/utils/registerHandlebarHelpers.d.ts +1 -0
  212. package/dist/core/utils/registerHandlebarHelpers.d.ts.map +1 -1
  213. package/dist/core/utils/registerHandlebarHelpers.js +3 -0
  214. package/dist/core/utils/registerHandlebarTemplates.d.ts +1 -0
  215. package/dist/core/utils/registerHandlebarTemplates.d.ts.map +1 -1
  216. package/dist/core/utils/sortModelByName.d.ts +1 -1
  217. package/dist/core/utils/writeClientExecutor.d.ts +1 -2
  218. package/dist/core/utils/writeClientExecutor.d.ts.map +1 -1
  219. package/dist/core/utils/writeClientExecutor.js +2 -6
  220. package/dist/core/utils/writeClientModels.d.ts +1 -2
  221. package/dist/core/utils/writeClientModels.d.ts.map +1 -1
  222. package/dist/core/utils/writeClientModels.js +4 -6
  223. package/dist/core/utils/writeClientSchemas.d.ts +1 -3
  224. package/dist/core/utils/writeClientSchemas.d.ts.map +1 -1
  225. package/dist/core/utils/writeClientSchemas.js +2 -7
  226. package/dist/core/utils/writeClientServices.d.ts +1 -2
  227. package/dist/core/utils/writeClientServices.d.ts.map +1 -1
  228. package/dist/core/utils/writeClientServices.js +3 -6
  229. package/dist/templatesCompiled/client/partials/header.d.ts +1 -0
  230. package/dist/templatesCompiled/client/partials/header.d.ts.map +1 -1
  231. package/dist/templatesCompiled/client/partials/header.js +11 -2
  232. package/package.json +132 -136
package/README.md CHANGED
@@ -31,6 +31,9 @@
31
31
  - Supports generator plugins (`plugins`) including built-in `x-typescript-type`
32
32
  - Supports binary request/response generation (`format: binary` -> `Blob`)
33
33
  - Supports opt-in generation cache and incremental writes (`--cache`, `--cachePath`, `--cacheStrategy`, `--cacheDebug`)
34
+ - Generated services accept a `RequestExecutor` in the constructor (`request` / `requestRaw`, interceptors, `customExecutorPath` / `createExecutorAdapter`)
35
+ - Optional output formatting via `prettierConfigPath` (explicit Prettier config file)
36
+ - Optional batch ESLint `--fix` after generation when both `tsconfigPath` and `eslintConfigPath` are set
34
37
 
35
38
  ## Install
36
39
 
package/README.rus.md CHANGED
@@ -31,6 +31,9 @@
31
31
  - Поддерживает плагины генератора (`plugins`), включая встроенный `x-typescript-type`
32
32
  - Поддерживает генерацию бинарных request/response (`format: binary` -> `Blob`)
33
33
  - Поддерживает opt-in кэш генерации и инкрементальную запись (`--cache`, `--cachePath`, `--cacheStrategy`, `--cacheDebug`)
34
+ - Сгенерированные сервисы принимают `RequestExecutor` в конструкторе (`request` / `requestRaw`, interceptors, `customExecutorPath` / `createExecutorAdapter`)
35
+ - Опциональное форматирование вывода через `prettierConfigPath` (явный путь к конфигу Prettier)
36
+ - Опциональный пакетный ESLint `--fix` после генерации при указании `tsconfigPath` и `eslintConfigPath`
34
37
 
35
38
  ## Установка
36
39
 
@@ -1,10 +1,4 @@
1
1
  import type { DiffEntry, IgnoreRule } from './types';
2
- /**
3
- * Проверяет, активно ли правило игнорирования по полю `until`.
4
- * @param rule правило игнорирования
5
- * @returns true если правило активно или не содержит валидной даты
6
- */
7
- export declare const isRuleActive: (rule: IgnoreRule) => boolean;
8
2
  /**
9
3
  * Проверяет, соответствует ли запись diff правилу игнорирования.
10
4
  * Совмещает полное совпадение пути, префикс и регулярные выражения.
@@ -1 +1 @@
1
- {"version":3,"file":"ignoreRules.d.ts","sourceRoot":"","sources":["../../../src/cli/analyzeDiff/ignoreRules.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,UAAU,KAAG,OAK/C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,SAAS,EAAE,MAAM,UAAU,KAAG,OAkBtE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,SAAS,SAAS,EAAE,EAAE,OAAO,UAAU,EAAE,KAAG;IAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAapH,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GACjC,YAAY,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,KAC/D,UAAU,EAOZ,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,oBAAoB,MAAM,KAAG,UAAU,EAGtE,CAAC"}
1
+ {"version":3,"file":"ignoreRules.d.ts","sourceRoot":"","sources":["../../../src/cli/analyzeDiff/ignoreRules.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAcrD;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,SAAS,EAAE,MAAM,UAAU,KAAG,OAkBtE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,SAAS,SAAS,EAAE,EAAE,OAAO,UAAU,EAAE,KAAG;IAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAapH,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GAAI,YAAY,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,KAAG,UAAU,EAOnH,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,oBAAoB,MAAM,KAAG,UAAU,EAGtE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadIgnoreRules = exports.getIgnoreRulesFromConfig = exports.applyIgnoreRules = exports.matchesIgnoreRule = exports.isRuleActive = void 0;
3
+ exports.loadIgnoreRules = exports.getIgnoreRulesFromConfig = exports.applyIgnoreRules = exports.matchesIgnoreRule = void 0;
4
4
  const Consts_1 = require("../../common/Consts");
5
5
  const LoggerMessages_1 = require("../../common/LoggerMessages");
6
6
  const loadConfigIfExists_1 = require("../../common/utils/loadConfigIfExists");
@@ -17,7 +17,6 @@ const isRuleActive = (rule) => {
17
17
  return true;
18
18
  return Date.now() <= timestamp;
19
19
  };
20
- exports.isRuleActive = isRuleActive;
21
20
  /**
22
21
  * Проверяет, соответствует ли запись diff правилу игнорирования.
23
22
  * Совмещает полное совпадение пути, префикс и регулярные выражения.
@@ -26,7 +25,7 @@ exports.isRuleActive = isRuleActive;
26
25
  * @returns true если правило применимо к записи
27
26
  */
28
27
  const matchesIgnoreRule = (entry, rule) => {
29
- if (!(0, exports.isRuleActive)(rule))
28
+ if (!isRuleActive(rule))
30
29
  return false;
31
30
  if (rule.path) {
32
31
  if (entry.path === rule.path)
@@ -1,4 +1,4 @@
1
- import { OptionValues } from "commander";
2
- import { CLICommandResult } from "../types";
1
+ import { OptionValues } from 'commander';
2
+ import { CLICommandResult } from '../types';
3
3
  export declare const analyzeUsage: (options: OptionValues) => Promise<CLICommandResult>;
4
4
  //# sourceMappingURL=analyzeUsage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyzeUsage.d.ts","sourceRoot":"","sources":["../../../src/cli/analyzeUsage/analyzeUsage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAOzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAG5C,eAAO,MAAM,YAAY,GAAU,SAAS,YAAY,KAAG,OAAO,CAAC,gBAAgB,CA8DlF,CAAA"}
1
+ {"version":3,"file":"analyzeUsage.d.ts","sourceRoot":"","sources":["../../../src/cli/analyzeUsage/analyzeUsage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAO5C,eAAO,MAAM,YAAY,GAAU,SAAS,YAAY,KAAG,OAAO,CAAC,gBAAgB,CAwDlF,CAAC"}
@@ -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 +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,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,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 ClientRule implements Rule {
4
4
  check(context: ProjectContext, contract: Contract, stats: Stats): Promise<Finding[]>;
5
5
  }
@@ -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,qBAAa,UAAW,YAAW,IAAI;IAC7B,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CA0E7F"}
@@ -6,16 +6,14 @@ class ClientRule {
6
6
  async check(context, contract, stats) {
7
7
  const findings = [];
8
8
  const checker = context.getTypeChecker();
9
- const clientOptionsDecl = contract.sourceFile
10
- .getExportedDeclarations()
11
- .get("ClientOptions")?.[0];
9
+ const clientOptionsDecl = contract.sourceFile.getExportedDeclarations().get('ClientOptions')?.[0];
12
10
  const expectedType = clientOptionsDecl?.getType();
13
11
  if (!expectedType) {
14
12
  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.",
13
+ id: 'CLIENT_OPTIONS_TYPE_NOT_FOUND',
14
+ category: 'CONFIG',
15
+ severity: 'WARNING',
16
+ message: 'ClientOptions type was not found in the contract. createClient argument validation is limited.',
19
17
  file: contract.sourceFile.getFilePath(),
20
18
  line: 0,
21
19
  });
@@ -25,12 +23,12 @@ class ClientRule {
25
23
  const createClientNames = new Set();
26
24
  for (const imp of imports) {
27
25
  const moduleName = imp.getModuleSpecifierValue();
28
- if (moduleName !== "@lom-api" && !moduleName.startsWith("@lom-api/")) {
26
+ if (moduleName !== '@lom-api' && !moduleName.startsWith('@lom-api/')) {
29
27
  continue;
30
28
  }
31
29
  for (const namedImport of imp.getNamedImports()) {
32
- if (namedImport.getName() === "createClient") {
33
- createClientNames.add(namedImport.getAliasNode()?.getText() || "createClient");
30
+ if (namedImport.getName() === 'createClient') {
31
+ createClientNames.add(namedImport.getAliasNode()?.getText() || 'createClient');
34
32
  }
35
33
  }
36
34
  }
@@ -43,7 +41,7 @@ class ClientRule {
43
41
  continue;
44
42
  if (!createClientNames.has(expression.getText()))
45
43
  continue;
46
- stats.usedMethods.add("createClient");
44
+ stats.usedMethods.add('createClient');
47
45
  const args = call.getArguments();
48
46
  if (args.length === 0)
49
47
  continue;
@@ -51,10 +49,10 @@ class ClientRule {
51
49
  const providedType = checker.getTypeAtLocation(args[0]);
52
50
  if (!providedType.isAssignableTo(expectedType)) {
53
51
  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.",
52
+ id: 'CLIENT_OPTIONS_MISMATCH',
53
+ category: 'TYPE_MISMATCH',
54
+ severity: 'ERROR',
55
+ message: 'createClient configuration object does not match ClientOptions from the generated API.',
58
56
  file: file.getFilePath(),
59
57
  line: args[0].getStartLineNumber(),
60
58
  });
@@ -62,13 +60,13 @@ class ClientRule {
62
60
  }
63
61
  }
64
62
  }
65
- if (!stats.usedMethods.has("createClient")) {
63
+ if (!stats.usedMethods.has('createClient')) {
66
64
  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",
65
+ id: 'CLIENT_NOT_FOUND',
66
+ category: 'USAGE',
67
+ severity: 'WARNING',
68
+ message: 'No createClient call from @lom-api was found in src.',
69
+ file: 'Global',
72
70
  line: 0,
73
71
  });
74
72
  }
@@ -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,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 ServiceRule implements Rule {
4
4
  check(context: ProjectContext, contract: Contract, stats: Stats): Promise<Finding[]>;
5
5
  private getExpectedParameterType;
@@ -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,qBAAa,WAAY,YAAW,IAAI;IAC9B,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA8E1F,OAAO,CAAC,wBAAwB;CASnC"}