@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,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 optimization_functions_1 = require("../../src/optimizer/optimization-functions.js");
9
- const utils_1 = require("./utils.js");
10
- (0, node_test_1.describe)("sortSchemas", () => {
11
- (0, node_test_1.it)("should sort schemas alphabetically", () => {
12
- const doc = (0, utils_1.createDocumentWithUnsortedSchemas)();
13
- const sortedCount = (0, optimization_functions_1.sortSchemas)(doc);
14
- node_assert_1.default.strictEqual(sortedCount, 3);
15
- const schemaNames = Object.keys(doc.service?.schemas || {});
16
- node_assert_1.default.deepStrictEqual(schemaNames, ["Alpha", "Beta", "Zebra"]);
17
- });
18
- (0, node_test_1.it)("should return 0 for empty schemas", () => {
19
- const doc = {
20
- unispecVersion: "1.0.0",
21
- service: { name: "test", schemas: {} },
22
- };
23
- const sortedCount = (0, optimization_functions_1.sortSchemas)(doc);
24
- node_assert_1.default.strictEqual(sortedCount, 0);
25
- });
26
- (0, node_test_1.it)("should handle documents without schemas", () => {
27
- const doc = { unispecVersion: "1.0.0", service: { name: "test" } };
28
- const sortedCount = (0, optimization_functions_1.sortSchemas)(doc);
29
- node_assert_1.default.strictEqual(sortedCount, 0);
30
- });
31
- (0, node_test_1.it)("should handle documents without service", () => {
32
- const doc = { unispecVersion: "1.0.0", service: { name: "test" } };
33
- const sortedCount = (0, optimization_functions_1.sortSchemas)(doc);
34
- node_assert_1.default.strictEqual(sortedCount, 0);
35
- });
36
- (0, node_test_1.it)("should preserve schema content while sorting", () => {
37
- const doc = (0, utils_1.createDocumentWithUnsortedSchemas)();
38
- (0, optimization_functions_1.sortSchemas)(doc);
39
- const schemas = doc.service?.schemas || {};
40
- node_assert_1.default.strictEqual(schemas.Alpha.description, "Alpha schema");
41
- node_assert_1.default.strictEqual(schemas.Beta.description, "Beta schema");
42
- node_assert_1.default.strictEqual(schemas.Zebra.description, "Zebra schema");
43
- });
44
- (0, node_test_1.it)("should handle already sorted schemas", () => {
45
- const doc = {
46
- unispecVersion: "1.0.0",
47
- service: {
48
- name: "test",
49
- schemas: {
50
- Alpha: {
51
- name: "Alpha",
52
- description: "Alpha schema",
53
- jsonSchema: { type: "string" },
54
- },
55
- Beta: {
56
- name: "Beta",
57
- description: "Beta schema",
58
- jsonSchema: { type: "number" },
59
- },
60
- Zebra: {
61
- name: "Zebra",
62
- description: "Zebra schema",
63
- jsonSchema: { type: "boolean" },
64
- },
65
- },
66
- },
67
- };
68
- const sortedCount = (0, optimization_functions_1.sortSchemas)(doc);
69
- node_assert_1.default.strictEqual(sortedCount, 3);
70
- const schemaNames = Object.keys(doc.service?.schemas || {});
71
- node_assert_1.default.deepStrictEqual(schemaNames, ["Alpha", "Beta", "Zebra"]);
72
- });
73
- (0, node_test_1.it)("should handle single schema", () => {
74
- const doc = {
75
- unispecVersion: "1.0.0",
76
- service: {
77
- name: "test",
78
- schemas: {
79
- SingleSchema: {
80
- name: "SingleSchema",
81
- description: "Single schema",
82
- jsonSchema: { type: "string" },
83
- },
84
- },
85
- },
86
- };
87
- const sortedCount = (0, optimization_functions_1.sortSchemas)(doc);
88
- node_assert_1.default.strictEqual(sortedCount, 1);
89
- const schemaNames = Object.keys(doc.service?.schemas || {});
90
- node_assert_1.default.deepStrictEqual(schemaNames, ["SingleSchema"]);
91
- });
92
- (0, node_test_1.it)("should work with real examples from node_modules", () => {
93
- const doc = (0, utils_1.loadExample)((0, utils_1.getExamplePath)("valid", "spec", "mixed-complete.json"));
94
- const sortedCount = (0, optimization_functions_1.sortSchemas)(JSON.parse(JSON.stringify(doc)));
95
- // mixed-complete.json has 2 schemas
96
- node_assert_1.default.strictEqual(sortedCount, 2);
97
- // Check that schemas are sorted
98
- const schemaNames = Object.keys(doc.service?.schemas || {});
99
- const sortedSchemaNames = [...schemaNames].sort();
100
- node_assert_1.default.deepStrictEqual(schemaNames, sortedSchemaNames);
101
- });
102
- (0, node_test_1.it)("should handle case-sensitive sorting", () => {
103
- const doc = {
104
- unispecVersion: "1.0.0",
105
- service: {
106
- name: "test",
107
- schemas: {
108
- zebra: {
109
- name: "zebra",
110
- description: "lowercase zebra",
111
- jsonSchema: { type: "string" },
112
- },
113
- Alpha: {
114
- name: "Alpha",
115
- description: "uppercase Alpha",
116
- jsonSchema: { type: "string" },
117
- },
118
- beta: {
119
- name: "beta",
120
- description: "lowercase beta",
121
- jsonSchema: { type: "string" },
122
- },
123
- },
124
- },
125
- };
126
- (0, optimization_functions_1.sortSchemas)(doc);
127
- const schemaNames = Object.keys(doc.service?.schemas || {});
128
- // Default JavaScript sort is case-sensitive: uppercase letters come before lowercase
129
- node_assert_1.default.deepStrictEqual(schemaNames, ["Alpha", "beta", "zebra"]);
130
- });
131
- });
@@ -1,209 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadExample = exports.getExamplePath = exports.examplesDir = exports.createTestDocument = void 0;
4
- exports.createTestDocumentWithSchemas = createTestDocumentWithSchemas;
5
- exports.createDocumentWithDuplicateSchemas = createDocumentWithDuplicateSchemas;
6
- exports.createDocumentWithOrphanedSchemas = createDocumentWithOrphanedSchemas;
7
- exports.createDocumentWithUnsortedSchemas = createDocumentWithUnsortedSchemas;
8
- exports.createDocumentWithLongReferences = createDocumentWithLongReferences;
9
- const utils_1 = require("../../tests/utils.js");
10
- Object.defineProperty(exports, "createTestDocument", { enumerable: true, get: function () { return utils_1.createTestDocument; } });
11
- Object.defineProperty(exports, "examplesDir", { enumerable: true, get: function () { return utils_1.examplesDir; } });
12
- Object.defineProperty(exports, "getExamplePath", { enumerable: true, get: function () { return utils_1.getExamplePath; } });
13
- Object.defineProperty(exports, "loadExample", { enumerable: true, get: function () { return utils_1.loadExample; } });
14
- // Optimizer-specific utilities
15
- function createTestDocumentWithSchemas(schemas = {}, overrides = {}) {
16
- const base = {
17
- unispecVersion: "1.0.0",
18
- service: {
19
- name: "test-service",
20
- description: "Test service description",
21
- protocols: {
22
- rest: {
23
- routes: [
24
- {
25
- name: "testRoute",
26
- summary: "Test route",
27
- path: "/test",
28
- method: "GET",
29
- responses: {
30
- "200": { description: "Success" },
31
- },
32
- },
33
- ],
34
- },
35
- },
36
- schemas,
37
- },
38
- };
39
- // Deep merge overrides
40
- return mergeDeep(base, overrides);
41
- }
42
- function createDocumentWithDuplicateSchemas() {
43
- const duplicateSchema = {
44
- type: "object",
45
- properties: {
46
- id: { type: "string" },
47
- name: { type: "string" },
48
- },
49
- required: ["id", "name"],
50
- };
51
- return createTestDocumentWithSchemas({
52
- User: {
53
- description: "User schema",
54
- jsonSchema: duplicateSchema,
55
- },
56
- Person: {
57
- description: "Person schema",
58
- jsonSchema: duplicateSchema,
59
- },
60
- Profile: {
61
- description: "Profile schema",
62
- jsonSchema: {
63
- type: "object",
64
- properties: {
65
- profileId: { type: "string" },
66
- title: { type: "string" },
67
- },
68
- required: ["profileId", "title"],
69
- },
70
- },
71
- }, {
72
- service: {
73
- name: "test-service",
74
- protocols: {
75
- rest: {
76
- routes: [
77
- {
78
- name: "userRoute",
79
- method: "GET",
80
- path: "/users",
81
- responses: {
82
- "200": {
83
- description: "Success",
84
- content: {
85
- "application/json": {
86
- schemaRef: "User",
87
- },
88
- },
89
- },
90
- },
91
- },
92
- ],
93
- },
94
- },
95
- },
96
- });
97
- }
98
- function createDocumentWithOrphanedSchemas() {
99
- return createTestDocumentWithSchemas({
100
- UsedSchema: {
101
- description: "Used schema",
102
- jsonSchema: {
103
- type: "object",
104
- properties: { id: { type: "string" } },
105
- required: ["id"],
106
- },
107
- },
108
- OrphanedSchema1: {
109
- description: "Orphaned schema 1",
110
- jsonSchema: { type: "string" },
111
- },
112
- OrphanedSchema2: {
113
- description: "Orphaned schema 2",
114
- jsonSchema: { type: "number" },
115
- },
116
- }, {
117
- service: {
118
- name: "test-service",
119
- protocols: {
120
- rest: {
121
- routes: [
122
- {
123
- name: "testRoute",
124
- summary: "Test route",
125
- path: "/test",
126
- method: "GET",
127
- responses: {
128
- "200": {
129
- description: "Success",
130
- content: {
131
- "application/json": {
132
- schemaRef: "UsedSchema",
133
- },
134
- },
135
- },
136
- },
137
- },
138
- ],
139
- },
140
- },
141
- },
142
- });
143
- }
144
- function createDocumentWithUnsortedSchemas() {
145
- return createTestDocumentWithSchemas({
146
- Zebra: {
147
- description: "Zebra schema",
148
- jsonSchema: { type: "string" },
149
- },
150
- Alpha: {
151
- description: "Alpha schema",
152
- jsonSchema: { type: "number" },
153
- },
154
- Beta: {
155
- description: "Beta schema",
156
- jsonSchema: { type: "boolean" },
157
- },
158
- });
159
- }
160
- function createDocumentWithLongReferences() {
161
- return createTestDocumentWithSchemas({
162
- TestSchema: {
163
- description: "Test schema",
164
- jsonSchema: { type: "string" },
165
- },
166
- }, {
167
- service: {
168
- name: "test-service",
169
- protocols: {
170
- rest: {
171
- routes: [
172
- {
173
- name: "testRoute",
174
- summary: "Test route",
175
- path: "/test",
176
- method: "GET",
177
- responses: {
178
- "200": {
179
- description: "Success",
180
- content: {
181
- "application/json": {
182
- schemaRef: "#/service/schemas/TestSchema",
183
- },
184
- },
185
- },
186
- },
187
- },
188
- ],
189
- },
190
- },
191
- },
192
- });
193
- }
194
- function mergeDeep(target, source) {
195
- const result = { ...target };
196
- for (const key in source) {
197
- if (source[key] !== undefined) {
198
- if (typeof source[key] === "object" &&
199
- source[key] !== null &&
200
- !Array.isArray(source[key])) {
201
- result[key] = mergeDeep(result[key], source[key]);
202
- }
203
- else {
204
- result[key] = source[key];
205
- }
206
- }
207
- }
208
- return result;
209
- }
@@ -1,223 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const node_assert_1 = __importDefault(require("node:assert"));
7
- const node_test_1 = require("node:test");
8
- const schemas_1 = require("../../src/schemas/index.js");
9
- const utils_1 = require("../../src/schemas/utils.js");
10
- const utils_2 = require("./utils.js");
11
- (0, node_test_1.describe)("schemas module - edge cases and invalid examples", () => {
12
- (0, node_test_1.describe)("resolveSchemaRef with invalid examples", () => {
13
- (0, node_test_1.it)("should handle documents without schemas gracefully", () => {
14
- const doc = (0, utils_2.loadExample)((0, utils_2.getExamplePath)("invalid", "spec", "missing-unispec-version.json"));
15
- // Should not throw even with invalid documents
16
- const schema = (0, schemas_1.resolveSchemaRef)(doc, "AnySchema");
17
- node_assert_1.default.strictEqual(schema, undefined);
18
- });
19
- (0, node_test_1.it)("should handle malformed schema references", () => {
20
- const doc = (0, utils_2.loadExample)((0, utils_2.getExamplePath)("valid", "spec", "mixed-complete.json"));
21
- // Test various malformed references
22
- node_assert_1.default.strictEqual((0, schemas_1.resolveSchemaRef)(doc, ""), undefined);
23
- node_assert_1.default.strictEqual((0, schemas_1.resolveSchemaRef)(doc, " "), undefined);
24
- node_assert_1.default.strictEqual((0, schemas_1.resolveSchemaRef)(doc, "#"), undefined);
25
- node_assert_1.default.strictEqual((0, schemas_1.resolveSchemaRef)(doc, "#/"), undefined);
26
- node_assert_1.default.strictEqual((0, schemas_1.resolveSchemaRef)(doc, "#/service/schemas/"), undefined);
27
- });
28
- (0, node_test_1.it)("should handle deeply nested JSON pointers", () => {
29
- const doc = (0, utils_2.loadExample)((0, utils_2.getExamplePath)("valid", "spec", "mixed-complete.json"));
30
- // Test deeply nested pointer that doesn't exist
31
- const schema = (0, schemas_1.resolveSchemaRef)(doc, "#/service/schemas/nonexistent/deep/nested/schema");
32
- node_assert_1.default.strictEqual(schema, undefined);
33
- });
34
- (0, node_test_1.it)("should handle special characters in schema names", () => {
35
- // biome-ignore lint/suspicious/noExplicitAny: Testing edge cases with special characters
36
- const doc = {
37
- service: {
38
- schemas: {
39
- "schema-with-dashes": { jsonSchema: { type: "string" } },
40
- "schema_with_underscores": { jsonSchema: { type: "number" } },
41
- "schema.with.dots": { jsonSchema: { type: "boolean" } },
42
- "schema with spaces": { jsonSchema: { type: "array" } },
43
- },
44
- },
45
- };
46
- node_assert_1.default.ok((0, schemas_1.resolveSchemaRef)(doc, "schema-with-dashes"));
47
- node_assert_1.default.ok((0, schemas_1.resolveSchemaRef)(doc, "schema_with_underscores"));
48
- node_assert_1.default.ok((0, schemas_1.resolveSchemaRef)(doc, "schema.with.dots"));
49
- node_assert_1.default.ok((0, schemas_1.resolveSchemaRef)(doc, "schema with spaces"));
50
- });
51
- });
52
- (0, node_test_1.describe)("dedupeSchemas with complex scenarios", () => {
53
- (0, node_test_1.it)("should handle circular references safely", () => {
54
- // biome-ignore lint/suspicious/noExplicitAny: Testing edge cases with circular references
55
- const doc = {
56
- service: {
57
- schemas: {
58
- SchemaA: {
59
- jsonSchema: {
60
- type: "object",
61
- properties: {
62
- ref: { $ref: "#/service/schemas/SchemaB" },
63
- },
64
- },
65
- },
66
- SchemaB: {
67
- jsonSchema: {
68
- type: "object",
69
- properties: {
70
- ref: { $ref: "#/service/schemas/SchemaA" },
71
- },
72
- },
73
- },
74
- },
75
- },
76
- };
77
- // Should not throw with circular references
78
- (0, schemas_1.dedupeSchemas)(doc);
79
- // Both schemas should remain since they have different content
80
- node_assert_1.default.strictEqual(Object.keys(doc.service.schemas).length, 2);
81
- });
82
- (0, node_test_1.it)("should preserve schema order during deduplication", () => {
83
- // biome-ignore lint/suspicious/noExplicitAny: Testing edge cases with schema ordering
84
- const doc = {
85
- service: {
86
- schemas: {
87
- ThirdSchema: { jsonSchema: { type: "string" } },
88
- FirstSchema: { jsonSchema: { type: "string" } },
89
- SecondSchema: { jsonSchema: { type: "number" } },
90
- },
91
- },
92
- };
93
- (0, schemas_1.dedupeSchemas)(doc);
94
- // Should deduplicate one of the string schemas and keep the number schema
95
- const remainingSchemas = Object.keys(doc.service.schemas);
96
- node_assert_1.default.strictEqual(remainingSchemas.length, 2);
97
- node_assert_1.default.ok(remainingSchemas.includes("SecondSchema")); // Number schema should remain
98
- node_assert_1.default.ok(remainingSchemas.includes("FirstSchema") ||
99
- remainingSchemas.includes("ThirdSchema")); // One string schema should remain
100
- });
101
- (0, node_test_1.it)("should handle null and undefined schemas", () => {
102
- // biome-ignore lint/suspicious/noExplicitAny: Testing edge cases with null/undefined schemas
103
- const doc = {
104
- service: {
105
- schemas: {
106
- NullSchema: null,
107
- UndefinedSchema: undefined,
108
- ValidSchema: { jsonSchema: { type: "string" } },
109
- },
110
- },
111
- };
112
- // Should not throw
113
- (0, schemas_1.dedupeSchemas)(doc);
114
- // Should handle null/undefined gracefully
115
- node_assert_1.default.ok(doc.service.schemas.ValidSchema);
116
- });
117
- (0, node_test_1.it)("should handle empty schema objects", () => {
118
- // biome-ignore lint/suspicious/noExplicitAny: Testing edge cases with empty schemas
119
- const doc = {
120
- service: {
121
- schemas: {
122
- EmptySchema1: {},
123
- EmptySchema2: {},
124
- ValidSchema: { jsonSchema: { type: "string" } },
125
- },
126
- },
127
- };
128
- (0, schemas_1.dedupeSchemas)(doc);
129
- // Should deduplicate empty schemas
130
- const schemas = Object.keys(doc.service.schemas);
131
- node_assert_1.default.strictEqual(schemas.length, 2);
132
- node_assert_1.default.ok(schemas.includes("ValidSchema"));
133
- node_assert_1.default.ok(schemas.includes("EmptySchema1") || schemas.includes("EmptySchema2"));
134
- });
135
- });
136
- (0, node_test_1.describe)("normalizeSchemaRef edge cases", () => {
137
- (0, node_test_1.it)("should handle Unicode characters", () => {
138
- node_assert_1.default.strictEqual((0, utils_1.normalizeSchemaRef)("Схема"), "Схема");
139
- node_assert_1.default.strictEqual((0, utils_1.normalizeSchemaRef)("#/service/schemas/Схема"), "Схема");
140
- node_assert_1.default.strictEqual((0, utils_1.normalizeSchemaRef)("#Схема"), "Схема");
141
- });
142
- (0, node_test_1.it)("should handle very long schema names", () => {
143
- const longName = "a".repeat(1000);
144
- node_assert_1.default.strictEqual((0, utils_1.normalizeSchemaRef)(longName), longName);
145
- node_assert_1.default.strictEqual((0, utils_1.normalizeSchemaRef)(`#/service/schemas/${longName}`), longName);
146
- });
147
- (0, node_test_1.it)("should handle JSON pointer encoding", () => {
148
- node_assert_1.default.strictEqual((0, utils_1.normalizeSchemaRef)("#/service/schemas/schema~0name"), "schema~0name");
149
- node_assert_1.default.strictEqual((0, utils_1.normalizeSchemaRef)("#/service/schemas/schema~1name"), "schema~1name");
150
- node_assert_1.default.strictEqual((0, utils_1.normalizeSchemaRef)("#/service/schemas/schema/name"), "name");
151
- });
152
- });
153
- (0, node_test_1.describe)("integration with invalid examples", () => {
154
- (0, node_test_1.it)("should not crash on completely invalid documents", () => {
155
- const invalidDocs = [
156
- { invalid: "structure" },
157
- {},
158
- { service: null },
159
- { service: { schemas: "not an object" } },
160
- ];
161
- for (const doc of invalidDocs) {
162
- // Should not throw
163
- node_assert_1.default.doesNotThrow(() => {
164
- // biome-ignore lint/suspicious/noExplicitAny: Testing invalid document structures
165
- (0, schemas_1.resolveSchemaRef)(doc, "test");
166
- // biome-ignore lint/suspicious/noExplicitAny: Testing invalid document structures
167
- (0, schemas_1.dedupeSchemas)(doc);
168
- });
169
- }
170
- // null and undefined should be handled by resolveSchemaRef
171
- // biome-ignore lint/suspicious/noExplicitAny: Testing null input handling
172
- node_assert_1.default.strictEqual((0, schemas_1.resolveSchemaRef)(null, "test"), undefined);
173
- // biome-ignore lint/suspicious/noExplicitAny: Testing undefined input handling
174
- node_assert_1.default.strictEqual((0, schemas_1.resolveSchemaRef)(undefined, "test"), undefined);
175
- });
176
- (0, node_test_1.it)("should handle documents with missing required fields", () => {
177
- const doc = (0, utils_2.loadExample)((0, utils_2.getExamplePath)("invalid", "spec", "missing-service-name.json"));
178
- // Should handle gracefully
179
- const schema = (0, schemas_1.resolveSchemaRef)(doc, "anything");
180
- node_assert_1.default.strictEqual(schema, undefined);
181
- // Should not throw
182
- node_assert_1.default.doesNotThrow(() => (0, schemas_1.dedupeSchemas)(doc));
183
- });
184
- });
185
- (0, node_test_1.describe)("performance and memory", () => {
186
- (0, node_test_1.it)("should handle large numbers of schemas efficiently", () => {
187
- // biome-ignore lint/suspicious/noExplicitAny: Testing performance with large schema sets
188
- const doc = {
189
- service: {
190
- schemas: {},
191
- },
192
- };
193
- // Create 100 schemas with some duplicates (10 unique types, each repeated 10 times)
194
- const schemaTypes = [
195
- { type: "string" },
196
- { type: "number" },
197
- { type: "boolean" },
198
- { type: "array" },
199
- { type: "object" },
200
- { type: "null" },
201
- { type: "string", format: "date" },
202
- { type: "string", format: "email" },
203
- { type: "integer" },
204
- { type: "number", format: "float" },
205
- ];
206
- let schemaIndex = 0;
207
- for (let i = 0; i < 10; i++) {
208
- for (let j = 0; j < schemaTypes.length; j++) {
209
- doc.service.schemas[`Schema${schemaIndex++}`] = {
210
- jsonSchema: schemaTypes[j],
211
- };
212
- }
213
- }
214
- const startTime = Date.now();
215
- (0, schemas_1.dedupeSchemas)(doc);
216
- const endTime = Date.now();
217
- // Should complete in reasonable time (less than 1 second)
218
- node_assert_1.default.ok(endTime - startTime < 1000);
219
- // Should deduplicate to only 10 unique schemas
220
- node_assert_1.default.strictEqual(Object.keys(doc.service.schemas).length, 10);
221
- });
222
- });
223
- });