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