@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,280 +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 errors_1 = require("../../src/errors/index.js");
9
- const utils_1 = require("./utils.js");
10
- (0, node_test_1.describe)("errors module", () => {
11
- (0, node_test_1.describe)("UniSpecValidationError", () => {
12
- (0, node_test_1.it)("should create basic validation error", () => {
13
- const error = new errors_1.UniSpecValidationError("Test error message", "test_code", "/test/path", "error", { detail: "test detail" });
14
- node_assert_1.default.strictEqual(error.message, "Test error message");
15
- node_assert_1.default.strictEqual(error.code, "test_code");
16
- node_assert_1.default.strictEqual(error.path, "/test/path");
17
- node_assert_1.default.strictEqual(error.severity, "error");
18
- node_assert_1.default.deepStrictEqual(error.details, { detail: "test detail" });
19
- node_assert_1.default.strictEqual(error.name, "UniSpecValidationError");
20
- });
21
- (0, node_test_1.it)("should create error with default values", () => {
22
- const error = new errors_1.UniSpecValidationError("Test message", "test_code");
23
- node_assert_1.default.strictEqual(error.message, "Test message");
24
- node_assert_1.default.strictEqual(error.code, "test_code");
25
- node_assert_1.default.strictEqual(error.path, "");
26
- node_assert_1.default.strictEqual(error.severity, "error");
27
- node_assert_1.default.strictEqual(error.details, undefined);
28
- });
29
- (0, node_test_1.it)("should serialize to JSON correctly", () => {
30
- const error = new errors_1.UniSpecValidationError("Test message", "test_code", "/path", "warning", { test: "value" });
31
- const json = error.toJSON();
32
- node_assert_1.default.strictEqual(json.name, "UniSpecValidationError");
33
- node_assert_1.default.strictEqual(json.message, "Test message");
34
- node_assert_1.default.strictEqual(json.code, "test_code");
35
- node_assert_1.default.strictEqual(json.path, "/path");
36
- node_assert_1.default.strictEqual(json.severity, "warning");
37
- node_assert_1.default.deepStrictEqual(json.details, { test: "value" });
38
- node_assert_1.default.ok(json.stack);
39
- });
40
- });
41
- (0, node_test_1.describe)("Specific error types", () => {
42
- (0, node_test_1.it)("should create UniSpecConfigError", () => {
43
- const error = new errors_1.UniSpecConfigError("Configuration error", "/config/path", { configKey: "test" });
44
- node_assert_1.default.strictEqual(error.name, "UniSpecConfigError");
45
- node_assert_1.default.strictEqual(error.code, "config_error");
46
- node_assert_1.default.strictEqual(error.message, "Configuration error");
47
- node_assert_1.default.strictEqual(error.path, "/config/path");
48
- node_assert_1.default.deepStrictEqual(error.details, { configKey: "test" });
49
- });
50
- (0, node_test_1.it)("should create UniSpecLoaderError", () => {
51
- const error = new errors_1.UniSpecLoaderError("Loader error", "/loader/path", {
52
- fileType: "yaml",
53
- });
54
- node_assert_1.default.strictEqual(error.name, "UniSpecLoaderError");
55
- node_assert_1.default.strictEqual(error.code, "loader_error");
56
- node_assert_1.default.strictEqual(error.message, "Loader error");
57
- node_assert_1.default.strictEqual(error.path, "/loader/path");
58
- node_assert_1.default.deepStrictEqual(error.details, { fileType: "yaml" });
59
- });
60
- (0, node_test_1.it)("should create UniSpecReferenceError", () => {
61
- const error = new errors_1.UniSpecReferenceError("Reference error", "/ref/path", {
62
- reference: "invalid-ref",
63
- });
64
- node_assert_1.default.strictEqual(error.name, "UniSpecReferenceError");
65
- node_assert_1.default.strictEqual(error.code, "reference_error");
66
- node_assert_1.default.strictEqual(error.message, "Reference error");
67
- node_assert_1.default.strictEqual(error.path, "/ref/path");
68
- node_assert_1.default.deepStrictEqual(error.details, { reference: "invalid-ref" });
69
- });
70
- (0, node_test_1.it)("should create UniSpecSchemaError", () => {
71
- const error = new errors_1.UniSpecSchemaError("Schema validation error", "/schema/path", { schemaPath: "service.name" });
72
- node_assert_1.default.strictEqual(error.name, "UniSpecSchemaError");
73
- node_assert_1.default.strictEqual(error.code, "schema_error");
74
- node_assert_1.default.strictEqual(error.message, "Schema validation error");
75
- node_assert_1.default.strictEqual(error.path, "/schema/path");
76
- node_assert_1.default.deepStrictEqual(error.details, { schemaPath: "service.name" });
77
- });
78
- (0, node_test_1.it)("should create UniSpecSecurityError", () => {
79
- const error = new errors_1.UniSpecSecurityError("Security violation", "/security/path", { violation: "insecure_protocol" });
80
- node_assert_1.default.strictEqual(error.name, "UniSpecSecurityError");
81
- node_assert_1.default.strictEqual(error.code, "security_error");
82
- node_assert_1.default.strictEqual(error.message, "Security violation");
83
- node_assert_1.default.strictEqual(error.path, "/security/path");
84
- node_assert_1.default.deepStrictEqual(error.details, { violation: "insecure_protocol" });
85
- });
86
- (0, node_test_1.it)("should create UniSpecSemanticError", () => {
87
- const error = new errors_1.UniSpecSemanticError("Semantic error", "/semantic/path", { semanticIssue: "duplicate_name" });
88
- node_assert_1.default.strictEqual(error.name, "UniSpecSemanticError");
89
- node_assert_1.default.strictEqual(error.code, "semantic_error");
90
- node_assert_1.default.strictEqual(error.message, "Semantic error");
91
- node_assert_1.default.strictEqual(error.path, "/semantic/path");
92
- node_assert_1.default.deepStrictEqual(error.details, {
93
- semanticIssue: "duplicate_name",
94
- });
95
- });
96
- });
97
- (0, node_test_1.describe)("ErrorFactory", () => {
98
- (0, node_test_1.it)("should create schema error via factory", () => {
99
- const error = errors_1.ErrorFactory.createSchemaError("Schema error", "/path", {
100
- detail: "test",
101
- });
102
- node_assert_1.default.ok(error instanceof errors_1.UniSpecSchemaError);
103
- node_assert_1.default.strictEqual(error.message, "Schema error");
104
- node_assert_1.default.strictEqual(error.path, "/path");
105
- node_assert_1.default.deepStrictEqual(error.details, { detail: "test" });
106
- });
107
- (0, node_test_1.it)("should create semantic error via factory", () => {
108
- const error = errors_1.ErrorFactory.createSemanticError("Semantic error", "/path", { detail: "test" });
109
- node_assert_1.default.ok(error instanceof errors_1.UniSpecSemanticError);
110
- node_assert_1.default.strictEqual(error.message, "Semantic error");
111
- node_assert_1.default.strictEqual(error.path, "/path");
112
- });
113
- (0, node_test_1.it)("should create reference error via factory", () => {
114
- const error = errors_1.ErrorFactory.createReferenceError("Reference error", "/path", { detail: "test" });
115
- node_assert_1.default.ok(error instanceof errors_1.UniSpecReferenceError);
116
- node_assert_1.default.strictEqual(error.message, "Reference error");
117
- node_assert_1.default.strictEqual(error.path, "/path");
118
- });
119
- (0, node_test_1.it)("should create config error via factory", () => {
120
- const error = errors_1.ErrorFactory.createConfigError("Config error", "/path", {
121
- detail: "test",
122
- });
123
- node_assert_1.default.ok(error instanceof errors_1.UniSpecConfigError);
124
- node_assert_1.default.strictEqual(error.message, "Config error");
125
- node_assert_1.default.strictEqual(error.path, "/path");
126
- });
127
- (0, node_test_1.it)("should create security error via factory", () => {
128
- const error = errors_1.ErrorFactory.createSecurityError("Security error", "/path", { detail: "test" });
129
- node_assert_1.default.ok(error instanceof errors_1.UniSpecSecurityError);
130
- node_assert_1.default.strictEqual(error.message, "Security error");
131
- node_assert_1.default.strictEqual(error.path, "/path");
132
- });
133
- (0, node_test_1.it)("should create loader error via factory", () => {
134
- const error = errors_1.ErrorFactory.createLoaderError("Loader error", "/path", {
135
- detail: "test",
136
- });
137
- node_assert_1.default.ok(error instanceof errors_1.UniSpecLoaderError);
138
- node_assert_1.default.strictEqual(error.message, "Loader error");
139
- node_assert_1.default.strictEqual(error.path, "/path");
140
- });
141
- (0, node_test_1.describe)("fromError method", () => {
142
- (0, node_test_1.it)("should return UniSpecValidationError as-is", () => {
143
- const originalError = new errors_1.UniSpecValidationError("Original error", "original_code");
144
- const converted = errors_1.ErrorFactory.fromError(originalError);
145
- node_assert_1.default.strictEqual(converted, originalError);
146
- });
147
- (0, node_test_1.it)("should convert Error to UniSpecValidationError", () => {
148
- const originalError = new Error("Original error");
149
- const converted = errors_1.ErrorFactory.fromError(originalError);
150
- node_assert_1.default.ok(converted instanceof errors_1.UniSpecValidationError);
151
- node_assert_1.default.strictEqual(converted.message, "Original error");
152
- node_assert_1.default.strictEqual(converted.code, "validation_error");
153
- node_assert_1.default.deepStrictEqual(converted.details, {
154
- originalError: "Error",
155
- stack: originalError.stack,
156
- });
157
- });
158
- (0, node_test_1.it)("should convert string to UniSpecValidationError", () => {
159
- const originalError = "String error";
160
- const converted = errors_1.ErrorFactory.fromError(originalError);
161
- node_assert_1.default.ok(converted instanceof errors_1.UniSpecValidationError);
162
- node_assert_1.default.strictEqual(converted.message, "String error");
163
- node_assert_1.default.strictEqual(converted.code, "validation_error");
164
- });
165
- (0, node_test_1.it)("should convert unknown object to UniSpecValidationError", () => {
166
- const originalError = { some: "object" };
167
- const converted = errors_1.ErrorFactory.fromError(originalError);
168
- node_assert_1.default.ok(converted instanceof errors_1.UniSpecValidationError);
169
- node_assert_1.default.strictEqual(converted.message, "Unknown validation error: [object Object]");
170
- node_assert_1.default.strictEqual(converted.code, "validation_error");
171
- node_assert_1.default.deepStrictEqual(converted.details, { originalError });
172
- });
173
- (0, node_test_1.it)("should use custom default code", () => {
174
- const originalError = new Error("Custom error");
175
- const converted = errors_1.ErrorFactory.fromError(originalError, "custom_code");
176
- node_assert_1.default.strictEqual(converted.code, "custom_code");
177
- });
178
- });
179
- });
180
- (0, node_test_1.describe)("Error handling with schema examples", () => {
181
- (0, node_test_1.it)("should handle valid examples without errors", () => {
182
- const validDoc = (0, utils_1.loadExample)((0, utils_1.getExamplePath)("valid", "spec", "rest-simple.json"));
183
- // This should not throw - valid document should load successfully
184
- node_assert_1.default.ok(validDoc);
185
- node_assert_1.default.ok(validDoc.unispecVersion);
186
- node_assert_1.default.ok(validDoc.service);
187
- });
188
- (0, node_test_1.it)("should create appropriate errors for invalid examples", () => {
189
- const invalidDoc = (0, utils_1.loadInvalidExample)((0, utils_1.getExamplePath)("invalid", "spec", "missing-service-name.json"));
190
- // Invalid document should be missing required fields
191
- node_assert_1.default.ok(invalidDoc);
192
- node_assert_1.default.ok(!invalidDoc.service?.name);
193
- // Test creating appropriate error for this case
194
- const error = errors_1.ErrorFactory.createSchemaError("Missing required service name", "service.name", { required: true, found: undefined });
195
- node_assert_1.default.ok(error instanceof errors_1.UniSpecSchemaError);
196
- node_assert_1.default.strictEqual(error.path, "service.name");
197
- node_assert_1.default.deepStrictEqual(error.details, {
198
- required: true,
199
- found: undefined,
200
- });
201
- });
202
- (0, node_test_1.it)("should handle missing version errors", () => {
203
- const invalidDoc = (0, utils_1.loadInvalidExample)((0, utils_1.getExamplePath)("invalid", "spec", "missing-unispec-version.json"));
204
- node_assert_1.default.ok(invalidDoc);
205
- node_assert_1.default.ok(!invalidDoc.unispecVersion);
206
- const error = errors_1.ErrorFactory.createSchemaError("Missing required unispecVersion", "unispecVersion", { required: true, found: undefined });
207
- node_assert_1.default.ok(error instanceof errors_1.UniSpecSchemaError);
208
- node_assert_1.default.strictEqual(error.path, "unispecVersion");
209
- });
210
- (0, node_test_1.it)("should handle invalid REST method errors", () => {
211
- const invalidDoc = (0, utils_1.loadInvalidExample)((0, utils_1.getExamplePath)("invalid", "spec", "invalid-rest-method.json"));
212
- node_assert_1.default.ok(invalidDoc);
213
- // Extract method value safely for testing
214
- const doc = invalidDoc;
215
- const service = doc.service;
216
- const protocols = service?.protocols;
217
- const rest = protocols?.rest;
218
- const routes = rest?.routes;
219
- const firstRoute = routes?.[0];
220
- const error = errors_1.ErrorFactory.createSemanticError("Invalid HTTP method", "service.protocols.rest.routes[0].method", { method: firstRoute?.method });
221
- node_assert_1.default.ok(error instanceof errors_1.UniSpecSemanticError);
222
- node_assert_1.default.strictEqual(error.path, "service.protocols.rest.routes[0].method");
223
- });
224
- (0, node_test_1.it)("should handle config errors", () => {
225
- const invalidConfig = (0, utils_1.loadInvalidExample)((0, utils_1.getExamplePath)("invalid", "config", "missing-version.json"));
226
- node_assert_1.default.ok(invalidConfig);
227
- node_assert_1.default.ok(!invalidConfig.version);
228
- const error = errors_1.ErrorFactory.createConfigError("Missing required version in config", "version", { required: true });
229
- node_assert_1.default.ok(error instanceof errors_1.UniSpecConfigError);
230
- node_assert_1.default.strictEqual(error.path, "version");
231
- });
232
- (0, node_test_1.it)("should handle loader errors for malformed examples", () => {
233
- // Simulate a loader error
234
- const error = errors_1.ErrorFactory.createLoaderError("Failed to parse YAML file", "/path/to/file.yaml", { line: 5, column: 10, reason: "invalid indentation" });
235
- node_assert_1.default.ok(error instanceof errors_1.UniSpecLoaderError);
236
- node_assert_1.default.strictEqual(error.path, "/path/to/file.yaml");
237
- node_assert_1.default.deepStrictEqual(error.details, {
238
- line: 5,
239
- column: 10,
240
- reason: "invalid indentation",
241
- });
242
- });
243
- (0, node_test_1.it)("should handle security errors", () => {
244
- const error = errors_1.ErrorFactory.createSecurityError("Insecure protocol detected", "service.protocols.rest.routes[0].scheme", { protocol: "http", recommended: "https" });
245
- node_assert_1.default.ok(error instanceof errors_1.UniSpecSecurityError);
246
- node_assert_1.default.strictEqual(error.path, "service.protocols.rest.routes[0].scheme");
247
- node_assert_1.default.deepStrictEqual(error.details, {
248
- protocol: "http",
249
- recommended: "https",
250
- });
251
- });
252
- (0, node_test_1.it)("should handle reference errors", () => {
253
- const error = errors_1.ErrorFactory.createReferenceError("Undefined type reference", "service.protocols.rest.routes[0].responses[200].schema", { reference: "NonExistentType", availableTypes: ["User", "Post"] });
254
- node_assert_1.default.ok(error instanceof errors_1.UniSpecReferenceError);
255
- node_assert_1.default.strictEqual(error.path, "service.protocols.rest.routes[0].responses[200].schema");
256
- node_assert_1.default.deepStrictEqual(error.details, {
257
- reference: "NonExistentType",
258
- availableTypes: ["User", "Post"],
259
- });
260
- });
261
- });
262
- (0, node_test_1.describe)("Error edge cases", () => {
263
- (0, node_test_1.it)("should handle errors with empty paths", () => {
264
- const error = new errors_1.UniSpecValidationError("Test", "test");
265
- node_assert_1.default.strictEqual(error.path, "");
266
- });
267
- (0, node_test_1.it)("should handle errors with no details", () => {
268
- const error = new errors_1.UniSpecValidationError("Test", "test", "/path");
269
- node_assert_1.default.strictEqual(error.details, undefined);
270
- });
271
- (0, node_test_1.it)("should handle warning severity", () => {
272
- const error = new errors_1.UniSpecValidationError("Warning message", "warning_code", "/path", "warning");
273
- node_assert_1.default.strictEqual(error.severity, "warning");
274
- });
275
- (0, node_test_1.it)("should handle info severity", () => {
276
- const error = new errors_1.UniSpecValidationError("Info message", "info_code", "/path", "info");
277
- node_assert_1.default.strictEqual(error.severity, "info");
278
- });
279
- });
280
- });
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadInvalidExample = exports.loadExample = exports.getExamplePath = void 0;
4
- const utils_1 = require("../../tests/utils.js");
5
- Object.defineProperty(exports, "getExamplePath", { enumerable: true, get: function () { return utils_1.getExamplePath; } });
6
- Object.defineProperty(exports, "loadExample", { enumerable: true, get: function () { return utils_1.loadExample; } });
7
- Object.defineProperty(exports, "loadInvalidExample", { enumerable: true, get: function () { return utils_1.loadInvalidExample; } });
@@ -1,216 +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_fs_1 = __importDefault(require("node:fs"));
8
- const node_test_1 = require("node:test");
9
- const loader_1 = require("../../src/loader/index.js");
10
- const utils_1 = require("../diff/utils.js");
11
- (0, node_test_1.describe)("loader integration tests", () => {
12
- (0, node_test_1.describe)("real examples from @unispechq/unispec-schema", () => {
13
- (0, node_test_1.it)("should load all valid spec examples", async () => {
14
- const validExamples = [
15
- "valid/spec/rest-simple.json",
16
- "valid/spec/graphql-simple.json",
17
- "valid/spec/websocket-simple.json",
18
- "valid/spec/mixed-complete.json",
19
- ];
20
- for (const example of validExamples) {
21
- const examplePath = (0, utils_1.getExamplePath)(...example.split("/"));
22
- const content = node_fs_1.default.readFileSync(examplePath, "utf-8");
23
- const result = await (0, loader_1.loadUniSpec)(content);
24
- // Basic structure validation
25
- node_assert_1.default.ok(result.unispecVersion, `Missing unispecVersion in ${example}`);
26
- node_assert_1.default.ok(result.service, `Missing service in ${example}`);
27
- node_assert_1.default.ok(result.service.name, `Missing service.name in ${example}`);
28
- node_assert_1.default.ok(result.service.protocols, `Missing service.protocols in ${example}`);
29
- }
30
- });
31
- (0, node_test_1.it)("should parse invalid examples but not validate them", async () => {
32
- const invalidExamples = [
33
- "invalid/spec/missing-service-name.json",
34
- "invalid/spec/missing-unispec-version.json",
35
- "invalid/spec/invalid-identifier.json",
36
- "invalid/spec/invalid-rest-method.json",
37
- "invalid/spec/graphql-missing-arg-type.json",
38
- "invalid/spec/graphql-missing-name.json",
39
- ];
40
- for (const example of invalidExamples) {
41
- const examplePath = (0, utils_1.getExamplePath)(...example.split("/"));
42
- const content = node_fs_1.default.readFileSync(examplePath, "utf-8");
43
- // Should parse successfully (loader only handles parsing)
44
- const result = await (0, loader_1.loadUniSpec)(content);
45
- // Should be an object
46
- node_assert_1.default.ok(typeof result === "object", `Failed to parse ${example}`);
47
- }
48
- });
49
- (0, node_test_1.it)("should handle config examples", async () => {
50
- const configExamples = [
51
- "valid/config/complete-enterprise.json",
52
- "valid/config/registry-based.json",
53
- "valid/config/simple-multi-service.json",
54
- ];
55
- for (const example of configExamples) {
56
- const examplePath = (0, utils_1.getExamplePath)(...example.split("/"));
57
- const content = node_fs_1.default.readFileSync(examplePath, "utf-8");
58
- const result = await (0, loader_1.loadUniSpec)(content);
59
- // Config examples should have version
60
- node_assert_1.default.ok(result.version, `Missing version in config ${example}`);
61
- }
62
- });
63
- (0, node_test_1.it)("should handle invalid config examples", async () => {
64
- const invalidConfigExamples = [
65
- "invalid/config/empty-services-array.json",
66
- "invalid/config/invalid-spec-reference.json",
67
- "invalid/config/missing-service-name.json",
68
- "invalid/config/missing-services.json",
69
- "invalid/config/missing-version.json",
70
- ];
71
- for (const example of invalidConfigExamples) {
72
- const examplePath = (0, utils_1.getExamplePath)(...example.split("/"));
73
- const content = node_fs_1.default.readFileSync(examplePath, "utf-8");
74
- // Should parse successfully
75
- const result = await (0, loader_1.loadUniSpec)(content);
76
- node_assert_1.default.ok(typeof result === "object", `Failed to parse ${example}`);
77
- }
78
- });
79
- });
80
- (0, node_test_1.describe)("security validation with real examples", () => {
81
- (0, node_test_1.it)("should validate security of complex examples", () => {
82
- const complexExamplePath = (0, utils_1.getExamplePath)("valid", "spec", "mixed-complete.json");
83
- const content = node_fs_1.default.readFileSync(complexExamplePath, "utf-8");
84
- const parsed = JSON.parse(content);
85
- // Should pass default security validation
86
- (0, loader_1.validateDocumentSecurity)(parsed, {
87
- maxDepth: 100,
88
- maxKeys: 10000,
89
- allowedTags: ["str", "int", "float", "bool", "null", "seq", "map"],
90
- maxDocumentSize: 10 * 1024 * 1024,
91
- strictYamlTags: false,
92
- });
93
- });
94
- (0, node_test_1.it)("should detect depth violations in nested examples", () => {
95
- // Create a deeply nested version of a valid example
96
- const deepExample = {
97
- unispecVersion: "1.0.0",
98
- service: {
99
- name: "test",
100
- },
101
- };
102
- let current = deepExample;
103
- for (let i = 0; i < 105; i++) {
104
- current.nested = {};
105
- current = current.nested;
106
- }
107
- try {
108
- (0, loader_1.validateDocumentSecurity)(deepExample, {
109
- maxDepth: 100,
110
- maxKeys: 10000,
111
- allowedTags: ["str", "int", "float", "bool", "null", "seq", "map"],
112
- maxDocumentSize: 10 * 1024 * 1024,
113
- strictYamlTags: false,
114
- });
115
- node_assert_1.default.fail("Should have thrown depth error");
116
- }
117
- catch (error) {
118
- node_assert_1.default.ok(error instanceof Error);
119
- node_assert_1.default.ok(error.message.includes("depth"));
120
- }
121
- });
122
- });
123
- (0, node_test_1.describe)("yaml parsing edge cases", () => {
124
- (0, node_test_1.it)("should handle YAML with special characters", async () => {
125
- const yamlWithSpecialChars = `
126
- unispecVersion: "1.0.0"
127
- service:
128
- name: "测试服务"
129
- description: "Service with emojis 🚀 and special chars"
130
- protocols:
131
- rest:
132
- routes:
133
- - name: "getUser"
134
- path: "/users/{id}"
135
- method: "GET"
136
- responses:
137
- "200":
138
- description: "Success ✅"
139
- `;
140
- const result = await (0, loader_1.loadUniSpec)(yamlWithSpecialChars);
141
- node_assert_1.default.strictEqual(result.service.name, "测试服务");
142
- node_assert_1.default.ok(result.service.description?.includes("🚀"));
143
- });
144
- (0, node_test_1.it)("should handle YAML with anchors and references", async () => {
145
- const yamlWithAnchors = `
146
- unispecVersion: "1.0.0"
147
- service:
148
- name: "test-service"
149
- protocols:
150
- rest:
151
- routes:
152
- - name: "route1"
153
- method: "GET"
154
- path: "/path1"
155
- responses: &common-responses
156
- "200":
157
- description: "Success"
158
- - name: "route2"
159
- method: "POST"
160
- path: "/path2"
161
- responses: *common-responses
162
- `;
163
- const result = await (0, loader_1.loadUniSpec)(yamlWithAnchors);
164
- node_assert_1.default.strictEqual(result.service.protocols?.rest?.routes?.length, 2);
165
- });
166
- (0, node_test_1.it)("should reject YAML with security issues", async () => {
167
- const yamlWithSecurityIssue = `
168
- unispecVersion: "1.0.0"
169
- service:
170
- name: "test"
171
- protocols: !!js/function >
172
- function() { return require('fs').readFileSync('/etc/passwd') }
173
- `;
174
- try {
175
- await (0, loader_1.loadUniSpec)(yamlWithSecurityIssue);
176
- // If it doesn't throw, that's actually fine - the FAILSAFE_SCHEMA should block this
177
- }
178
- catch (error) {
179
- // Should either parse safely or throw a security-related error
180
- node_assert_1.default.ok(error instanceof Error);
181
- }
182
- });
183
- });
184
- (0, node_test_1.describe)("performance with large examples", () => {
185
- (0, node_test_1.it)("should handle large documents efficiently", async () => {
186
- // Create a large UniSpec document
187
- const largeDoc = {
188
- unispecVersion: "1.0.0",
189
- service: {
190
- name: "large-service",
191
- protocols: {
192
- rest: {
193
- routes: [],
194
- },
195
- },
196
- },
197
- };
198
- // Add many routes
199
- for (let i = 0; i < 1000; i++) {
200
- largeDoc.service.protocols.rest.routes.push({
201
- name: `route${i}`,
202
- path: `/route${i}`,
203
- method: "GET",
204
- responses: {
205
- "200": { description: `Response ${i}` },
206
- },
207
- });
208
- }
209
- const startTime = Date.now();
210
- const result = await (0, loader_1.loadUniSpec)(largeDoc);
211
- const endTime = Date.now();
212
- node_assert_1.default.strictEqual(result.service.protocols?.rest?.routes?.length, 1000);
213
- node_assert_1.default.ok(endTime - startTime < 1000, "Loading should complete within 1 second");
214
- });
215
- });
216
- });