@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,304 +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 optimization_functions_1 = require("../../src/optimizer/optimization-functions.js");
9
- const utils_1 = require("./utils.js");
10
- (0, node_test_1.describe)("compressSchemaReferences", () => {
11
- (0, node_test_1.it)("should compress JSON Pointer references", () => {
12
- const doc = (0, utils_1.createDocumentWithLongReferences)();
13
- const compressedCount = (0, optimization_functions_1.compressSchemaReferences)(doc);
14
- node_assert_1.default.strictEqual(compressedCount, 1);
15
- // Check that reference was compressed
16
- const route = doc.service?.protocols?.rest?.routes?.[0];
17
- const schemaRef = route?.responses?.["200"]?.content?.["application/json"]?.schemaRef;
18
- node_assert_1.default.strictEqual(schemaRef, "TestSchema");
19
- });
20
- (0, node_test_1.it)("should compress hash references", () => {
21
- const doc = {
22
- unispecVersion: "1.0.0",
23
- service: {
24
- name: "test",
25
- schemas: {
26
- TestSchema: {
27
- name: "TestSchema",
28
- description: "Test schema",
29
- jsonSchema: { type: "string" },
30
- },
31
- },
32
- protocols: {
33
- rest: {
34
- routes: [
35
- {
36
- name: "testRoute",
37
- method: "GET",
38
- path: "/test",
39
- responses: {
40
- "200": {
41
- description: "Success",
42
- content: {
43
- "application/json": {
44
- schemaRef: "#TestSchema", // Hash format
45
- },
46
- },
47
- },
48
- },
49
- },
50
- ],
51
- },
52
- },
53
- },
54
- };
55
- const compressedCount = (0, optimization_functions_1.compressSchemaReferences)(doc);
56
- node_assert_1.default.strictEqual(compressedCount, 1);
57
- const route = doc.service?.protocols?.rest?.routes?.[0];
58
- const schemaRef = route?.responses?.["200"]?.content?.["application/json"]?.schemaRef;
59
- node_assert_1.default.strictEqual(schemaRef, "TestSchema");
60
- });
61
- (0, node_test_1.it)("should compress path references", () => {
62
- const doc = {
63
- unispecVersion: "1.0.0",
64
- service: {
65
- name: "test",
66
- schemas: {
67
- TestSchema: {
68
- name: "TestSchema",
69
- description: "Test schema",
70
- jsonSchema: { type: "string" },
71
- },
72
- },
73
- protocols: {
74
- rest: {
75
- routes: [
76
- {
77
- name: "testRoute",
78
- method: "GET",
79
- path: "/test",
80
- responses: {
81
- "200": {
82
- description: "Success",
83
- content: {
84
- "application/json": {
85
- schemaRef: "path/to/TestSchema", // Path format
86
- },
87
- },
88
- },
89
- },
90
- },
91
- ],
92
- },
93
- },
94
- },
95
- };
96
- const compressedCount = (0, optimization_functions_1.compressSchemaReferences)(doc);
97
- node_assert_1.default.strictEqual(compressedCount, 1);
98
- const route = doc.service?.protocols?.rest?.routes?.[0];
99
- const schemaRef = route?.responses?.["200"]?.content?.["application/json"]?.schemaRef;
100
- node_assert_1.default.strictEqual(schemaRef, "TestSchema");
101
- });
102
- (0, node_test_1.it)("should not compress already simple references", () => {
103
- const doc = {
104
- unispecVersion: "1.0.0",
105
- service: {
106
- name: "test",
107
- schemas: {
108
- TestSchema: {
109
- name: "TestSchema",
110
- description: "Test schema",
111
- jsonSchema: { type: "string" },
112
- },
113
- },
114
- protocols: {
115
- rest: {
116
- routes: [
117
- {
118
- name: "testRoute",
119
- method: "GET",
120
- path: "/test",
121
- responses: {
122
- "200": {
123
- description: "Success",
124
- content: {
125
- "application/json": {
126
- schemaRef: "TestSchema", // Already simple
127
- },
128
- },
129
- },
130
- },
131
- },
132
- ],
133
- },
134
- },
135
- },
136
- };
137
- const compressedCount = (0, optimization_functions_1.compressSchemaReferences)(doc);
138
- node_assert_1.default.strictEqual(compressedCount, 0);
139
- const route = doc.service?.protocols?.rest?.routes?.[0];
140
- const schemaRef = route?.responses?.["200"]?.content?.["application/json"]?.schemaRef;
141
- node_assert_1.default.strictEqual(schemaRef, "TestSchema");
142
- });
143
- (0, node_test_1.it)("should handle multiple references", () => {
144
- const doc = {
145
- unispecVersion: "1.0.0",
146
- service: {
147
- name: "test",
148
- schemas: {
149
- TestSchema: {
150
- name: "TestSchema",
151
- description: "Test schema",
152
- jsonSchema: { type: "string" },
153
- },
154
- },
155
- protocols: {
156
- rest: {
157
- routes: [
158
- {
159
- name: "testRoute1",
160
- method: "GET",
161
- path: "/test1",
162
- responses: {
163
- "200": {
164
- description: "Success",
165
- content: {
166
- "application/json": {
167
- schemaRef: "#/service/schemas/TestSchema",
168
- },
169
- },
170
- },
171
- },
172
- },
173
- {
174
- name: "testRoute2",
175
- method: "POST",
176
- path: "/test2",
177
- requestBody: {
178
- content: {
179
- "application/json": {
180
- schemaRef: "#TestSchema",
181
- },
182
- },
183
- },
184
- responses: {
185
- "201": {
186
- description: "Created",
187
- content: {
188
- "application/json": {
189
- schemaRef: "path/to/TestSchema",
190
- },
191
- },
192
- },
193
- },
194
- },
195
- ],
196
- },
197
- },
198
- },
199
- };
200
- const compressedCount = (0, optimization_functions_1.compressSchemaReferences)(doc);
201
- node_assert_1.default.strictEqual(compressedCount, 3);
202
- // Check all references were compressed
203
- const routes = doc.service?.protocols?.rest?.routes || [];
204
- const ref1 = routes[0]?.responses?.["200"]?.content?.["application/json"]?.schemaRef;
205
- const ref2 = routes[1]?.requestBody?.content?.["application/json"]?.schemaRef;
206
- const ref3 = routes[1]?.responses?.["201"]?.content?.["application/json"]?.schemaRef;
207
- node_assert_1.default.strictEqual(ref1, "TestSchema");
208
- node_assert_1.default.strictEqual(ref2, "TestSchema");
209
- node_assert_1.default.strictEqual(ref3, "TestSchema");
210
- });
211
- (0, node_test_1.it)("should handle documents without schemas", () => {
212
- const doc = { unispecVersion: "1.0.0", service: { name: "test" } };
213
- const compressedCount = (0, optimization_functions_1.compressSchemaReferences)(doc);
214
- node_assert_1.default.strictEqual(compressedCount, 0);
215
- });
216
- (0, node_test_1.it)("should handle empty references", () => {
217
- const doc = {
218
- unispecVersion: "1.0.0",
219
- service: {
220
- name: "test",
221
- protocols: {
222
- rest: {
223
- routes: [
224
- {
225
- name: "testRoute",
226
- method: "GET",
227
- path: "/test",
228
- responses: {
229
- "200": {
230
- description: "Success",
231
- content: {
232
- "application/json": {
233
- schemaRef: "",
234
- },
235
- },
236
- },
237
- },
238
- },
239
- ],
240
- },
241
- },
242
- },
243
- };
244
- const compressedCount = (0, optimization_functions_1.compressSchemaReferences)(doc);
245
- node_assert_1.default.strictEqual(compressedCount, 0);
246
- });
247
- (0, node_test_1.it)("should work with real examples from node_modules", () => {
248
- const doc = (0, utils_1.loadExample)((0, utils_1.getExamplePath)("valid", "spec", "mixed-complete.json"));
249
- const compressedCount = (0, optimization_functions_1.compressSchemaReferences)(JSON.parse(JSON.stringify(doc)));
250
- // mixed-complete.json uses simple references, so nothing should be compressed
251
- node_assert_1.default.strictEqual(compressedCount, 0);
252
- });
253
- (0, node_test_1.it)("should find references in nested structures", () => {
254
- const doc = {
255
- unispecVersion: "1.0.0",
256
- service: {
257
- name: "test",
258
- schemas: {
259
- TestSchema: {
260
- name: "TestSchema",
261
- description: "Test schema",
262
- jsonSchema: { type: "string" },
263
- },
264
- },
265
- protocols: {
266
- rest: {
267
- routes: [
268
- {
269
- name: "testRoute",
270
- method: "GET",
271
- path: "/test",
272
- responses: {
273
- "200": {
274
- description: "Success",
275
- content: {
276
- "application/json": {
277
- schemaRef: "#/service/schemas/TestSchema",
278
- },
279
- },
280
- },
281
- },
282
- },
283
- ],
284
- },
285
- websocket: {
286
- channels: [
287
- {
288
- name: "testChannel",
289
- messages: [
290
- {
291
- name: "testMessage",
292
- schemaRef: "#/service/schemas/TestSchema",
293
- },
294
- ],
295
- },
296
- ],
297
- },
298
- },
299
- },
300
- };
301
- const compressedCount = (0, optimization_functions_1.compressSchemaReferences)(doc);
302
- node_assert_1.default.strictEqual(compressedCount, 2); // One in REST response, one in WebSocket
303
- });
304
- });
@@ -1,132 +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 optimization_functions_1 = require("../../src/optimizer/optimization-functions.js");
9
- const utils_1 = require("./utils.js");
10
- (0, node_test_1.describe)("deduplicateSchemas", () => {
11
- (0, node_test_1.it)("should remove duplicate schemas and update references", () => {
12
- const doc = (0, utils_1.createDocumentWithDuplicateSchemas)();
13
- const result = (0, optimization_functions_1.deduplicateSchemas)(doc);
14
- node_assert_1.default.strictEqual(result.removedSchemas.length, 1);
15
- node_assert_1.default.ok(result.removedSchemas.includes("Person") ||
16
- result.removedSchemas.includes("User"));
17
- node_assert_1.default.strictEqual(result.updatedReferences, 0);
18
- // Check that only one of the duplicate schemas remains
19
- const remainingSchemas = Object.keys(doc.service?.schemas || {});
20
- node_assert_1.default.ok(remainingSchemas.includes("User") || remainingSchemas.includes("Person"));
21
- node_assert_1.default.strictEqual(remainingSchemas.filter((name) => name === "User" || name === "Person")
22
- .length, 1);
23
- node_assert_1.default.ok(remainingSchemas.includes("Profile"));
24
- });
25
- (0, node_test_1.it)("should prefer referenced schema over unreferenced one", () => {
26
- const doc = (0, utils_1.createDocumentWithDuplicateSchemas)();
27
- // Add reference to User schema
28
- if (doc.service?.protocols?.rest?.routes?.[0]) {
29
- doc.service.protocols.rest.routes[0].responses = {
30
- "200": {
31
- description: "Success",
32
- content: {
33
- "application/json": {
34
- schemaRef: "User",
35
- },
36
- },
37
- },
38
- };
39
- }
40
- const result = (0, optimization_functions_1.deduplicateSchemas)(doc);
41
- node_assert_1.default.strictEqual(result.removedSchemas.length, 1);
42
- node_assert_1.default.ok(result.removedSchemas.includes("Person"));
43
- node_assert_1.default.ok(!result.removedSchemas.includes("User"));
44
- node_assert_1.default.ok(doc.service?.schemas?.User);
45
- node_assert_1.default.ok(!doc.service?.schemas?.Person);
46
- });
47
- (0, node_test_1.it)("should handle documents without schemas", () => {
48
- const doc = { unispecVersion: "1.0.0", service: { name: "test" } };
49
- const result = (0, optimization_functions_1.deduplicateSchemas)(doc);
50
- node_assert_1.default.strictEqual(result.removedSchemas.length, 0);
51
- node_assert_1.default.strictEqual(result.updatedReferences, 0);
52
- });
53
- (0, node_test_1.it)("should handle documents without service", () => {
54
- const doc = { unispecVersion: "1.0.0", service: { name: "test" } };
55
- const result = (0, optimization_functions_1.deduplicateSchemas)(doc);
56
- node_assert_1.default.strictEqual(result.removedSchemas.length, 0);
57
- node_assert_1.default.strictEqual(result.updatedReferences, 0);
58
- });
59
- (0, node_test_1.it)("should handle empty schemas object", () => {
60
- const doc = {
61
- unispecVersion: "1.0.0",
62
- service: { name: "test", schemas: {} },
63
- };
64
- const result = (0, optimization_functions_1.deduplicateSchemas)(doc);
65
- node_assert_1.default.strictEqual(result.removedSchemas.length, 0);
66
- node_assert_1.default.strictEqual(result.updatedReferences, 0);
67
- });
68
- (0, node_test_1.it)("should update schema references when removing duplicates", () => {
69
- // Test case where reference points to Person (which will be kept)
70
- const doc = (0, utils_1.createDocumentWithDuplicateSchemas)();
71
- if (doc.service?.protocols?.rest?.routes?.[0]) {
72
- doc.service.protocols.rest.routes[0].responses = {
73
- "200": {
74
- description: "Success",
75
- content: {
76
- "application/json": {
77
- schemaRef: "Person", // This will be kept, User will be removed
78
- },
79
- },
80
- },
81
- };
82
- }
83
- const result = (0, optimization_functions_1.deduplicateSchemas)(doc);
84
- // Should remove User (no reference update needed since Person stays)
85
- node_assert_1.default.strictEqual(result.removedSchemas.length, 1);
86
- node_assert_1.default.ok(result.removedSchemas.includes("User"));
87
- node_assert_1.default.strictEqual(result.updatedReferences, 0);
88
- // Check that Person still exists and reference points to it
89
- node_assert_1.default.ok(doc.service?.schemas?.Person);
90
- node_assert_1.default.ok(!doc.service?.schemas?.User);
91
- const route = doc.service?.protocols?.rest?.routes?.[0];
92
- const schemaRef = route?.responses?.["200"]?.content?.["application/json"]?.schemaRef;
93
- node_assert_1.default.strictEqual(schemaRef, "Person");
94
- });
95
- (0, node_test_1.it)("should work with real examples from node_modules", () => {
96
- const doc = (0, utils_1.loadExample)((0, utils_1.getExamplePath)("valid", "spec", "mixed-complete.json"));
97
- const result = (0, optimization_functions_1.deduplicateSchemas)(JSON.parse(JSON.stringify(doc)));
98
- // mixed-complete.json has no duplicates, so nothing should be removed
99
- node_assert_1.default.strictEqual(result.removedSchemas.length, 0);
100
- node_assert_1.default.strictEqual(result.updatedReferences, 0);
101
- });
102
- (0, node_test_1.it)("should handle schemas with null jsonSchema", () => {
103
- const doc = {
104
- unispecVersion: "1.0.0",
105
- service: {
106
- name: "test",
107
- schemas: {
108
- Schema1: {
109
- name: "Schema1",
110
- description: "Schema 1",
111
- jsonSchema: {},
112
- },
113
- Schema2: {
114
- name: "Schema2",
115
- description: "Schema 2",
116
- jsonSchema: {},
117
- },
118
- Schema3: {
119
- name: "Schema3",
120
- description: "Schema 3",
121
- jsonSchema: { type: "string" },
122
- },
123
- },
124
- },
125
- };
126
- const result = (0, optimization_functions_1.deduplicateSchemas)(doc);
127
- // Two schemas with empty jsonSchema should be considered duplicates
128
- node_assert_1.default.strictEqual(result.removedSchemas.length, 1);
129
- node_assert_1.default.strictEqual(result.updatedReferences, 0);
130
- node_assert_1.default.strictEqual(Object.keys(doc.service?.schemas || {}).length, 2);
131
- });
132
- });
@@ -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
- const node_assert_1 = __importDefault(require("node:assert"));
7
- const node_test_1 = require("node:test");
8
- const core_1 = require("../../src/optimizer/core.js");
9
- const optimization_functions_1 = require("../../src/optimizer/optimization-functions.js");
10
- const utils_1 = require("./utils.js");
11
- (0, node_test_1.describe)("Optimizer Integration Tests", () => {
12
- (0, node_test_1.it)("should work with real examples from node_modules", () => {
13
- const doc = (0, utils_1.loadExample)((0, utils_1.getExamplePath)("valid", "spec", "mixed-complete.json"));
14
- // Test individual functions
15
- const dedupResult = (0, optimization_functions_1.deduplicateSchemas)(JSON.parse(JSON.stringify(doc)));
16
- node_assert_1.default.ok(dedupResult.removedSchemas.length >= 0);
17
- const orphanedResult = (0, optimization_functions_1.removeOrphanedSchemas)(JSON.parse(JSON.stringify(doc)));
18
- node_assert_1.default.ok(orphanedResult.length >= 0);
19
- const sortResult = (0, optimization_functions_1.sortSchemas)(JSON.parse(JSON.stringify(doc)));
20
- node_assert_1.default.ok(sortResult >= 0);
21
- const compressResult = (0, optimization_functions_1.compressSchemaReferences)(JSON.parse(JSON.stringify(doc)));
22
- node_assert_1.default.ok(compressResult >= 0);
23
- // Test optimizeDocument
24
- const optimizeResult = (0, core_1.optimizeDocument)(JSON.parse(JSON.stringify(doc)));
25
- node_assert_1.default.ok(optimizeResult.document);
26
- node_assert_1.default.ok(optimizeResult.statistics);
27
- node_assert_1.default.ok(Array.isArray(optimizeResult.changes));
28
- // Test generateOptimizationReport
29
- const report = (0, core_1.generateOptimizationReport)(JSON.parse(JSON.stringify(doc)));
30
- node_assert_1.default.ok(report.recommendations);
31
- node_assert_1.default.ok(report.potentialSavings);
32
- });
33
- (0, node_test_1.it)("should handle edge cases gracefully", () => {
34
- // Empty document
35
- const emptyDoc = { unispecVersion: "1.0.0", service: { name: "test" } };
36
- const optimizeResult = (0, core_1.optimizeDocument)(emptyDoc);
37
- node_assert_1.default.strictEqual(optimizeResult.statistics.originalSchemas, 0);
38
- node_assert_1.default.strictEqual(optimizeResult.statistics.optimizedSchemas, 0);
39
- const report = (0, core_1.generateOptimizationReport)(emptyDoc);
40
- node_assert_1.default.strictEqual(report.recommendations.length, 0);
41
- node_assert_1.default.strictEqual(report.potentialSavings.schemaReduction, 0);
42
- });
43
- (0, node_test_1.it)("should preserve document integrity", () => {
44
- const doc = (0, utils_1.loadExample)((0, utils_1.getExamplePath)("valid", "spec", "rest-simple.json"));
45
- const result = (0, core_1.optimizeDocument)(JSON.parse(JSON.stringify(doc)));
46
- // Should preserve required fields
47
- node_assert_1.default.strictEqual(result.document.unispecVersion, doc.unispecVersion);
48
- node_assert_1.default.strictEqual(result.document.service?.name, doc.service?.name);
49
- node_assert_1.default.ok(result.document.service?.protocols);
50
- node_assert_1.default.ok(result.document.service?.schemas);
51
- });
52
- (0, node_test_1.it)("should handle complex optimization scenarios", () => {
53
- const doc = {
54
- unispecVersion: "1.0.0",
55
- service: {
56
- name: "test",
57
- schemas: {
58
- // Duplicate schemas
59
- User: {
60
- description: "User schema",
61
- jsonSchema: {
62
- type: "object",
63
- properties: { id: { type: "string" } },
64
- },
65
- },
66
- Person: {
67
- description: "Person schema",
68
- jsonSchema: {
69
- type: "object",
70
- properties: { id: { type: "string" } },
71
- },
72
- },
73
- // Orphaned schema
74
- Orphaned: {
75
- description: "Orphaned schema",
76
- jsonSchema: { type: "string" },
77
- },
78
- // Referenced schema
79
- Profile: {
80
- description: "Profile schema",
81
- jsonSchema: {
82
- type: "object",
83
- properties: { profileId: { type: "string" } },
84
- },
85
- },
86
- },
87
- protocols: {
88
- rest: {
89
- routes: [
90
- {
91
- name: "testRoute",
92
- method: "GET",
93
- path: "/test",
94
- responses: {
95
- "200": {
96
- description: "Success",
97
- content: {
98
- "application/json": {
99
- schemaRef: "#/service/schemas/Person", // Long reference to duplicate
100
- },
101
- },
102
- },
103
- },
104
- },
105
- ],
106
- },
107
- },
108
- },
109
- };
110
- const result = (0, core_1.optimizeDocument)(doc, {
111
- dedupeSchemas: true,
112
- sortSchemas: true,
113
- removeUnusedSchemas: true,
114
- compressReferences: true,
115
- });
116
- // Should optimize correctly
117
- node_assert_1.default.strictEqual(result.statistics.originalSchemas, 4);
118
- node_assert_1.default.strictEqual(result.statistics.optimizedSchemas, 1); // Person (Profile is orphaned)
119
- node_assert_1.default.strictEqual(result.statistics.removedSchemas, 3); // User + Orphaned + Profile
120
- node_assert_1.default.strictEqual(result.statistics.deduplicatedSchemas, 1);
121
- // Should have changes recorded
122
- node_assert_1.default.ok(result.changes.length >= 3);
123
- // Check final state
124
- const schemas = Object.keys(result.document.service?.schemas || {});
125
- node_assert_1.default.deepStrictEqual(schemas, ["Person"]); // Only Person remains
126
- // Check reference was updated and compressed
127
- const route = result.document.service?.protocols?.rest?.routes?.[0];
128
- const schemaRef = route?.responses?.["200"]?.content?.["application/json"]?.schemaRef;
129
- node_assert_1.default.strictEqual(schemaRef, "Person");
130
- });
131
- });