ts-openapi-codegen 2.0.0-beta.9 → 2.1.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (525) hide show
  1. package/README.md +177 -18
  2. package/README.rus.md +177 -21
  3. package/dist/cli/analyzeDiff/__tests__/analyzeDiff.cli.test.d.ts +2 -0
  4. package/dist/cli/analyzeDiff/__tests__/analyzeDiff.cli.test.d.ts.map +1 -0
  5. package/dist/cli/analyzeDiff/__tests__/analyzeDiff.cli.test.js +365 -0
  6. package/dist/cli/analyzeDiff/__tests__/analyzeDiffRenameAndInvalidRegex.test.d.ts +2 -0
  7. package/dist/cli/analyzeDiff/__tests__/analyzeDiffRenameAndInvalidRegex.test.d.ts.map +1 -0
  8. package/dist/cli/analyzeDiff/__tests__/analyzeDiffRenameAndInvalidRegex.test.js +142 -0
  9. package/dist/cli/analyzeDiff/__tests__/analyzeDiffTypeCoercion.test.d.ts +2 -0
  10. package/dist/cli/analyzeDiff/__tests__/analyzeDiffTypeCoercion.test.d.ts.map +1 -0
  11. package/dist/cli/analyzeDiff/__tests__/analyzeDiffTypeCoercion.test.js +137 -0
  12. package/dist/cli/analyzeDiff/analyzeDiff.d.ts +17 -0
  13. package/dist/cli/analyzeDiff/analyzeDiff.d.ts.map +1 -0
  14. package/dist/cli/analyzeDiff/analyzeDiff.js +105 -0
  15. package/dist/cli/analyzeDiff/buildLegacyReport.d.ts +17 -0
  16. package/dist/cli/analyzeDiff/buildLegacyReport.d.ts.map +1 -0
  17. package/dist/cli/analyzeDiff/buildLegacyReport.js +54 -0
  18. package/dist/cli/analyzeDiff/ciSummary.d.ts +6 -0
  19. package/dist/cli/analyzeDiff/ciSummary.d.ts.map +1 -0
  20. package/dist/cli/analyzeDiff/ciSummary.js +20 -0
  21. package/dist/cli/analyzeDiff/diffEngine.d.ts +54 -0
  22. package/dist/cli/analyzeDiff/diffEngine.d.ts.map +1 -0
  23. package/dist/cli/analyzeDiff/diffEngine.js +209 -0
  24. package/dist/cli/analyzeDiff/ignoreRules.d.ts +33 -0
  25. package/dist/cli/analyzeDiff/ignoreRules.d.ts.map +1 -0
  26. package/dist/cli/analyzeDiff/ignoreRules.js +93 -0
  27. package/dist/cli/analyzeDiff/ignoreSemanticChanges.d.ts +10 -0
  28. package/dist/cli/analyzeDiff/ignoreSemanticChanges.d.ts.map +1 -0
  29. package/dist/cli/analyzeDiff/ignoreSemanticChanges.js +84 -0
  30. package/dist/cli/analyzeDiff/logLegacyReport.d.ts +6 -0
  31. package/dist/cli/analyzeDiff/logLegacyReport.d.ts.map +1 -0
  32. package/dist/cli/analyzeDiff/logLegacyReport.js +29 -0
  33. package/dist/cli/analyzeDiff/miracles.d.ts +89 -0
  34. package/dist/cli/analyzeDiff/miracles.d.ts.map +1 -0
  35. package/dist/cli/analyzeDiff/miracles.js +325 -0
  36. package/dist/cli/analyzeDiff/pluginPaths.d.ts +5 -0
  37. package/dist/cli/analyzeDiff/pluginPaths.d.ts.map +1 -0
  38. package/dist/cli/analyzeDiff/pluginPaths.js +13 -0
  39. package/dist/cli/analyzeDiff/report.d.ts +3 -0
  40. package/dist/cli/analyzeDiff/report.d.ts.map +1 -0
  41. package/dist/cli/analyzeDiff/report.js +7 -0
  42. package/dist/cli/analyzeDiff/semanticDiffContext.d.ts +6 -0
  43. package/dist/cli/analyzeDiff/semanticDiffContext.d.ts.map +1 -0
  44. package/dist/cli/analyzeDiff/semanticDiffContext.js +16 -0
  45. package/dist/cli/analyzeDiff/specParser.d.ts +22 -0
  46. package/dist/cli/analyzeDiff/specParser.d.ts.map +1 -0
  47. package/dist/cli/analyzeDiff/specParser.js +80 -0
  48. package/dist/cli/analyzeDiff/types.d.ts +61 -0
  49. package/dist/cli/analyzeDiff/types.d.ts.map +1 -0
  50. package/dist/cli/analyzeDiff/types.js +2 -0
  51. package/dist/cli/analyzeDiff/writeLegacyReport.d.ts +6 -0
  52. package/dist/cli/analyzeDiff/writeLegacyReport.d.ts.map +1 -0
  53. package/dist/cli/analyzeDiff/writeLegacyReport.js +21 -0
  54. package/dist/cli/checkAndUpdateConfig/checkConfig.d.ts.map +1 -1
  55. package/dist/cli/checkAndUpdateConfig/checkConfig.js +13 -8
  56. package/dist/cli/checkAndUpdateConfig/constants.d.ts +0 -9
  57. package/dist/cli/checkAndUpdateConfig/constants.d.ts.map +1 -1
  58. package/dist/cli/checkAndUpdateConfig/constants.js +1 -10
  59. package/dist/cli/checkAndUpdateConfig/updateConfig.d.ts.map +1 -1
  60. package/dist/cli/checkAndUpdateConfig/updateConfig.js +11 -7
  61. package/dist/cli/checkAndUpdateConfig/utils/selectConfigAction.d.ts.map +1 -1
  62. package/dist/cli/checkAndUpdateConfig/utils/selectConfigAction.js +6 -3
  63. package/dist/cli/checkAndUpdateConfig/utils/updateExistingConfigFile.d.ts.map +1 -1
  64. package/dist/cli/checkAndUpdateConfig/utils/updateExistingConfigFile.js +3 -2
  65. package/dist/cli/checkAndUpdateConfig/utils/validateAndMigrateConfigData.d.ts.map +1 -1
  66. package/dist/cli/checkAndUpdateConfig/utils/validateAndMigrateConfigData.js +5 -0
  67. package/dist/cli/checkAndUpdateConfig/utils/writeExampleConfigFile.d.ts.map +1 -1
  68. package/dist/cli/checkAndUpdateConfig/utils/writeExampleConfigFile.js +2 -2
  69. package/dist/cli/generateOpenApiClient/__tests__/generateOpenApiClient.strict.test.d.ts +2 -0
  70. package/dist/cli/generateOpenApiClient/__tests__/generateOpenApiClient.strict.test.d.ts.map +1 -0
  71. package/dist/cli/generateOpenApiClient/__tests__/generateOpenApiClient.strict.test.js +152 -0
  72. package/dist/cli/generateOpenApiClient/generateOpenApiClient.d.ts +6 -2
  73. package/dist/cli/generateOpenApiClient/generateOpenApiClient.d.ts.map +1 -1
  74. package/dist/cli/generateOpenApiClient/generateOpenApiClient.js +70 -22
  75. package/dist/cli/index.js +62 -5
  76. package/dist/cli/initOpenApiConfig/init.d.ts.map +1 -1
  77. package/dist/cli/initOpenApiConfig/init.js +19 -6
  78. package/dist/cli/initOpenApiConfig/initConfig.d.ts +1 -0
  79. package/dist/cli/initOpenApiConfig/initConfig.d.ts.map +1 -1
  80. package/dist/cli/initOpenApiConfig/initConfig.js +47 -24
  81. package/dist/cli/initOpenApiConfig/initCustomRequest.d.ts +8 -1
  82. package/dist/cli/initOpenApiConfig/initCustomRequest.d.ts.map +1 -1
  83. package/dist/cli/initOpenApiConfig/initCustomRequest.js +40 -8
  84. package/dist/cli/initOpenApiConfig/utils/buildConfig.d.ts.map +1 -1
  85. package/dist/cli/initOpenApiConfig/utils/buildConfig.js +60 -0
  86. package/dist/cli/initOpenApiConfig/utils/validateSpecFile.d.ts.map +1 -1
  87. package/dist/cli/initOpenApiConfig/utils/validateSpecFile.js +2 -1
  88. package/dist/cli/initOpenApiConfig/utils/writeConfigFile.d.ts.map +1 -1
  89. package/dist/cli/initOpenApiConfig/utils/writeConfigFile.js +2 -1
  90. package/dist/cli/interactive/confirmDialog.d.ts.map +1 -1
  91. package/dist/cli/interactive/confirmDialog.js +3 -2
  92. package/dist/cli/interactive/constants.d.ts +2 -2
  93. package/dist/cli/interactive/constants.js +8 -8
  94. package/dist/cli/interactive/selectDialog.d.ts.map +1 -1
  95. package/dist/cli/interactive/selectDialog.js +11 -6
  96. package/dist/cli/previewChanges/previewChanges.d.ts.map +1 -1
  97. package/dist/cli/previewChanges/previewChanges.js +151 -39
  98. package/dist/cli/previewChanges/utils/updateOutputPaths.d.ts.map +1 -1
  99. package/dist/cli/previewChanges/utils/updateOutputPaths.js +6 -0
  100. package/dist/cli/schemas/analyzeDiff.d.ts +14 -0
  101. package/dist/cli/schemas/analyzeDiff.d.ts.map +1 -0
  102. package/dist/cli/schemas/analyzeDiff.js +28 -0
  103. package/dist/cli/schemas/generate.d.ts +9 -0
  104. package/dist/cli/schemas/generate.d.ts.map +1 -1
  105. package/dist/cli/schemas/generate.js +9 -0
  106. package/dist/cli/schemas/index.d.ts +3 -1
  107. package/dist/cli/schemas/index.d.ts.map +1 -1
  108. package/dist/cli/schemas/index.js +2 -0
  109. package/dist/common/Consts.d.ts +1 -0
  110. package/dist/common/Consts.d.ts.map +1 -1
  111. package/dist/common/Consts.js +19 -2
  112. package/dist/common/Logger.d.ts +20 -1
  113. package/dist/common/Logger.d.ts.map +1 -1
  114. package/dist/common/Logger.js +70 -9
  115. package/dist/common/LoggerMessages.d.ts +136 -33
  116. package/dist/common/LoggerMessages.d.ts.map +1 -1
  117. package/dist/common/LoggerMessages.js +119 -45
  118. package/dist/common/VersionedSchema/AllVersionedSchemas/AllMigrationPlans.d.ts +1 -1
  119. package/dist/common/VersionedSchema/AllVersionedSchemas/AllMigrationPlans.d.ts.map +1 -1
  120. package/dist/common/VersionedSchema/AllVersionedSchemas/AllMigrationPlans.js +20 -4
  121. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedBase.d.ts +4 -0
  122. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedBase.d.ts.map +1 -1
  123. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV1.d.ts +10 -2
  124. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV1.d.ts.map +1 -1
  125. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV2.d.ts +10 -2
  126. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV2.d.ts.map +1 -1
  127. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV3.d.ts +10 -2
  128. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV3.d.ts.map +1 -1
  129. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV4.d.ts +77 -0
  130. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV4.d.ts.map +1 -0
  131. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV4.js +41 -0
  132. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.d.ts +79 -0
  133. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.d.ts.map +1 -0
  134. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV5.js +19 -0
  135. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.d.ts +326 -28
  136. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.d.ts.map +1 -1
  137. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedVersionedSchemas.js +15 -17
  138. package/dist/common/VersionedSchema/CommonSchemas.d.ts +52 -4
  139. package/dist/common/VersionedSchema/CommonSchemas.d.ts.map +1 -1
  140. package/dist/common/VersionedSchema/CommonSchemas.js +48 -7
  141. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV1.d.ts +6 -2
  142. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV1.d.ts.map +1 -1
  143. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV2.d.ts +4 -0
  144. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV2.d.ts.map +1 -1
  145. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV3.d.ts +4 -0
  146. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV3.d.ts.map +1 -1
  147. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV4.d.ts +6 -2
  148. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV4.d.ts.map +1 -1
  149. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV5.d.ts +6 -2
  150. package/dist/common/VersionedSchema/MultiOptionsVersioned/MultiOptionsSchemaV5.d.ts.map +1 -1
  151. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV1.d.ts +6 -2
  152. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV1.d.ts.map +1 -1
  153. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV2.d.ts +4 -0
  154. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV2.d.ts.map +1 -1
  155. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV3.d.ts +4 -0
  156. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV3.d.ts.map +1 -1
  157. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV4.d.ts +6 -2
  158. package/dist/common/VersionedSchema/OptionsVersioned/OptionsSchemaV4.d.ts.map +1 -1
  159. package/dist/common/VersionedSchema/Utils/__mocks__/compatibilityCases.d.ts.map +1 -1
  160. package/dist/common/VersionedSchema/Utils/__mocks__/compatibilityCases.js +40 -1
  161. package/dist/common/VersionedSchema/Utils/__tests__/allUtils.test.d.ts +2 -0
  162. package/dist/common/VersionedSchema/Utils/__tests__/allUtils.test.d.ts.map +1 -0
  163. package/dist/common/VersionedSchema/Utils/__tests__/allUtils.test.js +185 -0
  164. package/dist/common/VersionedSchema/Utils/__tests__/compareShapes.test.js +20 -3
  165. package/dist/common/VersionedSchema/Utils/__tests__/migrateDataToLatestSchemaVersion.test.js +19 -1
  166. package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.d.ts +4 -0
  167. package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.d.ts.map +1 -1
  168. package/dist/common/VersionedSchema/Utils/determineBestMatchingSchemaVersion.js +68 -23
  169. package/dist/common/VersionedSchema/Utils/getUniqueKeysFromSchemas.d.ts +1 -1
  170. package/dist/common/VersionedSchema/Utils/getUniqueKeysFromSchemas.js +1 -1
  171. package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.d.ts +10 -0
  172. package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.d.ts.map +1 -1
  173. package/dist/common/VersionedSchema/Utils/migrateDataToLatestSchemaVersion.js +34 -15
  174. package/dist/common/__tests__/Logger.test.d.ts +2 -0
  175. package/dist/common/__tests__/Logger.test.d.ts.map +1 -0
  176. package/dist/common/__tests__/Logger.test.js +100 -0
  177. package/dist/common/utils/__tests__/convertArrayToObject.test.js +67 -169
  178. package/dist/common/utils/__tests__/eslintFix.test.d.ts +2 -0
  179. package/dist/common/utils/__tests__/eslintFix.test.d.ts.map +1 -0
  180. package/dist/common/utils/__tests__/eslintFix.test.js +134 -0
  181. package/dist/common/utils/__tests__/format.test.d.ts +2 -0
  182. package/dist/common/utils/__tests__/format.test.d.ts.map +1 -0
  183. package/dist/common/utils/__tests__/format.test.js +90 -0
  184. package/dist/common/utils/convertArrayToObject.d.ts.map +1 -1
  185. package/dist/common/utils/convertArrayToObject.js +54 -14
  186. package/dist/common/utils/eslintFix.d.ts +7 -0
  187. package/dist/common/utils/eslintFix.d.ts.map +1 -0
  188. package/dist/common/utils/eslintFix.js +78 -0
  189. package/dist/common/utils/format.d.ts +1 -1
  190. package/dist/common/utils/format.d.ts.map +1 -1
  191. package/dist/common/utils/format.js +39 -15
  192. package/dist/common/utils/jsonPath.d.ts +5 -0
  193. package/dist/common/utils/jsonPath.d.ts.map +1 -0
  194. package/dist/common/utils/jsonPath.js +27 -0
  195. package/dist/common/utils/normalizeObject.d.ts +2 -0
  196. package/dist/common/utils/normalizeObject.d.ts.map +1 -0
  197. package/dist/common/utils/normalizeObject.js +63 -0
  198. package/dist/core/Context.d.ts +8 -1
  199. package/dist/core/Context.d.ts.map +1 -1
  200. package/dist/core/Context.js +23 -4
  201. package/dist/core/OpenApiClient.d.ts +2 -0
  202. package/dist/core/OpenApiClient.d.ts.map +1 -1
  203. package/dist/core/OpenApiClient.js +127 -6
  204. package/dist/core/WriteClient.d.ts +12 -1
  205. package/dist/core/WriteClient.d.ts.map +1 -1
  206. package/dist/core/WriteClient.js +83 -8
  207. package/dist/core/__tests__/WriteClient.test.js +6 -1
  208. package/dist/core/api/v2/parser/__tests__/getModel.test.d.ts +2 -0
  209. package/dist/core/api/v2/parser/__tests__/getModel.test.d.ts.map +1 -0
  210. package/dist/core/api/v2/parser/__tests__/getModel.test.js +34 -0
  211. package/dist/core/api/v2/parser/getModel.d.ts.map +1 -1
  212. package/dist/core/api/v2/parser/getModel.js +6 -1
  213. package/dist/core/api/v2/parser/getOperation.d.ts.map +1 -1
  214. package/dist/core/api/v2/parser/getOperation.js +2 -0
  215. package/dist/core/api/v2/parser/getOperationResponses.d.ts.map +1 -1
  216. package/dist/core/api/v2/parser/getOperationResponses.js +9 -1
  217. package/dist/core/api/v2/parser/getType.d.ts.map +1 -1
  218. package/dist/core/api/v2/parser/getType.js +2 -1
  219. package/dist/core/api/v2/types/OpenApiSchema.model.d.ts +2 -0
  220. package/dist/core/api/v2/types/OpenApiSchema.model.d.ts.map +1 -1
  221. package/dist/core/api/v3/parser/__tests__/getContent.test.d.ts +2 -0
  222. package/dist/core/api/v3/parser/__tests__/getContent.test.d.ts.map +1 -0
  223. package/dist/core/api/v3/parser/__tests__/getContent.test.js +65 -0
  224. package/dist/core/api/v3/parser/__tests__/getModel.test.d.ts +2 -0
  225. package/dist/core/api/v3/parser/__tests__/getModel.test.d.ts.map +1 -0
  226. package/dist/core/api/v3/parser/__tests__/getModel.test.js +34 -0
  227. package/dist/core/api/v3/parser/getContent.d.ts.map +1 -1
  228. package/dist/core/api/v3/parser/getContent.js +21 -11
  229. package/dist/core/api/v3/parser/getModel.d.ts.map +1 -1
  230. package/dist/core/api/v3/parser/getModel.js +6 -1
  231. package/dist/core/api/v3/parser/getOperation.d.ts.map +1 -1
  232. package/dist/core/api/v3/parser/getOperation.js +2 -0
  233. package/dist/core/api/v3/parser/getOperationResponses.d.ts.map +1 -1
  234. package/dist/core/api/v3/parser/getOperationResponses.js +9 -1
  235. package/dist/core/api/v3/parser/getType.d.ts.map +1 -1
  236. package/dist/core/api/v3/parser/getType.js +2 -1
  237. package/dist/core/api/v3/types/OpenApiSchema.model.d.ts +2 -0
  238. package/dist/core/api/v3/types/OpenApiSchema.model.d.ts.map +1 -1
  239. package/dist/core/governance/__tests__/evaluateGovernanceRules.test.d.ts +2 -0
  240. package/dist/core/governance/__tests__/evaluateGovernanceRules.test.d.ts.map +1 -0
  241. package/dist/core/governance/__tests__/evaluateGovernanceRules.test.js +100 -0
  242. package/dist/core/governance/__tests__/loadGovernanceConfig.test.d.ts +2 -0
  243. package/dist/core/governance/__tests__/loadGovernanceConfig.test.d.ts.map +1 -0
  244. package/dist/core/governance/__tests__/loadGovernanceConfig.test.js +71 -0
  245. package/dist/core/governance/evaluateGovernanceRules.d.ts +42 -0
  246. package/dist/core/governance/evaluateGovernanceRules.d.ts.map +1 -0
  247. package/dist/core/governance/evaluateGovernanceRules.js +134 -0
  248. package/dist/core/governance/governanceConfigSchema.d.ts +4 -0
  249. package/dist/core/governance/governanceConfigSchema.d.ts.map +1 -0
  250. package/dist/core/governance/governanceConfigSchema.js +39 -0
  251. package/dist/core/governance/loadGovernanceConfig.d.ts +7 -0
  252. package/dist/core/governance/loadGovernanceConfig.d.ts.map +1 -0
  253. package/dist/core/governance/loadGovernanceConfig.js +60 -0
  254. package/dist/core/index.d.ts +3 -0
  255. package/dist/core/index.d.ts.map +1 -1
  256. package/dist/core/index.js +4 -2
  257. package/dist/core/plugins/GeneratorPlugin.model.d.ts +42 -0
  258. package/dist/core/plugins/GeneratorPlugin.model.d.ts.map +1 -0
  259. package/dist/core/plugins/GeneratorPlugin.model.js +2 -0
  260. package/dist/core/plugins/__tests__/applySemanticDiffPluginHooks.test.d.ts +2 -0
  261. package/dist/core/plugins/__tests__/applySemanticDiffPluginHooks.test.d.ts.map +1 -0
  262. package/dist/core/plugins/__tests__/applySemanticDiffPluginHooks.test.js +115 -0
  263. package/dist/core/plugins/__tests__/loadGeneratorPlugins.test.d.ts +2 -0
  264. package/dist/core/plugins/__tests__/loadGeneratorPlugins.test.d.ts.map +1 -0
  265. package/dist/core/plugins/__tests__/loadGeneratorPlugins.test.js +62 -0
  266. package/dist/core/plugins/applySemanticDiffPluginHooks.d.ts +28 -0
  267. package/dist/core/plugins/applySemanticDiffPluginHooks.d.ts.map +1 -0
  268. package/dist/core/plugins/applySemanticDiffPluginHooks.js +160 -0
  269. package/dist/core/plugins/builtins/xTypescriptTypePlugin.d.ts +6 -0
  270. package/dist/core/plugins/builtins/xTypescriptTypePlugin.d.ts.map +1 -0
  271. package/dist/core/plugins/builtins/xTypescriptTypePlugin.js +13 -0
  272. package/dist/core/plugins/getBuiltinPlugins.d.ts +6 -0
  273. package/dist/core/plugins/getBuiltinPlugins.d.ts.map +1 -0
  274. package/dist/core/plugins/getBuiltinPlugins.js +10 -0
  275. package/dist/core/plugins/index.d.ts +4 -0
  276. package/dist/core/plugins/index.d.ts.map +1 -0
  277. package/dist/core/plugins/index.js +5 -0
  278. package/dist/core/plugins/loadGeneratorPlugins.d.ts +6 -0
  279. package/dist/core/plugins/loadGeneratorPlugins.d.ts.map +1 -0
  280. package/dist/core/plugins/loadGeneratorPlugins.js +94 -0
  281. package/dist/core/semanticDiff/__tests__/analyzeOpenApiDiff.test.d.ts +2 -0
  282. package/dist/core/semanticDiff/__tests__/analyzeOpenApiDiff.test.d.ts.map +1 -0
  283. package/dist/core/semanticDiff/__tests__/analyzeOpenApiDiff.test.js +537 -0
  284. package/dist/core/semanticDiff/__tests__/semanticDiffReportSchema.test.d.ts +2 -0
  285. package/dist/core/semanticDiff/__tests__/semanticDiffReportSchema.test.d.ts.map +1 -0
  286. package/dist/core/semanticDiff/__tests__/semanticDiffReportSchema.test.js +66 -0
  287. package/dist/core/semanticDiff/analyzeOpenApiDiff.d.ts +45 -0
  288. package/dist/core/semanticDiff/analyzeOpenApiDiff.d.ts.map +1 -0
  289. package/dist/core/semanticDiff/analyzeOpenApiDiff.js +640 -0
  290. package/dist/core/semanticDiff/semanticDiffReportSchema.d.ts +11 -0
  291. package/dist/core/semanticDiff/semanticDiffReportSchema.d.ts.map +1 -0
  292. package/dist/core/semanticDiff/semanticDiffReportSchema.js +132 -0
  293. package/dist/core/strict/__tests__/validateOpenApiStrict.test.d.ts +2 -0
  294. package/dist/core/strict/__tests__/validateOpenApiStrict.test.d.ts.map +1 -0
  295. package/dist/core/strict/__tests__/validateOpenApiStrict.test.js +156 -0
  296. package/dist/core/strict/validateOpenApiStrict.d.ts +43 -0
  297. package/dist/core/strict/validateOpenApiStrict.d.ts.map +1 -0
  298. package/dist/core/strict/validateOpenApiStrict.js +253 -0
  299. package/dist/core/types/base/ClientArtifacts.model.d.ts +2 -0
  300. package/dist/core/types/base/ClientArtifacts.model.d.ts.map +1 -1
  301. package/dist/core/types/base/Templates.model.d.ts +4 -1
  302. package/dist/core/types/base/Templates.model.d.ts.map +1 -1
  303. package/dist/core/types/enums/EmptySchemaStrategy.enum.d.ts +6 -0
  304. package/dist/core/types/enums/EmptySchemaStrategy.enum.d.ts.map +1 -0
  305. package/dist/core/types/enums/EmptySchemaStrategy.enum.js +9 -0
  306. package/dist/core/types/enums/ModelsMode.enum.d.ts +5 -0
  307. package/dist/core/types/enums/ModelsMode.enum.d.ts.map +1 -0
  308. package/dist/core/types/enums/ModelsMode.enum.js +8 -0
  309. package/dist/core/types/shared/Client.model.d.ts +2 -0
  310. package/dist/core/types/shared/Client.model.d.ts.map +1 -1
  311. package/dist/core/types/shared/DiffInfo.model.d.ts +13 -0
  312. package/dist/core/types/shared/DiffInfo.model.d.ts.map +1 -0
  313. package/dist/core/types/shared/DiffInfo.model.js +2 -0
  314. package/dist/core/types/shared/Miracle.model.d.ts +13 -0
  315. package/dist/core/types/shared/Miracle.model.d.ts.map +1 -0
  316. package/dist/core/types/shared/Miracle.model.js +2 -0
  317. package/dist/core/types/shared/Model.model.d.ts +23 -0
  318. package/dist/core/types/shared/Model.model.d.ts.map +1 -1
  319. package/dist/core/types/shared/Operation.model.d.ts +5 -0
  320. package/dist/core/types/shared/Operation.model.d.ts.map +1 -1
  321. package/dist/core/utils/__mocks__/templates.d.ts.map +1 -1
  322. package/dist/core/utils/__mocks__/templates.js +9 -0
  323. package/dist/core/utils/__tests__/applyDiffReportToClient.test.d.ts +2 -0
  324. package/dist/core/utils/__tests__/applyDiffReportToClient.test.d.ts.map +1 -0
  325. package/dist/core/utils/__tests__/applyDiffReportToClient.test.js +108 -0
  326. package/dist/core/utils/__tests__/getMappedType.test.js +2 -0
  327. package/dist/core/utils/__tests__/getOperationResponseCode.test.js +7 -2
  328. package/dist/core/utils/__tests__/getOperationResults.test.d.ts +2 -0
  329. package/dist/core/utils/__tests__/getOperationResults.test.d.ts.map +1 -0
  330. package/dist/core/utils/__tests__/getOperationResults.test.js +43 -0
  331. package/dist/core/utils/__tests__/getRelativeModelPath.test.d.ts +2 -0
  332. package/dist/core/utils/__tests__/getRelativeModelPath.test.d.ts.map +1 -0
  333. package/dist/core/utils/__tests__/getRelativeModelPath.test.js +27 -0
  334. package/dist/core/utils/__tests__/modelHelpers.test.d.ts +2 -0
  335. package/dist/core/utils/__tests__/modelHelpers.test.d.ts.map +1 -0
  336. package/dist/core/utils/__tests__/modelHelpers.test.js +151 -0
  337. package/dist/core/utils/__tests__/postProcessModelImports.test.d.ts +2 -0
  338. package/dist/core/utils/__tests__/postProcessModelImports.test.d.ts.map +1 -0
  339. package/dist/core/utils/__tests__/postProcessModelImports.test.js +67 -0
  340. package/dist/core/utils/__tests__/postProcessServiceImports.test.d.ts +2 -0
  341. package/dist/core/utils/__tests__/postProcessServiceImports.test.d.ts.map +1 -0
  342. package/dist/core/utils/__tests__/postProcessServiceImports.test.js +26 -0
  343. package/dist/core/utils/__tests__/prepareDtoModels.test.d.ts +2 -0
  344. package/dist/core/utils/__tests__/prepareDtoModels.test.d.ts.map +1 -0
  345. package/dist/core/utils/__tests__/prepareDtoModels.test.js +116 -0
  346. package/dist/core/utils/__tests__/resolveRefPath.test.d.ts +2 -0
  347. package/dist/core/utils/__tests__/resolveRefPath.test.d.ts.map +1 -0
  348. package/dist/core/utils/__tests__/resolveRefPath.test.js +22 -0
  349. package/dist/core/utils/__tests__/serviceHelpers.test.d.ts +2 -0
  350. package/dist/core/utils/__tests__/serviceHelpers.test.d.ts.map +1 -0
  351. package/dist/core/utils/__tests__/serviceHelpers.test.js +122 -0
  352. package/dist/core/utils/__tests__/writeClientExecutor.test.d.ts +2 -0
  353. package/dist/core/utils/__tests__/writeClientExecutor.test.d.ts.map +1 -0
  354. package/dist/core/utils/__tests__/writeClientExecutor.test.js +20 -0
  355. package/dist/core/utils/__tests__/writeClientModels.test.js +50 -0
  356. package/dist/core/utils/__tests__/writeClientSchemas.test.js +2 -0
  357. package/dist/core/utils/applyDiffReportToClient.d.ts +14 -0
  358. package/dist/core/utils/applyDiffReportToClient.d.ts.map +1 -0
  359. package/dist/core/utils/applyDiffReportToClient.js +367 -0
  360. package/dist/core/utils/getMappedType.d.ts.map +1 -1
  361. package/dist/core/utils/getMappedType.js +2 -0
  362. package/dist/core/utils/getOperationResponseCode.d.ts.map +1 -1
  363. package/dist/core/utils/getOperationResponseCode.js +10 -8
  364. package/dist/core/utils/getRelativeModelPath.d.ts +9 -0
  365. package/dist/core/utils/getRelativeModelPath.d.ts.map +1 -0
  366. package/dist/core/utils/getRelativeModelPath.js +37 -0
  367. package/dist/core/utils/loadDiffReport.d.ts +39 -0
  368. package/dist/core/utils/loadDiffReport.d.ts.map +1 -0
  369. package/dist/core/utils/loadDiffReport.js +51 -0
  370. package/dist/core/utils/modelHelpers.d.ts.map +1 -1
  371. package/dist/core/utils/modelHelpers.js +37 -3
  372. package/dist/core/utils/postProcessModelImports.d.ts.map +1 -1
  373. package/dist/core/utils/postProcessModelImports.js +14 -1
  374. package/dist/core/utils/postProcessServiceImports.d.ts.map +1 -1
  375. package/dist/core/utils/postProcessServiceImports.js +1 -2
  376. package/dist/core/utils/precompileTemplates.js +1 -0
  377. package/dist/core/utils/prepareDtoModels.d.ts +3 -0
  378. package/dist/core/utils/prepareDtoModels.d.ts.map +1 -0
  379. package/dist/core/utils/prepareDtoModels.js +189 -0
  380. package/dist/core/utils/registerHandlebarHelpers.d.ts.map +1 -1
  381. package/dist/core/utils/registerHandlebarHelpers.js +29 -1
  382. package/dist/core/utils/registerHandlebarTemplates.d.ts.map +1 -1
  383. package/dist/core/utils/registerHandlebarTemplates.js +48 -41
  384. package/dist/core/utils/resolveRefPath.d.ts.map +1 -1
  385. package/dist/core/utils/resolveRefPath.js +1 -4
  386. package/dist/core/utils/validateRawOptions.d.ts +1 -1
  387. package/dist/core/utils/validateRawOptions.d.ts.map +1 -1
  388. package/dist/core/utils/validateRawOptions.js +4 -2
  389. package/dist/core/utils/writeClientCore.d.ts +2 -0
  390. package/dist/core/utils/writeClientCore.d.ts.map +1 -1
  391. package/dist/core/utils/writeClientCore.js +6 -1
  392. package/dist/core/utils/writeClientCoreIndex.d.ts +1 -0
  393. package/dist/core/utils/writeClientCoreIndex.d.ts.map +1 -1
  394. package/dist/core/utils/writeClientCoreIndex.js +2 -2
  395. package/dist/core/utils/writeClientExecutor.d.ts +6 -1
  396. package/dist/core/utils/writeClientExecutor.d.ts.map +1 -1
  397. package/dist/core/utils/writeClientExecutor.js +22 -3
  398. package/dist/core/utils/writeClientFullIndex.d.ts.map +1 -1
  399. package/dist/core/utils/writeClientFullIndex.js +3 -1
  400. package/dist/core/utils/writeClientModels.d.ts +6 -0
  401. package/dist/core/utils/writeClientModels.d.ts.map +1 -1
  402. package/dist/core/utils/writeClientModels.js +24 -3
  403. package/dist/core/utils/writeClientModelsIndex.d.ts +2 -0
  404. package/dist/core/utils/writeClientModelsIndex.d.ts.map +1 -1
  405. package/dist/core/utils/writeClientModelsIndex.js +2 -2
  406. package/dist/core/utils/writeClientSchemas.d.ts +6 -1
  407. package/dist/core/utils/writeClientSchemas.d.ts.map +1 -1
  408. package/dist/core/utils/writeClientSchemas.js +16 -3
  409. package/dist/core/utils/writeClientServices.d.ts +2 -0
  410. package/dist/core/utils/writeClientServices.d.ts.map +1 -1
  411. package/dist/core/utils/writeClientServices.js +6 -2
  412. package/dist/templatesCompiled/cli/openApiConfig.d.ts +4 -1
  413. package/dist/templatesCompiled/cli/openApiConfig.d.ts.map +1 -1
  414. package/dist/templatesCompiled/cli/openApiConfig.js +88 -37
  415. package/dist/templatesCompiled/client/core/ApiError.js +1 -1
  416. package/dist/templatesCompiled/client/core/ApiRequestOptions.js +1 -1
  417. package/dist/templatesCompiled/client/core/ApiResult.js +1 -1
  418. package/dist/templatesCompiled/client/core/BaseDto.d.ts +8 -0
  419. package/dist/templatesCompiled/client/core/BaseDto.d.ts.map +1 -0
  420. package/dist/templatesCompiled/client/core/BaseDto.js +18 -0
  421. package/dist/templatesCompiled/client/core/axios/getResponseBody.js +1 -1
  422. package/dist/templatesCompiled/client/core/axios/request.js +3 -3
  423. package/dist/templatesCompiled/client/core/axios/sendRequest.js +4 -4
  424. package/dist/templatesCompiled/client/core/dtoUtils.d.ts +8 -0
  425. package/dist/templatesCompiled/client/core/dtoUtils.d.ts.map +1 -0
  426. package/dist/templatesCompiled/client/core/dtoUtils.js +18 -0
  427. package/dist/templatesCompiled/client/core/executor/createExecutorAdapter.d.ts +2 -0
  428. package/dist/templatesCompiled/client/core/executor/createExecutorAdapter.d.ts.map +1 -1
  429. package/dist/templatesCompiled/client/core/executor/createExecutorAdapter.js +13 -8
  430. package/dist/templatesCompiled/client/core/executor/requestExecutor.js +1 -1
  431. package/dist/templatesCompiled/client/core/fetch/getResponseBody.js +1 -1
  432. package/dist/templatesCompiled/client/core/fetch/request.js +3 -3
  433. package/dist/templatesCompiled/client/core/functions/catchErrors.js +1 -1
  434. package/dist/templatesCompiled/client/core/functions/isBinary.js +1 -1
  435. package/dist/templatesCompiled/client/core/interceptors/withInterceptors.js +1 -1
  436. package/dist/templatesCompiled/client/core/node/getResponseBody.js +1 -1
  437. package/dist/templatesCompiled/client/core/node/request.js +3 -3
  438. package/dist/templatesCompiled/client/core/xhr/getResponseBody.js +1 -1
  439. package/dist/templatesCompiled/client/core/xhr/request.js +3 -3
  440. package/dist/templatesCompiled/client/core/xhr/sendRequest.js +4 -4
  441. package/dist/templatesCompiled/client/exportClient.d.ts +4 -0
  442. package/dist/templatesCompiled/client/exportClient.d.ts.map +1 -1
  443. package/dist/templatesCompiled/client/exportClient.js +51 -13
  444. package/dist/templatesCompiled/client/exportModels.d.ts +34 -0
  445. package/dist/templatesCompiled/client/exportModels.d.ts.map +1 -0
  446. package/dist/templatesCompiled/client/exportModels.js +280 -0
  447. package/dist/templatesCompiled/client/exportSchema.d.ts +5 -1
  448. package/dist/templatesCompiled/client/exportSchema.d.ts.map +1 -1
  449. package/dist/templatesCompiled/client/exportSchema.js +37 -7
  450. package/dist/templatesCompiled/client/exportService.d.ts +9 -4
  451. package/dist/templatesCompiled/client/exportService.d.ts.map +1 -1
  452. package/dist/templatesCompiled/client/exportService.js +96 -37
  453. package/dist/templatesCompiled/client/indexCore.d.ts +3 -1
  454. package/dist/templatesCompiled/client/indexCore.d.ts.map +1 -1
  455. package/dist/templatesCompiled/client/indexCore.js +13 -2
  456. package/dist/templatesCompiled/client/indexFull.d.ts +10 -7
  457. package/dist/templatesCompiled/client/indexFull.d.ts.map +1 -1
  458. package/dist/templatesCompiled/client/indexFull.js +54 -33
  459. package/dist/templatesCompiled/client/indexModels.d.ts +7 -5
  460. package/dist/templatesCompiled/client/indexModels.d.ts.map +1 -1
  461. package/dist/templatesCompiled/client/indexModels.js +27 -18
  462. package/dist/templatesCompiled/client/indexSimple.d.ts +1 -0
  463. package/dist/templatesCompiled/client/indexSimple.d.ts.map +1 -1
  464. package/dist/templatesCompiled/client/indexSimple.js +4 -1
  465. package/dist/templatesCompiled/client/joi/exportSchema.js +5 -5
  466. package/dist/templatesCompiled/client/joi/partials/joiSchema.js +7 -7
  467. package/dist/templatesCompiled/client/joi/partials/joiSchemaComposition.js +4 -4
  468. package/dist/templatesCompiled/client/joi/partials/joiSchemaGeneric.d.ts +27 -19
  469. package/dist/templatesCompiled/client/joi/partials/joiSchemaGeneric.d.ts.map +1 -1
  470. package/dist/templatesCompiled/client/joi/partials/joiSchemaGeneric.js +144 -63
  471. package/dist/templatesCompiled/client/joi/partials/joiSchemaInterface.d.ts +5 -3
  472. package/dist/templatesCompiled/client/joi/partials/joiSchemaInterface.d.ts.map +1 -1
  473. package/dist/templatesCompiled/client/joi/partials/joiSchemaInterface.js +39 -12
  474. package/dist/templatesCompiled/client/jsonschema/exportSchema.d.ts +1 -0
  475. package/dist/templatesCompiled/client/jsonschema/exportSchema.d.ts.map +1 -1
  476. package/dist/templatesCompiled/client/jsonschema/exportSchema.js +21 -17
  477. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchema.js +7 -7
  478. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaArray.js +5 -5
  479. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaComposition.js +2 -2
  480. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaDictionary.js +5 -5
  481. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaInterface.d.ts +3 -1
  482. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaInterface.d.ts.map +1 -1
  483. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaInterface.js +45 -15
  484. package/dist/templatesCompiled/client/partials/exportInterface.d.ts +13 -5
  485. package/dist/templatesCompiled/client/partials/exportInterface.d.ts.map +1 -1
  486. package/dist/templatesCompiled/client/partials/exportInterface.js +91 -21
  487. package/dist/templatesCompiled/client/partials/result.d.ts +6 -4
  488. package/dist/templatesCompiled/client/partials/result.d.ts.map +1 -1
  489. package/dist/templatesCompiled/client/partials/result.js +16 -6
  490. package/dist/templatesCompiled/client/partials/serviceOption.d.ts +1 -0
  491. package/dist/templatesCompiled/client/partials/serviceOption.d.ts.map +1 -1
  492. package/dist/templatesCompiled/client/partials/serviceOption.js +11 -4
  493. package/dist/templatesCompiled/client/yup/exportSchema.js +3 -3
  494. package/dist/templatesCompiled/client/yup/partials/yupSchema.js +7 -7
  495. package/dist/templatesCompiled/client/yup/partials/yupSchemaComposition.js +4 -4
  496. package/dist/templatesCompiled/client/yup/partials/yupSchemaGeneric.d.ts +22 -16
  497. package/dist/templatesCompiled/client/yup/partials/yupSchemaGeneric.d.ts.map +1 -1
  498. package/dist/templatesCompiled/client/yup/partials/yupSchemaGeneric.js +72 -60
  499. package/dist/templatesCompiled/client/yup/partials/yupSchemaInterface.d.ts +5 -3
  500. package/dist/templatesCompiled/client/yup/partials/yupSchemaInterface.d.ts.map +1 -1
  501. package/dist/templatesCompiled/client/yup/partials/yupSchemaInterface.js +39 -12
  502. package/dist/templatesCompiled/client/zod/exportSchema.js +3 -3
  503. package/dist/templatesCompiled/client/zod/partials/zodSchema.js +7 -7
  504. package/dist/templatesCompiled/client/zod/partials/zodSchemaArray.d.ts +5 -6
  505. package/dist/templatesCompiled/client/zod/partials/zodSchemaArray.d.ts.map +1 -1
  506. package/dist/templatesCompiled/client/zod/partials/zodSchemaArray.js +14 -28
  507. package/dist/templatesCompiled/client/zod/partials/zodSchemaComposition.d.ts +3 -0
  508. package/dist/templatesCompiled/client/zod/partials/zodSchemaComposition.d.ts.map +1 -1
  509. package/dist/templatesCompiled/client/zod/partials/zodSchemaComposition.js +32 -8
  510. package/dist/templatesCompiled/client/zod/partials/zodSchemaDictionary.d.ts +3 -4
  511. package/dist/templatesCompiled/client/zod/partials/zodSchemaDictionary.d.ts.map +1 -1
  512. package/dist/templatesCompiled/client/zod/partials/zodSchemaDictionary.js +9 -23
  513. package/dist/templatesCompiled/client/zod/partials/zodSchemaGeneric.d.ts +27 -19
  514. package/dist/templatesCompiled/client/zod/partials/zodSchemaGeneric.d.ts.map +1 -1
  515. package/dist/templatesCompiled/client/zod/partials/zodSchemaGeneric.js +77 -61
  516. package/dist/templatesCompiled/client/zod/partials/zodSchemaInterface.d.ts +4 -2
  517. package/dist/templatesCompiled/client/zod/partials/zodSchemaInterface.d.ts.map +1 -1
  518. package/dist/templatesCompiled/client/zod/partials/zodSchemaInterface.js +18 -7
  519. package/package.json +8 -6
  520. package/dist/common/defaultOptions.d.ts +0 -3
  521. package/dist/common/defaultOptions.d.ts.map +0 -1
  522. package/dist/common/defaultOptions.js +0 -28
  523. package/dist/core/utils/advancedDeduplicatePath.d.ts +0 -5
  524. package/dist/core/utils/advancedDeduplicatePath.d.ts.map +0 -1
  525. package/dist/core/utils/advancedDeduplicatePath.js +0 -29
