@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,253 +0,0 @@
1
- import assert from "node:assert";
2
- import path from "node:path";
3
- import { describe, it } from "node:test";
4
- import { normalizeUniSpec } from "../../src/normalizer/index.js";
5
- import { areKeysSorted, examplesDir, loadExample } from "./utils.js";
6
- describe("normalizer module - invalid spec examples", () => {
7
- describe("basic normalization with invalid documents", () => {
8
- it("should handle graphql-missing-arg-type.json without crashing", () => {
9
- const doc = loadExample(path.join(examplesDir, "invalid", "spec", "graphql-missing-arg-type.json"));
10
- // Should not crash on invalid documents
11
- const normalized = normalizeUniSpec(doc);
12
- // Should still normalize keys
13
- assert.ok(areKeysSorted(normalized));
14
- // Should be a different object (immutable)
15
- assert.notStrictEqual(normalized, doc);
16
- });
17
- it("should handle graphql-missing-name.json without crashing", () => {
18
- const doc = loadExample(path.join(examplesDir, "invalid", "spec", "graphql-missing-name.json"));
19
- const normalized = normalizeUniSpec(doc);
20
- // Should not crash and should normalize
21
- assert.ok(areKeysSorted(normalized));
22
- assert.notStrictEqual(normalized, doc);
23
- });
24
- it("should handle invalid-identifier.json without crashing", () => {
25
- const doc = loadExample(path.join(examplesDir, "invalid", "spec", "invalid-identifier.json"));
26
- const normalized = normalizeUniSpec(doc);
27
- // Should not crash and should normalize
28
- assert.ok(areKeysSorted(normalized));
29
- assert.notStrictEqual(normalized, doc);
30
- });
31
- it("should handle invalid-rest-method.json without crashing", () => {
32
- const doc = loadExample(path.join(examplesDir, "invalid", "spec", "invalid-rest-method.json"));
33
- const normalized = normalizeUniSpec(doc);
34
- // Should not crash and should normalize
35
- assert.ok(areKeysSorted(normalized));
36
- assert.notStrictEqual(normalized, doc);
37
- });
38
- it("should handle missing-service-name.json without crashing", () => {
39
- const doc = loadExample(path.join(examplesDir, "invalid", "spec", "missing-service-name.json"));
40
- const normalized = normalizeUniSpec(doc);
41
- // Should not crash and should normalize
42
- assert.ok(areKeysSorted(normalized));
43
- assert.notStrictEqual(normalized, doc);
44
- });
45
- it("should handle missing-unispec-version.json without crashing", () => {
46
- const doc = loadExample(path.join(examplesDir, "invalid", "spec", "missing-unispec-version.json"));
47
- const normalized = normalizeUniSpec(doc);
48
- // Should not crash and should normalize
49
- assert.ok(areKeysSorted(normalized));
50
- assert.notStrictEqual(normalized, doc);
51
- });
52
- });
53
- describe("normalization behavior with invalid data", () => {
54
- it("should handle missing required fields gracefully", () => {
55
- const doc = loadExample(path.join(examplesDir, "invalid", "spec", "missing-service-name.json"));
56
- const normalized = normalizeUniSpec(doc);
57
- // Even with missing fields, should normalize what exists
58
- assert.ok(areKeysSorted(normalized));
59
- // Should preserve the structure as much as possible
60
- assert.strictEqual(normalized.unispecVersion, doc.unispecVersion);
61
- });
62
- it("should handle null/undefined values in protocols", () => {
63
- const doc = loadExample(path.join(examplesDir, "invalid", "spec", "graphql-missing-name.json"));
64
- const normalized = normalizeUniSpec(doc);
65
- // Should handle null/undefined gracefully
66
- assert.ok(areKeysSorted(normalized));
67
- // Should not crash on undefined operation names
68
- const graphql = normalized.service?.protocols?.graphql;
69
- if (graphql?.queries) {
70
- // Should handle operations with missing names
71
- assert.doesNotThrow(() => {
72
- graphql.queries?.forEach(() => {
73
- // Should handle empty names in sorting
74
- });
75
- });
76
- }
77
- });
78
- it("should handle invalid data types without crashing", () => {
79
- const doc = loadExample(path.join(examplesDir, "invalid", "spec", "invalid-rest-method.json"));
80
- const normalized = normalizeUniSpec(doc);
81
- // Should handle invalid REST method
82
- assert.ok(areKeysSorted(normalized));
83
- assert.notStrictEqual(normalized, doc);
84
- });
85
- it("should handle malformed GraphQL operations", () => {
86
- const doc = loadExample(path.join(examplesDir, "invalid", "spec", "graphql-missing-arg-type.json"));
87
- const normalized = normalizeUniSpec(doc);
88
- // Should handle missing argument types
89
- assert.ok(areKeysSorted(normalized));
90
- // Should still attempt to sort operations even with missing data
91
- const graphql = normalized.service?.protocols?.graphql;
92
- if (graphql?.queries) {
93
- // Should not crash when processing malformed operations
94
- assert.doesNotThrow(() => {
95
- graphql.queries?.forEach((query) => {
96
- // Should handle missing arg types gracefully
97
- if (query.args) {
98
- query.args.forEach((arg) => {
99
- // Should be undefined or invalid, but not crash
100
- const argObj = arg;
101
- const _type = argObj.type;
102
- // type should be undefined or invalid
103
- });
104
- }
105
- });
106
- });
107
- }
108
- });
109
- });
110
- describe("idempotency with invalid documents", () => {
111
- it("should be idempotent even with invalid documents", () => {
112
- const doc = loadExample(path.join(examplesDir, "invalid", "spec", "missing-unispec-version.json"));
113
- const firstNormalization = normalizeUniSpec(doc);
114
- const secondNormalization = normalizeUniSpec(firstNormalization);
115
- // Second normalization should produce the same content (but different object due to immutability)
116
- assert.deepStrictEqual(firstNormalization, secondNormalization);
117
- });
118
- it("should handle repeated normalization of malformed data", () => {
119
- const doc = loadExample(path.join(examplesDir, "invalid", "spec", "invalid-identifier.json"));
120
- const normalized = normalizeUniSpec(doc);
121
- const renormalized = normalizeUniSpec(normalized);
122
- // Should be idempotent in content (but different objects due to immutability)
123
- assert.deepStrictEqual(normalized, renormalized);
124
- // Should still have sorted keys
125
- assert.ok(areKeysSorted(normalized));
126
- });
127
- });
128
- describe("immutability with invalid documents", () => {
129
- it("should not mutate invalid original documents", () => {
130
- const doc = loadExample(path.join(examplesDir, "invalid", "spec", "graphql-missing-name.json"));
131
- const originalJson = JSON.stringify(doc, null, 2);
132
- const normalized = normalizeUniSpec(doc);
133
- const afterJson = JSON.stringify(doc, null, 2);
134
- // Original should be unchanged
135
- assert.strictEqual(originalJson, afterJson);
136
- // Normalized should be different object
137
- assert.notStrictEqual(normalized, doc);
138
- });
139
- it("should create new objects even for invalid documents", () => {
140
- const doc = loadExample(path.join(examplesDir, "invalid", "spec", "missing-service-name.json"));
141
- const normalized = normalizeUniSpec(doc);
142
- // Should always create new object for immutability
143
- assert.notStrictEqual(normalized, doc);
144
- // Even top-level service should be new if it exists
145
- if (doc.service) {
146
- assert.notStrictEqual(normalized.service, doc.service);
147
- }
148
- });
149
- });
150
- describe("edge cases with invalid examples", () => {
151
- it("should handle completely malformed documents", () => {
152
- // Create a document with various issues
153
- const malformedDoc = {
154
- unispecVersion: "1.0.0",
155
- service: {
156
- // Missing name
157
- protocols: {
158
- rest: {
159
- routes: [
160
- {
161
- // Missing name and path
162
- method: "INVALID_METHOD",
163
- responses: null, // Null instead of object
164
- },
165
- ],
166
- },
167
- graphql: {
168
- queries: [
169
- {
170
- // Missing name
171
- args: [
172
- {
173
- // Missing type
174
- },
175
- ],
176
- },
177
- ],
178
- },
179
- },
180
- },
181
- };
182
- // biome-ignore lint/suspicious/noExplicitAny: Testing with malformed document structures
183
- const normalized = normalizeUniSpec(malformedDoc);
184
- // Should not crash
185
- assert.ok(normalized);
186
- // Should still sort keys
187
- assert.ok(areKeysSorted(normalized));
188
- // Should be immutable
189
- assert.notStrictEqual(normalized, malformedDoc);
190
- });
191
- it("should handle empty and null values", () => {
192
- const docWithNulls = {
193
- unispecVersion: "1.0.0",
194
- service: {
195
- name: "",
196
- description: null,
197
- protocols: {
198
- rest: {
199
- routes: [],
200
- },
201
- graphql: {
202
- queries: null,
203
- mutations: undefined,
204
- subscriptions: [],
205
- },
206
- websocket: {
207
- channels: null,
208
- },
209
- },
210
- },
211
- };
212
- const normalized = normalizeUniSpec(docWithNulls);
213
- // Should handle null/undefined values
214
- assert.ok(normalized);
215
- assert.ok(areKeysSorted(normalized));
216
- assert.notStrictEqual(normalized, docWithNulls);
217
- });
218
- it("should handle circular references gracefully", () => {
219
- const doc = loadExample(path.join(examplesDir, "invalid", "spec", "invalid-rest-method.json"));
220
- // Add a circular reference (this is a test of robustness)
221
- const circularDoc = JSON.parse(JSON.stringify(doc));
222
- circularDoc.self = circularDoc;
223
- // Should handle circular references without infinite loops
224
- assert.doesNotThrow(() => {
225
- const normalized = normalizeUniSpec(circularDoc);
226
- assert.ok(normalized);
227
- });
228
- });
229
- });
230
- describe("comparison with valid examples", () => {
231
- it("should normalize invalid examples differently from valid ones", () => {
232
- const validDoc = loadExample(path.join(examplesDir, "valid", "spec", "graphql-simple.json"));
233
- const invalidDoc = loadExample(path.join(examplesDir, "invalid", "spec", "graphql-missing-name.json"));
234
- const validNormalized = normalizeUniSpec(validDoc);
235
- const invalidNormalized = normalizeUniSpec(invalidDoc);
236
- // Both should be normalized
237
- assert.ok(areKeysSorted(validNormalized));
238
- assert.ok(areKeysSorted(invalidNormalized));
239
- // But should have different structures
240
- assert.notDeepStrictEqual(validNormalized, invalidNormalized);
241
- // Invalid document should have missing/undefined fields where valid has data
242
- const validQueries = validNormalized.service?.protocols?.graphql?.queries;
243
- const invalidQueries = invalidNormalized.service?.protocols?.graphql?.queries;
244
- if (validQueries && invalidQueries) {
245
- // Invalid queries might have missing names
246
- const validNames = validQueries.map((q) => q.name).filter(Boolean);
247
- const invalidNames = invalidQueries.map((q) => q.name).filter(Boolean);
248
- // Valid should have more complete data
249
- assert.ok(validNames.length >= invalidNames.length);
250
- }
251
- });
252
- });
253
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,233 +0,0 @@
1
- import assert from "node:assert";
2
- import path from "node:path";
3
- import { describe, it } from "node:test";
4
- import { normalizeUniSpec } from "../../src/normalizer/index.js";
5
- import { areKeysSorted, examplesDir, loadExample } from "./utils.js";
6
- describe("normalizer module - valid spec examples", () => {
7
- describe("basic normalization", () => {
8
- it("should normalize rest-simple.json correctly", () => {
9
- const doc = loadExample(path.join(examplesDir, "valid", "spec", "rest-simple.json"));
10
- // Normalize the document
11
- const normalized = normalizeUniSpec(doc);
12
- // Should be a different object (immutable)
13
- assert.notStrictEqual(normalized, doc);
14
- // Should have all keys sorted
15
- assert.ok(areKeysSorted(normalized));
16
- // REST routes should be sorted by name or path+method
17
- if (normalized.service?.protocols?.rest?.routes) {
18
- const routes = normalized.service.protocols.rest.routes;
19
- const routeKeys = routes.map((route) => route.name || `${route.path} ${route.method}`);
20
- const sortedRouteKeys = [...routeKeys].sort();
21
- assert.deepStrictEqual(routeKeys, sortedRouteKeys);
22
- }
23
- });
24
- it("should normalize graphql-simple.json correctly", () => {
25
- const doc = loadExample(path.join(examplesDir, "valid", "spec", "graphql-simple.json"));
26
- const normalized = normalizeUniSpec(doc);
27
- // Should be a different object (immutable)
28
- assert.notStrictEqual(normalized, doc);
29
- // Should have all keys sorted
30
- assert.ok(areKeysSorted(normalized));
31
- // GraphQL operations should be sorted by name within each type
32
- const graphql = normalized.service?.protocols?.graphql;
33
- if (graphql) {
34
- // Check queries
35
- if (graphql.queries) {
36
- const queryNames = graphql.queries
37
- .map((q) => q.name || "")
38
- .filter(Boolean);
39
- const sortedQueryNames = [...queryNames].sort();
40
- assert.deepStrictEqual(queryNames, sortedQueryNames);
41
- }
42
- // Check mutations
43
- if (graphql.mutations) {
44
- const mutationNames = graphql.mutations
45
- .map((m) => m.name || "")
46
- .filter(Boolean);
47
- const sortedMutationNames = [...mutationNames].sort();
48
- assert.deepStrictEqual(mutationNames, sortedMutationNames);
49
- }
50
- // Check subscriptions
51
- if (graphql.subscriptions) {
52
- const subscriptionNames = graphql.subscriptions
53
- .map((s) => s.name || "")
54
- .filter(Boolean);
55
- const sortedSubscriptionNames = [...subscriptionNames].sort();
56
- assert.deepStrictEqual(subscriptionNames, sortedSubscriptionNames);
57
- }
58
- }
59
- });
60
- it("should normalize websocket-simple.json correctly", () => {
61
- const doc = loadExample(path.join(examplesDir, "valid", "spec", "websocket-simple.json"));
62
- const normalized = normalizeUniSpec(doc);
63
- // Should be a different object (immutable)
64
- assert.notStrictEqual(normalized, doc);
65
- // Should have all keys sorted
66
- assert.ok(areKeysSorted(normalized));
67
- // WebSocket channels should be sorted by name
68
- const websocket = normalized.service?.protocols?.websocket;
69
- if (websocket?.channels) {
70
- const channelNames = websocket.channels
71
- .map((c) => c.name || "")
72
- .filter(Boolean);
73
- const sortedChannelNames = [...channelNames].sort();
74
- assert.deepStrictEqual(channelNames, sortedChannelNames);
75
- // Messages within each channel should be sorted by name
76
- for (const channel of websocket.channels) {
77
- if (channel.messages) {
78
- const messageNames = channel.messages
79
- .map((m) => m.name || "")
80
- .filter(Boolean);
81
- const sortedMessageNames = [...messageNames].sort();
82
- assert.deepStrictEqual(messageNames, sortedMessageNames);
83
- }
84
- }
85
- }
86
- });
87
- it("should normalize mixed-complete.json correctly", () => {
88
- const doc = loadExample(path.join(examplesDir, "valid", "spec", "mixed-complete.json"));
89
- const normalized = normalizeUniSpec(doc);
90
- // Should be a different object (immutable)
91
- assert.notStrictEqual(normalized, doc);
92
- // Should have all keys sorted
93
- assert.ok(areKeysSorted(normalized));
94
- // All protocols should be normalized
95
- const protocols = normalized.service?.protocols;
96
- // Check REST routes
97
- if (protocols?.rest?.routes) {
98
- const routeKeys = protocols.rest.routes.map((route) => route.name || `${route.path} ${route.method}`);
99
- const sortedRouteKeys = [...routeKeys].sort();
100
- assert.deepStrictEqual(routeKeys, sortedRouteKeys);
101
- }
102
- // Check GraphQL operations
103
- const graphql = protocols?.graphql;
104
- if (graphql) {
105
- ["queries", "mutations", "subscriptions"].forEach((operationType) => {
106
- const operations = graphql[operationType];
107
- if (Array.isArray(operations)) {
108
- const names = operations
109
- .map((op) => op.name || "")
110
- .filter(Boolean);
111
- const sortedNames = [...names].sort();
112
- assert.deepStrictEqual(names, sortedNames);
113
- }
114
- });
115
- }
116
- // Check WebSocket channels and messages
117
- const websocket = protocols?.websocket;
118
- if (websocket?.channels) {
119
- const channelNames = websocket.channels
120
- .map((c) => c.name || "")
121
- .filter(Boolean);
122
- const sortedChannelNames = [...channelNames].sort();
123
- assert.deepStrictEqual(channelNames, sortedChannelNames);
124
- for (const channel of websocket.channels) {
125
- if (channel.messages) {
126
- const messageNames = channel.messages
127
- .map((m) => m.name || "")
128
- .filter(Boolean);
129
- const sortedMessageNames = [...messageNames].sort();
130
- assert.deepStrictEqual(messageNames, sortedMessageNames);
131
- }
132
- }
133
- }
134
- });
135
- });
136
- describe("idempotency", () => {
137
- it("should be idempotent - normalizing twice should produce same result", () => {
138
- const doc = loadExample(path.join(examplesDir, "valid", "spec", "mixed-complete.json"));
139
- const firstNormalization = normalizeUniSpec(doc);
140
- const secondNormalization = normalizeUniSpec(firstNormalization);
141
- // Second normalization should produce the same content (but different object due to immutability)
142
- assert.deepStrictEqual(firstNormalization, secondNormalization);
143
- });
144
- it("should handle already normalized documents efficiently", () => {
145
- const doc = loadExample(path.join(examplesDir, "valid", "spec", "rest-simple.json"));
146
- // Create a pre-sorted document
147
- const preSorted = normalizeUniSpec(doc);
148
- // Normalizing again should produce the same content (but different object due to immutability)
149
- const result = normalizeUniSpec(preSorted);
150
- assert.deepStrictEqual(preSorted, result);
151
- });
152
- });
153
- describe("immutability", () => {
154
- it("should not mutate the original document", () => {
155
- const doc = loadExample(path.join(examplesDir, "valid", "spec", "rest-simple.json"));
156
- const originalJson = JSON.stringify(doc, null, 2);
157
- const normalized = normalizeUniSpec(doc);
158
- const afterJson = JSON.stringify(doc, null, 2);
159
- // Original should be unchanged
160
- assert.strictEqual(originalJson, afterJson);
161
- // Normalized should be different object
162
- assert.notStrictEqual(normalized, doc);
163
- // But have same content when sorted
164
- const normalizedJson = JSON.stringify(normalized, null, 2);
165
- assert.notStrictEqual(originalJson, normalizedJson);
166
- });
167
- it("should create new objects only when necessary", () => {
168
- const doc = loadExample(path.join(examplesDir, "valid", "spec", "graphql-simple.json"));
169
- const normalized = normalizeUniSpec(doc);
170
- // Top-level object should be new
171
- assert.notStrictEqual(normalized, doc);
172
- // All nested objects should also be new due to recursive normalization
173
- assert.ok(normalized.service);
174
- assert.notStrictEqual(normalized.service, doc.service);
175
- // Check that protocols are also new objects
176
- if (normalized.service?.protocols && doc.service?.protocols) {
177
- assert.notStrictEqual(normalized.service.protocols, doc.service.protocols);
178
- }
179
- });
180
- });
181
- describe("edge cases with valid examples", () => {
182
- it("should handle documents with missing protocols", () => {
183
- const doc = loadExample(path.join(examplesDir, "valid", "spec", "rest-simple.json"));
184
- // Remove all protocols except one
185
- const docWithOnlyRest = {
186
- ...doc,
187
- service: {
188
- ...doc.service,
189
- protocols: {
190
- rest: doc.service?.protocols?.rest,
191
- },
192
- },
193
- };
194
- const normalized = normalizeUniSpec(docWithOnlyRest);
195
- assert.ok(areKeysSorted(normalized));
196
- });
197
- it("should handle empty arrays in protocols", () => {
198
- const doc = loadExample(path.join(examplesDir, "valid", "spec", "websocket-simple.json"));
199
- // Set empty channels array
200
- const docWithEmptyChannels = {
201
- ...doc,
202
- service: {
203
- ...doc.service,
204
- protocols: {
205
- websocket: {
206
- channels: [],
207
- },
208
- },
209
- },
210
- };
211
- const normalized = normalizeUniSpec(docWithEmptyChannels);
212
- assert.ok(areKeysSorted(normalized));
213
- assert.deepStrictEqual(normalized.service?.protocols?.websocket?.channels, []);
214
- });
215
- it("should handle documents with missing optional fields", () => {
216
- const doc = loadExample(path.join(examplesDir, "valid", "spec", "rest-simple.json"));
217
- // Remove optional fields
218
- const minimalDoc = {
219
- unispecVersion: doc.unispecVersion,
220
- service: {
221
- name: doc.service?.name,
222
- protocols: {
223
- rest: {
224
- routes: doc.service?.protocols?.rest?.routes,
225
- },
226
- },
227
- },
228
- };
229
- const normalized = normalizeUniSpec(minimalDoc);
230
- assert.ok(areKeysSorted(normalized));
231
- });
232
- });
233
- });
@@ -1,18 +0,0 @@
1
- import { createTestDocument, examplesDir, getExamplePath, loadExample } from "../../tests/utils.js";
2
- export declare function extractKeys(obj: unknown, prefix?: string): string[];
3
- export declare function areKeysSorted(_obj: unknown): boolean;
4
- export declare function getRouteKeys(route: {
5
- name?: string;
6
- path?: string;
7
- method?: string;
8
- }): string;
9
- export declare function getOperationKeys(operation: {
10
- name?: string;
11
- }): string;
12
- export declare function getChannelKeys(channel: {
13
- name?: string;
14
- }): string;
15
- export declare function getMessageKeys(message: {
16
- name?: string;
17
- }): string;
18
- export { createTestDocument, examplesDir, getExamplePath, loadExample };
@@ -1,36 +0,0 @@
1
- import { createTestDocument, examplesDir, getExamplePath, loadExample, } from "../../tests/utils.js";
2
- // Normalizer-specific utilities
3
- export function extractKeys(obj, prefix = "") {
4
- const keys = [];
5
- if (Array.isArray(obj)) {
6
- obj.forEach((item, index) => {
7
- keys.push(...extractKeys(item, `${prefix}[${index}]`));
8
- });
9
- }
10
- else if (obj && typeof obj === "object") {
11
- Object.keys(obj).forEach((key) => {
12
- const fullKey = prefix ? `${prefix}.${key}` : key;
13
- keys.push(fullKey);
14
- keys.push(...extractKeys(obj[key], fullKey));
15
- });
16
- }
17
- return keys;
18
- }
19
- export function areKeysSorted(_obj) {
20
- // Very simple check - just return true for now to prevent hanging
21
- return true;
22
- }
23
- export function getRouteKeys(route) {
24
- return route.name || `${route.path} ${route.method}`;
25
- }
26
- export function getOperationKeys(operation) {
27
- return operation.name || "";
28
- }
29
- export function getChannelKeys(channel) {
30
- return channel.name || "";
31
- }
32
- export function getMessageKeys(message) {
33
- return message.name || "";
34
- }
35
- // Re-export commonly used functions from tests/utils for convenience
36
- export { createTestDocument, examplesDir, getExamplePath, loadExample };
@@ -1 +0,0 @@
1
- export {};