@unispechq/unispec-core 0.3.2 → 0.3.4

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 (440) hide show
  1. package/dist/cache/cache-factory.d.ts +2 -2
  2. package/dist/cache/cache-factory.js +1 -1
  3. package/dist/cache/cache-manager.d.ts +2 -2
  4. package/dist/cache/cache-manager.js +9 -7
  5. package/dist/cache/hash-utils.d.ts +1 -11
  6. package/dist/cache/hash-utils.js +1 -21
  7. package/dist/cache/hashing.d.ts +15 -6
  8. package/dist/cache/hashing.js +8 -12
  9. package/dist/cache/index.d.ts +6 -6
  10. package/dist/cache/index.js +5 -5
  11. package/dist/cache/lru-cache.d.ts +1 -13
  12. package/dist/cache/lru-cache.js +3 -24
  13. package/dist/cjs/cache/cache-factory.js +1 -1
  14. package/dist/cjs/cache/cache-manager.js +9 -7
  15. package/dist/cjs/cache/hash-utils.js +1 -23
  16. package/dist/cjs/cache/hashing.js +7 -13
  17. package/dist/cjs/cache/index.js +6 -8
  18. package/dist/cjs/cache/lru-cache.js +3 -24
  19. package/dist/cjs/diff/annotators.js +3 -2
  20. package/dist/cjs/diff/core.js +2 -2
  21. package/dist/cjs/diff/enhanced-diff.js +7 -21
  22. package/dist/cjs/diff/index.js +8 -8
  23. package/dist/cjs/errors/config-error.js +1 -1
  24. package/dist/cjs/errors/error-factory.js +7 -7
  25. package/dist/cjs/errors/index.js +8 -8
  26. package/dist/cjs/errors/loader-error.js +1 -1
  27. package/dist/cjs/errors/reference-error.js +1 -1
  28. package/dist/cjs/errors/schema-error.js +1 -1
  29. package/dist/cjs/errors/security-error.js +1 -1
  30. package/dist/cjs/errors/semantic-error.js +1 -1
  31. package/dist/cjs/index.js +13 -13
  32. package/dist/cjs/loader/index.js +4 -4
  33. package/dist/cjs/loader/security-validator.js +1 -1
  34. package/dist/cjs/loader/unispec-loader.js +3 -3
  35. package/dist/cjs/loader/yaml-loader.js +1 -1
  36. package/dist/cjs/normalizer/core.js +11 -6
  37. package/dist/cjs/normalizer/index.js +1 -1
  38. package/dist/cjs/normalizer/utils.js +23 -7
  39. package/dist/cjs/optimizer/core.js +35 -10
  40. package/dist/cjs/optimizer/index.js +3 -3
  41. package/dist/cjs/optimizer/optimization-functions.js +2 -2
  42. package/dist/cjs/schemas/dedupe.js +27 -14
  43. package/dist/cjs/schemas/index.js +3 -3
  44. package/dist/cjs/schemas/resolver.js +3 -2
  45. package/dist/cjs/validator/ajv-validator.js +1 -1
  46. package/dist/cjs/validator/config-validator-main.js +4 -4
  47. package/dist/cjs/validator/config-validator.js +1 -1
  48. package/dist/cjs/validator/index.js +7 -7
  49. package/dist/cjs/validator/reference-validator.js +1 -1
  50. package/dist/cjs/validator/tests-validator.js +2 -2
  51. package/dist/cjs/validator/unispec-validator.js +7 -11
  52. package/dist/cjs/validator/validator-factory.js +1 -1
  53. package/dist/diff/annotators.d.ts +1 -1
  54. package/dist/diff/annotators.js +3 -2
  55. package/dist/diff/change-reports.d.ts +1 -1
  56. package/dist/diff/core.d.ts +2 -2
  57. package/dist/diff/core.js +2 -2
  58. package/dist/diff/enhanced-diff.d.ts +3 -3
  59. package/dist/diff/enhanced-diff.js +7 -21
  60. package/dist/diff/impact-strategies-refactored.d.ts +2 -2
  61. package/dist/diff/impact-strategies.d.ts +2 -2
  62. package/dist/diff/index.d.ts +8 -8
  63. package/dist/diff/index.js +8 -8
  64. package/dist/diff/metrics-calculator.d.ts +1 -1
  65. package/dist/diff/risk-calculator.d.ts +1 -1
  66. package/dist/diff/suggestion-generator.d.ts +2 -2
  67. package/dist/errors/config-error.d.ts +1 -1
  68. package/dist/errors/config-error.js +1 -1
  69. package/dist/errors/error-factory.d.ts +7 -7
  70. package/dist/errors/error-factory.js +7 -7
  71. package/dist/errors/index.d.ts +8 -8
  72. package/dist/errors/index.js +8 -8
  73. package/dist/errors/loader-error.d.ts +1 -1
  74. package/dist/errors/loader-error.js +1 -1
  75. package/dist/errors/reference-error.d.ts +1 -1
  76. package/dist/errors/reference-error.js +1 -1
  77. package/dist/errors/schema-error.d.ts +1 -1
  78. package/dist/errors/schema-error.js +1 -1
  79. package/dist/errors/security-error.d.ts +1 -1
  80. package/dist/errors/security-error.js +1 -1
  81. package/dist/errors/semantic-error.d.ts +1 -1
  82. package/dist/errors/semantic-error.js +1 -1
  83. package/dist/index.cjs +13 -13
  84. package/dist/index.d.ts +13 -13
  85. package/dist/index.js +13 -13
  86. package/dist/loader/index.d.ts +5 -5
  87. package/dist/loader/index.js +4 -4
  88. package/dist/loader/security-validator.d.ts +1 -1
  89. package/dist/loader/security-validator.js +1 -1
  90. package/dist/loader/unispec-loader.d.ts +2 -2
  91. package/dist/loader/unispec-loader.js +3 -3
  92. package/dist/loader/yaml-loader.d.ts +1 -1
  93. package/dist/loader/yaml-loader.js +1 -1
  94. package/dist/normalizer/core.d.ts +2 -2
  95. package/dist/normalizer/core.js +11 -6
  96. package/dist/normalizer/graphql-normalizer.d.ts +1 -1
  97. package/dist/normalizer/index.d.ts +2 -2
  98. package/dist/normalizer/index.js +1 -1
  99. package/dist/normalizer/rest-normalizer.d.ts +1 -1
  100. package/dist/normalizer/types.d.ts +1 -1
  101. package/dist/normalizer/utils.d.ts +6 -3
  102. package/dist/normalizer/utils.js +23 -7
  103. package/dist/normalizer/websocket-normalizer.d.ts +1 -1
  104. package/dist/optimizer/core.d.ts +2 -2
  105. package/dist/optimizer/core.js +35 -10
  106. package/dist/optimizer/index.d.ts +4 -4
  107. package/dist/optimizer/index.js +3 -3
  108. package/dist/optimizer/optimization-functions.d.ts +2 -2
  109. package/dist/optimizer/optimization-functions.js +2 -2
  110. package/dist/optimizer/types.d.ts +1 -1
  111. package/dist/schemas/dedupe.d.ts +1 -1
  112. package/dist/schemas/dedupe.js +27 -14
  113. package/dist/schemas/index.d.ts +3 -3
  114. package/dist/schemas/index.js +3 -3
  115. package/dist/schemas/resolver.d.ts +1 -1
  116. package/dist/schemas/resolver.js +3 -2
  117. package/dist/types/index.d.ts +2 -1
  118. package/dist/validator/ajv-validator.d.ts +1 -1
  119. package/dist/validator/ajv-validator.js +1 -1
  120. package/dist/validator/config-validator-main.d.ts +2 -2
  121. package/dist/validator/config-validator-main.js +4 -4
  122. package/dist/validator/config-validator.d.ts +1 -1
  123. package/dist/validator/config-validator.js +1 -1
  124. package/dist/validator/index.d.ts +10 -10
  125. package/dist/validator/index.js +7 -7
  126. package/dist/validator/reference-validator.d.ts +1 -1
  127. package/dist/validator/reference-validator.js +1 -1
  128. package/dist/validator/schema-references.d.ts +1 -1
  129. package/dist/validator/semantic-validator.d.ts +1 -1
  130. package/dist/validator/tests-validator.d.ts +2 -2
  131. package/dist/validator/tests-validator.js +2 -2
  132. package/dist/validator/types.d.ts +3 -3
  133. package/dist/validator/unispec-validator.d.ts +2 -2
  134. package/dist/validator/unispec-validator.js +7 -11
  135. package/dist/validator/validator-factory.d.ts +3 -3
  136. package/dist/validator/validator-factory.js +1 -1
  137. package/package.json +3 -3
  138. package/dist/cjs/src/cache/cache-factory.js +0 -72
  139. package/dist/cjs/src/cache/cache-manager.js +0 -128
  140. package/dist/cjs/src/cache/constants.js +0 -25
  141. package/dist/cjs/src/cache/hash-utils.js +0 -19
  142. package/dist/cjs/src/cache/hashing.js +0 -230
  143. package/dist/cjs/src/cache/index.js +0 -24
  144. package/dist/cjs/src/cache/lru-cache.js +0 -144
  145. package/dist/cjs/src/cache/types.js +0 -5
  146. package/dist/cjs/src/diff/annotators.js +0 -160
  147. package/dist/cjs/src/diff/change-reports.js +0 -369
  148. package/dist/cjs/src/diff/core.js +0 -158
  149. package/dist/cjs/src/diff/enhanced-diff.js +0 -65
  150. package/dist/cjs/src/diff/impact-strategies-refactored.js +0 -230
  151. package/dist/cjs/src/diff/impact-strategies.js +0 -219
  152. package/dist/cjs/src/diff/index.js +0 -27
  153. package/dist/cjs/src/diff/metrics-calculator.js +0 -69
  154. package/dist/cjs/src/diff/risk-calculator.js +0 -58
  155. package/dist/cjs/src/diff/suggestion-generator.js +0 -78
  156. package/dist/cjs/src/diff/types.js +0 -11
  157. package/dist/cjs/src/errors/base-error.js +0 -33
  158. package/dist/cjs/src/errors/config-error.js +0 -11
  159. package/dist/cjs/src/errors/error-factory.js +0 -48
  160. package/dist/cjs/src/errors/index.js +0 -19
  161. package/dist/cjs/src/errors/loader-error.js +0 -11
  162. package/dist/cjs/src/errors/reference-error.js +0 -11
  163. package/dist/cjs/src/errors/schema-error.js +0 -11
  164. package/dist/cjs/src/errors/security-error.js +0 -11
  165. package/dist/cjs/src/errors/semantic-error.js +0 -11
  166. package/dist/cjs/src/generated-schemas.js +0 -2100
  167. package/dist/cjs/src/index.js +0 -59
  168. package/dist/cjs/src/loader/index.js +0 -13
  169. package/dist/cjs/src/loader/security-validator.js +0 -53
  170. package/dist/cjs/src/loader/types.js +0 -11
  171. package/dist/cjs/src/loader/unispec-loader.js +0 -84
  172. package/dist/cjs/src/loader/yaml-loader.js +0 -76
  173. package/dist/cjs/src/normalizer/core.js +0 -37
  174. package/dist/cjs/src/normalizer/graphql-normalizer.js +0 -67
  175. package/dist/cjs/src/normalizer/index.js +0 -7
  176. package/dist/cjs/src/normalizer/rest-normalizer.js +0 -51
  177. package/dist/cjs/src/normalizer/types.js +0 -2
  178. package/dist/cjs/src/normalizer/utils.js +0 -49
  179. package/dist/cjs/src/normalizer/websocket-normalizer.js +0 -81
  180. package/dist/cjs/src/optimizer/core.js +0 -140
  181. package/dist/cjs/src/optimizer/index.js +0 -17
  182. package/dist/cjs/src/optimizer/optimization-functions.js +0 -185
  183. package/dist/cjs/src/optimizer/types.js +0 -2
  184. package/dist/cjs/src/optimizer/utils.js +0 -32
  185. package/dist/cjs/src/schemas/dedupe.js +0 -113
  186. package/dist/cjs/src/schemas/index.js +0 -14
  187. package/dist/cjs/src/schemas/resolver.js +0 -42
  188. package/dist/cjs/src/schemas/utils.js +0 -53
  189. package/dist/cjs/src/types/index.js +0 -2
  190. package/dist/cjs/src/validator/ajv-validator.js +0 -82
  191. package/dist/cjs/src/validator/config-validator-main.js +0 -34
  192. package/dist/cjs/src/validator/config-validator.js +0 -17
  193. package/dist/cjs/src/validator/index.js +0 -23
  194. package/dist/cjs/src/validator/object-traversal.js +0 -112
  195. package/dist/cjs/src/validator/reference-validator.js +0 -233
  196. package/dist/cjs/src/validator/schema-references.js +0 -116
  197. package/dist/cjs/src/validator/semantic-validator.js +0 -328
  198. package/dist/cjs/src/validator/tests-validator.js +0 -16
  199. package/dist/cjs/src/validator/types.js +0 -2
  200. package/dist/cjs/src/validator/unispec-validator.js +0 -80
  201. package/dist/cjs/src/validator/validator-factory.js +0 -77
  202. package/dist/cjs/src/versions.js +0 -147
  203. package/dist/cjs/tests/cache/cache.test.js +0 -274
  204. package/dist/cjs/tests/cache/utils.js +0 -32
  205. package/dist/cjs/tests/concurrency-normalizer-optimizer.test.js +0 -1
  206. package/dist/cjs/tests/diff/diff-annotators.test.js +0 -280
  207. package/dist/cjs/tests/diff/diff-comprehensive.test.js +0 -262
  208. package/dist/cjs/tests/diff/diff-extended.test.js +0 -235
  209. package/dist/cjs/tests/diff/diff.test.js +0 -189
  210. package/dist/cjs/tests/diff/utils.js +0 -8
  211. package/dist/cjs/tests/errors/errors-integration.test.js +0 -173
  212. package/dist/cjs/tests/errors/errors.test.js +0 -280
  213. package/dist/cjs/tests/errors/utils.js +0 -7
  214. package/dist/cjs/tests/loader/integration.test.js +0 -216
  215. package/dist/cjs/tests/loader/loader.test.js +0 -341
  216. package/dist/cjs/tests/normalizer/normalizer-comprehensive.test.js +0 -648
  217. package/dist/cjs/tests/normalizer/normalizer-invalid.test.js +0 -258
  218. package/dist/cjs/tests/normalizer/normalizer-valid.test.js +0 -238
  219. package/dist/cjs/tests/normalizer/utils.js +0 -47
  220. package/dist/cjs/tests/optimizer/compress-references.test.js +0 -304
  221. package/dist/cjs/tests/optimizer/deduplication.test.js +0 -132
  222. package/dist/cjs/tests/optimizer/integration.test.js +0 -131
  223. package/dist/cjs/tests/optimizer/optimization-report.test.js +0 -222
  224. package/dist/cjs/tests/optimizer/optimize-document.test.js +0 -187
  225. package/dist/cjs/tests/optimizer/orphaned-schemas.test.js +0 -194
  226. package/dist/cjs/tests/optimizer/sort-schemas.test.js +0 -131
  227. package/dist/cjs/tests/optimizer/utils.js +0 -209
  228. package/dist/cjs/tests/schemas/schemas-edge-cases.test.js +0 -223
  229. package/dist/cjs/tests/schemas/schemas.test.js +0 -400
  230. package/dist/cjs/tests/schemas/utils.js +0 -7
  231. package/dist/cjs/tests/utils.js +0 -131
  232. package/dist/cjs/tests/validator/config-validator.test.js +0 -78
  233. package/dist/cjs/tests/validator/debug-config.js +0 -1
  234. package/dist/cjs/tests/validator/debug-missing-service.js +0 -1
  235. package/dist/cjs/tests/validator/debug-other-configs.js +0 -1
  236. package/dist/cjs/tests/validator/debug-references.js +0 -1
  237. package/dist/cjs/tests/validator/unispec-validator.test.js +0 -103
  238. package/dist/cjs/tests/validator/utils.js +0 -25
  239. package/dist/src/cache/cache-factory.d.ts +0 -31
  240. package/dist/src/cache/cache-factory.js +0 -65
  241. package/dist/src/cache/cache-manager.d.ts +0 -62
  242. package/dist/src/cache/cache-manager.js +0 -124
  243. package/dist/src/cache/constants.d.ts +0 -21
  244. package/dist/src/cache/constants.js +0 -22
  245. package/dist/src/cache/hash-utils.d.ts +0 -11
  246. package/dist/src/cache/hash-utils.js +0 -15
  247. package/dist/src/cache/hashing.d.ts +0 -28
  248. package/dist/src/cache/hashing.js +0 -193
  249. package/dist/src/cache/index.d.ts +0 -6
  250. package/dist/src/cache/index.js +0 -10
  251. package/dist/src/cache/lru-cache.d.ts +0 -44
  252. package/dist/src/cache/lru-cache.js +0 -140
  253. package/dist/src/cache/types.d.ts +0 -24
  254. package/dist/src/cache/types.js +0 -4
  255. package/dist/src/diff/annotators.d.ts +0 -4
  256. package/dist/src/diff/annotators.js +0 -155
  257. package/dist/src/diff/change-reports.d.ts +0 -37
  258. package/dist/src/diff/change-reports.js +0 -366
  259. package/dist/src/diff/core.d.ts +0 -26
  260. package/dist/src/diff/core.js +0 -155
  261. package/dist/src/diff/enhanced-diff.d.ts +0 -51
  262. package/dist/src/diff/enhanced-diff.js +0 -62
  263. package/dist/src/diff/impact-strategies-refactored.d.ts +0 -69
  264. package/dist/src/diff/impact-strategies-refactored.js +0 -223
  265. package/dist/src/diff/impact-strategies.d.ts +0 -41
  266. package/dist/src/diff/impact-strategies.js +0 -212
  267. package/dist/src/diff/index.d.ts +0 -8
  268. package/dist/src/diff/index.js +0 -11
  269. package/dist/src/diff/metrics-calculator.d.ts +0 -23
  270. package/dist/src/diff/metrics-calculator.js +0 -65
  271. package/dist/src/diff/risk-calculator.d.ts +0 -23
  272. package/dist/src/diff/risk-calculator.js +0 -55
  273. package/dist/src/diff/suggestion-generator.d.ts +0 -18
  274. package/dist/src/diff/suggestion-generator.js +0 -74
  275. package/dist/src/diff/types.d.ts +0 -24
  276. package/dist/src/diff/types.js +0 -8
  277. package/dist/src/errors/base-error.d.ts +0 -20
  278. package/dist/src/errors/base-error.js +0 -29
  279. package/dist/src/errors/config-error.d.ts +0 -4
  280. package/dist/src/errors/config-error.js +0 -7
  281. package/dist/src/errors/error-factory.d.ts +0 -22
  282. package/dist/src/errors/error-factory.js +0 -45
  283. package/dist/src/errors/index.d.ts +0 -8
  284. package/dist/src/errors/index.js +0 -8
  285. package/dist/src/errors/loader-error.d.ts +0 -4
  286. package/dist/src/errors/loader-error.js +0 -7
  287. package/dist/src/errors/reference-error.d.ts +0 -4
  288. package/dist/src/errors/reference-error.js +0 -7
  289. package/dist/src/errors/schema-error.d.ts +0 -4
  290. package/dist/src/errors/schema-error.js +0 -7
  291. package/dist/src/errors/security-error.d.ts +0 -4
  292. package/dist/src/errors/security-error.js +0 -7
  293. package/dist/src/errors/semantic-error.d.ts +0 -4
  294. package/dist/src/errors/semantic-error.js +0 -7
  295. package/dist/src/generated-schemas.d.ts +0 -2073
  296. package/dist/src/generated-schemas.js +0 -2097
  297. package/dist/src/index.d.ts +0 -13
  298. package/dist/src/index.js +0 -43
  299. package/dist/src/loader/index.d.ts +0 -5
  300. package/dist/src/loader/index.js +0 -5
  301. package/dist/src/loader/security-validator.d.ts +0 -5
  302. package/dist/src/loader/security-validator.js +0 -50
  303. package/dist/src/loader/types.d.ts +0 -30
  304. package/dist/src/loader/types.js +0 -8
  305. package/dist/src/loader/unispec-loader.d.ts +0 -10
  306. package/dist/src/loader/unispec-loader.js +0 -81
  307. package/dist/src/loader/yaml-loader.d.ts +0 -10
  308. package/dist/src/loader/yaml-loader.js +0 -39
  309. package/dist/src/normalizer/core.d.ts +0 -24
  310. package/dist/src/normalizer/core.js +0 -34
  311. package/dist/src/normalizer/graphql-normalizer.d.ts +0 -8
  312. package/dist/src/normalizer/graphql-normalizer.js +0 -64
  313. package/dist/src/normalizer/index.d.ts +0 -2
  314. package/dist/src/normalizer/index.js +0 -3
  315. package/dist/src/normalizer/rest-normalizer.d.ts +0 -8
  316. package/dist/src/normalizer/rest-normalizer.js +0 -48
  317. package/dist/src/normalizer/types.d.ts +0 -7
  318. package/dist/src/normalizer/types.js +0 -1
  319. package/dist/src/normalizer/utils.d.ts +0 -17
  320. package/dist/src/normalizer/utils.js +0 -45
  321. package/dist/src/normalizer/websocket-normalizer.d.ts +0 -8
  322. package/dist/src/normalizer/websocket-normalizer.js +0 -78
  323. package/dist/src/optimizer/core.d.ts +0 -17
  324. package/dist/src/optimizer/core.js +0 -136
  325. package/dist/src/optimizer/index.d.ts +0 -4
  326. package/dist/src/optimizer/index.js +0 -7
  327. package/dist/src/optimizer/optimization-functions.d.ts +0 -32
  328. package/dist/src/optimizer/optimization-functions.js +0 -179
  329. package/dist/src/optimizer/types.d.ts +0 -28
  330. package/dist/src/optimizer/types.js +0 -1
  331. package/dist/src/optimizer/utils.d.ts +0 -7
  332. package/dist/src/optimizer/utils.js +0 -29
  333. package/dist/src/schemas/dedupe.d.ts +0 -9
  334. package/dist/src/schemas/dedupe.js +0 -110
  335. package/dist/src/schemas/index.d.ts +0 -3
  336. package/dist/src/schemas/index.js +0 -6
  337. package/dist/src/schemas/resolver.d.ts +0 -19
  338. package/dist/src/schemas/resolver.js +0 -38
  339. package/dist/src/schemas/utils.d.ts +0 -20
  340. package/dist/src/schemas/utils.js +0 -49
  341. package/dist/src/types/index.d.ts +0 -434
  342. package/dist/src/types/index.js +0 -1
  343. package/dist/src/validator/ajv-validator.d.ts +0 -15
  344. package/dist/src/validator/ajv-validator.js +0 -75
  345. package/dist/src/validator/config-validator-main.d.ts +0 -10
  346. package/dist/src/validator/config-validator-main.js +0 -31
  347. package/dist/src/validator/config-validator.d.ts +0 -5
  348. package/dist/src/validator/config-validator.js +0 -14
  349. package/dist/src/validator/index.d.ts +0 -10
  350. package/dist/src/validator/index.js +0 -11
  351. package/dist/src/validator/object-traversal.d.ts +0 -52
  352. package/dist/src/validator/object-traversal.js +0 -104
  353. package/dist/src/validator/reference-validator.d.ts +0 -31
  354. package/dist/src/validator/reference-validator.js +0 -230
  355. package/dist/src/validator/schema-references.d.ts +0 -23
  356. package/dist/src/validator/schema-references.js +0 -111
  357. package/dist/src/validator/semantic-validator.d.ts +0 -26
  358. package/dist/src/validator/semantic-validator.js +0 -325
  359. package/dist/src/validator/tests-validator.d.ts +0 -9
  360. package/dist/src/validator/tests-validator.js +0 -13
  361. package/dist/src/validator/types.d.ts +0 -29
  362. package/dist/src/validator/types.js +0 -1
  363. package/dist/src/validator/unispec-validator.d.ts +0 -15
  364. package/dist/src/validator/unispec-validator.js +0 -77
  365. package/dist/src/validator/validator-factory.d.ts +0 -10
  366. package/dist/src/validator/validator-factory.js +0 -73
  367. package/dist/src/versions.d.ts +0 -10
  368. package/dist/src/versions.js +0 -143
  369. package/dist/tests/cache/cache.test.d.ts +0 -1
  370. package/dist/tests/cache/cache.test.js +0 -269
  371. package/dist/tests/cache/utils.d.ts +0 -4
  372. package/dist/tests/cache/utils.js +0 -24
  373. package/dist/tests/concurrency-normalizer-optimizer.test.d.ts +0 -0
  374. package/dist/tests/concurrency-normalizer-optimizer.test.js +0 -1
  375. package/dist/tests/diff/diff-annotators.test.d.ts +0 -1
  376. package/dist/tests/diff/diff-annotators.test.js +0 -275
  377. package/dist/tests/diff/diff-comprehensive.test.d.ts +0 -1
  378. package/dist/tests/diff/diff-comprehensive.test.js +0 -257
  379. package/dist/tests/diff/diff-extended.test.d.ts +0 -1
  380. package/dist/tests/diff/diff-extended.test.js +0 -230
  381. package/dist/tests/diff/diff.test.d.ts +0 -1
  382. package/dist/tests/diff/diff.test.js +0 -184
  383. package/dist/tests/diff/utils.d.ts +0 -2
  384. package/dist/tests/diff/utils.js +0 -3
  385. package/dist/tests/errors/errors-integration.test.d.ts +0 -1
  386. package/dist/tests/errors/errors-integration.test.js +0 -168
  387. package/dist/tests/errors/errors.test.d.ts +0 -1
  388. package/dist/tests/errors/errors.test.js +0 -275
  389. package/dist/tests/errors/utils.d.ts +0 -2
  390. package/dist/tests/errors/utils.js +0 -3
  391. package/dist/tests/loader/integration.test.d.ts +0 -1
  392. package/dist/tests/loader/integration.test.js +0 -211
  393. package/dist/tests/loader/loader.test.d.ts +0 -1
  394. package/dist/tests/loader/loader.test.js +0 -336
  395. package/dist/tests/normalizer/normalizer-comprehensive.test.d.ts +0 -1
  396. package/dist/tests/normalizer/normalizer-comprehensive.test.js +0 -643
  397. package/dist/tests/normalizer/normalizer-invalid.test.d.ts +0 -1
  398. package/dist/tests/normalizer/normalizer-invalid.test.js +0 -253
  399. package/dist/tests/normalizer/normalizer-valid.test.d.ts +0 -1
  400. package/dist/tests/normalizer/normalizer-valid.test.js +0 -233
  401. package/dist/tests/normalizer/utils.d.ts +0 -18
  402. package/dist/tests/normalizer/utils.js +0 -36
  403. package/dist/tests/optimizer/compress-references.test.d.ts +0 -1
  404. package/dist/tests/optimizer/compress-references.test.js +0 -299
  405. package/dist/tests/optimizer/deduplication.test.d.ts +0 -1
  406. package/dist/tests/optimizer/deduplication.test.js +0 -127
  407. package/dist/tests/optimizer/integration.test.d.ts +0 -1
  408. package/dist/tests/optimizer/integration.test.js +0 -126
  409. package/dist/tests/optimizer/optimization-report.test.d.ts +0 -1
  410. package/dist/tests/optimizer/optimization-report.test.js +0 -217
  411. package/dist/tests/optimizer/optimize-document.test.d.ts +0 -1
  412. package/dist/tests/optimizer/optimize-document.test.js +0 -182
  413. package/dist/tests/optimizer/orphaned-schemas.test.d.ts +0 -1
  414. package/dist/tests/optimizer/orphaned-schemas.test.js +0 -189
  415. package/dist/tests/optimizer/sort-schemas.test.d.ts +0 -1
  416. package/dist/tests/optimizer/sort-schemas.test.js +0 -126
  417. package/dist/tests/optimizer/utils.d.ts +0 -8
  418. package/dist/tests/optimizer/utils.js +0 -199
  419. package/dist/tests/schemas/schemas-edge-cases.test.d.ts +0 -1
  420. package/dist/tests/schemas/schemas-edge-cases.test.js +0 -218
  421. package/dist/tests/schemas/schemas.test.d.ts +0 -1
  422. package/dist/tests/schemas/schemas.test.js +0 -395
  423. package/dist/tests/schemas/utils.d.ts +0 -2
  424. package/dist/tests/schemas/utils.js +0 -3
  425. package/dist/tests/utils.d.ts +0 -10
  426. package/dist/tests/utils.js +0 -118
  427. package/dist/tests/validator/config-validator.test.d.ts +0 -1
  428. package/dist/tests/validator/config-validator.test.js +0 -73
  429. package/dist/tests/validator/debug-config.d.ts +0 -0
  430. package/dist/tests/validator/debug-config.js +0 -1
  431. package/dist/tests/validator/debug-missing-service.d.ts +0 -0
  432. package/dist/tests/validator/debug-missing-service.js +0 -1
  433. package/dist/tests/validator/debug-other-configs.d.ts +0 -0
  434. package/dist/tests/validator/debug-other-configs.js +0 -1
  435. package/dist/tests/validator/debug-references.d.ts +0 -0
  436. package/dist/tests/validator/debug-references.js +0 -1
  437. package/dist/tests/validator/unispec-validator.test.d.ts +0 -1
  438. package/dist/tests/validator/unispec-validator.test.js +0 -98
  439. package/dist/tests/validator/utils.d.ts +0 -6
  440. package/dist/tests/validator/utils.js +0 -20
