@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,395 +0,0 @@
1
- import assert from "node:assert";
2
- import { describe, it } from "node:test";
3
- import { dedupeSchemas, registerSchema, resolveSchemaRef } from "../../src/schemas/index.js";
4
- import { normalizeSchemaRef, stableStringify } from "../../src/schemas/utils.js";
5
- import { getExamplePath, loadExample } from "./utils.js";
6
- describe("schemas module", () => {
7
- describe("normalizeSchemaRef", () => {
8
- it("should handle simple name format", () => {
9
- assert.strictEqual(normalizeSchemaRef("User"), "User");
10
- assert.strictEqual(normalizeSchemaRef("CreateOrderRequest"), "CreateOrderRequest");
11
- });
12
- it("should handle JSON Pointer format", () => {
13
- assert.strictEqual(normalizeSchemaRef("#/service/schemas/User"), "User");
14
- assert.strictEqual(normalizeSchemaRef("#/service/schemas/CreateOrderRequest"), "CreateOrderRequest");
15
- });
16
- it("should handle hash format", () => {
17
- assert.strictEqual(normalizeSchemaRef("#User"), "User");
18
- assert.strictEqual(normalizeSchemaRef("#CreateOrderRequest"), "CreateOrderRequest");
19
- });
20
- it("should handle path format", () => {
21
- assert.strictEqual(normalizeSchemaRef("path/to/User"), "User");
22
- assert.strictEqual(normalizeSchemaRef("models/User"), "User");
23
- });
24
- it("should handle empty and whitespace strings", () => {
25
- assert.strictEqual(normalizeSchemaRef(""), "");
26
- assert.strictEqual(normalizeSchemaRef(" "), "");
27
- assert.strictEqual(normalizeSchemaRef("#"), "");
28
- });
29
- it("should handle complex paths", () => {
30
- assert.strictEqual(normalizeSchemaRef("#/service/schemas/nested/User"), "User");
31
- assert.strictEqual(normalizeSchemaRef("deeply/nested/path/to/Schema"), "Schema");
32
- });
33
- });
34
- describe("stableStringify", () => {
35
- it("should create consistent strings for simple values", () => {
36
- assert.strictEqual(stableStringify(null), "null");
37
- assert.strictEqual(stableStringify(42), "42");
38
- assert.strictEqual(stableStringify(true), "true");
39
- assert.strictEqual(stableStringify("test"), '"test"');
40
- });
41
- it("should create consistent strings for arrays", () => {
42
- assert.strictEqual(stableStringify([1, 2, 3]), "[1,2,3]");
43
- assert.strictEqual(stableStringify(["b", "a"]), '["b","a"]');
44
- assert.strictEqual(stableStringify([]), "[]");
45
- });
46
- it("should create consistent strings for objects with sorted keys", () => {
47
- const obj1 = { b: 2, a: 1 };
48
- const obj2 = { a: 1, b: 2 };
49
- assert.strictEqual(stableStringify(obj1), stableStringify(obj2));
50
- assert.strictEqual(stableStringify(obj1), '{"a":1,"b":2}');
51
- });
52
- it("should handle nested objects", () => {
53
- const nested = {
54
- outer: {
55
- z: 3,
56
- a: 1,
57
- },
58
- b: 2,
59
- };
60
- assert.strictEqual(stableStringify(nested), '{"b":2,"outer":{"a":1,"z":3}}');
61
- });
62
- it("should handle complex nested structures", () => {
63
- const complex = {
64
- type: "object",
65
- properties: {
66
- name: { type: "string" },
67
- age: { type: "number" },
68
- },
69
- required: ["name", "age"],
70
- };
71
- const expected = '{"properties":{"age":{"type":"number"},"name":{"type":"string"}},"required":["name","age"],"type":"object"}';
72
- assert.strictEqual(stableStringify(complex), expected);
73
- });
74
- });
75
- describe("registerSchema", () => {
76
- it("should register a new schema in an empty document", () => {
77
- const doc = {
78
- unispecVersion: "1.0.0",
79
- service: { name: "test-service" },
80
- };
81
- const jsonSchema = {
82
- type: "object",
83
- properties: {
84
- name: { type: "string" },
85
- },
86
- };
87
- const definition = registerSchema(doc, "User", jsonSchema);
88
- assert.deepStrictEqual(definition.jsonSchema, jsonSchema);
89
- assert.ok(doc.service?.schemas?.User);
90
- });
91
- it("should create schemas container if missing", () => {
92
- const doc = {
93
- unispecVersion: "1.0.0",
94
- service: { name: "test-service" },
95
- };
96
- registerSchema(doc, "User", { type: "object" });
97
- assert.ok(doc.service?.schemas);
98
- assert.ok(doc.service.schemas.User);
99
- });
100
- it("should create service if missing", () => {
101
- const doc = {
102
- unispecVersion: "1.0.0",
103
- };
104
- registerSchema(doc, "User", { type: "object" });
105
- assert.ok(doc.service);
106
- assert.strictEqual(doc.service.name, "");
107
- assert.ok(doc.service.schemas);
108
- });
109
- it("should overwrite existing schema", () => {
110
- const doc = {
111
- unispecVersion: "1.0.0",
112
- service: {
113
- name: "test-service",
114
- schemas: {
115
- User: {
116
- jsonSchema: { type: "string" },
117
- },
118
- },
119
- },
120
- };
121
- const newSchema = { type: "number" };
122
- registerSchema(doc, "User", newSchema);
123
- assert.deepStrictEqual(doc.service?.schemas?.User?.jsonSchema, newSchema);
124
- });
125
- });
126
- describe("resolveSchemaRef", () => {
127
- it("should resolve simple schema reference", () => {
128
- const doc = loadExample(getExamplePath("valid", "spec", "mixed-complete.json"));
129
- const schema = resolveSchemaRef(doc, "CreateOrderRequest");
130
- assert.ok(schema);
131
- assert.strictEqual(schema.jsonSchema.type, "object");
132
- assert.ok(schema?.jsonSchema.properties);
133
- const properties = schema.jsonSchema.properties;
134
- assert.ok(properties.productIds);
135
- });
136
- it("should resolve JSON Pointer reference", () => {
137
- const doc = loadExample(getExamplePath("valid", "spec", "mixed-complete.json"));
138
- const schema = resolveSchemaRef(doc, "#/service/schemas/OrderStatusUpdate");
139
- assert.ok(schema);
140
- assert.strictEqual(schema.jsonSchema.type, "object");
141
- assert.ok(schema?.jsonSchema.properties);
142
- const properties = schema.jsonSchema.properties;
143
- assert.ok(properties.status);
144
- });
145
- it("should resolve hash reference", () => {
146
- const doc = loadExample(getExamplePath("valid", "spec", "mixed-complete.json"));
147
- const schema = resolveSchemaRef(doc, "#OrderStatusUpdate");
148
- assert.ok(schema);
149
- assert.strictEqual(schema.jsonSchema.type, "object");
150
- });
151
- it("should return undefined for non-existent schema", () => {
152
- const doc = loadExample(getExamplePath("valid", "spec", "mixed-complete.json"));
153
- const schema = resolveSchemaRef(doc, "NonExistentSchema");
154
- assert.strictEqual(schema, undefined);
155
- });
156
- it("should return undefined for empty reference", () => {
157
- const doc = loadExample(getExamplePath("valid", "spec", "mixed-complete.json"));
158
- const schema = resolveSchemaRef(doc, "");
159
- assert.strictEqual(schema, undefined);
160
- });
161
- it("should handle document without schemas", () => {
162
- const doc = loadExample(getExamplePath("valid", "spec", "rest-simple.json"));
163
- const schema = resolveSchemaRef(doc, "AnySchema");
164
- assert.strictEqual(schema, undefined);
165
- });
166
- });
167
- describe("dedupeSchemas", () => {
168
- it("should remove duplicate schemas and update references", () => {
169
- const doc = {
170
- unispecVersion: "1.0.0",
171
- service: {
172
- name: "test-service",
173
- schemas: {
174
- User: {
175
- jsonSchema: {
176
- type: "object",
177
- properties: {
178
- id: { type: "string" },
179
- name: { type: "string" },
180
- },
181
- },
182
- },
183
- Person: {
184
- jsonSchema: {
185
- type: "object",
186
- properties: {
187
- id: { type: "string" },
188
- name: { type: "string" },
189
- },
190
- },
191
- },
192
- },
193
- protocols: {
194
- rest: {
195
- routes: [
196
- {
197
- name: "getUser",
198
- path: "/user",
199
- method: "GET",
200
- responses: {
201
- "200": {
202
- description: "User found",
203
- content: {
204
- "application/json": {
205
- schemaRef: "User",
206
- },
207
- },
208
- },
209
- },
210
- },
211
- {
212
- name: "getPerson",
213
- path: "/person",
214
- method: "GET",
215
- responses: {
216
- "200": {
217
- description: "Person found",
218
- content: {
219
- "application/json": {
220
- schemaRef: "Person",
221
- },
222
- },
223
- },
224
- },
225
- },
226
- ],
227
- },
228
- },
229
- },
230
- };
231
- dedupeSchemas(doc);
232
- // Should keep only one schema (the first one encountered)
233
- const schemas = doc.service?.schemas;
234
- assert.strictEqual(Object.keys(schemas || {}).length, 1);
235
- assert.ok(schemas?.User);
236
- assert.strictEqual(schemas?.Person, undefined);
237
- // References should be updated to point to the retained schema
238
- const rest = doc.service?.protocols?.rest;
239
- if (rest?.routes) {
240
- const userRoute = rest.routes[0];
241
- const personRoute = rest.routes[1];
242
- assert.strictEqual(userRoute.responses?.["200"]?.content?.["application/json"]
243
- ?.schemaRef, "User");
244
- assert.strictEqual(personRoute.responses?.["200"]?.content?.["application/json"]
245
- ?.schemaRef, "User");
246
- }
247
- });
248
- it("should handle documents without schemas", () => {
249
- const doc = loadExample(getExamplePath("valid", "spec", "rest-simple.json"));
250
- // Should not throw
251
- dedupeSchemas(doc);
252
- // Should still not have schemas
253
- assert.strictEqual(doc.service?.schemas, undefined);
254
- });
255
- it("should handle empty schemas object", () => {
256
- const doc = {
257
- unispecVersion: "1.0.0",
258
- service: {
259
- name: "test-service",
260
- schemas: {},
261
- },
262
- };
263
- // Should not throw
264
- dedupeSchemas(doc);
265
- assert.deepStrictEqual(doc.service.schemas, {});
266
- });
267
- it("should preserve unique schemas", () => {
268
- const doc = {
269
- unispecVersion: "1.0.0",
270
- service: {
271
- name: "test-service",
272
- schemas: {
273
- User: {
274
- jsonSchema: { type: "string" },
275
- },
276
- Product: {
277
- jsonSchema: { type: "number" },
278
- },
279
- },
280
- },
281
- };
282
- dedupeSchemas(doc);
283
- // Both schemas should be preserved
284
- const schemas = doc.service?.schemas;
285
- assert.strictEqual(Object.keys(schemas || {}).length, 2);
286
- assert.ok(schemas?.User);
287
- assert.ok(schemas?.Product);
288
- });
289
- it("should update all types of schema references", () => {
290
- const doc = {
291
- unispecVersion: "1.0.0",
292
- service: {
293
- name: "test-service",
294
- schemas: {
295
- SchemaA: {
296
- jsonSchema: { type: "object" },
297
- },
298
- SchemaB: {
299
- jsonSchema: { type: "object" },
300
- },
301
- },
302
- protocols: {
303
- rest: {
304
- routes: [
305
- {
306
- name: "test",
307
- path: "/test",
308
- method: "POST",
309
- pathParams: [{ name: "id", schemaRef: "SchemaA" }],
310
- queryParams: [{ name: "filter", schemaRef: "SchemaB" }],
311
- headers: [{ name: "auth", schemaRef: "SchemaA" }],
312
- requestBody: {
313
- content: {
314
- "application/json": { schemaRef: "SchemaB" },
315
- },
316
- },
317
- responses: {
318
- "200": {
319
- content: {
320
- "application/json": { schemaRef: "SchemaA" },
321
- },
322
- },
323
- },
324
- },
325
- ],
326
- },
327
- websocket: {
328
- channels: [
329
- {
330
- name: "test",
331
- messages: [{ name: "msg", schemaRef: "SchemaB" }],
332
- },
333
- ],
334
- },
335
- },
336
- },
337
- };
338
- dedupeSchemas(doc);
339
- // Should keep only SchemaA
340
- const schemas = doc.service?.schemas;
341
- assert.strictEqual(Object.keys(schemas || {}).length, 1);
342
- assert.ok(schemas?.SchemaA);
343
- const rest = doc.service?.protocols?.rest;
344
- if (rest?.routes) {
345
- const route = rest.routes[0];
346
- assert.strictEqual(route.pathParams?.[0]?.schemaRef, "SchemaA");
347
- assert.strictEqual(route.queryParams?.[0]?.schemaRef, "SchemaA");
348
- assert.strictEqual(route.headers?.[0]?.schemaRef, "SchemaA");
349
- assert.strictEqual(route.requestBody?.content?.["application/json"]?.schemaRef, "SchemaA");
350
- assert.strictEqual(route.responses?.["200"]?.content?.["application/json"]?.schemaRef, "SchemaA");
351
- }
352
- const ws = doc.service?.protocols?.websocket;
353
- if (ws?.channels) {
354
- const wsMessage = ws.channels[0].messages?.[0];
355
- if (wsMessage) {
356
- assert.strictEqual(wsMessage.schemaRef, "SchemaA");
357
- }
358
- }
359
- });
360
- });
361
- describe("integration with real examples", () => {
362
- it("should handle mixed-complete example correctly", () => {
363
- const doc = loadExample(getExamplePath("valid", "spec", "mixed-complete.json"));
364
- // Test resolving existing schemas
365
- const createOrderSchema = resolveSchemaRef(doc, "CreateOrderRequest");
366
- assert.ok(createOrderSchema?.jsonSchema.properties);
367
- const createOrderProperties = createOrderSchema.jsonSchema
368
- .properties;
369
- assert.ok(createOrderProperties.productIds);
370
- assert.ok(createOrderProperties.customerId);
371
- const orderStatusSchema = resolveSchemaRef(doc, "OrderStatusUpdate");
372
- assert.ok(orderStatusSchema);
373
- assert.strictEqual(orderStatusSchema.jsonSchema.type, "object");
374
- assert.ok(orderStatusSchema.jsonSchema.properties);
375
- const orderStatusProperties = orderStatusSchema.jsonSchema
376
- .properties;
377
- assert.ok(orderStatusProperties.orderId);
378
- assert.ok(orderStatusProperties.status);
379
- // Test deduplication with no duplicates
380
- const schemas = doc.service?.schemas;
381
- const originalSchemaCount = Object.keys(schemas || {}).length;
382
- dedupeSchemas(doc);
383
- assert.strictEqual(Object.keys(schemas || {}).length, originalSchemaCount);
384
- });
385
- it("should handle documents without schemas gracefully", () => {
386
- const doc = loadExample(getExamplePath("valid", "spec", "rest-simple.json"));
387
- // Should not throw when resolving non-existent schemas
388
- assert.strictEqual(resolveSchemaRef(doc, "NonExistent"), undefined);
389
- // Should not throw when deduplicating
390
- dedupeSchemas(doc);
391
- // Should still have no schemas
392
- assert.strictEqual(doc.service?.schemas, undefined);
393
- });
394
- });
395
- });
@@ -1,2 +0,0 @@
1
- import { examplesDir, getExamplePath, loadExample } from "../../tests/utils.js";
2
- export { examplesDir, getExamplePath, loadExample };
@@ -1,3 +0,0 @@
1
- import { examplesDir, getExamplePath, loadExample } from "../../tests/utils.js";
2
- // Re-export commonly used functions from tests/utils for convenience
3
- export { examplesDir, getExamplePath, loadExample };
@@ -1,10 +0,0 @@
1
- import type { UniSpecChange } from "../src/diff/types.js";
2
- import type { UniSpecDocument } from "../src/types/index.js";
3
- export declare const examplesDir: string;
4
- export declare function loadExample(filePath: string): UniSpecDocument;
5
- export declare function getExamplePath(...parts: string[]): string;
6
- export declare function createTestDocument(overrides?: Partial<UniSpecDocument>): UniSpecDocument;
7
- export declare function createTestChange(overrides?: Partial<UniSpecChange>): UniSpecChange;
8
- export declare function loadInvalidExample(filePath: string): unknown;
9
- export declare function getValidExamplePaths(): string[];
10
- export declare function getInvalidExamplePaths(): string[];
@@ -1,118 +0,0 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- export const examplesDir = path.join(process.cwd(), "node_modules", "@unispechq", "unispec-schema", "examples");
4
- export function loadExample(filePath) {
5
- const content = fs.readFileSync(filePath, "utf-8");
6
- const parsed = JSON.parse(content);
7
- return parsed;
8
- }
9
- export function getExamplePath(...parts) {
10
- return path.join(examplesDir, ...parts);
11
- }
12
- export function createTestDocument(overrides = {}) {
13
- const base = {
14
- unispecVersion: "1.0.0",
15
- service: {
16
- name: "test-service",
17
- description: "Test service description",
18
- protocols: {
19
- rest: {
20
- routes: [
21
- {
22
- name: "getUsers",
23
- summary: "Get all users",
24
- path: "/users",
25
- method: "GET",
26
- responses: {
27
- "200": { description: "Success" },
28
- },
29
- },
30
- ],
31
- },
32
- graphql: {
33
- queries: [
34
- {
35
- name: "users",
36
- description: "Get all users",
37
- args: [],
38
- returnType: "[User!]!",
39
- },
40
- ],
41
- mutations: [
42
- {
43
- name: "createUser",
44
- description: "Create a user",
45
- args: [],
46
- returnType: "User!",
47
- },
48
- ],
49
- schema: "type User { id: ID! name: String! }",
50
- },
51
- websocket: {
52
- channels: [
53
- {
54
- name: "notifications",
55
- description: "Real-time notifications",
56
- messages: [
57
- {
58
- name: "notification",
59
- description: "Notification message",
60
- direction: "subscribe",
61
- },
62
- ],
63
- },
64
- ],
65
- },
66
- },
67
- },
68
- };
69
- // Deep merge overrides
70
- return mergeDeep(base, overrides);
71
- }
72
- function mergeDeep(target, source) {
73
- const result = { ...target };
74
- for (const key in source) {
75
- if (source[key] !== undefined) {
76
- if (typeof source[key] === "object" &&
77
- source[key] !== null &&
78
- !Array.isArray(source[key])) {
79
- result[key] = mergeDeep(result[key], source[key]);
80
- }
81
- else {
82
- result[key] = source[key];
83
- }
84
- }
85
- }
86
- return result;
87
- }
88
- export function createTestChange(overrides = {}) {
89
- const base = {
90
- path: "/test/path",
91
- description: "Test change",
92
- severity: "unknown",
93
- };
94
- return { ...base, ...overrides };
95
- }
96
- export function loadInvalidExample(filePath) {
97
- const content = fs.readFileSync(filePath, "utf-8");
98
- return JSON.parse(content);
99
- }
100
- export function getValidExamplePaths() {
101
- const validSpecDir = path.join(examplesDir, "valid", "spec");
102
- return [
103
- path.join(validSpecDir, "rest-simple.json"),
104
- path.join(validSpecDir, "graphql-simple.json"),
105
- path.join(validSpecDir, "websocket-simple.json"),
106
- path.join(validSpecDir, "mixed-complete.json"),
107
- ];
108
- }
109
- export function getInvalidExamplePaths() {
110
- const invalidSpecDir = path.join(examplesDir, "invalid", "spec");
111
- return [
112
- path.join(invalidSpecDir, "missing-unispec-version.json"),
113
- path.join(invalidSpecDir, "missing-service-name.json"),
114
- path.join(invalidSpecDir, "invalid-rest-method.json"),
115
- path.join(invalidSpecDir, "graphql-missing-name.json"),
116
- path.join(invalidSpecDir, "invalid-identifier.json"),
117
- ];
118
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,73 +0,0 @@
1
- import assert from "node:assert";
2
- import { describe, it } from "node:test";
3
- import { validateUniSpecConfig } from "../../src/validator/index.js";
4
- import { loadInvalidConfigExample, loadValidConfigExample } from "./utils.js";
5
- describe("validateUniSpecConfig", () => {
6
- describe("valid examples", () => {
7
- it("should validate simple multi-service config", async () => {
8
- const doc = loadValidConfigExample("simple-multi-service");
9
- const result = await validateUniSpecConfig(doc);
10
- assert.strictEqual(result.valid, true, "Valid multi-service config should pass validation");
11
- assert.deepStrictEqual(result.errors, [], "Should have no errors");
12
- });
13
- it("should validate registry-based config", async () => {
14
- const doc = loadValidConfigExample("registry-based");
15
- const result = await validateUniSpecConfig(doc);
16
- assert.strictEqual(result.valid, true, "Valid registry-based config should pass validation");
17
- assert.deepStrictEqual(result.errors, [], "Should have no errors");
18
- });
19
- it("should validate complete enterprise config", async () => {
20
- const doc = loadValidConfigExample("complete-enterprise");
21
- const result = await validateUniSpecConfig(doc);
22
- assert.strictEqual(result.valid, true, "Valid enterprise config should pass validation");
23
- assert.deepStrictEqual(result.errors, [], "Should have no errors");
24
- });
25
- });
26
- describe("invalid examples", () => {
27
- it("should reject config missing services", async () => {
28
- const doc = loadInvalidConfigExample("missing-services");
29
- const result = await validateUniSpecConfig(doc);
30
- assert.strictEqual(result.valid, false, "Config without services should fail validation");
31
- assert.ok(result.errors.length > 0, "Should have validation errors");
32
- // Check that error mentions missing required property
33
- const hasServicesError = result.errors.some((error) => error.message?.includes("services"));
34
- assert.ok(hasServicesError, "Should have error about missing services");
35
- });
36
- it("should reject config with empty services array", async () => {
37
- const doc = loadInvalidConfigExample("empty-services-array");
38
- const result = await validateUniSpecConfig(doc);
39
- assert.strictEqual(result.valid, false, "Config with empty services array should fail validation");
40
- assert.ok(result.errors.length > 0, "Should have validation errors");
41
- });
42
- it("should reject config missing version", async () => {
43
- const doc = loadInvalidConfigExample("missing-version");
44
- const result = await validateUniSpecConfig(doc);
45
- assert.strictEqual(result.valid, false, "Config without version should fail validation");
46
- assert.ok(result.errors.length > 0, "Should have validation errors");
47
- });
48
- it("should reject config with invalid spec reference", async () => {
49
- const doc = loadInvalidConfigExample("invalid-spec-reference");
50
- const result = await validateUniSpecConfig(doc);
51
- assert.strictEqual(result.valid, false, "Config with invalid spec reference should fail validation");
52
- assert.ok(result.errors.length > 0, "Should have validation errors");
53
- });
54
- it("should reject config missing service name", async () => {
55
- const doc = loadInvalidConfigExample("missing-service-name");
56
- const result = await validateUniSpecConfig(doc);
57
- assert.strictEqual(result.valid, false, "Config without service name should fail validation");
58
- assert.ok(result.errors.length > 0, "Should have validation errors");
59
- });
60
- });
61
- describe("edge cases", () => {
62
- it("should reject null input", async () => {
63
- const result = await validateUniSpecConfig(null);
64
- assert.strictEqual(result.valid, false, "Null input should fail validation");
65
- assert.ok(result.errors.length > 0, "Should have validation errors");
66
- });
67
- it("should reject undefined input", async () => {
68
- const result = await validateUniSpecConfig(undefined);
69
- assert.strictEqual(result.valid, false, "Undefined input should fail validation");
70
- assert.ok(result.errors.length > 0, "Should have validation errors");
71
- });
72
- });
73
- });
File without changes
@@ -1 +0,0 @@
1
- "use strict";
File without changes
@@ -1 +0,0 @@
1
- "use strict";
File without changes
@@ -1 +0,0 @@
1
- "use strict";
File without changes
@@ -1 +0,0 @@
1
- "use strict";
@@ -1 +0,0 @@
1
- export {};