@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,648 +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_path_1 = __importDefault(require("node:path"));
8
- const node_test_1 = require("node:test");
9
- const normalizer_1 = require("../../src/normalizer/index.js");
10
- const utils_1 = require("./utils.js");
11
- (0, node_test_1.describe)("normalizer module - comprehensive protocol tests", () => {
12
- (0, node_test_1.describe)("REST protocol normalization", () => {
13
- (0, node_test_1.it)("should sort REST routes by name when available", () => {
14
- const doc = (0, utils_1.createTestDocument)({
15
- service: {
16
- name: "test-service",
17
- protocols: {
18
- rest: {
19
- routes: [
20
- {
21
- name: "zebraRoute",
22
- method: "GET",
23
- path: "/zebra",
24
- responses: { "200": { description: "OK" } },
25
- },
26
- {
27
- name: "alphaRoute",
28
- method: "POST",
29
- path: "/alpha",
30
- responses: { "201": { description: "Created" } },
31
- },
32
- {
33
- name: "betaRoute",
34
- method: "PUT",
35
- path: "/beta",
36
- responses: { "200": { description: "OK" } },
37
- },
38
- ],
39
- },
40
- },
41
- },
42
- });
43
- const normalized = (0, normalizer_1.normalizeUniSpec)(doc);
44
- // Routes should be sorted by name
45
- const routes = normalized.service?.protocols?.rest?.routes || [];
46
- const routeNames = routes.map((r) => r.name).filter(Boolean);
47
- node_assert_1.default.deepStrictEqual(routeNames, [
48
- "alphaRoute",
49
- "betaRoute",
50
- "zebraRoute",
51
- ]);
52
- });
53
- (0, node_test_1.it)("should sort REST routes by path+method when name is missing", () => {
54
- const doc = (0, utils_1.createTestDocument)({
55
- service: {
56
- name: "test-service",
57
- protocols: {
58
- rest: {
59
- routes: [
60
- {
61
- name: "",
62
- method: "GET",
63
- path: "/users",
64
- responses: { "200": { description: "OK" } },
65
- },
66
- {
67
- name: "",
68
- method: "POST",
69
- path: "/users",
70
- responses: { "201": { description: "Created" } },
71
- },
72
- {
73
- name: "",
74
- method: "DELETE",
75
- path: "/users/{id}",
76
- responses: { "204": { description: "No Content" } },
77
- },
78
- ],
79
- },
80
- },
81
- },
82
- });
83
- const normalized = (0, normalizer_1.normalizeUniSpec)(doc);
84
- // Routes should be sorted by path+method
85
- const routes = normalized.service?.protocols?.rest?.routes || [];
86
- const routeKeys = routes.map((r) => r.name ? `${r.path} ${r.method}` : `${r.path} ${r.method}`);
87
- node_assert_1.default.deepStrictEqual(routeKeys, [
88
- "/users GET",
89
- "/users POST",
90
- "/users/{id} DELETE",
91
- ]);
92
- });
93
- (0, node_test_1.it)("should handle mixed named and unnamed routes", () => {
94
- const doc = (0, utils_1.createTestDocument)({
95
- service: {
96
- name: "test-service",
97
- protocols: {
98
- rest: {
99
- routes: [
100
- {
101
- name: "getUser",
102
- method: "GET",
103
- path: "/users/{id}",
104
- responses: { "200": { description: "OK" } },
105
- },
106
- {
107
- name: "",
108
- method: "POST",
109
- path: "/users",
110
- responses: { "201": { description: "Created" } },
111
- },
112
- {
113
- name: "deleteUser",
114
- method: "DELETE",
115
- path: "/users/{id}",
116
- responses: { "204": { description: "No Content" } },
117
- },
118
- ],
119
- },
120
- },
121
- },
122
- });
123
- const normalized = (0, normalizer_1.normalizeUniSpec)(doc);
124
- // Routes should be sorted by name or path+method
125
- const routes = normalized.service?.protocols?.rest?.routes || [];
126
- const routeKeys = routes.map((r) => r.name || `${r.path} ${r.method}`);
127
- node_assert_1.default.deepStrictEqual(routeKeys, [
128
- "/users POST",
129
- "deleteUser",
130
- "getUser",
131
- ]);
132
- });
133
- });
134
- (0, node_test_1.describe)("GraphQL protocol normalization", () => {
135
- (0, node_test_1.it)("should sort GraphQL queries by name", () => {
136
- const doc = (0, utils_1.createTestDocument)({
137
- service: {
138
- name: "test-service",
139
- protocols: {
140
- graphql: {
141
- queries: [
142
- {
143
- name: "zebraQuery",
144
- description: "Get zebra",
145
- args: [],
146
- returnType: "Zebra",
147
- },
148
- {
149
- name: "alphaQuery",
150
- description: "Get alpha",
151
- args: [],
152
- returnType: "Alpha",
153
- },
154
- {
155
- name: "betaQuery",
156
- description: "Get beta",
157
- args: [],
158
- returnType: "Beta",
159
- },
160
- ],
161
- mutations: [],
162
- subscriptions: [],
163
- schema: "type Query { alphaQuery: Alpha betaQuery: Beta zebraQuery: Zebra }",
164
- },
165
- },
166
- },
167
- });
168
- const normalized = (0, normalizer_1.normalizeUniSpec)(doc);
169
- // Queries should be sorted by name
170
- const queries = normalized.service?.protocols?.graphql?.queries || [];
171
- const queryNames = queries.map((q) => q.name).filter(Boolean);
172
- node_assert_1.default.deepStrictEqual(queryNames, [
173
- "alphaQuery",
174
- "betaQuery",
175
- "zebraQuery",
176
- ]);
177
- });
178
- (0, node_test_1.it)("should sort GraphQL mutations by name", () => {
179
- const doc = (0, utils_1.createTestDocument)({
180
- service: {
181
- name: "test-service",
182
- protocols: {
183
- graphql: {
184
- queries: [],
185
- mutations: [
186
- {
187
- name: "zebraMutation",
188
- description: "Create zebra",
189
- args: [],
190
- returnType: "Zebra",
191
- },
192
- {
193
- name: "alphaMutation",
194
- description: "Create alpha",
195
- args: [],
196
- returnType: "Alpha",
197
- },
198
- ],
199
- subscriptions: [],
200
- schema: "type Mutation { alphaMutation: Alpha zebraMutation: Zebra }",
201
- },
202
- },
203
- },
204
- });
205
- const normalized = (0, normalizer_1.normalizeUniSpec)(doc);
206
- // Mutations should be sorted by name
207
- const mutations = normalized.service?.protocols?.graphql?.mutations || [];
208
- const mutationNames = mutations.map((m) => m.name).filter(Boolean);
209
- node_assert_1.default.deepStrictEqual(mutationNames, ["alphaMutation", "zebraMutation"]);
210
- });
211
- (0, node_test_1.it)("should sort GraphQL subscriptions by name", () => {
212
- const doc = (0, utils_1.createTestDocument)({
213
- service: {
214
- name: "test-service",
215
- protocols: {
216
- graphql: {
217
- queries: [],
218
- mutations: [],
219
- subscriptions: [
220
- {
221
- name: "zebraSubscription",
222
- description: "Subscribe to zebra",
223
- args: [],
224
- returnType: "Zebra",
225
- },
226
- {
227
- name: "alphaSubscription",
228
- description: "Subscribe to alpha",
229
- args: [],
230
- returnType: "Alpha",
231
- },
232
- ],
233
- schema: "type Subscription { alphaSubscription: Alpha zebraSubscription: Zebra }",
234
- },
235
- },
236
- },
237
- });
238
- const normalized = (0, normalizer_1.normalizeUniSpec)(doc);
239
- // Subscriptions should be sorted by name
240
- const subscriptions = normalized.service?.protocols?.graphql?.subscriptions || [];
241
- const subscriptionNames = subscriptions
242
- .map((s) => s.name)
243
- .filter(Boolean);
244
- node_assert_1.default.deepStrictEqual(subscriptionNames, [
245
- "alphaSubscription",
246
- "zebraSubscription",
247
- ]);
248
- });
249
- (0, node_test_1.it)("should handle operations with missing names", () => {
250
- const doc = (0, utils_1.createTestDocument)({
251
- service: {
252
- name: "test-service",
253
- protocols: {
254
- graphql: {
255
- queries: [
256
- {
257
- name: "",
258
- description: "Query without name",
259
- args: [],
260
- returnType: "String",
261
- },
262
- {
263
- name: "namedQuery",
264
- description: "Named query",
265
- args: [],
266
- returnType: "String",
267
- },
268
- ],
269
- mutations: [],
270
- subscriptions: [],
271
- schema: "type Query { namedQuery: String }",
272
- },
273
- },
274
- },
275
- });
276
- const normalized = (0, normalizer_1.normalizeUniSpec)(doc);
277
- // Should handle missing names gracefully
278
- const queries = normalized.service?.protocols?.graphql?.queries || [];
279
- node_assert_1.default.strictEqual(queries.length, 2);
280
- // Named query should come after unnamed (empty string sorts first)
281
- const queryNames = queries.map((q) => q.name || "");
282
- node_assert_1.default.deepStrictEqual(queryNames, ["", "namedQuery"]);
283
- });
284
- });
285
- (0, node_test_1.describe)("WebSocket protocol normalization", () => {
286
- (0, node_test_1.it)("should sort WebSocket channels by name", () => {
287
- const doc = (0, utils_1.createTestDocument)({
288
- service: {
289
- name: "test-service",
290
- protocols: {
291
- websocket: {
292
- channels: [
293
- {
294
- name: "zebraChannel",
295
- description: "Zebra channel",
296
- messages: [],
297
- },
298
- {
299
- name: "alphaChannel",
300
- description: "Alpha channel",
301
- messages: [],
302
- },
303
- {
304
- name: "betaChannel",
305
- description: "Beta channel",
306
- messages: [],
307
- },
308
- ],
309
- },
310
- },
311
- },
312
- });
313
- const normalized = (0, normalizer_1.normalizeUniSpec)(doc);
314
- // Channels should be sorted by name
315
- const channels = normalized.service?.protocols?.websocket?.channels || [];
316
- const channelNames = channels.map((c) => c.name).filter(Boolean);
317
- node_assert_1.default.deepStrictEqual(channelNames, [
318
- "alphaChannel",
319
- "betaChannel",
320
- "zebraChannel",
321
- ]);
322
- });
323
- (0, node_test_1.it)("should sort messages within each channel by name", () => {
324
- const doc = (0, utils_1.createTestDocument)({
325
- service: {
326
- name: "test-service",
327
- protocols: {
328
- websocket: {
329
- channels: [
330
- {
331
- name: "notifications",
332
- description: "Notification channel",
333
- messages: [
334
- {
335
- name: "zebraMessage",
336
- description: "Zebra notification",
337
- direction: "subscribe",
338
- },
339
- {
340
- name: "alphaMessage",
341
- description: "Alpha notification",
342
- direction: "publish",
343
- },
344
- {
345
- name: "betaMessage",
346
- description: "Beta notification",
347
- direction: "both",
348
- },
349
- ],
350
- },
351
- ],
352
- },
353
- },
354
- },
355
- });
356
- const normalized = (0, normalizer_1.normalizeUniSpec)(doc);
357
- // Messages should be sorted by name within the channel
358
- const channel = normalized.service?.protocols?.websocket?.channels?.find((c) => c.name === "notifications");
359
- node_assert_1.default.ok(channel);
360
- const messages = channel?.messages || [];
361
- const messageNames = messages.map((m) => m.name).filter(Boolean);
362
- node_assert_1.default.deepStrictEqual(messageNames, [
363
- "alphaMessage",
364
- "betaMessage",
365
- "zebraMessage",
366
- ]);
367
- });
368
- (0, node_test_1.it)("should handle channels with missing names", () => {
369
- const doc = (0, utils_1.createTestDocument)({
370
- service: {
371
- name: "test-service",
372
- protocols: {
373
- websocket: {
374
- channels: [
375
- {
376
- name: "",
377
- description: "Channel without name",
378
- messages: [],
379
- },
380
- {
381
- name: "namedChannel",
382
- description: "Named channel",
383
- messages: [],
384
- },
385
- ],
386
- },
387
- },
388
- },
389
- });
390
- const normalized = (0, normalizer_1.normalizeUniSpec)(doc);
391
- // Should handle missing names gracefully
392
- const channels = normalized.service?.protocols?.websocket?.channels || [];
393
- node_assert_1.default.strictEqual(channels.length, 2);
394
- // Named channel should come after unnamed
395
- const channelNames = channels.map((c) => c.name || "");
396
- node_assert_1.default.deepStrictEqual(channelNames, ["", "namedChannel"]);
397
- });
398
- (0, node_test_1.it)("should handle messages with missing names", () => {
399
- const doc = (0, utils_1.createTestDocument)({
400
- service: {
401
- name: "test-service",
402
- protocols: {
403
- websocket: {
404
- channels: [
405
- {
406
- name: "testChannel",
407
- description: "Test channel",
408
- messages: [
409
- {
410
- name: "",
411
- description: "Message without name",
412
- direction: "subscribe",
413
- },
414
- {
415
- name: "namedMessage",
416
- description: "Named message",
417
- direction: "publish",
418
- },
419
- ],
420
- },
421
- ],
422
- },
423
- },
424
- },
425
- });
426
- const normalized = (0, normalizer_1.normalizeUniSpec)(doc);
427
- // Should handle missing names gracefully
428
- const channel = normalized.service?.protocols?.websocket?.channels?.find((c) => c.name === "testChannel");
429
- node_assert_1.default.ok(channel);
430
- const messages = channel?.messages || [];
431
- node_assert_1.default.strictEqual(messages.length, 2);
432
- // Named message should come after unnamed
433
- const messageNames = messages.map((m) => m.name || "");
434
- node_assert_1.default.deepStrictEqual(messageNames, ["", "namedMessage"]);
435
- });
436
- });
437
- (0, node_test_1.describe)("Mixed protocol normalization", () => {
438
- (0, node_test_1.it)("should normalize all protocols simultaneously", () => {
439
- const doc = (0, utils_1.createTestDocument)({
440
- service: {
441
- name: "test-service",
442
- protocols: {
443
- rest: {
444
- routes: [
445
- {
446
- name: "zebraRoute",
447
- method: "GET",
448
- path: "/zebra",
449
- responses: { "200": { description: "OK" } },
450
- },
451
- {
452
- name: "alphaRoute",
453
- method: "POST",
454
- path: "/alpha",
455
- responses: { "201": { description: "Created" } },
456
- },
457
- ],
458
- },
459
- graphql: {
460
- queries: [
461
- {
462
- name: "zebraQuery",
463
- description: "Get zebra",
464
- args: [],
465
- returnType: "Zebra",
466
- },
467
- {
468
- name: "alphaQuery",
469
- description: "Get alpha",
470
- args: [],
471
- returnType: "Alpha",
472
- },
473
- ],
474
- mutations: [],
475
- subscriptions: [],
476
- schema: "type Query { alphaQuery: Alpha zebraQuery: Zebra }",
477
- },
478
- websocket: {
479
- channels: [
480
- {
481
- name: "zebraChannel",
482
- description: "Zebra channel",
483
- messages: [],
484
- },
485
- {
486
- name: "alphaChannel",
487
- description: "Alpha channel",
488
- messages: [],
489
- },
490
- ],
491
- },
492
- },
493
- },
494
- });
495
- const normalized = (0, normalizer_1.normalizeUniSpec)(doc);
496
- // All protocols should be normalized
497
- const protocols = normalized.service?.protocols;
498
- // Check REST routes
499
- const restRoutes = protocols?.rest?.routes || [];
500
- const restRouteNames = restRoutes.map((r) => r.name).filter(Boolean);
501
- node_assert_1.default.deepStrictEqual(restRouteNames, ["alphaRoute", "zebraRoute"]);
502
- // Check GraphQL queries
503
- const graphqlQueries = protocols?.graphql?.queries || [];
504
- const graphqlQueryNames = graphqlQueries
505
- .map((q) => q.name)
506
- .filter(Boolean);
507
- node_assert_1.default.deepStrictEqual(graphqlQueryNames, ["alphaQuery", "zebraQuery"]);
508
- // Check WebSocket channels
509
- const wsChannels = protocols?.websocket?.channels || [];
510
- const wsChannelNames = wsChannels.map((c) => c.name).filter(Boolean);
511
- node_assert_1.default.deepStrictEqual(wsChannelNames, ["alphaChannel", "zebraChannel"]);
512
- });
513
- });
514
- (0, node_test_1.describe)("Structural normalization", () => {
515
- (0, node_test_1.it)("should sort all object keys lexicographically", () => {
516
- const doc = {
517
- unispecVersion: "1.0.0",
518
- service: {
519
- name: "test-service",
520
- description: "Test service for sorting",
521
- protocols: {
522
- rest: {
523
- routes: [
524
- {
525
- name: "zRoute",
526
- method: "GET",
527
- path: "/z",
528
- responses: { "200": { description: "OK" } },
529
- },
530
- {
531
- name: "aRoute",
532
- method: "POST",
533
- path: "/a",
534
- responses: { "201": { description: "Created" } },
535
- },
536
- ],
537
- },
538
- },
539
- },
540
- };
541
- const normalized = (0, normalizer_1.normalizeUniSpec)(doc);
542
- // Top-level keys should be sorted
543
- const docKeys = Object.keys(normalized);
544
- node_assert_1.default.deepStrictEqual(docKeys, ["service", "unispecVersion"]);
545
- // Service keys should be sorted lexicographically
546
- const serviceKeys = Object.keys(normalized.service || {});
547
- const expectedServiceKeys = ["description", "name", "protocols"];
548
- node_assert_1.default.deepStrictEqual(serviceKeys, expectedServiceKeys);
549
- // Protocol keys should be sorted
550
- const protocolKeys = Object.keys(normalized.service?.protocols || {});
551
- node_assert_1.default.deepStrictEqual(protocolKeys, ["rest"]);
552
- });
553
- (0, node_test_1.it)("should handle nested objects recursively", () => {
554
- const doc = (0, utils_1.createTestDocument)({
555
- service: {
556
- name: "test-service",
557
- protocols: {
558
- rest: {
559
- routes: [
560
- {
561
- name: "testRoute",
562
- method: "POST",
563
- path: "/test",
564
- requestBody: {
565
- description: "Request body",
566
- content: {
567
- "application/json": {
568
- schemaRef: "ZSchema",
569
- },
570
- "text/plain": {
571
- schemaRef: "ASchema",
572
- },
573
- },
574
- },
575
- responses: {
576
- "201": {
577
- description: "Created",
578
- },
579
- "200": {
580
- description: "OK",
581
- },
582
- },
583
- },
584
- ],
585
- },
586
- },
587
- },
588
- });
589
- const normalized = (0, normalizer_1.normalizeUniSpec)(doc);
590
- // Nested object keys should be sorted
591
- const route = normalized.service?.protocols?.rest?.routes?.[0];
592
- node_assert_1.default.ok(route);
593
- // requestBody keys should be sorted lexicographically
594
- const requestBodyKeys = Object.keys(route.requestBody || {});
595
- node_assert_1.default.deepStrictEqual(requestBodyKeys, ["content", "description"]);
596
- // response keys should be sorted
597
- const responseKeys = Object.keys(route.responses || {});
598
- node_assert_1.default.deepStrictEqual(responseKeys, ["200", "201"]);
599
- });
600
- });
601
- (0, node_test_1.describe)("Real-world examples", () => {
602
- (0, node_test_1.it)("should handle complex real-world example from mixed-complete.json", () => {
603
- const doc = (0, utils_1.loadExample)(node_path_1.default.join(utils_1.examplesDir, "valid", "spec", "mixed-complete.json"));
604
- // Should not crash
605
- const normalized = (0, normalizer_1.normalizeUniSpec)(doc);
606
- node_assert_1.default.ok(normalized);
607
- // Should have sorted structure
608
- const docKeys = Object.keys(normalized);
609
- node_assert_1.default.deepStrictEqual(docKeys, ["service", "unispecVersion"]);
610
- // Should normalize all protocols present
611
- const protocols = normalized.service?.protocols;
612
- if (protocols?.rest?.routes) {
613
- const routeKeys = protocols.rest.routes.map((r) => r.name || `${r.path} ${r.method}`);
614
- const sortedRouteKeys = [...routeKeys].sort();
615
- node_assert_1.default.deepStrictEqual(routeKeys, sortedRouteKeys);
616
- }
617
- if (protocols?.graphql) {
618
- ["queries", "mutations", "subscriptions"].forEach((operationType) => {
619
- const operations = protocols[operationType];
620
- if (Array.isArray(operations)) {
621
- const names = operations
622
- .map((op) => op.name || "")
623
- .filter(Boolean);
624
- const sortedNames = [...names].sort();
625
- node_assert_1.default.deepStrictEqual(names, sortedNames);
626
- }
627
- });
628
- }
629
- if (protocols?.websocket?.channels) {
630
- const channelNames = protocols.websocket.channels
631
- .map((c) => c.name || "")
632
- .filter(Boolean);
633
- const sortedChannelNames = [...channelNames].sort();
634
- node_assert_1.default.deepStrictEqual(channelNames, sortedChannelNames);
635
- // Check message sorting within channels
636
- protocols.websocket.channels.forEach((channel) => {
637
- if (channel.messages) {
638
- const messageNames = channel.messages
639
- .map((m) => m.name || "")
640
- .filter(Boolean);
641
- const sortedMessageNames = [...messageNames].sort();
642
- node_assert_1.default.deepStrictEqual(messageNames, sortedMessageNames);
643
- }
644
- });
645
- }
646
- });
647
- });
648
- });