@@ -0,0 +1,537 @@
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
+ const node_assert_1 = __importDefault(require("node:assert"));
7
+ const node_test_1 = require("node:test");
8
+ const analyzeOpenApiDiff_1 = require("../analyzeOpenApiDiff");
9
+ (0, node_test_1.describe)('@unit: analyzeOpenApiDiff', () => {
10
+ (0, node_test_1.test)('detects breaking model and operation removals', () => {
11
+ const oldSpec = {
12
+ openapi: '3.0.0',
13
+ paths: {
14
+ '/pets': {
15
+ get: {
16
+ responses: {
17
+ '200': { description: 'ok' },
18
+ },
19
+ },
20
+ },
21
+ },
22
+ components: {
23
+ schemas: {
24
+ Pet: {
25
+ type: 'object',
26
+ properties: {
27
+ id: { type: 'string' },
28
+ },
29
+ required: ['id'],
30
+ },
31
+ },
32
+ },
33
+ };
34
+ const newSpec = {
35
+ openapi: '3.0.0',
36
+ paths: {},
37
+ components: {
38
+ schemas: {},
39
+ },
40
+ };
41
+ const report = (0, analyzeOpenApiDiff_1.analyzeOpenApiDiff)(oldSpec, newSpec);
42
+ node_assert_1.default.strictEqual(report.schemaVersion, '1.1.0');
43
+ node_assert_1.default.ok(report.summary.breaking >= 2);
44
+ node_assert_1.default.ok(report.changes.some(change => change.type === 'model.removed'));
45
+ node_assert_1.default.ok(report.changes.some(change => change.type === 'operation.removed'));
46
+ });
47
+ (0, node_test_1.test)('detects property required/type changes and enum changes', () => {
48
+ const oldSpec = {
49
+ openapi: '3.0.0',
50
+ paths: {},
51
+ components: {
52
+ schemas: {
53
+ User: {
54
+ type: 'object',
55
+ properties: {
56
+ age: { type: 'number' },
57
+ role: { enum: ['user', 'admin'] },
58
+ },
59
+ required: ['age'],
60
+ },
61
+ },
62
+ },
63
+ };
64
+ const newSpec = {
65
+ openapi: '3.0.0',
66
+ paths: {},
67
+ components: {
68
+ schemas: {
69
+ User: {
70
+ type: 'object',
71
+ properties: {
72
+ age: { type: 'integer' },
73
+ role: { enum: ['admin'] },
74
+ },
75
+ required: [],
76
+ },
77
+ },
78
+ },
79
+ };
80
+ const report = (0, analyzeOpenApiDiff_1.analyzeOpenApiDiff)(oldSpec, newSpec);
81
+ node_assert_1.default.ok(report.changes.some(change => change.type === 'model.property.type.changed' && change.severity === 'breaking'));
82
+ node_assert_1.default.ok(report.changes.some(change => change.type === 'model.property.required.changed' && change.severity === 'non-breaking'));
83
+ node_assert_1.default.ok(report.changes.some(change => change.type === 'model.property.type.changed' && change.path.includes('/role')));
84
+ });
85
+ (0, node_test_1.test)('detects non-breaking additions', () => {
86
+ const oldSpec = {
87
+ openapi: '3.0.0',
88
+ paths: {
89
+ '/ping': {
90
+ get: {
91
+ responses: {
92
+ '200': { description: 'ok' },
93
+ },
94
+ },
95
+ },
96
+ },
97
+ components: {
98
+ schemas: {
99
+ Ping: {
100
+ type: 'object',
101
+ properties: {
102
+ value: { type: 'string' },
103
+ },
104
+ },
105
+ },
106
+ },
107
+ };
108
+ const newSpec = {
109
+ openapi: '3.0.0',
110
+ paths: {
111
+ '/ping': {
112
+ get: {
113
+ responses: {
114
+ '200': { description: 'ok' },
115
+ '201': { description: 'created' },
116
+ },
117
+ },
118
+ },
119
+ '/pong': {
120
+ get: {
121
+ responses: {
122
+ '200': { description: 'ok' },
123
+ },
124
+ },
125
+ },
126
+ },
127
+ components: {
128
+ schemas: {
129
+ Ping: {
130
+ type: 'object',
131
+ properties: {
132
+ value: { type: 'string' },
133
+ meta: { type: 'string' },
134
+ },
135
+ },
136
+ Pong: {
137
+ type: 'object',
138
+ properties: {
139
+ value: { type: 'string' },
140
+ },
141
+ },
142
+ },
143
+ },
144
+ };
145
+ const report = (0, analyzeOpenApiDiff_1.analyzeOpenApiDiff)(oldSpec, newSpec);
146
+ node_assert_1.default.ok(report.summary.nonBreaking >= 3);
147
+ node_assert_1.default.ok(report.changes.some(change => change.type === 'model.added'));
148
+ node_assert_1.default.ok(report.changes.some(change => change.type === 'operation.added'));
149
+ node_assert_1.default.ok(report.changes.some(change => change.type === 'operation.response.success.added'));
150
+ });
151
+ (0, node_test_1.test)('classifies widening and narrowing transitions for enum/number and union', () => {
152
+ const oldSpec = {
153
+ openapi: '3.0.0',
154
+ paths: {},
155
+ components: {
156
+ schemas: {
157
+ Account: {
158
+ type: 'object',
159
+ properties: {
160
+ tier: { enum: ['basic', 'pro'] },
161
+ score: { type: 'integer' },
162
+ state: { oneOf: [{ type: 'string' }, { type: 'number' }] },
163
+ },
164
+ },
165
+ },
166
+ },
167
+ };
168
+ const newSpec = {
169
+ openapi: '3.0.0',
170
+ paths: {},
171
+ components: {
172
+ schemas: {
173
+ Account: {
174
+ type: 'object',
175
+ properties: {
176
+ tier: { enum: ['basic', 'pro', 'enterprise'] },
177
+ score: { type: 'number' },
178
+ state: { oneOf: [{ type: 'string' }] },
179
+ },
180
+ },
181
+ },
182
+ },
183
+ };
184
+ const report = (0, analyzeOpenApiDiff_1.analyzeOpenApiDiff)(oldSpec, newSpec);
185
+ node_assert_1.default.ok(report.changes.some(change => change.type === 'model.property.type.changed' &&
186
+ change.path.includes('/tier') &&
187
+ change.severity === 'non-breaking'));
188
+ node_assert_1.default.ok(report.changes.some(change => change.type === 'model.property.type.changed' &&
189
+ change.path.includes('/score') &&
190
+ change.severity === 'non-breaking'));
191
+ node_assert_1.default.ok(report.changes.some(change => change.type === 'model.property.type.changed' &&
192
+ change.path.includes('/state') &&
193
+ change.severity === 'breaking'));
194
+ });
195
+ (0, node_test_1.test)('treats different refs and narrowing formats as breaking, widening formats as non-breaking', () => {
196
+ const oldSpec = {
197
+ openapi: '3.0.0',
198
+ paths: {},
199
+ components: {
200
+ schemas: {
201
+ User: {
202
+ type: 'object',
203
+ properties: {
204
+ profile: { $ref: '#/components/schemas/ProfileV1' },
205
+ count: { type: 'integer', format: 'int32' },
206
+ ratio: { type: 'number', format: 'float' },
207
+ },
208
+ },
209
+ ProfileV1: {
210
+ type: 'object',
211
+ properties: {
212
+ id: { type: 'string' },
213
+ },
214
+ },
215
+ ProfileV2: {
216
+ type: 'object',
217
+ properties: {
218
+ id: { type: 'string' },
219
+ },
220
+ },
221
+ },
222
+ },
223
+ };
224
+ const newSpec = {
225
+ openapi: '3.0.0',
226
+ paths: {},
227
+ components: {
228
+ schemas: {
229
+ User: {
230
+ type: 'object',
231
+ properties: {
232
+ profile: { $ref: '#/components/schemas/ProfileV2' },
233
+ count: { type: 'integer', format: 'int64' },
234
+ ratio: { type: 'number', format: 'double' },
235
+ },
236
+ },
237
+ ProfileV1: {
238
+ type: 'object',
239
+ properties: {
240
+ id: { type: 'string' },
241
+ },
242
+ },
243
+ ProfileV2: {
244
+ type: 'object',
245
+ properties: {
246
+ id: { type: 'string' },
247
+ },
248
+ },
249
+ },
250
+ },
251
+ };
252
+ const wideningReport = (0, analyzeOpenApiDiff_1.analyzeOpenApiDiff)(oldSpec, newSpec);
253
+ node_assert_1.default.ok(wideningReport.changes.some(change => change.type === 'model.property.type.changed' &&
254
+ change.path.includes('/profile') &&
255
+ change.severity === 'breaking'));
256
+ node_assert_1.default.ok(wideningReport.changes.some(change => change.type === 'model.property.type.changed' &&
257
+ change.path.includes('/count') &&
258
+ change.severity === 'non-breaking'));
259
+ node_assert_1.default.ok(wideningReport.changes.some(change => change.type === 'model.property.type.changed' &&
260
+ change.path.includes('/ratio') &&
261
+ change.severity === 'non-breaking'));
262
+ const narrowingReport = (0, analyzeOpenApiDiff_1.analyzeOpenApiDiff)({
263
+ openapi: '3.0.0',
264
+ paths: {},
265
+ components: {
266
+ schemas: {
267
+ User: {
268
+ type: 'object',
269
+ properties: {
270
+ count: { type: 'integer', format: 'int64' },
271
+ },
272
+ },
273
+ },
274
+ },
275
+ }, {
276
+ openapi: '3.0.0',
277
+ paths: {},
278
+ components: {
279
+ schemas: {
280
+ User: {
281
+ type: 'object',
282
+ properties: {
283
+ count: { type: 'integer', format: 'int32' },
284
+ },
285
+ },
286
+ },
287
+ },
288
+ });
289
+ node_assert_1.default.ok(narrowingReport.changes.some(change => change.type === 'model.property.type.changed' &&
290
+ change.path.includes('/count') &&
291
+ change.severity === 'breaking'));
292
+ });
293
+ (0, node_test_1.test)('detects success response payload schema changes', () => {
294
+ const oldSpec = {
295
+ openapi: '3.0.0',
296
+ paths: {
297
+ '/users/{id}': {
298
+ get: {
299
+ responses: {
300
+ '200': {
301
+ description: 'ok',
302
+ content: {
303
+ 'application/json': {
304
+ schema: { type: 'integer' },
305
+ },
306
+ },
307
+ },
308
+ },
309
+ },
310
+ },
311
+ },
312
+ components: {
313
+ schemas: {},
314
+ },
315
+ };
316
+ const newSpec = {
317
+ openapi: '3.0.0',
318
+ paths: {
319
+ '/users/{id}': {
320
+ get: {
321
+ responses: {
322
+ '200': {
323
+ description: 'ok',
324
+ content: {
325
+ 'application/json': {
326
+ schema: { type: 'number' },
327
+ },
328
+ },
329
+ },
330
+ '201': {
331
+ description: 'created',
332
+ content: {
333
+ 'application/json': {
334
+ schema: { type: 'string' },
335
+ },
336
+ },
337
+ },
338
+ },
339
+ },
340
+ },
341
+ },
342
+ components: {
343
+ schemas: {},
344
+ },
345
+ };
346
+ const report = (0, analyzeOpenApiDiff_1.analyzeOpenApiDiff)(oldSpec, newSpec);
347
+ node_assert_1.default.ok(report.changes.some(change => change.type === 'operation.response.success.type.changed' && change.severity === 'non-breaking'));
348
+ node_assert_1.default.ok(report.changes.some(change => change.type === 'operation.response.success.added'));
349
+ });
350
+ (0, node_test_1.test)('returns stable and deduplicated changes ordering', () => {
351
+ const oldSpec = {
352
+ openapi: '3.0.0',
353
+ paths: {
354
+ '/z': {
355
+ get: {
356
+ responses: {
357
+ '200': { description: 'ok' },
358
+ },
359
+ },
360
+ },
361
+ },
362
+ components: {
363
+ schemas: {
364
+ Zeta: {
365
+ type: 'object',
366
+ properties: {
367
+ value: { type: 'string' },
368
+ },
369
+ },
370
+ Alpha: {
371
+ type: 'object',
372
+ properties: {
373
+ value: { type: 'string' },
374
+ },
375
+ },
376
+ },
377
+ },
378
+ };
379
+ const newSpec = {
380
+ openapi: '3.0.0',
381
+ paths: {},
382
+ components: {
383
+ schemas: {},
384
+ },
385
+ };
386
+ const report = (0, analyzeOpenApiDiff_1.analyzeOpenApiDiff)(oldSpec, newSpec);
387
+ const keys = report.changes.map(change => `${change.path}|${change.type}|${change.severity}|${change.message}`);
388
+ const sortedKeys = [...keys].sort((left, right) => left.localeCompare(right));
389
+ const uniqueSize = new Set(keys).size;
390
+ node_assert_1.default.deepStrictEqual(keys, sortedKeys);
391
+ node_assert_1.default.equal(keys.length, uniqueSize);
392
+ });
393
+ (0, node_test_1.test)('builds semver recommendation matrix (major/minor/patch)', () => {
394
+ const majorReport = (0, analyzeOpenApiDiff_1.analyzeOpenApiDiff)({
395
+ openapi: '3.0.0',
396
+ paths: {
397
+ '/users': {
398
+ get: {
399
+ responses: {
400
+ '200': { description: 'ok' },
401
+ },
402
+ },
403
+ },
404
+ },
405
+ components: { schemas: {} },
406
+ }, {
407
+ openapi: '3.0.0',
408
+ paths: {},
409
+ components: { schemas: {} },
410
+ });
411
+ node_assert_1.default.strictEqual(majorReport.recommendation.semver, 'major');
412
+ node_assert_1.default.ok(majorReport.recommendation.reasons.includes('HAS_BREAKING_CHANGES'));
413
+ const minorReport = (0, analyzeOpenApiDiff_1.analyzeOpenApiDiff)({
414
+ openapi: '3.0.0',
415
+ paths: {},
416
+ components: { schemas: {} },
417
+ }, {
418
+ openapi: '3.0.0',
419
+ paths: {
420
+ '/users': {
421
+ get: {
422
+ responses: {
423
+ '200': { description: 'ok' },
424
+ },
425
+ },
426
+ },
427
+ },
428
+ components: { schemas: {} },
429
+ });
430
+ node_assert_1.default.strictEqual(minorReport.recommendation.semver, 'minor');
431
+ node_assert_1.default.ok(minorReport.recommendation.reasons.includes('HAS_BACKWARD_COMPATIBLE_CHANGES'));
432
+ const patchReport = (0, analyzeOpenApiDiff_1.analyzeOpenApiDiff)({
433
+ openapi: '3.0.0',
434
+ paths: {
435
+ '/users': {
436
+ get: {
437
+ responses: {
438
+ '200': { description: 'ok' },
439
+ },
440
+ },
441
+ },
442
+ },
443
+ components: { schemas: {} },
444
+ }, {
445
+ openapi: '3.0.0',
446
+ paths: {
447
+ '/users': {
448
+ get: {
449
+ responses: {
450
+ '200': { description: 'ok' },
451
+ },
452
+ },
453
+ },
454
+ },
455
+ components: { schemas: {} },
456
+ });
457
+ node_assert_1.default.strictEqual(patchReport.recommendation.semver, 'patch');
458
+ node_assert_1.default.ok(patchReport.recommendation.reasons.includes('NO_API_SURFACE_CHANGES'));
459
+ });
460
+ (0, node_test_1.test)('builds governance violations and supports allowBreaking override', () => {
461
+ const oldSpec = {
462
+ openapi: '3.0.0',
463
+ paths: {
464
+ '/users': {
465
+ get: {
466
+ operationId: 'getUsers',
467
+ responses: {
468
+ '200': { description: 'ok' },
469
+ },
470
+ },
471
+ },
472
+ },
473
+ components: { schemas: {} },
474
+ };
475
+ const newSpec = {
476
+ openapi: '3.0.0',
477
+ paths: {
478
+ '/users': {
479
+ get: {
480
+ responses: {
481
+ default: { description: 'fallback' },
482
+ },
483
+ },
484
+ },
485
+ },
486
+ components: { schemas: {} },
487
+ };
488
+ const strictGovernanceReport = (0, analyzeOpenApiDiff_1.analyzeOpenApiDiff)(oldSpec, newSpec);
489
+ node_assert_1.default.ok(strictGovernanceReport.governance.violations.some(violation => violation.ruleId === 'NO_BREAKING_WITHOUT_FLAG'));
490
+ node_assert_1.default.ok(strictGovernanceReport.governance.violations.some(violation => violation.ruleId === 'REQUIRE_OPERATION_ID'));
491
+ node_assert_1.default.ok(strictGovernanceReport.governance.violations.some(violation => violation.ruleId === 'NO_DEFAULT_WITHOUT_2XX'));
492
+ node_assert_1.default.ok(strictGovernanceReport.governance.summary.errors > 0);
493
+ const allowedBreakingReport = (0, analyzeOpenApiDiff_1.analyzeOpenApiDiff)(oldSpec, newSpec, { allowBreaking: true });
494
+ node_assert_1.default.ok(!allowedBreakingReport.governance.violations.some(violation => violation.ruleId === 'NO_BREAKING_WITHOUT_FLAG'));
495
+ });
496
+ (0, node_test_1.test)('applies governance config overrides in semantic diff report', () => {
497
+ const report = (0, analyzeOpenApiDiff_1.analyzeOpenApiDiff)({
498
+ openapi: '3.0.0',
499
+ paths: {
500
+ '/users': {
501
+ get: {
502
+ operationId: 'getUsers',
503
+ responses: {
504
+ '200': { description: 'ok' },
505
+ },
506
+ },
507
+ },
508
+ },
509
+ components: { schemas: {} },
510
+ }, {
511
+ openapi: '3.0.0',
512
+ paths: {
513
+ '/users': {
514
+ get: {
515
+ responses: {
516
+ default: { description: 'fallback' },
517
+ },
518
+ },
519
+ },
520
+ },
521
+ components: { schemas: {} },
522
+ }, {
523
+ governanceConfig: {
524
+ rules: {
525
+ REQUIRE_OPERATION_ID: {
526
+ enabled: false,
527
+ },
528
+ NO_DEFAULT_WITHOUT_2XX: {
529
+ severity: 'error',
530
+ },
531
+ },
532
+ },
533
+ });
534
+ node_assert_1.default.ok(!report.governance.violations.some(violation => violation.ruleId === 'REQUIRE_OPERATION_ID'));
535
+ node_assert_1.default.ok(report.governance.violations.some(violation => violation.ruleId === 'NO_DEFAULT_WITHOUT_2XX' && violation.severity === 'error'));
536
+ });
537
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=semanticDiffReportSchema.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semanticDiffReportSchema.test.d.ts","sourceRoot":"","sources":["../../../../src/core/semanticDiff/__tests__/semanticDiffReportSchema.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,66 @@
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
+ const node_assert_1 = __importDefault(require("node:assert"));
7
+ const node_test_1 = require("node:test");
8
+ const analyzeOpenApiDiff_1 = require("../analyzeOpenApiDiff");
9
+ const semanticDiffReportSchema_1 = require("../semanticDiffReportSchema");
10
+ (0, node_test_1.describe)('@unit: semanticDiffReportSchema', () => {
11
+ (0, node_test_1.test)('validates report produced by analyzeOpenApiDiff', () => {
12
+ const report = (0, analyzeOpenApiDiff_1.analyzeOpenApiDiff)({
13
+ openapi: '3.0.0',
14
+ paths: {
15
+ '/ping': {
16
+ get: {
17
+ responses: {
18
+ '200': { description: 'ok' },
19
+ },
20
+ },
21
+ },
22
+ },
23
+ components: { schemas: {} },
24
+ }, {
25
+ openapi: '3.0.0',
26
+ paths: {
27
+ '/ping': {
28
+ get: {
29
+ responses: {
30
+ '200': { description: 'ok' },
31
+ '201': { description: 'created' },
32
+ },
33
+ },
34
+ },
35
+ },
36
+ components: { schemas: {} },
37
+ });
38
+ const validation = (0, semanticDiffReportSchema_1.validateSemanticDiffReportSchema)(report);
39
+ node_assert_1.default.strictEqual(validation.valid, true, validation.errors.join('\n'));
40
+ });
41
+ (0, node_test_1.test)('rejects report without schemaVersion', () => {
42
+ const malformedReport = {
43
+ summary: {
44
+ breaking: 0,
45
+ nonBreaking: 0,
46
+ informational: 0,
47
+ },
48
+ recommendation: {
49
+ semver: 'patch',
50
+ reason: 'No changes',
51
+ },
52
+ governance: {
53
+ summary: {
54
+ errors: 0,
55
+ warnings: 0,
56
+ info: 0,
57
+ },
58
+ violations: [],
59
+ },
60
+ changes: [],
61
+ };
62
+ const validation = (0, semanticDiffReportSchema_1.validateSemanticDiffReportSchema)(malformedReport);
63
+ node_assert_1.default.strictEqual(validation.valid, false);
64
+ node_assert_1.default.ok(validation.errors.some(error => error.includes('schemaVersion')));
65
+ });
66
+ });
@@ -0,0 +1,45 @@
1
+ import { GovernancePolicyConfig, GovernanceReport } from '../governance/evaluateGovernanceRules';
2
+ import { CommonOpenApi } from '../types/shared/CommonOpenApi.model';
3
+ type ChangeSeverity = 'breaking' | 'non-breaking' | 'informational';
4
+ type SemanticDiffSummary = {
5
+ breaking: number;
6
+ nonBreaking: number;
7
+ informational: number;
8
+ };
9
+ type SemanticDiffSemverRecommendation = 'major' | 'minor' | 'patch';
10
+ type SemanticDiffConfidence = 'high' | 'medium' | 'low';
11
+ type SemanticDiffRecommendationReason = 'HAS_BREAKING_CHANGES' | 'HAS_BACKWARD_COMPATIBLE_CHANGES' | 'HAS_INFORMATIONAL_ONLY_CHANGES' | 'NO_API_SURFACE_CHANGES';
12
+ type SemanticDiffRecommendation = {
13
+ semver: SemanticDiffSemverRecommendation;
14
+ confidence: SemanticDiffConfidence;
15
+ reason: string;
16
+ reasons: SemanticDiffRecommendationReason[];
17
+ };
18
+ type SemanticDiffChange = {
19
+ type: string;
20
+ severity: ChangeSeverity;
21
+ message: string;
22
+ path: string;
23
+ };
24
+ export declare const SEMANTIC_DIFF_REPORT_SCHEMA_VERSION = "1.1.0";
25
+ export type SemanticDiffReport = {
26
+ schemaVersion: string;
27
+ summary: SemanticDiffSummary;
28
+ recommendation: SemanticDiffRecommendation;
29
+ governance: GovernanceReport;
30
+ changes: SemanticDiffChange[];
31
+ };
32
+ type AnalyzeOpenApiDiffOptions = {
33
+ allowBreaking?: boolean;
34
+ governanceConfig?: GovernancePolicyConfig;
35
+ };
36
+ /**
37
+ * Creates semantic diff report between two OpenAPI specs.
38
+ */
39
+ export declare function analyzeOpenApiDiff(oldSpec: CommonOpenApi, newSpec: CommonOpenApi, options?: AnalyzeOpenApiDiffOptions): SemanticDiffReport;
40
+ /**
41
+ * Writes semantic diff report to JSON file and returns absolute path.
42
+ */
43
+ export declare function writeSemanticDiffReport(report: SemanticDiffReport, reportFilePath: string): Promise<string>;
44
+ export {};
45
+ //# sourceMappingURL=analyzeOpenApiDiff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzeOpenApiDiff.d.ts","sourceRoot":"","sources":["../../../src/core/semanticDiff/analyzeOpenApiDiff.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAA2B,MAAM,uCAAuC,CAAC;AAC1H,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE,KAAK,cAAc,GAAG,UAAU,GAAG,cAAc,GAAG,eAAe,CAAC;AAEpE,KAAK,mBAAmB,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,KAAK,gCAAgC,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AACpE,KAAK,sBAAsB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AACxD,KAAK,gCAAgC,GAC/B,sBAAsB,GACtB,iCAAiC,GACjC,gCAAgC,GAChC,wBAAwB,CAAC;AAE/B,KAAK,0BAA0B,GAAG;IAC9B,MAAM,EAAE,gCAAgC,CAAC;IACzC,UAAU,EAAE,sBAAsB,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,gCAAgC,EAAE,CAAC;CAC/C,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,mCAAmC,UAAU,CAAC;AAE3D,MAAM,MAAM,kBAAkB,GAAG;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,cAAc,EAAE,0BAA0B,CAAC;IAC3C,UAAU,EAAE,gBAAgB,CAAC;IAC7B,OAAO,EAAE,kBAAkB,EAAE,CAAC;CACjC,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;CAC7C,CAAC;AA6yBF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,GAAE,yBAA8B,GAAG,kBAAkB,CA2B9I;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAajH"}