@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,222 +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 utils_1 = require("./utils.js");
10
- (0, node_test_1.describe)("generateOptimizationReport", () => {
11
- (0, node_test_1.it)("should generate report for document with duplicates", () => {
12
- const doc = (0, utils_1.createDocumentWithDuplicateSchemas)();
13
- const report = (0, core_1.generateOptimizationReport)(doc);
14
- // Check properties exist using if statements
15
- if (!report.recommendations) {
16
- throw new Error("recommendations should exist");
17
- }
18
- if (!report.potentialSavings) {
19
- throw new Error("potentialSavings should exist");
20
- }
21
- // Should recommend deduplication
22
- const dedupRecommendation = report.recommendations.find((rec) => rec.includes("Deduplicate"));
23
- if (!dedupRecommendation) {
24
- throw new Error("Should recommend deduplication");
25
- }
26
- // The test document has 3 schemas: User (referenced), Person (duplicate of User), Profile (orphaned)
27
- // So we expect 1 duplicate removal + 1 orphaned removal = 2 total reduction
28
- node_assert_1.default.strictEqual(report.potentialSavings.schemaReduction, 2);
29
- });
30
- (0, node_test_1.it)("should generate report for document with orphaned schemas", () => {
31
- const doc = (0, utils_1.createDocumentWithOrphanedSchemas)();
32
- const report = (0, core_1.generateOptimizationReport)(doc);
33
- // Should recommend removing orphaned schemas
34
- const orphanedRecommendation = report.recommendations.find((rec) => rec.includes("orphaned"));
35
- node_assert_1.default.ok(orphanedRecommendation);
36
- node_assert_1.default.strictEqual(report.potentialSavings.schemaReduction, 2);
37
- });
38
- (0, node_test_1.it)("should generate report for document with both duplicates and orphaned schemas", () => {
39
- const doc = (0, utils_1.createDocumentWithDuplicateSchemas)();
40
- // Add orphaned schema
41
- if (doc.service?.schemas) {
42
- doc.service.schemas.OrphanedSchema = {
43
- description: "Orphaned schema",
44
- jsonSchema: { type: "string" },
45
- };
46
- }
47
- const report = (0, core_1.generateOptimizationReport)(doc);
48
- // Should recommend both optimizations
49
- const dedupRecommendation = report.recommendations.find((rec) => rec.includes("Deduplicate"));
50
- const orphanedRecommendation = report.recommendations.find((rec) => rec.includes("orphaned"));
51
- node_assert_1.default.ok(dedupRecommendation);
52
- node_assert_1.default.ok(orphanedRecommendation);
53
- // Now we have: 1 duplicate + 2 orphaned (Profile + OrphanedSchema) = 3 total reduction
54
- node_assert_1.default.strictEqual(report.potentialSavings.schemaReduction, 3);
55
- });
56
- (0, node_test_1.it)("should generate empty report for optimized document", () => {
57
- const doc = {
58
- unispecVersion: "1.0.0",
59
- service: {
60
- name: "test",
61
- schemas: {
62
- TestSchema: {
63
- name: "TestSchema",
64
- description: "Test schema",
65
- jsonSchema: { type: "string" },
66
- },
67
- },
68
- protocols: {
69
- rest: {
70
- routes: [
71
- {
72
- name: "testRoute",
73
- method: "GET",
74
- path: "/test",
75
- responses: {
76
- "200": {
77
- description: "Success",
78
- content: {
79
- "application/json": {
80
- schemaRef: "TestSchema",
81
- },
82
- },
83
- },
84
- },
85
- },
86
- ],
87
- },
88
- },
89
- },
90
- };
91
- const report = (0, core_1.generateOptimizationReport)(doc);
92
- node_assert_1.default.strictEqual(report.recommendations.length, 0);
93
- node_assert_1.default.strictEqual(report.potentialSavings.schemaReduction, 0);
94
- // This schema is referenced, so no compression savings
95
- node_assert_1.default.strictEqual(report.potentialSavings.referenceCompression, 0);
96
- });
97
- (0, node_test_1.it)("should handle documents without schemas", () => {
98
- const doc = { unispecVersion: "1.0.0", service: { name: "test" } };
99
- const report = (0, core_1.generateOptimizationReport)(doc);
100
- node_assert_1.default.strictEqual(report.recommendations.length, 0);
101
- node_assert_1.default.strictEqual(report.potentialSavings.schemaReduction, 0);
102
- node_assert_1.default.strictEqual(report.potentialSavings.referenceCompression, 0);
103
- });
104
- (0, node_test_1.it)("should handle documents without service", () => {
105
- const doc = { unispecVersion: "1.0.0", service: { name: "test" } };
106
- const report = (0, core_1.generateOptimizationReport)(doc);
107
- node_assert_1.default.strictEqual(report.recommendations.length, 0);
108
- node_assert_1.default.strictEqual(report.potentialSavings.schemaReduction, 0);
109
- node_assert_1.default.strictEqual(report.potentialSavings.referenceCompression, 0);
110
- });
111
- (0, node_test_1.it)("should estimate reference compression savings", () => {
112
- const doc = {
113
- unispecVersion: "1.0.0",
114
- service: {
115
- name: "test",
116
- schemas: {
117
- TestSchema: {
118
- name: "TestSchema",
119
- description: "Test schema",
120
- jsonSchema: { type: "string" },
121
- },
122
- },
123
- protocols: {
124
- rest: {
125
- routes: [
126
- {
127
- name: "testRoute",
128
- method: "GET",
129
- path: "/test",
130
- responses: {
131
- "200": {
132
- description: "Success",
133
- content: {
134
- "application/json": {
135
- schemaRef: "#/service/schemas/TestSchema",
136
- },
137
- },
138
- },
139
- },
140
- },
141
- ],
142
- },
143
- },
144
- },
145
- };
146
- const report = (0, core_1.generateOptimizationReport)(doc);
147
- // Should estimate reference compression (only 1 reference, so no compression)
148
- node_assert_1.default.strictEqual(report.potentialSavings.referenceCompression, 0);
149
- });
150
- (0, node_test_1.it)("should work with real examples from node_modules", () => {
151
- const doc = (0, utils_1.loadExample)((0, utils_1.getExamplePath)("valid", "spec", "mixed-complete.json"));
152
- const report = (0, core_1.generateOptimizationReport)(JSON.parse(JSON.stringify(doc)));
153
- // mixed-complete.json is well-structured, so minimal recommendations
154
- node_assert_1.default.ok(report.recommendations.length >= 0);
155
- node_assert_1.default.ok(report.potentialSavings.schemaReduction >= 0);
156
- node_assert_1.default.ok(report.potentialSavings.referenceCompression >= 0);
157
- });
158
- (0, node_test_1.it)("should handle complex documents with multiple optimization opportunities", () => {
159
- const doc = (0, utils_1.createDocumentWithDuplicateSchemas)();
160
- // Add multiple orphaned schemas
161
- if (doc.service?.schemas) {
162
- doc.service.schemas.Orphaned1 = {
163
- description: "Orphaned schema 1",
164
- jsonSchema: { type: "string" },
165
- };
166
- doc.service.schemas.Orphaned2 = {
167
- description: "Orphaned schema 2",
168
- jsonSchema: { type: "number" },
169
- };
170
- doc.service.schemas.Orphaned3 = {
171
- description: "Orphaned schema 3",
172
- jsonSchema: { type: "boolean" },
173
- };
174
- }
175
- const report = (0, core_1.generateOptimizationReport)(doc);
176
- // Should recommend multiple optimizations
177
- node_assert_1.default.ok(report.recommendations.length >= 2);
178
- // Should account for all potential savings
179
- node_assert_1.default.ok(report.potentialSavings.schemaReduction >= 3); // 1 duplicate + 2+ orphaned
180
- });
181
- (0, node_test_1.it)("should not recommend removing schemas that are referenced", () => {
182
- const doc = {
183
- unispecVersion: "1.0.0",
184
- service: {
185
- name: "test",
186
- schemas: {
187
- ReferencedSchema: {
188
- name: "ReferencedSchema",
189
- description: "Referenced schema",
190
- jsonSchema: { type: "string" },
191
- },
192
- },
193
- protocols: {
194
- rest: {
195
- routes: [
196
- {
197
- name: "testRoute",
198
- method: "GET",
199
- path: "/test",
200
- responses: {
201
- "200": {
202
- description: "Success",
203
- content: {
204
- "application/json": {
205
- schemaRef: "ReferencedSchema",
206
- },
207
- },
208
- },
209
- },
210
- },
211
- ],
212
- },
213
- },
214
- },
215
- };
216
- const report = (0, core_1.generateOptimizationReport)(doc);
217
- // Should not recommend removing the referenced schema
218
- const removeRecommendation = report.recommendations.find((rec) => rec.includes("Remove"));
219
- node_assert_1.default.strictEqual(removeRecommendation, undefined);
220
- node_assert_1.default.strictEqual(report.potentialSavings.schemaReduction, 0);
221
- });
222
- });
@@ -1,187 +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 utils_1 = require("./utils.js");
10
- (0, node_test_1.describe)("optimizeDocument", () => {
11
- (0, node_test_1.it)("should apply all optimizations by default", () => {
12
- const doc = (0, utils_1.createDocumentWithDuplicateSchemas)();
13
- const result = (0, core_1.optimizeDocument)(doc);
14
- node_assert_1.default.ok(result.document);
15
- node_assert_1.default.ok(result.statistics);
16
- node_assert_1.default.ok(Array.isArray(result.changes));
17
- // Should have removed duplicate schemas
18
- node_assert_1.default.strictEqual(result.statistics.originalSchemas, 3);
19
- node_assert_1.default.strictEqual(result.statistics.optimizedSchemas, 2);
20
- node_assert_1.default.strictEqual(result.statistics.removedSchemas, 1);
21
- node_assert_1.default.strictEqual(result.statistics.deduplicatedSchemas, 1);
22
- // Should have changes recorded
23
- node_assert_1.default.ok(result.changes.length > 0);
24
- });
25
- (0, node_test_1.it)("should apply only specified optimizations", () => {
26
- const doc = (0, utils_1.createDocumentWithDuplicateSchemas)();
27
- const result = (0, core_1.optimizeDocument)(doc, {
28
- dedupeSchemas: true,
29
- sortSchemas: false,
30
- removeUnusedSchemas: false,
31
- compressReferences: false,
32
- });
33
- // Should only deduplicate
34
- node_assert_1.default.strictEqual(result.statistics.removedSchemas, 1);
35
- node_assert_1.default.strictEqual(result.statistics.deduplicatedSchemas, 1);
36
- // Check that changes mention deduplication
37
- const deduplicationChange = result.changes.find((change) => change.includes("Deduplicated"));
38
- node_assert_1.default.ok(deduplicationChange);
39
- });
40
- (0, node_test_1.it)("should handle documents without schemas", () => {
41
- const doc = { unispecVersion: "1.0.0", service: { name: "test" } };
42
- const result = (0, core_1.optimizeDocument)(doc);
43
- node_assert_1.default.strictEqual(result.statistics.originalSchemas, 0);
44
- node_assert_1.default.strictEqual(result.statistics.optimizedSchemas, 0);
45
- node_assert_1.default.strictEqual(result.statistics.removedSchemas, 0);
46
- node_assert_1.default.strictEqual(result.statistics.deduplicatedSchemas, 0);
47
- node_assert_1.default.strictEqual(result.changes.length, 0);
48
- });
49
- (0, node_test_1.it)("should handle documents without service", () => {
50
- const doc = { unispecVersion: "1.0.0", service: { name: "test" } };
51
- const result = (0, core_1.optimizeDocument)(doc);
52
- node_assert_1.default.strictEqual(result.statistics.originalSchemas, 0);
53
- node_assert_1.default.strictEqual(result.statistics.optimizedSchemas, 0);
54
- node_assert_1.default.strictEqual(result.statistics.removedSchemas, 0);
55
- node_assert_1.default.strictEqual(result.statistics.deduplicatedSchemas, 0);
56
- node_assert_1.default.strictEqual(result.changes.length, 0);
57
- });
58
- (0, node_test_1.it)("should remove orphaned schemas when enabled", () => {
59
- const doc = (0, utils_1.createDocumentWithOrphanedSchemas)();
60
- const result = (0, core_1.optimizeDocument)(doc, {
61
- removeUnusedSchemas: true,
62
- dedupeSchemas: false,
63
- sortSchemas: false,
64
- compressReferences: false,
65
- });
66
- node_assert_1.default.strictEqual(result.statistics.originalSchemas, 3);
67
- node_assert_1.default.strictEqual(result.statistics.optimizedSchemas, 1);
68
- node_assert_1.default.strictEqual(result.statistics.removedSchemas, 2);
69
- // Should have changes about orphaned schema removal
70
- const orphanedChange = result.changes.find((change) => change.includes("orphaned"));
71
- node_assert_1.default.ok(orphanedChange);
72
- });
73
- (0, node_test_1.it)("should sort schemas when enabled", () => {
74
- const doc = (0, utils_1.createDocumentWithUnsortedSchemas)();
75
- const result = (0, core_1.optimizeDocument)(doc, {
76
- sortSchemas: true,
77
- dedupeSchemas: false,
78
- removeUnusedSchemas: false,
79
- compressReferences: false,
80
- });
81
- node_assert_1.default.strictEqual(result.statistics.originalSchemas, 3);
82
- node_assert_1.default.strictEqual(result.statistics.optimizedSchemas, 3);
83
- // Check schemas are sorted
84
- const schemaNames = Object.keys(result.document.service?.schemas || {});
85
- node_assert_1.default.deepStrictEqual(schemaNames, ["Alpha", "Beta", "Zebra"]);
86
- // Should have changes about sorting
87
- const sortChange = result.changes.find((change) => change.includes("Sorted"));
88
- node_assert_1.default.ok(sortChange);
89
- });
90
- (0, node_test_1.it)("should compress references when enabled", () => {
91
- const doc = (0, utils_1.createDocumentWithLongReferences)();
92
- const result = (0, core_1.optimizeDocument)(doc, {
93
- compressReferences: true,
94
- dedupeSchemas: false,
95
- sortSchemas: false,
96
- removeUnusedSchemas: false,
97
- });
98
- node_assert_1.default.strictEqual(result.statistics.originalSchemas, 1);
99
- node_assert_1.default.strictEqual(result.statistics.optimizedSchemas, 1);
100
- // Should have changes about compression
101
- const compressionChange = result.changes.find((change) => change.includes("Compressed"));
102
- node_assert_1.default.ok(compressionChange);
103
- });
104
- (0, node_test_1.it)("should create a deep copy of the document", () => {
105
- const doc = (0, utils_1.createDocumentWithDuplicateSchemas)();
106
- const originalSchemas = doc.service?.schemas;
107
- const result = (0, core_1.optimizeDocument)(doc);
108
- // Original document should be unchanged
109
- node_assert_1.default.strictEqual(doc.service?.schemas, originalSchemas);
110
- node_assert_1.default.strictEqual(Object.keys(doc.service?.schemas || {}).length, 3);
111
- // Result document should be different object
112
- node_assert_1.default.notStrictEqual(result.document, doc);
113
- node_assert_1.default.notStrictEqual(result.document.service, doc.service);
114
- node_assert_1.default.notStrictEqual(result.document.service?.schemas, doc.service?.schemas);
115
- });
116
- (0, node_test_1.it)("should work with complex documents", () => {
117
- const doc = (0, utils_1.loadExample)((0, utils_1.getExamplePath)("valid", "spec", "mixed-complete.json"));
118
- const result = (0, core_1.optimizeDocument)(JSON.parse(JSON.stringify(doc)));
119
- node_assert_1.default.ok(result.document);
120
- node_assert_1.default.ok(result.statistics);
121
- node_assert_1.default.ok(Array.isArray(result.changes));
122
- // mixed-complete.json has 2 schemas that are referenced
123
- node_assert_1.default.strictEqual(result.statistics.originalSchemas, 2);
124
- node_assert_1.default.strictEqual(result.statistics.optimizedSchemas, 2);
125
- node_assert_1.default.strictEqual(result.statistics.removedSchemas, 0);
126
- node_assert_1.default.strictEqual(result.statistics.deduplicatedSchemas, 0);
127
- });
128
- (0, node_test_1.it)("should handle all optimizations together", () => {
129
- // Create a simpler document with all optimization opportunities
130
- const doc = (0, utils_1.createDocumentWithDuplicateSchemas)();
131
- // Add one orphaned schema
132
- if (doc.service?.schemas) {
133
- doc.service.schemas.OrphanedSchema = {
134
- description: "Orphaned schema",
135
- jsonSchema: { type: "string" },
136
- };
137
- }
138
- // Add long reference
139
- if (doc.service?.protocols?.rest?.routes?.[0]) {
140
- doc.service.protocols.rest.routes[0].responses = {
141
- "200": {
142
- description: "Success",
143
- content: {
144
- "application/json": {
145
- schemaRef: "#/service/schemas/Person",
146
- },
147
- },
148
- },
149
- };
150
- }
151
- const result = (0, core_1.optimizeDocument)(doc, {
152
- dedupeSchemas: true,
153
- sortSchemas: true,
154
- removeUnusedSchemas: true,
155
- compressReferences: true,
156
- });
157
- node_assert_1.default.strictEqual(result.statistics.originalSchemas, 4);
158
- node_assert_1.default.strictEqual(result.statistics.optimizedSchemas, 1); // Person (Profile is orphaned)
159
- node_assert_1.default.strictEqual(result.statistics.removedSchemas, 3); // User + Profile + OrphanedSchema
160
- node_assert_1.default.strictEqual(result.statistics.deduplicatedSchemas, 1); // User removed as duplicate
161
- // Should have multiple changes
162
- node_assert_1.default.ok(result.changes.length >= 2);
163
- // Check final state
164
- const finalSchemaNames = Object.keys(result.document.service?.schemas || {});
165
- node_assert_1.default.deepStrictEqual(finalSchemaNames, ["Person"]); // Only Person remains
166
- // Check reference was compressed
167
- const route = result.document.service?.protocols?.rest?.routes?.[0];
168
- const schemaRef = route?.responses?.["200"]?.content?.["application/json"]?.schemaRef;
169
- node_assert_1.default.strictEqual(schemaRef, "Person");
170
- });
171
- (0, node_test_1.it)("should handle empty options", () => {
172
- const doc = (0, utils_1.createDocumentWithDuplicateSchemas)();
173
- const result = (0, core_1.optimizeDocument)(doc, {});
174
- // Should apply default optimizations (all enabled except removeUnusedSchemas)
175
- node_assert_1.default.ok(result.statistics.removedSchemas >= 1); // At least deduplication
176
- });
177
- (0, node_test_1.it)("should preserve document structure", () => {
178
- const doc = (0, utils_1.loadExample)((0, utils_1.getExamplePath)("valid", "spec", "mixed-complete.json"));
179
- const result = (0, core_1.optimizeDocument)(JSON.parse(JSON.stringify(doc)));
180
- // Should preserve all required fields
181
- node_assert_1.default.strictEqual(result.document.unispecVersion, doc.unispecVersion);
182
- node_assert_1.default.strictEqual(result.document.service?.name, doc.service?.name);
183
- node_assert_1.default.strictEqual(result.document.service?.description, doc.service?.description);
184
- node_assert_1.default.ok(result.document.service?.protocols);
185
- node_assert_1.default.ok(result.document.service?.schemas);
186
- });
187
- });
@@ -1,194 +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)("removeOrphanedSchemas", () => {
11
- (0, node_test_1.it)("should remove orphaned schemas", () => {
12
- const doc = (0, utils_1.createDocumentWithOrphanedSchemas)();
13
- const removed = (0, optimization_functions_1.removeOrphanedSchemas)(doc);
14
- node_assert_1.default.strictEqual(removed.length, 2);
15
- node_assert_1.default.ok(removed.includes("OrphanedSchema1"));
16
- node_assert_1.default.ok(removed.includes("OrphanedSchema2"));
17
- // Check that only used schema remains
18
- const remainingSchemas = Object.keys(doc.service?.schemas || {});
19
- node_assert_1.default.strictEqual(remainingSchemas.length, 1);
20
- node_assert_1.default.ok(remainingSchemas.includes("UsedSchema"));
21
- });
22
- (0, node_test_1.it)("should keep all schemas when all are referenced", () => {
23
- const doc = (0, utils_1.createDocumentWithOrphanedSchemas)();
24
- // Add references to all schemas
25
- if (doc.service?.protocols?.rest?.routes?.[0]) {
26
- doc.service.protocols.rest.routes[0].responses = {
27
- "200": {
28
- description: "Success",
29
- content: {
30
- "application/json": {
31
- schemaRef: "UsedSchema",
32
- },
33
- },
34
- },
35
- "201": {
36
- description: "Created",
37
- content: {
38
- "application/json": {
39
- schemaRef: "OrphanedSchema1",
40
- },
41
- },
42
- },
43
- "202": {
44
- description: "Accepted",
45
- content: {
46
- "application/json": {
47
- schemaRef: "OrphanedSchema2",
48
- },
49
- },
50
- },
51
- };
52
- }
53
- const removed = (0, optimization_functions_1.removeOrphanedSchemas)(doc);
54
- node_assert_1.default.strictEqual(removed.length, 0);
55
- node_assert_1.default.strictEqual(Object.keys(doc.service?.schemas || {}).length, 3);
56
- });
57
- (0, node_test_1.it)("should handle documents without schemas", () => {
58
- const doc = { unispecVersion: "1.0.0", service: { name: "test" } };
59
- const removed = (0, optimization_functions_1.removeOrphanedSchemas)(doc);
60
- node_assert_1.default.strictEqual(removed.length, 0);
61
- });
62
- (0, node_test_1.it)("should handle documents without service", () => {
63
- const doc = { unispecVersion: "1.0.0", service: { name: "test" } };
64
- const removed = (0, optimization_functions_1.removeOrphanedSchemas)(doc);
65
- node_assert_1.default.strictEqual(removed.length, 0);
66
- });
67
- (0, node_test_1.it)("should handle empty schemas object", () => {
68
- const doc = {
69
- unispecVersion: "1.0.0",
70
- service: { name: "test", schemas: {} },
71
- };
72
- const removed = (0, optimization_functions_1.removeOrphanedSchemas)(doc);
73
- node_assert_1.default.strictEqual(removed.length, 0);
74
- });
75
- (0, node_test_1.it)("should find references in nested structures", () => {
76
- const doc = {
77
- unispecVersion: "1.0.0",
78
- service: {
79
- name: "test",
80
- schemas: {
81
- ReferencedSchema: {
82
- name: "ReferencedSchema",
83
- description: "Referenced schema",
84
- jsonSchema: { type: "string" },
85
- },
86
- UnreferencedSchema: {
87
- name: "UnreferencedSchema",
88
- description: "Unreferenced schema",
89
- jsonSchema: { type: "number" },
90
- },
91
- },
92
- protocols: {
93
- rest: {
94
- routes: [
95
- {
96
- name: "testRoute",
97
- method: "GET",
98
- path: "/test",
99
- responses: {
100
- "200": {
101
- description: "Success",
102
- content: {
103
- "application/json": {
104
- schemaRef: "ReferencedSchema",
105
- },
106
- },
107
- },
108
- },
109
- },
110
- ],
111
- },
112
- graphql: {
113
- queries: [
114
- {
115
- name: "testQuery",
116
- returnType: "ReferencedSchema",
117
- },
118
- ],
119
- },
120
- websocket: {
121
- channels: [
122
- {
123
- name: "testChannel",
124
- messages: [
125
- {
126
- name: "testMessage",
127
- schemaRef: "ReferencedSchema",
128
- },
129
- ],
130
- },
131
- ],
132
- },
133
- },
134
- },
135
- };
136
- const removed = (0, optimization_functions_1.removeOrphanedSchemas)(doc);
137
- node_assert_1.default.strictEqual(removed.length, 1);
138
- node_assert_1.default.ok(removed.includes("UnreferencedSchema"));
139
- node_assert_1.default.ok(doc.service?.schemas?.ReferencedSchema);
140
- node_assert_1.default.ok(!doc.service?.schemas?.UnreferencedSchema);
141
- });
142
- (0, node_test_1.it)("should work with real examples from node_modules", () => {
143
- const doc = (0, utils_1.loadExample)((0, utils_1.getExamplePath)("valid", "spec", "mixed-complete.json"));
144
- const removed = (0, optimization_functions_1.removeOrphanedSchemas)(JSON.parse(JSON.stringify(doc)));
145
- // mixed-complete.json has schemas that are referenced, so nothing should be removed
146
- node_assert_1.default.strictEqual(removed.length, 0);
147
- });
148
- (0, node_test_1.it)("should handle schema references in different formats", () => {
149
- const doc = {
150
- unispecVersion: "1.0.0",
151
- service: {
152
- name: "test",
153
- schemas: {
154
- TestSchema: {
155
- name: "TestSchema",
156
- description: "Test schema",
157
- jsonSchema: { type: "string" },
158
- },
159
- OrphanedSchema: {
160
- name: "OrphanedSchema",
161
- description: "Orphaned schema",
162
- jsonSchema: { type: "number" },
163
- },
164
- },
165
- protocols: {
166
- rest: {
167
- routes: [
168
- {
169
- name: "testRoute",
170
- method: "GET",
171
- path: "/test",
172
- responses: {
173
- "200": {
174
- description: "Success",
175
- content: {
176
- "application/json": {
177
- schemaRef: "#/service/schemas/TestSchema", // JSON Pointer format
178
- },
179
- },
180
- },
181
- },
182
- },
183
- ],
184
- },
185
- },
186
- },
187
- };
188
- const removed = (0, optimization_functions_1.removeOrphanedSchemas)(doc);
189
- node_assert_1.default.strictEqual(removed.length, 1);
190
- node_assert_1.default.ok(removed.includes("OrphanedSchema"));
191
- node_assert_1.default.ok(doc.service?.schemas?.TestSchema);
192
- node_assert_1.default.ok(!doc.service?.schemas?.OrphanedSchema);
193
- });
194
- });