@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,274 +0,0 @@
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 cache_factory_1 = require("../../src/cache/cache-factory.js");
9
- const cache_manager_1 = require("../../src/cache/cache-manager.js");
10
- const hash_utils_1 = require("../../src/cache/hash-utils.js");
11
- const lru_cache_1 = require("../../src/cache/lru-cache.js");
12
- const createTestDoc = (name) => ({
13
- unispecVersion: "1.0.0",
14
- service: {
15
- name,
16
- description: `Test service ${name}`,
17
- protocols: {
18
- rest: {
19
- routes: [
20
- {
21
- name: "test",
22
- method: "GET",
23
- path: "/test",
24
- responses: { "200": { description: "Success" } },
25
- },
26
- ],
27
- },
28
- },
29
- },
30
- });
31
- (0, node_test_1.describe)("cache module", () => {
32
- (0, node_test_1.describe)("LRUCache", () => {
33
- (0, node_test_1.it)("should store and retrieve values", async () => {
34
- const cache = new lru_cache_1.LRUCache();
35
- await cache.set("key", "value");
36
- node_assert_1.default.strictEqual(await cache.get("key"), "value");
37
- });
38
- (0, node_test_1.it)("should handle LRU eviction", async () => {
39
- const cache = new lru_cache_1.LRUCache({ maxSize: 2 });
40
- await cache.set("a", "1");
41
- await cache.set("b", "2");
42
- await cache.set("c", "3"); // evicts a
43
- node_assert_1.default.strictEqual(await cache.get("a"), undefined);
44
- node_assert_1.default.strictEqual(await cache.get("b"), "2");
45
- node_assert_1.default.strictEqual(await cache.get("c"), "3");
46
- });
47
- (0, node_test_1.it)("should track statistics", async () => {
48
- const cache = new lru_cache_1.LRUCache({ enableStats: true });
49
- await cache.set("key", "value");
50
- await cache.get("key"); // hit
51
- await cache.get("missing"); // miss
52
- const stats = cache.getStats();
53
- node_assert_1.default.strictEqual(stats.hits, 1);
54
- node_assert_1.default.strictEqual(stats.misses, 1);
55
- node_assert_1.default.strictEqual(stats.hitRate, 0.5);
56
- });
57
- });
58
- (0, node_test_1.describe)("CacheManager", () => {
59
- (0, node_test_1.it)("should handle validation caching", async () => {
60
- const manager = new cache_manager_1.UniSpecCacheManager({ enableStats: true });
61
- const doc = createTestDoc("test");
62
- const hash = await (0, hash_utils_1.generateDocumentHash)(doc);
63
- const result = { valid: true, errors: [] };
64
- await manager.setValidationResult(hash, result);
65
- const cached = await manager.getValidationResult(hash);
66
- node_assert_1.default.deepStrictEqual(cached, result);
67
- node_assert_1.default.strictEqual(manager.getStats().validation.size, 1);
68
- manager.destroy();
69
- });
70
- (0, node_test_1.it)("should handle normalization caching", async () => {
71
- const manager = new cache_manager_1.UniSpecCacheManager({ enableStats: true });
72
- const doc = createTestDoc("test");
73
- const hash = await (0, hash_utils_1.generateDocumentHash)(doc);
74
- const normalized = { ...doc, normalized: true };
75
- await manager.setNormalizationResult(hash, normalized);
76
- const cached = await manager.getNormalizationResult(hash);
77
- node_assert_1.default.deepStrictEqual(cached, normalized);
78
- node_assert_1.default.strictEqual(manager.getStats().normalization.size, 1);
79
- manager.destroy();
80
- });
81
- (0, node_test_1.it)("should handle diff caching", async () => {
82
- const manager = new cache_manager_1.UniSpecCacheManager({ enableStats: true });
83
- const doc1 = createTestDoc("test1");
84
- const doc2 = createTestDoc("test2");
85
- const hash = await (0, hash_utils_1.generateDiffHash)(doc1, doc2);
86
- const diffResult = { changes: [] };
87
- await manager.setDiffResult(hash, diffResult);
88
- const cached = await manager.getDiffResult(hash);
89
- node_assert_1.default.deepStrictEqual(cached, diffResult);
90
- node_assert_1.default.strictEqual(manager.getStats().diff.size, 1);
91
- manager.destroy();
92
- });
93
- (0, node_test_1.it)("should provide comprehensive statistics", async () => {
94
- const manager = new cache_manager_1.UniSpecCacheManager({ enableStats: true });
95
- const doc = createTestDoc("test");
96
- const hash = await (0, hash_utils_1.generateDocumentHash)(doc);
97
- await manager.setValidationResult(hash, { valid: true, errors: [] });
98
- await manager.setNormalizationResult(hash, { normalized: true });
99
- await manager.setDiffResult(hash, { changes: [] });
100
- const stats = manager.getStats();
101
- node_assert_1.default.strictEqual(stats.total.size, 3);
102
- node_assert_1.default.strictEqual(stats.validation.size, 1);
103
- node_assert_1.default.strictEqual(stats.normalization.size, 1);
104
- node_assert_1.default.strictEqual(stats.diff.size, 1);
105
- manager.destroy();
106
- });
107
- (0, node_test_1.it)("should clear all caches", async () => {
108
- const manager = new cache_manager_1.UniSpecCacheManager({ enableStats: true });
109
- const doc = createTestDoc("test");
110
- const hash = await (0, hash_utils_1.generateDocumentHash)(doc);
111
- await manager.setValidationResult(hash, { valid: true, errors: [] });
112
- await manager.setNormalizationResult(hash, { normalized: true });
113
- await manager.setDiffResult(hash, { changes: [] });
114
- manager.clearAll();
115
- const stats = manager.getStats();
116
- node_assert_1.default.strictEqual(stats.total.size, 0);
117
- manager.destroy();
118
- });
119
- });
120
- (0, node_test_1.describe)("CacheFactory", () => {
121
- (0, node_test_1.it)("should create isolated instances", () => {
122
- const manager1 = (0, cache_factory_1.createCacheManager)();
123
- const manager2 = (0, cache_factory_1.createCacheManager)();
124
- node_assert_1.default.notStrictEqual(manager1, manager2);
125
- manager1.destroy();
126
- manager2.destroy();
127
- });
128
- (0, node_test_1.it)("should create named managers with cleanup", () => {
129
- const manager1 = (0, cache_factory_1.createNamedCacheManager)("test");
130
- const manager2 = (0, cache_factory_1.createNamedCacheManager)("test"); // replaces first
131
- node_assert_1.default.notStrictEqual(manager1, manager2);
132
- manager1.destroy();
133
- manager2.destroy();
134
- });
135
- (0, node_test_1.it)("should provide statistics for multiple managers", () => {
136
- const manager1 = (0, cache_factory_1.createNamedCacheManager)("stats1", { enableStats: true });
137
- const manager2 = (0, cache_factory_1.createNamedCacheManager)("stats2", { enableStats: true });
138
- const stats = (0, cache_factory_1.getManagersStats)([manager1, manager2]);
139
- node_assert_1.default.ok(stats.stats1);
140
- node_assert_1.default.ok(stats.stats2);
141
- node_assert_1.default.strictEqual(Object.keys(stats).length, 2);
142
- manager1.destroy();
143
- manager2.destroy();
144
- });
145
- });
146
- (0, node_test_1.describe)("HashUtils", () => {
147
- (0, node_test_1.it)("should generate consistent hashes", async () => {
148
- const doc = createTestDoc("test");
149
- const hash1 = await (0, hash_utils_1.generateDocumentHash)(doc);
150
- const hash2 = await (0, hash_utils_1.generateDocumentHash)(doc);
151
- node_assert_1.default.strictEqual(hash1, hash2);
152
- node_assert_1.default.strictEqual(hash1.length, 20);
153
- });
154
- (0, node_test_1.it)("should generate different hashes for different documents", async () => {
155
- const doc1 = createTestDoc("test1");
156
- const doc2 = createTestDoc("test2");
157
- const hash1 = await (0, hash_utils_1.generateDocumentHash)(doc1);
158
- const hash2 = await (0, hash_utils_1.generateDocumentHash)(doc2);
159
- node_assert_1.default.notStrictEqual(hash1, hash2);
160
- });
161
- (0, node_test_1.it)("should handle deep copies consistently", async () => {
162
- const doc = createTestDoc("test");
163
- const copy = JSON.parse(JSON.stringify(doc));
164
- const hash1 = await (0, hash_utils_1.generateDocumentHash)(doc);
165
- const hash2 = await (0, hash_utils_1.generateDocumentHash)(copy);
166
- node_assert_1.default.strictEqual(hash1, hash2);
167
- });
168
- (0, node_test_1.it)("should generate diff hashes", async () => {
169
- const doc1 = createTestDoc("test1");
170
- const doc2 = createTestDoc("test2");
171
- const hash = await (0, hash_utils_1.generateDiffHash)(doc1, doc2);
172
- node_assert_1.default.strictEqual(typeof hash, "string");
173
- node_assert_1.default.strictEqual(hash.length, 22);
174
- });
175
- (0, node_test_1.it)("should generate different diff hashes for different pairs", async () => {
176
- const doc1 = createTestDoc("test1");
177
- const doc2 = createTestDoc("test2");
178
- const doc3 = createTestDoc("test3");
179
- const hash1 = await (0, hash_utils_1.generateDiffHash)(doc1, doc2);
180
- const hash2 = await (0, hash_utils_1.generateDiffHash)(doc2, doc3);
181
- node_assert_1.default.notStrictEqual(hash1, hash2);
182
- });
183
- });
184
- (0, node_test_1.describe)("Integration", () => {
185
- (0, node_test_1.it)("should handle complete workflow", async () => {
186
- const manager = (0, cache_factory_1.createCacheManager)({ enableStats: true });
187
- const validDoc = createTestDoc("valid");
188
- const invalidDoc = { unispecVersion: "1.0.0" };
189
- // Process valid document
190
- const validHash = await (0, hash_utils_1.generateDocumentHash)(validDoc);
191
- await manager.setValidationResult(validHash, { valid: true, errors: [] });
192
- await manager.setNormalizationResult(validHash, {
193
- ...validDoc,
194
- normalized: true,
195
- });
196
- // Process invalid document
197
- const invalidHash = await (0, hash_utils_1.generateDocumentHash)(invalidDoc);
198
- await manager.setValidationResult(invalidHash, {
199
- valid: false,
200
- errors: [{ path: "/", message: "Invalid", code: "INVALID" }],
201
- });
202
- // Process diff
203
- const diffHash = await (0, hash_utils_1.generateDiffHash)(validDoc, invalidDoc);
204
- await manager.setDiffResult(diffHash, { changes: [] });
205
- // Verify results
206
- const validResult = await manager.getValidationResult(validHash);
207
- const invalidResult = await manager.getValidationResult(invalidHash);
208
- const normResult = await manager.getNormalizationResult(validHash);
209
- const diffResult = await manager.getDiffResult(diffHash);
210
- node_assert_1.default.strictEqual(validResult?.valid, true);
211
- node_assert_1.default.strictEqual(invalidResult?.valid, false);
212
- node_assert_1.default.notStrictEqual(normResult, undefined);
213
- node_assert_1.default.notStrictEqual(diffResult, undefined);
214
- // Verify statistics
215
- const stats = manager.getStats();
216
- node_assert_1.default.strictEqual(stats.total.size, 4);
217
- manager.destroy();
218
- });
219
- (0, node_test_1.it)("should handle concurrent operations", async () => {
220
- const manager = (0, cache_factory_1.createCacheManager)({ enableStats: true });
221
- const promises = [];
222
- // Create concurrent operations
223
- for (let i = 0; i < 10; i++) {
224
- const doc = createTestDoc(`test${i}`);
225
- const hash = await (0, hash_utils_1.generateDocumentHash)(doc);
226
- promises.push(manager.setValidationResult(hash, { valid: true, errors: [] }));
227
- promises.push(manager
228
- .getValidationResult(hash)
229
- .then(() => { })
230
- .catch(() => { }));
231
- }
232
- await Promise.all(promises);
233
- // Verify integrity
234
- const stats = manager.getStats();
235
- node_assert_1.default.ok(stats.validation.size >= 0);
236
- manager.destroy();
237
- });
238
- });
239
- (0, node_test_1.describe)("Error handling", () => {
240
- (0, node_test_1.it)("should handle malformed documents", async () => {
241
- const manager = (0, cache_factory_1.createCacheManager)();
242
- const malformedDocs = [
243
- { unispecVersion: "1.0.0" },
244
- { service: { name: "test" } },
245
- ];
246
- for (const doc of malformedDocs) {
247
- try {
248
- const hash = await (0, hash_utils_1.generateDocumentHash)(doc);
249
- await manager.setValidationResult(hash, { valid: false, errors: [] });
250
- const result = await manager.getValidationResult(hash);
251
- node_assert_1.default.strictEqual(result?.valid, false);
252
- }
253
- catch (error) {
254
- // Expected for some malformed docs
255
- node_assert_1.default.ok(error instanceof Error);
256
- }
257
- }
258
- manager.destroy();
259
- });
260
- (0, node_test_1.it)("should handle cache overflow gracefully", async () => {
261
- const manager = (0, cache_factory_1.createCacheManager)({ enableStats: true, maxSize: 5 });
262
- // Fill beyond capacity
263
- for (let i = 0; i < 10; i++) {
264
- const doc = createTestDoc(`test${i}`);
265
- const hash = await (0, hash_utils_1.generateDocumentHash)(doc);
266
- await manager.setValidationResult(hash, { valid: true, errors: [] });
267
- }
268
- const stats = manager.getStats();
269
- node_assert_1.default.strictEqual(stats.validation.size, 5); // Should respect max size
270
- node_assert_1.default.ok(stats.validation.evictions >= 0); // May have evictions
271
- manager.destroy();
272
- });
273
- });
274
- });
@@ -1,32 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getExamplePath = exports.loadExample = void 0;
7
- exports.getValidExamplePaths = getValidExamplePaths;
8
- exports.getInvalidExamplePaths = getInvalidExamplePaths;
9
- const node_path_1 = __importDefault(require("node:path"));
10
- const utils_1 = require("../../tests/utils.js");
11
- Object.defineProperty(exports, "getExamplePath", { enumerable: true, get: function () { return utils_1.getExamplePath; } });
12
- Object.defineProperty(exports, "loadExample", { enumerable: true, get: function () { return utils_1.loadExample; } });
13
- // Cache-specific utilities
14
- function getValidExamplePaths() {
15
- const validSpecDir = node_path_1.default.join(utils_1.examplesDir, "valid", "spec");
16
- return [
17
- node_path_1.default.join(validSpecDir, "rest-simple.json"),
18
- node_path_1.default.join(validSpecDir, "graphql-simple.json"),
19
- node_path_1.default.join(validSpecDir, "websocket-simple.json"),
20
- node_path_1.default.join(validSpecDir, "mixed-complete.json"),
21
- ];
22
- }
23
- function getInvalidExamplePaths() {
24
- const invalidSpecDir = node_path_1.default.join(utils_1.examplesDir, "invalid", "spec");
25
- return [
26
- node_path_1.default.join(invalidSpecDir, "missing-unispec-version.json"),
27
- node_path_1.default.join(invalidSpecDir, "missing-service-name.json"),
28
- node_path_1.default.join(invalidSpecDir, "invalid-rest-method.json"),
29
- node_path_1.default.join(invalidSpecDir, "graphql-missing-name.json"),
30
- node_path_1.default.join(invalidSpecDir, "invalid-identifier.json"),
31
- ];
32
- }
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,280 +0,0 @@
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 utils_1 = require("../../tests/utils.js");
9
- const annotators_1 = require("../../src/diff/annotators.js");
10
- (0, node_test_1.describe)("diff annotators", () => {
11
- (0, node_test_1.describe)("annotateRestChange", () => {
12
- (0, node_test_1.it)("should annotate REST route additions as non-breaking", () => {
13
- const change = (0, utils_1.createTestChange)({
14
- path: "/service/protocols/rest/routes/newRoute",
15
- description: "Item added",
16
- });
17
- const result = (0, annotators_1.annotateRestChange)(change);
18
- node_assert_1.default.strictEqual(result.protocol, "rest");
19
- node_assert_1.default.strictEqual(result.kind, "rest.route.added");
20
- node_assert_1.default.strictEqual(result.severity, "non-breaking");
21
- });
22
- (0, node_test_1.it)("should annotate REST route removals as breaking", () => {
23
- const change = (0, utils_1.createTestChange)({
24
- path: "/service/protocols/rest/routes/removedRoute",
25
- description: "Item removed",
26
- });
27
- const result = (0, annotators_1.annotateRestChange)(change);
28
- node_assert_1.default.strictEqual(result.protocol, "rest");
29
- node_assert_1.default.strictEqual(result.kind, "rest.route.removed");
30
- node_assert_1.default.strictEqual(result.severity, "breaking");
31
- });
32
- (0, node_test_1.it)("should annotate required field changes as breaking", () => {
33
- const change = (0, utils_1.createTestChange)({
34
- path: "/service/protocols/rest/routes/myRoute/requestBody/required",
35
- description: "Value changed",
36
- });
37
- const result = (0, annotators_1.annotateRestChange)(change);
38
- node_assert_1.default.strictEqual(result.protocol, "rest");
39
- node_assert_1.default.strictEqual(result.kind, "rest.parameter.required_changed");
40
- node_assert_1.default.strictEqual(result.severity, "breaking");
41
- });
42
- (0, node_test_1.it)("should not annotate non-REST changes", () => {
43
- const change = (0, utils_1.createTestChange)({
44
- path: "/service/protocols/graphql/queries/myQuery",
45
- description: "Item added",
46
- });
47
- const result = (0, annotators_1.annotateRestChange)(change);
48
- node_assert_1.default.strictEqual(result.protocol, undefined);
49
- node_assert_1.default.strictEqual(result.kind, undefined);
50
- node_assert_1.default.strictEqual(result.severity, "unknown");
51
- });
52
- (0, node_test_1.it)("should handle malformed REST paths gracefully", () => {
53
- const change = (0, utils_1.createTestChange)({
54
- path: "/service/protocols/rest", // Missing routes segment
55
- description: "Item added",
56
- });
57
- const result = (0, annotators_1.annotateRestChange)(change);
58
- node_assert_1.default.strictEqual(result.protocol, undefined);
59
- node_assert_1.default.strictEqual(result.kind, undefined);
60
- node_assert_1.default.strictEqual(result.severity, "unknown");
61
- });
62
- });
63
- (0, node_test_1.describe)("annotateGraphQLChange", () => {
64
- (0, node_test_1.it)("should annotate GraphQL query additions as non-breaking", () => {
65
- const change = (0, utils_1.createTestChange)({
66
- path: "/service/protocols/graphql/queries/newQuery",
67
- description: "Item added",
68
- });
69
- const result = (0, annotators_1.annotateGraphQLChange)(change);
70
- node_assert_1.default.strictEqual(result.protocol, "graphql");
71
- node_assert_1.default.strictEqual(result.kind, "graphql.query.added");
72
- node_assert_1.default.strictEqual(result.severity, "non-breaking");
73
- });
74
- (0, node_test_1.it)("should annotate GraphQL query removals as breaking", () => {
75
- const change = (0, utils_1.createTestChange)({
76
- path: "/service/protocols/graphql/queries/removedQuery",
77
- description: "Item removed",
78
- });
79
- const result = (0, annotators_1.annotateGraphQLChange)(change);
80
- node_assert_1.default.strictEqual(result.protocol, "graphql");
81
- node_assert_1.default.strictEqual(result.kind, "graphql.query.removed");
82
- node_assert_1.default.strictEqual(result.severity, "breaking");
83
- });
84
- (0, node_test_1.it)("should annotate GraphQL mutation additions as non-breaking", () => {
85
- const change = (0, utils_1.createTestChange)({
86
- path: "/service/protocols/graphql/mutations/newMutation",
87
- description: "Item added",
88
- });
89
- const result = (0, annotators_1.annotateGraphQLChange)(change);
90
- node_assert_1.default.strictEqual(result.protocol, "graphql");
91
- node_assert_1.default.strictEqual(result.kind, "graphql.mutation.added");
92
- node_assert_1.default.strictEqual(result.severity, "non-breaking");
93
- });
94
- (0, node_test_1.it)("should annotate GraphQL mutation removals as breaking", () => {
95
- const change = (0, utils_1.createTestChange)({
96
- path: "/service/protocols/graphql/mutations/removedMutation",
97
- description: "Item removed",
98
- });
99
- const result = (0, annotators_1.annotateGraphQLChange)(change);
100
- node_assert_1.default.strictEqual(result.protocol, "graphql");
101
- node_assert_1.default.strictEqual(result.kind, "graphql.mutation.removed");
102
- node_assert_1.default.strictEqual(result.severity, "breaking");
103
- });
104
- (0, node_test_1.it)("should annotate GraphQL subscription additions as non-breaking", () => {
105
- const change = (0, utils_1.createTestChange)({
106
- path: "/service/protocols/graphql/subscriptions/newSubscription",
107
- description: "Item added",
108
- });
109
- const result = (0, annotators_1.annotateGraphQLChange)(change);
110
- node_assert_1.default.strictEqual(result.protocol, "graphql");
111
- node_assert_1.default.strictEqual(result.kind, "graphql.subscription.added");
112
- node_assert_1.default.strictEqual(result.severity, "non-breaking");
113
- });
114
- (0, node_test_1.it)("should annotate GraphQL subscription removals as breaking", () => {
115
- const change = (0, utils_1.createTestChange)({
116
- path: "/service/protocols/graphql/subscriptions/removedSubscription",
117
- description: "Item removed",
118
- });
119
- const result = (0, annotators_1.annotateGraphQLChange)(change);
120
- node_assert_1.default.strictEqual(result.protocol, "graphql");
121
- node_assert_1.default.strictEqual(result.kind, "graphql.subscription.removed");
122
- node_assert_1.default.strictEqual(result.severity, "breaking");
123
- });
124
- (0, node_test_1.it)("should not annotate non-GraphQL changes", () => {
125
- const change = (0, utils_1.createTestChange)({
126
- path: "/service/protocols/rest/routes/myRoute",
127
- description: "Item added",
128
- });
129
- const result = (0, annotators_1.annotateGraphQLChange)(change);
130
- node_assert_1.default.strictEqual(result.protocol, undefined);
131
- node_assert_1.default.strictEqual(result.kind, undefined);
132
- node_assert_1.default.strictEqual(result.severity, "unknown");
133
- });
134
- (0, node_test_1.it)("should annotate GraphQL argument additions as non-breaking", () => {
135
- const change = (0, utils_1.createTestChange)({
136
- path: "/service/protocols/graphql/queries/myQuery/args/newArg",
137
- description: "Item added",
138
- });
139
- const result = (0, annotators_1.annotateGraphQLChange)(change);
140
- node_assert_1.default.strictEqual(result.protocol, "graphql");
141
- node_assert_1.default.strictEqual(result.kind, "graphql.query.argument_added");
142
- node_assert_1.default.strictEqual(result.severity, "non-breaking");
143
- });
144
- (0, node_test_1.it)("should annotate GraphQL argument removals as breaking", () => {
145
- const change = (0, utils_1.createTestChange)({
146
- path: "/service/protocols/graphql/mutations/myMutation/args/oldArg",
147
- description: "Item removed",
148
- });
149
- const result = (0, annotators_1.annotateGraphQLChange)(change);
150
- node_assert_1.default.strictEqual(result.protocol, "graphql");
151
- node_assert_1.default.strictEqual(result.kind, "graphql.mutation.argument_removed");
152
- node_assert_1.default.strictEqual(result.severity, "breaking");
153
- });
154
- (0, node_test_1.it)("should annotate GraphQL return type changes as breaking", () => {
155
- const change = (0, utils_1.createTestChange)({
156
- path: "/service/protocols/graphql/subscriptions/mySubscription/returnType",
157
- description: "Value changed",
158
- });
159
- const result = (0, annotators_1.annotateGraphQLChange)(change);
160
- node_assert_1.default.strictEqual(result.protocol, "graphql");
161
- node_assert_1.default.strictEqual(result.kind, "graphql.subscription.return_type_changed");
162
- node_assert_1.default.strictEqual(result.severity, "breaking");
163
- });
164
- });
165
- (0, node_test_1.describe)("annotateWebSocketChange", () => {
166
- (0, node_test_1.it)("should annotate WebSocket channel additions as non-breaking", () => {
167
- const change = (0, utils_1.createTestChange)({
168
- path: "/service/protocols/websocket/channels/newChannel",
169
- description: "Item added",
170
- });
171
- const result = (0, annotators_1.annotateWebSocketChange)(change);
172
- node_assert_1.default.strictEqual(result.protocol, "websocket");
173
- node_assert_1.default.strictEqual(result.kind, "websocket.channel.added");
174
- node_assert_1.default.strictEqual(result.severity, "non-breaking");
175
- });
176
- (0, node_test_1.it)("should annotate WebSocket channel removals as breaking", () => {
177
- const change = (0, utils_1.createTestChange)({
178
- path: "/service/protocols/websocket/channels/removedChannel",
179
- description: "Item removed",
180
- });
181
- const result = (0, annotators_1.annotateWebSocketChange)(change);
182
- node_assert_1.default.strictEqual(result.protocol, "websocket");
183
- node_assert_1.default.strictEqual(result.kind, "websocket.channel.removed");
184
- node_assert_1.default.strictEqual(result.severity, "breaking");
185
- });
186
- (0, node_test_1.it)("should annotate WebSocket message additions as non-breaking", () => {
187
- const change = (0, utils_1.createTestChange)({
188
- path: "/service/protocols/websocket/channels/myChannel/messages/newMessage",
189
- description: "Item added",
190
- });
191
- const result = (0, annotators_1.annotateWebSocketChange)(change);
192
- node_assert_1.default.strictEqual(result.protocol, "websocket");
193
- node_assert_1.default.strictEqual(result.kind, "websocket.message.added");
194
- node_assert_1.default.strictEqual(result.severity, "non-breaking");
195
- });
196
- (0, node_test_1.it)("should annotate WebSocket message removals as breaking", () => {
197
- const change = (0, utils_1.createTestChange)({
198
- path: "/service/protocols/websocket/channels/myChannel/messages/removedMessage",
199
- description: "Item removed",
200
- });
201
- const result = (0, annotators_1.annotateWebSocketChange)(change);
202
- node_assert_1.default.strictEqual(result.protocol, "websocket");
203
- node_assert_1.default.strictEqual(result.kind, "websocket.message.removed");
204
- node_assert_1.default.strictEqual(result.severity, "breaking");
205
- });
206
- (0, node_test_1.it)("should not annotate non-WebSocket changes", () => {
207
- const change = (0, utils_1.createTestChange)({
208
- path: "/service/protocols/rest/routes/myRoute",
209
- description: "Item added",
210
- });
211
- const result = (0, annotators_1.annotateWebSocketChange)(change);
212
- node_assert_1.default.strictEqual(result.protocol, undefined);
213
- node_assert_1.default.strictEqual(result.kind, undefined);
214
- node_assert_1.default.strictEqual(result.severity, "unknown");
215
- });
216
- });
217
- (0, node_test_1.describe)("annotation chaining", () => {
218
- (0, node_test_1.it)("should handle multiple annotations correctly", () => {
219
- // This simulates what happens in diffUniSpec where changes are chained through all annotators
220
- const restChange = (0, utils_1.createTestChange)({
221
- path: "/service/protocols/rest/routes/myRoute",
222
- description: "Item added",
223
- });
224
- const result = (0, annotators_1.annotateWebSocketChange)((0, annotators_1.annotateGraphQLChange)((0, annotators_1.annotateRestChange)(restChange)));
225
- // Should only have REST annotations since it's a REST path
226
- node_assert_1.default.strictEqual(result.protocol, "rest");
227
- node_assert_1.default.strictEqual(result.kind, "rest.route.added");
228
- node_assert_1.default.strictEqual(result.severity, "non-breaking");
229
- });
230
- });
231
- (0, node_test_1.describe)("edge cases", () => {
232
- (0, node_test_1.it)("should handle empty paths", () => {
233
- const change = (0, utils_1.createTestChange)({
234
- path: "",
235
- description: "Item added",
236
- });
237
- const restResult = (0, annotators_1.annotateRestChange)(change);
238
- const graphqlResult = (0, annotators_1.annotateGraphQLChange)(change);
239
- const wsResult = (0, annotators_1.annotateWebSocketChange)(change);
240
- // None should annotate empty path
241
- node_assert_1.default.strictEqual(restResult.protocol, undefined);
242
- node_assert_1.default.strictEqual(graphqlResult.protocol, undefined);
243
- node_assert_1.default.strictEqual(wsResult.protocol, undefined);
244
- });
245
- (0, node_test_1.it)("should handle undefined paths gracefully", () => {
246
- const changeWithUndefined = (0, utils_1.createTestChange)({
247
- path: undefined,
248
- description: "Item added",
249
- });
250
- const restResultUndef = (0, annotators_1.annotateRestChange)(changeWithUndefined);
251
- const graphqlResultUndef = (0, annotators_1.annotateGraphQLChange)(changeWithUndefined);
252
- const wsResultUndef = (0, annotators_1.annotateWebSocketChange)(changeWithUndefined);
253
- node_assert_1.default.strictEqual(restResultUndef.protocol, undefined);
254
- node_assert_1.default.strictEqual(graphqlResultUndef.protocol, undefined);
255
- node_assert_1.default.strictEqual(wsResultUndef.protocol, undefined);
256
- });
257
- (0, node_test_1.it)("should handle malformed paths gracefully", () => {
258
- const malformedPaths = [
259
- "/service/protocols", // Incomplete
260
- "/service/protocols/rest/routes", // Missing route name
261
- "/service/protocols/graphql", // Missing operation type
262
- "invalid/path/format",
263
- "service/protocols/rest/routes/route", // Missing leading slash
264
- ];
265
- for (const path of malformedPaths) {
266
- const change = (0, utils_1.createTestChange)({
267
- path,
268
- description: "Item added",
269
- });
270
- const restResult = (0, annotators_1.annotateRestChange)(change);
271
- const graphqlResult = (0, annotators_1.annotateGraphQLChange)(change);
272
- const wsResult = (0, annotators_1.annotateWebSocketChange)(change);
273
- // Should not crash and should not annotate malformed paths
274
- node_assert_1.default.strictEqual(restResult.protocol, undefined);
275
- node_assert_1.default.strictEqual(graphqlResult.protocol, undefined);
276
- node_assert_1.default.strictEqual(wsResult.protocol, undefined);
277
- }
278
- });
279
- });
280
- });