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