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