@@ -1,193 +0,0 @@
1
- import { CACHE_CONSTANTS } from "../cache/constants.js";
2
- /**
3
- * Secure document hashing utilities using Web Crypto API.
4
- */
5
- /**
6
- * Secure hash using Web Crypto API (SHA-256) or Node.js crypto.
7
- * Fallback to FNV-1a only if both crypto APIs are unavailable.
8
- */
9
- async function secureHash(str) {
10
- // Try Web Crypto API first (browser environments)
11
- if (typeof crypto !== "undefined" && crypto.subtle) {
12
- try {
13
- const encoder = new TextEncoder();
14
- const data = encoder.encode(str);
15
- const hashBuffer = await crypto.subtle.digest("SHA-256", data);
16
- const hashArray = Array.from(new Uint8Array(hashBuffer));
17
- return hashArray.map((b) => b.toString(16).padStart(2, "0")).join("");
18
- }
19
- catch (error) {
20
- console.warn("Web Crypto API failed, trying Node.js crypto:", error);
21
- }
22
- }
23
- // Try Node.js crypto API (server environments)
24
- try {
25
- // Dynamic import for Node.js crypto to avoid browser compatibility issues
26
- const crypto = await import("node:crypto");
27
- const hash = crypto.createHash("sha256");
28
- hash.update(str, "utf8");
29
- return hash.digest("hex");
30
- }
31
- catch (error) {
32
- console.warn("Node.js crypto API failed, falling back to FNV-1a:", error);
33
- }
34
- // Last resort: FNV-1a algorithm (non-cryptographic, for compatibility only)
35
- console.warn("Using FNV-1a fallback hash - consider installing crypto support");
36
- return fnv1aHashFallback(str).toString();
37
- }
38
- /**
39
- * FNV-1a fallback hash function (non-cryptographic, for compatibility).
40
- */
41
- function fnv1aHashFallback(str) {
42
- let hash = 2166136261; // FNV offset basis
43
- for (let i = 0; i < str.length; i++) {
44
- hash ^= str.charCodeAt(i);
45
- hash = (hash * 16777619) & CACHE_CONSTANTS.HASH_MASK; // FNV prime
46
- }
47
- return hash;
48
- }
49
- /**
50
- * Generate a secure hash for a document using optimized sorting and Web Crypto API.
51
- */
52
- export async function generateOptimizedDocumentHash(document) {
53
- // Use optimized stable stringification
54
- const str = stableStringify(document);
55
- // Use secure hash for better distribution and collision resistance
56
- const hash = await secureHash(str);
57
- // Add length and type prefix for additional collision resistance
58
- const typePrefix = getDocumentTypePrefix(document);
59
- const combined = `${hash}_${str.length}_${typePrefix}`;
60
- // Create final hash with combined string
61
- const finalHash = await secureHash(combined);
62
- return `${finalHash.slice(0, 16)}_${str.length}`;
63
- }
64
- /**
65
- * Default configuration for stable stringification.
66
- */
67
- const DEFAULT_STRINGIFY_CONFIG = {
68
- maxDepth: 100,
69
- maxKeys: 10000,
70
- handleCircular: true,
71
- handleDeepObjects: true,
72
- };
73
- /**
74
- * Optimized stable stringification that avoids recursion depth issues.
75
- */
76
- function stableStringify(obj, config = {}, depth = 0, visited = new WeakSet()) {
77
- const finalConfig = { ...DEFAULT_STRINGIFY_CONFIG, ...config };
78
- // Prevent infinite recursion
79
- if (depth > finalConfig.maxDepth) {
80
- return `"[MAX_DEPTH_REACHED:${depth}]"`;
81
- }
82
- // Handle circular references
83
- if (finalConfig.handleCircular && obj && typeof obj === "object") {
84
- if (visited.has(obj)) {
85
- return `"[CIRCULAR_REFERENCE:${obj.constructor?.name || "Object"}]"`;
86
- }
87
- visited.add(obj);
88
- }
89
- // Handle primitives
90
- if (obj === null || typeof obj !== "object") {
91
- return JSON.stringify(obj);
92
- }
93
- // Handle special object types
94
- if (obj instanceof Date) {
95
- return obj.toISOString();
96
- }
97
- if (obj instanceof RegExp) {
98
- return `"[REGEX:${obj.toString()}]"`;
99
- }
100
- if (obj instanceof Error) {
101
- return `"[ERROR:${obj.name}:${obj.message}]"`;
102
- }
103
- if (typeof Buffer !== "undefined" && Buffer.isBuffer(obj)) {
104
- return `"[BUFFER:${obj.toString("base64")}]"`;
105
- }
106
- // Handle Array
107
- if (Array.isArray(obj)) {
108
- if (obj.length > finalConfig.maxKeys) {
109
- return `"[ARRAY_TOO_LARGE:${obj.length}]"`;
110
- }
111
- const elements = obj.map((item, index) => {
112
- try {
113
- return stableStringify(item, finalConfig, depth + 1, visited);
114
- }
115
- catch (error) {
116
- return `"[ERROR_AT_INDEX_${index}:${error instanceof Error ? error.message : String(error)}]"`;
117
- }
118
- });
119
- return `[${elements.join(",")}]`;
120
- }
121
- // Handle Object
122
- if (typeof obj === "object") {
123
- const objRecord = obj;
124
- const keys = Object.keys(objRecord);
125
- if (keys.length > finalConfig.maxKeys) {
126
- return `"[OBJECT_TOO_LARGE:${keys.length}]"`;
127
- }
128
- const sortedKeys = keys.sort();
129
- const pairs = [];
130
- for (const key of sortedKeys) {
131
- try {
132
- const value = stableStringify(objRecord[key], finalConfig, depth + 1, visited);
133
- pairs.push(`"${key}":${value}`);
134
- }
135
- catch (error) {
136
- pairs.push(`"${key}":"[ERROR:${error instanceof Error ? error.message : String(error)}]"`);
137
- }
138
- }
139
- return `{${pairs.join(",")}}`;
140
- }
141
- return "{}";
142
- }
143
- /**
144
- * Get a numeric prefix based on document type to reduce collisions.
145
- */
146
- function getDocumentTypePrefix(document) {
147
- if (!document || typeof document !== "object")
148
- return 0;
149
- const doc = document;
150
- // Check for UniSpec document
151
- if (doc.unispecVersion)
152
- return 1;
153
- if (doc.uniSpecTestsVersion)
154
- return 2;
155
- if (doc.version && doc.services)
156
- return 3;
157
- // Check for common patterns
158
- if (Array.isArray(document))
159
- return 4;
160
- if (doc.$schema)
161
- return 5;
162
- if (doc.type)
163
- return typeof doc.type === "string" ? doc.type.charCodeAt(0) || 6 : 6;
164
- return 7;
165
- }
166
- /**
167
- * Generate a secure hash for two documents (for diff caching) with optimized collision resistance.
168
- */
169
- export async function generateOptimizedDiffHash(oldDoc, newDoc) {
170
- const oldHash = await generateOptimizedDocumentHash(oldDoc);
171
- const newHash = await generateOptimizedDocumentHash(newDoc);
172
- // Combine hashes using order-sensitive operation
173
- const combined = `${oldHash}:${newHash}`;
174
- // Hash the combined string to get final result
175
- const finalHash = await secureHash(combined);
176
- return `${finalHash.slice(0, 16)}_${oldHash.length}_${newHash.length}`;
177
- }
178
- /**
179
- * Simple hash for small objects (keys, strings) using built-in hash.
180
- * Kept for backward compatibility but consider using secureHash for new code.
181
- */
182
- export function simpleHash(str) {
183
- let hash = 5381; // DJB2 hash initial value
184
- for (let i = 0; i < str.length; i++) {
185
- const char = str.charCodeAt(i);
186
- hash = ((hash << 5) + hash + char) & CACHE_CONSTANTS.HASH_MASK;
187
- }
188
- // Convert to hex and pad to 8 characters
189
- const hex = hash.toString(16);
190
- return hex.padStart(8, "0").slice(-8);
191
- }
192
- // Export stableStringify for use in hash-utils
193
- export { stableStringify };
@@ -1,6 +0,0 @@
1
- export { clearTestRegistry, createCacheManager, createNamedCacheManager, destroyManagers, getManagersStats, } from "./cache-factory.js";
2
- export { UniSpecCacheManager } from "./cache-manager.js";
3
- export { CACHE_CONSTANTS, CACHE_MESSAGES } from "./constants.js";
4
- export { generateDiffHash, generateDocumentHash, } from "./hash-utils.js";
5
- export { LRUCache } from "./lru-cache.js";
6
- export type { CacheEntry, CacheOptions, CacheSize, CacheStats, TTL, } from "./types.js";
@@ -1,10 +0,0 @@
1
- // Constants and messages
2
- // Cache factory
3
- export { clearTestRegistry, createCacheManager, createNamedCacheManager, destroyManagers, getManagersStats, } from "./cache-factory.js";
4
- // Cache manager
5
- export { UniSpecCacheManager } from "./cache-manager.js";
6
- export { CACHE_CONSTANTS, CACHE_MESSAGES } from "./constants.js";
7
- // Hash utilities
8
- export { generateDiffHash, generateDocumentHash, } from "./hash-utils.js";
9
- // Core cache implementation
10
- export { LRUCache } from "./lru-cache.js";
@@ -1,44 +0,0 @@
1
- import type { CacheOptions, CacheStats } from "./types.js";
2
- /**
3
- * Simple LRU (Least Recently Used) cache implementation.
4
- */
5
- export declare class LRUCache<T> {
6
- private cache;
7
- private maxSize;
8
- private ttl;
9
- private enableStats;
10
- private stats;
11
- constructor(options?: CacheOptions);
12
- /**
13
- * Get a value from the cache asynchronously.
14
- */
15
- get(key: string): Promise<T | undefined>;
16
- /**
17
- * Set a value in the cache asynchronously.
18
- */
19
- set(key: string, value: T): Promise<void>;
20
- /**
21
- * Delete a value from the cache.
22
- */
23
- delete(key: string): boolean;
24
- /**
25
- * Clear all entries from the cache.
26
- */
27
- clear(): void;
28
- /**
29
- * Get cache statistics.
30
- */
31
- getStats(): CacheStats;
32
- /**
33
- * Check if an entry is expired.
34
- */
35
- private isExpired;
36
- /**
37
- * Update hit rate statistics.
38
- */
39
- private updateHitRate;
40
- /**
41
- * Clean up expired entries.
42
- */
43
- cleanup(): number;
44
- }
@@ -1,140 +0,0 @@
1
- import { CACHE_CONSTANTS } from "./constants.js";
2
- /**
3
- * Simple LRU (Least Recently Used) cache implementation.
4
- */
5
- export class LRUCache {
6
- constructor(options = {}) {
7
- this.cache = new Map();
8
- this.maxSize = options.maxSize || CACHE_CONSTANTS.DEFAULT_MAX_SIZE;
9
- this.ttl = options.ttl || CACHE_CONSTANTS.DEFAULT_TTL;
10
- this.enableStats = options.enableStats || false;
11
- this.stats = {
12
- hits: 0,
13
- misses: 0,
14
- size: 0,
15
- hitRate: 0,
16
- evictions: 0,
17
- };
18
- }
19
- /**
20
- * Get a value from the cache asynchronously.
21
- */
22
- async get(key) {
23
- const entry = this.cache.get(key);
24
- if (!entry) {
25
- if (this.enableStats) {
26
- this.stats.misses++;
27
- this.updateHitRate();
28
- }
29
- return undefined;
30
- }
31
- // Check TTL
32
- if (this.isExpired(entry)) {
33
- this.cache.delete(key);
34
- if (this.enableStats) {
35
- this.stats.misses++;
36
- this.stats.size--;
37
- this.updateHitRate();
38
- }
39
- return undefined;
40
- }
41
- // Update access info
42
- entry.accessCount++;
43
- entry.lastAccessed = Date.now();
44
- // Move to end (most recently used)
45
- this.cache.delete(key);
46
- this.cache.set(key, entry);
47
- if (this.enableStats) {
48
- this.stats.hits++;
49
- this.updateHitRate();
50
- }
51
- return entry.value;
52
- }
53
- /**
54
- * Set a value in the cache asynchronously.
55
- */
56
- async set(key, value) {
57
- // Remove existing entry if present
58
- if (this.cache.has(key)) {
59
- this.cache.delete(key);
60
- }
61
- // Evict oldest entries if cache is full
62
- while (this.cache.size >= this.maxSize) {
63
- const oldestKey = this.cache.keys().next().value;
64
- if (oldestKey) {
65
- this.cache.delete(oldestKey);
66
- if (this.enableStats) {
67
- this.stats.evictions++;
68
- this.stats.size--;
69
- }
70
- }
71
- else {
72
- break;
73
- }
74
- }
75
- const entry = {
76
- value,
77
- timestamp: Date.now(),
78
- accessCount: 1,
79
- lastAccessed: Date.now(),
80
- };
81
- this.cache.set(key, entry);
82
- if (this.enableStats) {
83
- this.stats.size++;
84
- }
85
- }
86
- /**
87
- * Delete a value from the cache.
88
- */
89
- delete(key) {
90
- const deleted = this.cache.delete(key);
91
- if (deleted && this.enableStats) {
92
- this.stats.size--;
93
- }
94
- return deleted;
95
- }
96
- /**
97
- * Clear all entries from the cache.
98
- */
99
- clear() {
100
- this.cache.clear();
101
- if (this.enableStats) {
102
- this.stats.size = 0;
103
- }
104
- }
105
- /**
106
- * Get cache statistics.
107
- */
108
- getStats() {
109
- return { ...this.stats };
110
- }
111
- /**
112
- * Check if an entry is expired.
113
- */
114
- isExpired(entry) {
115
- return Date.now() - entry.timestamp > this.ttl;
116
- }
117
- /**
118
- * Update hit rate statistics.
119
- */
120
- updateHitRate() {
121
- const total = this.stats.hits + this.stats.misses;
122
- this.stats.hitRate = total > 0 ? this.stats.hits / total : 0;
123
- }
124
- /**
125
- * Clean up expired entries.
126
- */
127
- cleanup() {
128
- let cleaned = 0;
129
- for (const [key, entry] of this.cache.entries()) {
130
- if (this.isExpired(entry)) {
131
- this.cache.delete(key);
132
- cleaned++;
133
- if (this.enableStats) {
134
- this.stats.size--;
135
- }
136
- }
137
- }
138
- return cleaned;
139
- }
140
- }
@@ -1,24 +0,0 @@
1
- /**
2
- * Cache interfaces and types.
3
- */
4
- export interface CacheOptions {
5
- maxSize?: number;
6
- ttl?: number;
7
- enableStats?: boolean;
8
- }
9
- export interface CacheEntry<T> {
10
- value: T;
11
- timestamp: number;
12
- accessCount: number;
13
- lastAccessed: number;
14
- }
15
- export interface CacheStats {
16
- hits: number;
17
- misses: number;
18
- size: number;
19
- hitRate: number;
20
- evictions: number;
21
- }
22
- export type CacheSize = typeof CACHE_CONSTANTS.DEFAULT_MAX_SIZE | typeof CACHE_CONSTANTS.VALIDATION_MAX_SIZE | typeof CACHE_CONSTANTS.NORMALIZATION_MAX_SIZE | typeof CACHE_CONSTANTS.DIFF_MAX_SIZE;
23
- export type TTL = typeof CACHE_CONSTANTS.DEFAULT_TTL | typeof CACHE_CONSTANTS.CLEANUP_INTERVAL;
24
- import type { CACHE_CONSTANTS } from "./constants.js";
@@ -1,4 +0,0 @@
1
- /**
2
- * Cache interfaces and types.
3
- */
4
- export {};
@@ -1,4 +0,0 @@
1
- import type { UniSpecChange } from "./types.js";
2
- export declare function annotateRestChange(change: UniSpecChange): UniSpecChange;
3
- export declare function annotateWebSocketChange(change: UniSpecChange): UniSpecChange;
4
- export declare function annotateGraphQLChange(change: UniSpecChange): UniSpecChange;
@@ -1,155 +0,0 @@
1
- export function annotateRestChange(change) {
2
- // Add defensive check for null/undefined path
3
- if (!change.path || typeof change.path !== "string") {
4
- return change;
5
- }
6
- if (!change.path.startsWith("/service/protocols/rest/routes/")) {
7
- return change;
8
- }
9
- const segments = change.path.split("/").filter(Boolean);
10
- // Expected shape: ["service", "protocols", "rest", "routes", routeName, ...]
11
- if (segments[0] !== "service" ||
12
- segments[1] !== "protocols" ||
13
- segments[2] !== "rest" ||
14
- segments[3] !== "routes") {
15
- return change;
16
- }
17
- const routeName = segments[4];
18
- if (typeof routeName === "undefined") {
19
- return change;
20
- }
21
- const annotated = {
22
- ...change,
23
- protocol: "rest",
24
- };
25
- if (change.description === "Item removed") {
26
- annotated.kind = "rest.route.removed";
27
- annotated.severity = "breaking";
28
- }
29
- else if (change.description === "Item added") {
30
- annotated.kind = "rest.route.added";
31
- annotated.severity = "non-breaking";
32
- }
33
- else if (change.path.includes("/required") &&
34
- change.description === "Value changed") {
35
- // Changing required field from false to true is breaking
36
- annotated.kind = "rest.parameter.required_changed";
37
- annotated.severity = "breaking";
38
- }
39
- return annotated;
40
- }
41
- export function annotateWebSocketChange(change) {
42
- // Add defensive check for null/undefined path
43
- if (!change.path || typeof change.path !== "string") {
44
- return change;
45
- }
46
- if (!change.path.startsWith("/service/protocols/websocket/channels/")) {
47
- return change;
48
- }
49
- const segments = change.path.split("/").filter(Boolean);
50
- // Expected base: ["service","protocols","websocket","channels", channelName, ...]
51
- if (segments[0] !== "service" ||
52
- segments[1] !== "protocols" ||
53
- segments[2] !== "websocket" ||
54
- segments[3] !== "channels") {
55
- return change;
56
- }
57
- const channelName = segments[4];
58
- const next = segments[5];
59
- const annotated = {
60
- ...change,
61
- protocol: "websocket",
62
- };
63
- if (typeof channelName === "undefined") {
64
- return annotated;
65
- }
66
- // Channel-level changes: /service/protocols/websocket/channels/{channelName}
67
- if (!next) {
68
- if (change.description === "Item removed") {
69
- annotated.kind = "websocket.channel.removed";
70
- annotated.severity = "breaking";
71
- }
72
- else if (change.description === "Item added") {
73
- annotated.kind = "websocket.channel.added";
74
- annotated.severity = "non-breaking";
75
- }
76
- return annotated;
77
- }
78
- // Message-level changes: /service/protocols/websocket/channels/{channelName}/messages/{messageName}
79
- if (next === "messages") {
80
- const messageName = segments[6];
81
- if (typeof messageName === "undefined") {
82
- return annotated;
83
- }
84
- if (change.description === "Item removed") {
85
- annotated.kind = "websocket.message.removed";
86
- annotated.severity = "breaking";
87
- }
88
- else if (change.description === "Item added") {
89
- annotated.kind = "websocket.message.added";
90
- annotated.severity = "non-breaking";
91
- }
92
- }
93
- return annotated;
94
- }
95
- export function annotateGraphQLChange(change) {
96
- // Add defensive check for null/undefined path
97
- if (!change.path || typeof change.path !== "string") {
98
- return change;
99
- }
100
- if (!change.path.startsWith("/service/protocols/graphql/")) {
101
- return change;
102
- }
103
- const segments = change.path.split("/").filter(Boolean);
104
- // Expected: ["service","protocols","graphql", operationType, operationName, ...]
105
- if (segments[0] !== "service" ||
106
- segments[1] !== "protocols" ||
107
- segments[2] !== "graphql") {
108
- return change;
109
- }
110
- const operationType = segments[3];
111
- const operationName = segments[4];
112
- if (!operationType || typeof operationName === "undefined") {
113
- return change;
114
- }
115
- if (operationType !== "queries" &&
116
- operationType !== "mutations" &&
117
- operationType !== "subscriptions") {
118
- return change;
119
- }
120
- const annotated = {
121
- ...change,
122
- protocol: "graphql",
123
- };
124
- // Create operation-specific annotations
125
- const singularMap = {
126
- queries: "query",
127
- mutations: "mutation",
128
- subscriptions: "subscription",
129
- };
130
- const operationKind = `graphql.${singularMap[operationType]}`;
131
- // Check for specific changes first, then general ones
132
- if (change.path.includes("/returnType") &&
133
- change.description === "Value changed") {
134
- // Changing return type is breaking
135
- annotated.kind = `${operationKind}.return_type_changed`;
136
- annotated.severity = "breaking";
137
- }
138
- else if (change.path.includes("/args") &&
139
- (change.description === "Item added" ||
140
- change.description === "Item removed")) {
141
- // Argument changes
142
- const action = change.description === "Item added" ? "added" : "removed";
143
- annotated.kind = `${operationKind}.argument_${action}`;
144
- annotated.severity = action === "added" ? "non-breaking" : "breaking";
145
- }
146
- else if (change.description === "Item removed") {
147
- annotated.kind = `${operationKind}.removed`;
148
- annotated.severity = "breaking";
149
- }
150
- else if (change.description === "Item added") {
151
- annotated.kind = `${operationKind}.added`;
152
- annotated.severity = "non-breaking";
153
- }
154
- return annotated;
155
- }
@@ -1,37 +0,0 @@
1
- import type { EnhancedDiffResult, EnhancedUniSpecChange } from "./enhanced-diff.js";
2
- export interface ReportOptions {
3
- format: "markdown" | "html" | "json";
4
- includeSuggestions?: boolean;
5
- includeExamples?: boolean;
6
- groupByRisk?: boolean;
7
- groupByProtocol?: boolean;
8
- title?: string;
9
- versionInfo?: {
10
- oldVersion?: string;
11
- newVersion?: string;
12
- comparisonDate?: string;
13
- };
14
- }
15
- export interface ChangeReport {
16
- title: string;
17
- summary: {
18
- totalChanges: number;
19
- breakingChanges: number;
20
- compatibilityScore: number;
21
- migrationEffort: string;
22
- };
23
- sections: ReportSection[];
24
- }
25
- export interface ReportSection {
26
- title: string;
27
- changes: EnhancedUniSpecChange[];
28
- summary: string;
29
- }
30
- /**
31
- * Generate a comprehensive change report.
32
- *
33
- * @param diff - Enhanced diff result
34
- * @param options - Report generation options
35
- * @returns Formatted report in the specified format
36
- */
37
- export declare function generateChangeReport(diff: EnhancedDiffResult, options: ReportOptions): string;