@skmtc/core 0.29.0 → 0.31.0

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 (409) hide show
  1. package/esm/_dnt.polyfills.d.ts +11 -0
  2. package/esm/_dnt.polyfills.js +14 -0
  3. package/esm/context/ParseContext.js +9 -1
  4. package/esm/context/generateTypes.d.ts +14 -2
  5. package/esm/context/generateTypes.js +5 -1
  6. package/esm/dsl/GeneratorKeys.d.ts +2 -2
  7. package/esm/dsl/GeneratorKeys.js +6 -3
  8. package/esm/helpers/naming.d.ts +2 -1
  9. package/esm/helpers/naming.js +4 -2
  10. package/esm/mod.d.ts +1 -0
  11. package/esm/mod.js +1 -0
  12. package/esm/oas/discriminator/Discriminator.d.ts +3 -0
  13. package/esm/oas/discriminator/Discriminator.js +7 -0
  14. package/esm/oas/document/Document.d.ts +7 -0
  15. package/esm/oas/document/Document.js +8 -0
  16. package/esm/oas/example/Example.d.ts +10 -1
  17. package/esm/oas/example/Example.js +16 -0
  18. package/esm/oas/header/Header.d.ts +4 -2
  19. package/esm/oas/header/Header.js +12 -5
  20. package/esm/oas/mediaType/MediaType.d.ts +12 -0
  21. package/esm/oas/mediaType/MediaType.js +24 -0
  22. package/esm/oas/mediaType/jsonMediaType.d.ts +50 -0
  23. package/esm/oas/mediaType/jsonMediaType.js +64 -0
  24. package/esm/oas/mediaType/toContentSchema.d.ts +8 -0
  25. package/esm/oas/mediaType/toContentSchema.js +6 -0
  26. package/esm/oas/operation/Operation.d.ts +10 -2
  27. package/esm/oas/operation/Operation.js +20 -7
  28. package/esm/oas/parameter/Parameter.d.ts +3 -2
  29. package/esm/oas/parameter/Parameter.js +11 -5
  30. package/esm/oas/parameter/parameter-types.d.ts +10 -2
  31. package/esm/oas/parameter/parameter-types.js +3 -1
  32. package/esm/oas/requestBody/RequestBody.d.ts +11 -0
  33. package/esm/oas/requestBody/RequestBody.js +16 -2
  34. package/esm/oas/response/Response.d.ts +17 -1
  35. package/esm/oas/response/Response.js +24 -2
  36. package/esm/oas/securitySchemes/SecurityScheme.d.ts +47 -4
  37. package/esm/oas/securitySchemes/SecurityScheme.js +46 -1
  38. package/esm/oas/securitySchemes/security-scheme-types.d.ts +21 -0
  39. package/esm/oas/server/Server.d.ts +8 -2
  40. package/esm/oas/server/Server.js +10 -1
  41. package/esm/oas/tag/Tag.d.ts +9 -0
  42. package/esm/oas/tag/Tag.js +9 -0
  43. package/esm/oas/webhook/Webhook.d.ts +4 -4
  44. package/esm/oas/webhook/Webhook.js +6 -6
  45. package/esm/parse/logBodyMediaTypes.d.ts +27 -0
  46. package/esm/parse/logBodyMediaTypes.js +50 -0
  47. package/esm/parse/toOasDialect.d.ts +8 -7
  48. package/esm/parse/toOasDialect.js +4 -2
  49. package/esm/parse/v3-0/methods.d.ts +11 -0
  50. package/esm/parse/v3-0/methods.js +16 -0
  51. package/esm/parse/v3-0/operation/toOperationsV3.js +5 -5
  52. package/esm/parse/v3-0/parameter/toParameterV3.d.ts +4 -2
  53. package/esm/parse/v3-0/parameter/toParameterV3.js +17 -3
  54. package/esm/parse/v3-0/requestBody/toRequestBodiesV3.js +4 -1
  55. package/esm/parse/v3-0/response/toResponseV3.js +4 -1
  56. package/esm/parse/v3-0/securitySchemes/toSecuritySchemes.js +50 -38
  57. package/esm/parse/v3-0/webhook/toWebhooksV3.js +5 -5
  58. package/esm/parse/v3-1/methods.d.ts +11 -0
  59. package/esm/parse/v3-1/methods.js +16 -0
  60. package/esm/parse/v3-1/operation/toOperationsV3.js +5 -5
  61. package/esm/parse/v3-1/parameter/toParameterV3.d.ts +4 -2
  62. package/esm/parse/v3-1/parameter/toParameterV3.js +17 -3
  63. package/esm/parse/v3-1/requestBody/toRequestBodiesV3.js +4 -1
  64. package/esm/parse/v3-1/response/toResponseV3.js +4 -1
  65. package/esm/parse/v3-1/securitySchemes/toSecuritySchemes.js +50 -38
  66. package/esm/parse/v3-1/webhook/toWebhooksV3.js +5 -5
  67. package/esm/parse/v3-2/_helpers/parseDefault.d.ts +43 -0
  68. package/esm/parse/v3-2/_helpers/parseDefault.js +39 -0
  69. package/esm/parse/v3-2/_helpers/parseEnum.d.ts +13 -0
  70. package/esm/parse/v3-2/_helpers/parseEnum.js +23 -0
  71. package/esm/parse/v3-2/_helpers/parseExample.d.ts +41 -0
  72. package/esm/parse/v3-2/_helpers/parseExample.js +37 -0
  73. package/esm/parse/v3-2/_helpers/parseNullable.d.ts +141 -0
  74. package/esm/parse/v3-2/_helpers/parseNullable.js +140 -0
  75. package/esm/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.d.ts +2 -0
  76. package/esm/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.js +9 -0
  77. package/esm/parse/v3-2/_merge-all-of/check-at-least-one-type-match.d.ts +4 -0
  78. package/esm/parse/v3-2/_merge-all-of/check-at-least-one-type-match.js +5 -0
  79. package/esm/parse/v3-2/_merge-all-of/check-enum-conflicts.d.ts +2 -0
  80. package/esm/parse/v3-2/_merge-all-of/check-enum-conflicts.js +11 -0
  81. package/esm/parse/v3-2/_merge-all-of/check-format-conflicts.d.ts +2 -0
  82. package/esm/parse/v3-2/_merge-all-of/check-format-conflicts.js +5 -0
  83. package/esm/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.d.ts +2 -0
  84. package/esm/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.js +11 -0
  85. package/esm/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.d.ts +2 -0
  86. package/esm/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.js +5 -0
  87. package/esm/parse/v3-2/_merge-all-of/check-type-conflicts.d.ts +2 -0
  88. package/esm/parse/v3-2/_merge-all-of/check-type-conflicts.js +5 -0
  89. package/esm/parse/v3-2/_merge-all-of/cross-product.d.ts +2 -0
  90. package/esm/parse/v3-2/_merge-all-of/cross-product.js +3 -0
  91. package/esm/parse/v3-2/_merge-all-of/decompose-intersection.d.ts +6 -0
  92. package/esm/parse/v3-2/_merge-all-of/decompose-intersection.js +27 -0
  93. package/esm/parse/v3-2/_merge-all-of/decompose-union.d.ts +12 -0
  94. package/esm/parse/v3-2/_merge-all-of/decompose-union.js +69 -0
  95. package/esm/parse/v3-2/_merge-all-of/generic-merge.d.ts +3 -0
  96. package/esm/parse/v3-2/_merge-all-of/generic-merge.js +12 -0
  97. package/esm/parse/v3-2/_merge-all-of/is-equal.d.ts +1 -0
  98. package/esm/parse/v3-2/_merge-all-of/is-equal.js +19 -0
  99. package/esm/parse/v3-2/_merge-all-of/merge-array-constraints.d.ts +2 -0
  100. package/esm/parse/v3-2/_merge-all-of/merge-array-constraints.js +44 -0
  101. package/esm/parse/v3-2/_merge-all-of/merge-boolean-constraints.d.ts +3 -0
  102. package/esm/parse/v3-2/_merge-all-of/merge-boolean-constraints.js +7 -0
  103. package/esm/parse/v3-2/_merge-all-of/merge-enum-values.d.ts +3 -0
  104. package/esm/parse/v3-2/_merge-all-of/merge-enum-values.js +32 -0
  105. package/esm/parse/v3-2/_merge-all-of/merge-integer-constraints.d.ts +3 -0
  106. package/esm/parse/v3-2/_merge-all-of/merge-integer-constraints.js +41 -0
  107. package/esm/parse/v3-2/_merge-all-of/merge-intersection.d.ts +8 -0
  108. package/esm/parse/v3-2/_merge-all-of/merge-intersection.js +16 -0
  109. package/esm/parse/v3-2/_merge-all-of/merge-number-constraints.d.ts +3 -0
  110. package/esm/parse/v3-2/_merge-all-of/merge-number-constraints.js +41 -0
  111. package/esm/parse/v3-2/_merge-all-of/merge-object-constraints.d.ts +5 -0
  112. package/esm/parse/v3-2/_merge-all-of/merge-object-constraints.js +28 -0
  113. package/esm/parse/v3-2/_merge-all-of/merge-properties.d.ts +2 -0
  114. package/esm/parse/v3-2/_merge-all-of/merge-properties.js +25 -0
  115. package/esm/parse/v3-2/_merge-all-of/merge-required.d.ts +3 -0
  116. package/esm/parse/v3-2/_merge-all-of/merge-required.js +10 -0
  117. package/esm/parse/v3-2/_merge-all-of/merge-string-constraints.d.ts +3 -0
  118. package/esm/parse/v3-2/_merge-all-of/merge-string-constraints.js +55 -0
  119. package/esm/parse/v3-2/_merge-all-of/merge-union.d.ts +15 -0
  120. package/esm/parse/v3-2/_merge-all-of/merge-union.js +53 -0
  121. package/esm/parse/v3-2/_merge-all-of/merge.d.ts +2 -0
  122. package/esm/parse/v3-2/_merge-all-of/merge.js +155 -0
  123. package/esm/parse/v3-2/_merge-all-of/nullable-merge.d.ts +3 -0
  124. package/esm/parse/v3-2/_merge-all-of/nullable-merge.js +12 -0
  125. package/esm/parse/v3-2/_merge-all-of/types.d.ts +14 -0
  126. package/esm/parse/v3-2/_merge-all-of/types.js +2 -0
  127. package/esm/parse/v3-2/array/toArray.d.ts +80 -0
  128. package/esm/parse/v3-2/array/toArray.js +165 -0
  129. package/esm/parse/v3-2/boolean/toBoolean.d.ts +78 -0
  130. package/esm/parse/v3-2/boolean/toBoolean.js +139 -0
  131. package/esm/parse/v3-2/components/toComponentsV3.d.ts +14 -0
  132. package/esm/parse/v3-2/components/toComponentsV3.js +43 -0
  133. package/esm/parse/v3-2/contact/toContactV3.d.ts +5 -0
  134. package/esm/parse/v3-2/contact/toContactV3.js +18 -0
  135. package/esm/parse/v3-2/discriminator/toDiscriminatorV3.d.ts +14 -0
  136. package/esm/parse/v3-2/discriminator/toDiscriminatorV3.js +21 -0
  137. package/esm/parse/v3-2/document/toDocumentFieldsV3.d.ts +16 -0
  138. package/esm/parse/v3-2/document/toDocumentFieldsV3.js +33 -0
  139. package/esm/parse/v3-2/example/toExamplesV3.d.ts +77 -0
  140. package/esm/parse/v3-2/example/toExamplesV3.js +143 -0
  141. package/esm/parse/v3-2/externalDocs/toExternalDocs.d.ts +10 -0
  142. package/esm/parse/v3-2/externalDocs/toExternalDocs.js +15 -0
  143. package/esm/parse/v3-2/header/toHeadersV3.d.ts +18 -0
  144. package/esm/parse/v3-2/header/toHeadersV3.js +47 -0
  145. package/esm/parse/v3-2/info/toInfoV3.d.ts +10 -0
  146. package/esm/parse/v3-2/info/toInfoV3.js +23 -0
  147. package/esm/parse/v3-2/integer/toInteger.d.ts +21 -0
  148. package/esm/parse/v3-2/integer/toInteger.js +115 -0
  149. package/esm/parse/v3-2/license/toLicenseV3.d.ts +5 -0
  150. package/esm/parse/v3-2/license/toLicenseV3.js +17 -0
  151. package/esm/parse/v3-2/link/toLinksV3.d.ts +16 -0
  152. package/esm/parse/v3-2/link/toLinksV3.js +40 -0
  153. package/esm/parse/v3-2/mediaType/toMediaTypeItemV3.d.ts +323 -0
  154. package/esm/parse/v3-2/mediaType/toMediaTypeItemV3.js +375 -0
  155. package/esm/parse/v3-2/methods.d.ts +17 -0
  156. package/esm/parse/v3-2/methods.js +21 -0
  157. package/esm/parse/v3-2/number/toNumber.d.ts +10 -0
  158. package/esm/parse/v3-2/number/toNumber.js +115 -0
  159. package/esm/parse/v3-2/object/toAdditionalPropertiesV3.d.ts +11 -0
  160. package/esm/parse/v3-2/object/toAdditionalPropertiesV3.js +10 -0
  161. package/esm/parse/v3-2/object/toObject.d.ts +10 -0
  162. package/esm/parse/v3-2/object/toObject.js +90 -0
  163. package/esm/parse/v3-2/operation/toOperationsV3.d.ts +25 -0
  164. package/esm/parse/v3-2/operation/toOperationsV3.js +129 -0
  165. package/esm/parse/v3-2/parameter/toParameterV3.d.ts +39 -0
  166. package/esm/parse/v3-2/parameter/toParameterV3.js +152 -0
  167. package/esm/parse/v3-2/parameter/warnQuerystringConflictsV3.d.ts +22 -0
  168. package/esm/parse/v3-2/parameter/warnQuerystringConflictsV3.js +39 -0
  169. package/esm/parse/v3-2/pathItem/dropAdditionalOperationsV3.d.ts +17 -0
  170. package/esm/parse/v3-2/pathItem/dropAdditionalOperationsV3.js +34 -0
  171. package/esm/parse/v3-2/pathItem/toPathItemV3.d.ts +23 -0
  172. package/esm/parse/v3-2/pathItem/toPathItemV3.js +45 -0
  173. package/esm/parse/v3-2/ref/toRefV31.d.ts +19 -0
  174. package/esm/parse/v3-2/ref/toRefV31.js +10 -0
  175. package/esm/parse/v3-2/requestBody/toRequestBodiesV3.d.ts +18 -0
  176. package/esm/parse/v3-2/requestBody/toRequestBodiesV3.js +47 -0
  177. package/esm/parse/v3-2/response/toResponseV3.d.ts +29 -0
  178. package/esm/parse/v3-2/response/toResponseV3.js +59 -0
  179. package/esm/parse/v3-2/schema/toSchemasV3.d.ts +29 -0
  180. package/esm/parse/v3-2/schema/toSchemasV3.js +511 -0
  181. package/esm/parse/v3-2/securityRequirement/toSecurityRequirement.d.ts +9 -0
  182. package/esm/parse/v3-2/securityRequirement/toSecurityRequirement.js +9 -0
  183. package/esm/parse/v3-2/securitySchemes/toSecuritySchemes.d.ts +17 -0
  184. package/esm/parse/v3-2/securitySchemes/toSecuritySchemes.js +152 -0
  185. package/esm/parse/v3-2/server/toServerV3.d.ts +26 -0
  186. package/esm/parse/v3-2/server/toServerV3.js +31 -0
  187. package/esm/parse/v3-2/serverVariable/toServerVariableV3.d.ts +22 -0
  188. package/esm/parse/v3-2/serverVariable/toServerVariableV3.js +30 -0
  189. package/esm/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.d.ts +14 -0
  190. package/esm/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.js +25 -0
  191. package/esm/parse/v3-2/string/toString.d.ts +146 -0
  192. package/esm/parse/v3-2/string/toString.js +211 -0
  193. package/esm/parse/v3-2/tag/toTagsV3.d.ts +22 -0
  194. package/esm/parse/v3-2/tag/toTagsV3.js +78 -0
  195. package/esm/parse/v3-2/union/toUnion.d.ts +12 -0
  196. package/esm/parse/v3-2/union/toUnion.js +68 -0
  197. package/esm/parse/v3-2/unknown/toUnknown.d.ts +10 -0
  198. package/esm/parse/v3-2/unknown/toUnknown.js +19 -0
  199. package/esm/parse/v3-2/webhook/toWebhooksV3.d.ts +48 -0
  200. package/esm/parse/v3-2/webhook/toWebhooksV3.js +139 -0
  201. package/esm/types/Method.d.ts +7 -4
  202. package/esm/types/Method.js +17 -4
  203. package/esm/types/Preview.d.ts +2 -1
  204. package/esm/types/SkmtcDocument.d.ts +6 -6
  205. package/package.json +1 -1
  206. package/script/_dnt.polyfills.d.ts +11 -0
  207. package/script/_dnt.polyfills.js +14 -0
  208. package/script/context/ParseContext.js +9 -1
  209. package/script/context/generateTypes.d.ts +14 -2
  210. package/script/context/generateTypes.js +5 -1
  211. package/script/dsl/GeneratorKeys.d.ts +2 -2
  212. package/script/dsl/GeneratorKeys.js +6 -3
  213. package/script/helpers/naming.d.ts +2 -1
  214. package/script/helpers/naming.js +4 -2
  215. package/script/mod.d.ts +1 -0
  216. package/script/mod.js +1 -0
  217. package/script/oas/discriminator/Discriminator.d.ts +3 -0
  218. package/script/oas/discriminator/Discriminator.js +7 -0
  219. package/script/oas/document/Document.d.ts +7 -0
  220. package/script/oas/document/Document.js +8 -0
  221. package/script/oas/example/Example.d.ts +10 -1
  222. package/script/oas/example/Example.js +16 -0
  223. package/script/oas/header/Header.d.ts +4 -2
  224. package/script/oas/header/Header.js +12 -5
  225. package/script/oas/mediaType/MediaType.d.ts +12 -0
  226. package/script/oas/mediaType/MediaType.js +24 -0
  227. package/script/oas/mediaType/jsonMediaType.d.ts +50 -0
  228. package/script/oas/mediaType/jsonMediaType.js +71 -0
  229. package/script/oas/mediaType/toContentSchema.d.ts +8 -0
  230. package/script/oas/mediaType/toContentSchema.js +10 -0
  231. package/script/oas/operation/Operation.d.ts +10 -2
  232. package/script/oas/operation/Operation.js +20 -7
  233. package/script/oas/parameter/Parameter.d.ts +3 -2
  234. package/script/oas/parameter/Parameter.js +11 -5
  235. package/script/oas/parameter/parameter-types.d.ts +10 -2
  236. package/script/oas/parameter/parameter-types.js +3 -1
  237. package/script/oas/requestBody/RequestBody.d.ts +11 -0
  238. package/script/oas/requestBody/RequestBody.js +16 -2
  239. package/script/oas/response/Response.d.ts +17 -1
  240. package/script/oas/response/Response.js +24 -2
  241. package/script/oas/securitySchemes/SecurityScheme.d.ts +47 -4
  242. package/script/oas/securitySchemes/SecurityScheme.js +46 -1
  243. package/script/oas/securitySchemes/security-scheme-types.d.ts +21 -0
  244. package/script/oas/server/Server.d.ts +8 -2
  245. package/script/oas/server/Server.js +10 -1
  246. package/script/oas/tag/Tag.d.ts +9 -0
  247. package/script/oas/tag/Tag.js +9 -0
  248. package/script/oas/webhook/Webhook.d.ts +4 -4
  249. package/script/oas/webhook/Webhook.js +6 -6
  250. package/script/parse/logBodyMediaTypes.d.ts +27 -0
  251. package/script/parse/logBodyMediaTypes.js +54 -0
  252. package/script/parse/toOasDialect.d.ts +8 -7
  253. package/script/parse/toOasDialect.js +4 -2
  254. package/script/parse/v3-0/methods.d.ts +11 -0
  255. package/script/parse/v3-0/methods.js +20 -0
  256. package/script/parse/v3-0/operation/toOperationsV3.js +5 -5
  257. package/script/parse/v3-0/parameter/toParameterV3.d.ts +4 -2
  258. package/script/parse/v3-0/parameter/toParameterV3.js +17 -3
  259. package/script/parse/v3-0/requestBody/toRequestBodiesV3.js +4 -1
  260. package/script/parse/v3-0/response/toResponseV3.js +4 -1
  261. package/script/parse/v3-0/securitySchemes/toSecuritySchemes.js +49 -37
  262. package/script/parse/v3-0/webhook/toWebhooksV3.js +5 -5
  263. package/script/parse/v3-1/methods.d.ts +11 -0
  264. package/script/parse/v3-1/methods.js +20 -0
  265. package/script/parse/v3-1/operation/toOperationsV3.js +5 -5
  266. package/script/parse/v3-1/parameter/toParameterV3.d.ts +4 -2
  267. package/script/parse/v3-1/parameter/toParameterV3.js +17 -3
  268. package/script/parse/v3-1/requestBody/toRequestBodiesV3.js +4 -1
  269. package/script/parse/v3-1/response/toResponseV3.js +4 -1
  270. package/script/parse/v3-1/securitySchemes/toSecuritySchemes.js +49 -37
  271. package/script/parse/v3-1/webhook/toWebhooksV3.js +5 -5
  272. package/script/parse/v3-2/_helpers/parseDefault.d.ts +43 -0
  273. package/script/parse/v3-2/_helpers/parseDefault.js +43 -0
  274. package/script/parse/v3-2/_helpers/parseEnum.d.ts +13 -0
  275. package/script/parse/v3-2/_helpers/parseEnum.js +27 -0
  276. package/script/parse/v3-2/_helpers/parseExample.d.ts +41 -0
  277. package/script/parse/v3-2/_helpers/parseExample.js +41 -0
  278. package/script/parse/v3-2/_helpers/parseNullable.d.ts +141 -0
  279. package/script/parse/v3-2/_helpers/parseNullable.js +144 -0
  280. package/script/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.d.ts +2 -0
  281. package/script/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.js +13 -0
  282. package/script/parse/v3-2/_merge-all-of/check-at-least-one-type-match.d.ts +4 -0
  283. package/script/parse/v3-2/_merge-all-of/check-at-least-one-type-match.js +9 -0
  284. package/script/parse/v3-2/_merge-all-of/check-enum-conflicts.d.ts +2 -0
  285. package/script/parse/v3-2/_merge-all-of/check-enum-conflicts.js +15 -0
  286. package/script/parse/v3-2/_merge-all-of/check-format-conflicts.d.ts +2 -0
  287. package/script/parse/v3-2/_merge-all-of/check-format-conflicts.js +9 -0
  288. package/script/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.d.ts +2 -0
  289. package/script/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.js +15 -0
  290. package/script/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.d.ts +2 -0
  291. package/script/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.js +9 -0
  292. package/script/parse/v3-2/_merge-all-of/check-type-conflicts.d.ts +2 -0
  293. package/script/parse/v3-2/_merge-all-of/check-type-conflicts.js +9 -0
  294. package/script/parse/v3-2/_merge-all-of/cross-product.d.ts +2 -0
  295. package/script/parse/v3-2/_merge-all-of/cross-product.js +7 -0
  296. package/script/parse/v3-2/_merge-all-of/decompose-intersection.d.ts +6 -0
  297. package/script/parse/v3-2/_merge-all-of/decompose-intersection.js +31 -0
  298. package/script/parse/v3-2/_merge-all-of/decompose-union.d.ts +12 -0
  299. package/script/parse/v3-2/_merge-all-of/decompose-union.js +73 -0
  300. package/script/parse/v3-2/_merge-all-of/generic-merge.d.ts +3 -0
  301. package/script/parse/v3-2/_merge-all-of/generic-merge.js +16 -0
  302. package/script/parse/v3-2/_merge-all-of/is-equal.d.ts +1 -0
  303. package/script/parse/v3-2/_merge-all-of/is-equal.js +23 -0
  304. package/script/parse/v3-2/_merge-all-of/merge-array-constraints.d.ts +2 -0
  305. package/script/parse/v3-2/_merge-all-of/merge-array-constraints.js +80 -0
  306. package/script/parse/v3-2/_merge-all-of/merge-boolean-constraints.d.ts +3 -0
  307. package/script/parse/v3-2/_merge-all-of/merge-boolean-constraints.js +43 -0
  308. package/script/parse/v3-2/_merge-all-of/merge-enum-values.d.ts +3 -0
  309. package/script/parse/v3-2/_merge-all-of/merge-enum-values.js +68 -0
  310. package/script/parse/v3-2/_merge-all-of/merge-integer-constraints.d.ts +3 -0
  311. package/script/parse/v3-2/_merge-all-of/merge-integer-constraints.js +77 -0
  312. package/script/parse/v3-2/_merge-all-of/merge-intersection.d.ts +8 -0
  313. package/script/parse/v3-2/_merge-all-of/merge-intersection.js +20 -0
  314. package/script/parse/v3-2/_merge-all-of/merge-number-constraints.d.ts +3 -0
  315. package/script/parse/v3-2/_merge-all-of/merge-number-constraints.js +77 -0
  316. package/script/parse/v3-2/_merge-all-of/merge-object-constraints.d.ts +5 -0
  317. package/script/parse/v3-2/_merge-all-of/merge-object-constraints.js +65 -0
  318. package/script/parse/v3-2/_merge-all-of/merge-properties.d.ts +2 -0
  319. package/script/parse/v3-2/_merge-all-of/merge-properties.js +29 -0
  320. package/script/parse/v3-2/_merge-all-of/merge-required.d.ts +3 -0
  321. package/script/parse/v3-2/_merge-all-of/merge-required.js +15 -0
  322. package/script/parse/v3-2/_merge-all-of/merge-string-constraints.d.ts +3 -0
  323. package/script/parse/v3-2/_merge-all-of/merge-string-constraints.js +91 -0
  324. package/script/parse/v3-2/_merge-all-of/merge-union.d.ts +15 -0
  325. package/script/parse/v3-2/_merge-all-of/merge-union.js +58 -0
  326. package/script/parse/v3-2/_merge-all-of/merge.d.ts +2 -0
  327. package/script/parse/v3-2/_merge-all-of/merge.js +159 -0
  328. package/script/parse/v3-2/_merge-all-of/nullable-merge.d.ts +3 -0
  329. package/script/parse/v3-2/_merge-all-of/nullable-merge.js +17 -0
  330. package/script/parse/v3-2/_merge-all-of/types.d.ts +14 -0
  331. package/script/parse/v3-2/_merge-all-of/types.js +38 -0
  332. package/script/parse/v3-2/array/toArray.d.ts +80 -0
  333. package/script/parse/v3-2/array/toArray.js +203 -0
  334. package/script/parse/v3-2/boolean/toBoolean.d.ts +78 -0
  335. package/script/parse/v3-2/boolean/toBoolean.js +177 -0
  336. package/script/parse/v3-2/components/toComponentsV3.d.ts +14 -0
  337. package/script/parse/v3-2/components/toComponentsV3.js +47 -0
  338. package/script/parse/v3-2/contact/toContactV3.d.ts +5 -0
  339. package/script/parse/v3-2/contact/toContactV3.js +22 -0
  340. package/script/parse/v3-2/discriminator/toDiscriminatorV3.d.ts +14 -0
  341. package/script/parse/v3-2/discriminator/toDiscriminatorV3.js +25 -0
  342. package/script/parse/v3-2/document/toDocumentFieldsV3.d.ts +16 -0
  343. package/script/parse/v3-2/document/toDocumentFieldsV3.js +37 -0
  344. package/script/parse/v3-2/example/toExamplesV3.d.ts +77 -0
  345. package/script/parse/v3-2/example/toExamplesV3.js +149 -0
  346. package/script/parse/v3-2/externalDocs/toExternalDocs.d.ts +10 -0
  347. package/script/parse/v3-2/externalDocs/toExternalDocs.js +52 -0
  348. package/script/parse/v3-2/header/toHeadersV3.d.ts +18 -0
  349. package/script/parse/v3-2/header/toHeadersV3.js +51 -0
  350. package/script/parse/v3-2/info/toInfoV3.d.ts +10 -0
  351. package/script/parse/v3-2/info/toInfoV3.js +27 -0
  352. package/script/parse/v3-2/integer/toInteger.d.ts +21 -0
  353. package/script/parse/v3-2/integer/toInteger.js +153 -0
  354. package/script/parse/v3-2/license/toLicenseV3.d.ts +5 -0
  355. package/script/parse/v3-2/license/toLicenseV3.js +21 -0
  356. package/script/parse/v3-2/link/toLinksV3.d.ts +16 -0
  357. package/script/parse/v3-2/link/toLinksV3.js +44 -0
  358. package/script/parse/v3-2/mediaType/toMediaTypeItemV3.d.ts +323 -0
  359. package/script/parse/v3-2/mediaType/toMediaTypeItemV3.js +381 -0
  360. package/script/parse/v3-2/methods.d.ts +17 -0
  361. package/script/parse/v3-2/methods.js +25 -0
  362. package/script/parse/v3-2/number/toNumber.d.ts +10 -0
  363. package/script/parse/v3-2/number/toNumber.js +152 -0
  364. package/script/parse/v3-2/object/toAdditionalPropertiesV3.d.ts +11 -0
  365. package/script/parse/v3-2/object/toAdditionalPropertiesV3.js +14 -0
  366. package/script/parse/v3-2/object/toObject.d.ts +10 -0
  367. package/script/parse/v3-2/object/toObject.js +94 -0
  368. package/script/parse/v3-2/operation/toOperationsV3.d.ts +25 -0
  369. package/script/parse/v3-2/operation/toOperationsV3.js +134 -0
  370. package/script/parse/v3-2/parameter/toParameterV3.d.ts +39 -0
  371. package/script/parse/v3-2/parameter/toParameterV3.js +191 -0
  372. package/script/parse/v3-2/parameter/warnQuerystringConflictsV3.d.ts +22 -0
  373. package/script/parse/v3-2/parameter/warnQuerystringConflictsV3.js +43 -0
  374. package/script/parse/v3-2/pathItem/dropAdditionalOperationsV3.d.ts +17 -0
  375. package/script/parse/v3-2/pathItem/dropAdditionalOperationsV3.js +38 -0
  376. package/script/parse/v3-2/pathItem/toPathItemV3.d.ts +23 -0
  377. package/script/parse/v3-2/pathItem/toPathItemV3.js +50 -0
  378. package/script/parse/v3-2/ref/toRefV31.d.ts +19 -0
  379. package/script/parse/v3-2/ref/toRefV31.js +14 -0
  380. package/script/parse/v3-2/requestBody/toRequestBodiesV3.d.ts +18 -0
  381. package/script/parse/v3-2/requestBody/toRequestBodiesV3.js +52 -0
  382. package/script/parse/v3-2/response/toResponseV3.d.ts +29 -0
  383. package/script/parse/v3-2/response/toResponseV3.js +65 -0
  384. package/script/parse/v3-2/schema/toSchemasV3.d.ts +29 -0
  385. package/script/parse/v3-2/schema/toSchemasV3.js +518 -0
  386. package/script/parse/v3-2/securityRequirement/toSecurityRequirement.d.ts +9 -0
  387. package/script/parse/v3-2/securityRequirement/toSecurityRequirement.js +13 -0
  388. package/script/parse/v3-2/securitySchemes/toSecuritySchemes.d.ts +17 -0
  389. package/script/parse/v3-2/securitySchemes/toSecuritySchemes.js +189 -0
  390. package/script/parse/v3-2/server/toServerV3.d.ts +26 -0
  391. package/script/parse/v3-2/server/toServerV3.js +37 -0
  392. package/script/parse/v3-2/serverVariable/toServerVariableV3.d.ts +22 -0
  393. package/script/parse/v3-2/serverVariable/toServerVariableV3.js +36 -0
  394. package/script/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.d.ts +14 -0
  395. package/script/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.js +30 -0
  396. package/script/parse/v3-2/string/toString.d.ts +146 -0
  397. package/script/parse/v3-2/string/toString.js +249 -0
  398. package/script/parse/v3-2/tag/toTagsV3.d.ts +22 -0
  399. package/script/parse/v3-2/tag/toTagsV3.js +83 -0
  400. package/script/parse/v3-2/union/toUnion.d.ts +12 -0
  401. package/script/parse/v3-2/union/toUnion.js +72 -0
  402. package/script/parse/v3-2/unknown/toUnknown.d.ts +10 -0
  403. package/script/parse/v3-2/unknown/toUnknown.js +23 -0
  404. package/script/parse/v3-2/webhook/toWebhooksV3.d.ts +48 -0
  405. package/script/parse/v3-2/webhook/toWebhooksV3.js +144 -0
  406. package/script/types/Method.d.ts +7 -4
  407. package/script/types/Method.js +17 -4
  408. package/script/types/Preview.d.ts +2 -1
  409. package/script/types/SkmtcDocument.d.ts +6 -6
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Parses and validates the nullable property from OpenAPI schema objects.
3
+ *
4
+ * This function extracts and validates the `nullable` property from OpenAPI
5
+ * schema objects, ensuring it's a valid boolean value. Invalid nullable values
6
+ * are removed and logged as warnings through the parse context.
7
+ *
8
+ * The nullable property determines whether a schema value can be null in addition
9
+ * to its primary type, which affects type generation and validation logic.
10
+ *
11
+ * @template Value - The OpenAPI schema object type
12
+ *
13
+ * @param args - Parsing configuration
14
+ * @returns Parsed nullable data with the validated flag and cleaned schema
15
+ *
16
+ * @example Valid nullable property
17
+ * ```typescript
18
+ * import { parseNullable } from '@skmtc/core/oas/_helpers';
19
+ *
20
+ * const result = parseNullable({
21
+ * value: {
22
+ * type: 'string',
23
+ * nullable: true,
24
+ * description: 'An optional string that can be null'
25
+ * },
26
+ * context: parseContext
27
+ * });
28
+ *
29
+ * console.log(result.nullable); // true
30
+ * console.log(result.value); // { type: 'string', description: 'An optional string that can be null' }
31
+ * ```
32
+ *
33
+ * @example Explicitly non-nullable
34
+ * ```typescript
35
+ * const result = parseNullable({
36
+ * value: {
37
+ * type: 'number',
38
+ * nullable: false,
39
+ * minimum: 0
40
+ * },
41
+ * context: parseContext
42
+ * });
43
+ *
44
+ * console.log(result.nullable); // false
45
+ * console.log(result.value); // { type: 'number', minimum: 0 }
46
+ * ```
47
+ *
48
+ * @example Missing nullable property (undefined)
49
+ * ```typescript
50
+ * const result = parseNullable({
51
+ * value: {
52
+ * type: 'string',
53
+ * format: 'email'
54
+ * },
55
+ * context: parseContext
56
+ * });
57
+ *
58
+ * console.log(result.nullable); // undefined (property not present)
59
+ * console.log(result.value); // { type: 'string', format: 'email' }
60
+ * ```
61
+ *
62
+ * @example Invalid nullable value
63
+ * ```typescript
64
+ * const result = parseNullable({
65
+ * value: {
66
+ * type: 'boolean',
67
+ * nullable: 'yes', // Invalid - should be boolean
68
+ * description: 'A flag'
69
+ * } as any,
70
+ * context: parseContext
71
+ * });
72
+ *
73
+ * console.log(result.nullable); // undefined (invalid value removed)
74
+ * console.log(result.value); // { type: 'boolean', description: 'A flag' }
75
+ * // Context will log a warning about the invalid nullable value
76
+ * ```
77
+ *
78
+ * @example Usage in type generation
79
+ * ```typescript
80
+ * function generateTypeScript(schema: OpenAPIV3.SchemaObject) {
81
+ * const { nullable, value } = parseNullable({ value: schema, context });
82
+ *
83
+ * const baseType = generateBaseType(value);
84
+ * const nullableType = nullable ? ` | null` : '';
85
+ *
86
+ * return `${baseType}${nullableType}`;
87
+ * }
88
+ *
89
+ * // Examples:
90
+ * // nullable: true -> 'string | null'
91
+ * // nullable: false -> 'string'
92
+ * // nullable: undefined -> 'string' (default behavior)
93
+ * ```
94
+ *
95
+ * @example Complex schema with nullable
96
+ * ```typescript
97
+ * const result = parseNullable({
98
+ * value: {
99
+ * type: 'object',
100
+ * properties: {
101
+ * name: { type: 'string' },
102
+ * age: { type: 'number' }
103
+ * },
104
+ * required: ['name'],
105
+ * nullable: true // The entire object can be null
106
+ * },
107
+ * context: parseContext
108
+ * });
109
+ *
110
+ * console.log(result.nullable); // true
111
+ * // Generated type might be: { name: string; age?: number } | null
112
+ * ```
113
+ */
114
+ export const parseNullable = ({ value, stackTrail, context }) => {
115
+ if (value.nullable === undefined) {
116
+ return {
117
+ nullable: undefined,
118
+ value: value
119
+ };
120
+ }
121
+ const { nullable, ...rest } = value;
122
+ if (typeof nullable === 'boolean') {
123
+ return {
124
+ nullable: nullable,
125
+ value: rest
126
+ };
127
+ }
128
+ context.logIssue({
129
+ key: 'nullable',
130
+ stackTrail,
131
+ parent: value,
132
+ level: 'warning',
133
+ message: `Invalid nullable: ${value}`,
134
+ type: 'INVALID_NULLABLE'
135
+ });
136
+ return {
137
+ nullable: undefined,
138
+ value: rest
139
+ };
140
+ };
@@ -0,0 +1,2 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ export declare const checkArrayItemTypeConflicts: (a: OpenAPIV3.SchemaObject, b: OpenAPIV3.SchemaObject) => void;
@@ -0,0 +1,9 @@
1
+ export const checkArrayItemTypeConflicts = (a, b) => {
2
+ if (a.type === 'array' && b.type === 'array' && 'items' in a && 'items' in b) {
3
+ const aItems = a.items;
4
+ const bItems = b.items;
5
+ if (aItems.type && bItems.type && aItems.type !== bItems.type) {
6
+ throw new Error(`Cannot merge schemas: array items have conflicting types '${aItems.type}' and '${bItems.type}'`);
7
+ }
8
+ }
9
+ };
@@ -0,0 +1,4 @@
1
+ import type { SchemaObject } from './types.js';
2
+ type SchemaType = 'string' | 'number' | 'integer' | 'boolean' | 'object' | 'array';
3
+ export declare const checkAtLeastOneTypeMatch: (first: SchemaObject, second: SchemaObject, type: SchemaType) => boolean;
4
+ export {};
@@ -0,0 +1,5 @@
1
+ export const checkAtLeastOneTypeMatch = (first, second, type) => {
2
+ return ((first.type === type && second.type === type) ||
3
+ (first.type === type && !second.type) ||
4
+ (!first.type && second.type === type));
5
+ };
@@ -0,0 +1,2 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ export declare const checkEnumConflicts: (first: OpenAPIV3.SchemaObject, second: OpenAPIV3.SchemaObject) => void;
@@ -0,0 +1,11 @@
1
+ import { isEqual } from './is-equal.js';
2
+ export const checkEnumConflicts = (first, second) => {
3
+ if (first.enum && second.enum) {
4
+ const intersection = first.enum.filter(value => {
5
+ return second.enum.some(bValue => isEqual(value, bValue));
6
+ });
7
+ if (intersection.length === 0) {
8
+ throw new Error(`Cannot merge schemas: enum values have no intersection. First: ${first.enum}, Second: ${second.enum}`);
9
+ }
10
+ }
11
+ };
@@ -0,0 +1,2 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ export declare const checkFormatConflicts: (a: OpenAPIV3.SchemaObject, b: OpenAPIV3.SchemaObject) => void;
@@ -0,0 +1,5 @@
1
+ export const checkFormatConflicts = (a, b) => {
2
+ if (a.format && b.format && a.format !== b.format) {
3
+ throw new Error(`Cannot merge schemas: conflicting formats '${a.format}' and '${b.format}'`);
4
+ }
5
+ };
@@ -0,0 +1,2 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ export declare const checkNumberConstraintsConflicts: (a: OpenAPIV3.SchemaObject, b: OpenAPIV3.SchemaObject) => void;
@@ -0,0 +1,11 @@
1
+ export const checkNumberConstraintsConflicts = (a, b) => {
2
+ if (a.type === 'number' && b.type === 'number') {
3
+ const aMin = a.minimum ?? -Infinity;
4
+ const aMax = a.maximum ?? Infinity;
5
+ const bMin = b.minimum ?? -Infinity;
6
+ const bMax = b.maximum ?? Infinity;
7
+ if (aMin > bMax || bMin > aMax) {
8
+ throw new Error(`Cannot merge schemas: incompatible number ranges [${aMin},${aMax}] and [${bMin},${bMax}]`);
9
+ }
10
+ }
11
+ };
@@ -0,0 +1,2 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ export declare const checkReadOnlyWriteOnlyConflicts: (a: OpenAPIV3.SchemaObject, b: OpenAPIV3.SchemaObject) => void;
@@ -0,0 +1,5 @@
1
+ export const checkReadOnlyWriteOnlyConflicts = (a, b) => {
2
+ if ((a.readOnly && b.writeOnly) || (a.writeOnly && b.readOnly)) {
3
+ throw new Error('Cannot merge schemas: property cannot be both readOnly and writeOnly');
4
+ }
5
+ };
@@ -0,0 +1,2 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ export declare const checkTypeConflicts: (first: OpenAPIV3.SchemaObject, second: OpenAPIV3.SchemaObject) => void;
@@ -0,0 +1,5 @@
1
+ export const checkTypeConflicts = (first, second) => {
2
+ if (first.type && second.type && first.type !== second.type) {
3
+ throw new Error(`Cannot merge schemas: conflicting types '${first.type}' and '${second.type}', ${JSON.stringify(first)} and ${JSON.stringify(second)}`);
4
+ }
5
+ };
@@ -0,0 +1,2 @@
1
+ import type { SchemaOrReference } from './types.js';
2
+ export declare const crossProduct: (a: SchemaOrReference[], b: SchemaOrReference[]) => [SchemaOrReference, SchemaOrReference][];
@@ -0,0 +1,3 @@
1
+ export const crossProduct = (a, b) => {
2
+ return a.reduce((acc, x) => [...acc, ...b.map((y) => [x, y])], []);
3
+ };
@@ -0,0 +1,6 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ type DecomposeIntersectionArgs = {
3
+ schema: OpenAPIV3.SchemaObject;
4
+ };
5
+ export declare const decomposeIntersection: ({ schema }: DecomposeIntersectionArgs) => (OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject)[];
6
+ export {};
@@ -0,0 +1,27 @@
1
+ // Convert a schema object into an array of schemas that can be merged iteratively into a new schema
2
+ export const decomposeIntersection = ({ schema }) => {
3
+ if (!schema.allOf) {
4
+ return [schema];
5
+ }
6
+ let location = 'before';
7
+ const output = {
8
+ before: [],
9
+ inside: [],
10
+ after: []
11
+ };
12
+ for (const [key, value] of Object.entries(schema)) {
13
+ if (key === 'allOf') {
14
+ // do not decompose wrapper for unions (oneOf, anyOf)
15
+ output.inside = value;
16
+ location = 'after';
17
+ }
18
+ else {
19
+ output[location].push([key, value]);
20
+ }
21
+ }
22
+ return [
23
+ output.before.length > 0 ? Object.fromEntries(output.before) : undefined,
24
+ ...output.inside,
25
+ output.after.length > 0 ? Object.fromEntries(output.after) : undefined
26
+ ].filter(item => item !== undefined);
27
+ };
@@ -0,0 +1,12 @@
1
+ import type { SchemaObject, ReferenceObject } from './types.js';
2
+ type DecomposeUnionArgs = {
3
+ schema: SchemaObject;
4
+ groupType: 'oneOf' | 'anyOf';
5
+ };
6
+ type DecomposeUnionReturn = {
7
+ beforeExcluded: SchemaObject;
8
+ decomposed: (SchemaObject | ReferenceObject)[];
9
+ afterExcluded: SchemaObject;
10
+ };
11
+ export declare const decomposeUnion: ({ schema, groupType }: DecomposeUnionArgs) => DecomposeUnionReturn;
12
+ export {};
@@ -0,0 +1,69 @@
1
+ // Convert a schema object into an array of schemas that can be merged iteratively into a new schema
2
+ export const decomposeUnion = ({ schema, groupType }) => {
3
+ if (!schema[groupType]) {
4
+ return {
5
+ beforeExcluded: {},
6
+ decomposed: [schema],
7
+ afterExcluded: {}
8
+ };
9
+ }
10
+ let location = 'before';
11
+ const output = {
12
+ before: [],
13
+ inside: [],
14
+ after: []
15
+ };
16
+ for (const [key, value] of Object.entries(schema)) {
17
+ if (key === groupType) {
18
+ // do not decompose wrapper for unions (oneOf, anyOf)
19
+ output.inside = [{ [groupType]: value }];
20
+ location = 'after';
21
+ }
22
+ else {
23
+ output[location].push([key, value]);
24
+ }
25
+ }
26
+ const { retained: before, excluded: beforeExcluded } = exclude(output.before);
27
+ const { retained: after, excluded: afterExcluded } = exclude(output.after);
28
+ const decomposed = [
29
+ before.length > 0 ? Object.fromEntries(before) : undefined,
30
+ ...output.inside,
31
+ after.length > 0 ? Object.fromEntries(after) : undefined
32
+ ].filter(item => item !== undefined);
33
+ const result = {
34
+ beforeExcluded: Object.fromEntries(beforeExcluded),
35
+ decomposed,
36
+ afterExcluded: Object.fromEntries(afterExcluded)
37
+ };
38
+ return result;
39
+ };
40
+ // Union-level keys: kept on the union (via beforeExcluded/afterExcluded)
41
+ // rather than cross-product-merged into each member. Merging a metadata key
42
+ // *into* a member would resolve `$ref` members (to merge it in), losing their
43
+ // names — `toUnion` already captures these on the union itself.
44
+ // (`not` is deliberately NOT excluded here — it has no faithful TypeScript
45
+ // representation, so a schema using it is refused upstream in `toSchemaV3`
46
+ // rather than silently dropped from the union.)
47
+ const excludedProperties = [
48
+ 'discriminator',
49
+ 'default',
50
+ 'description',
51
+ 'title',
52
+ 'nullable',
53
+ 'example',
54
+ 'examples',
55
+ 'readOnly',
56
+ 'writeOnly',
57
+ 'deprecated'
58
+ ];
59
+ const exclude = (entries) => {
60
+ return entries.reduce((acc, [key, value]) => {
61
+ if (excludedProperties.includes(key)) {
62
+ acc.excluded.push([key, value]);
63
+ }
64
+ else {
65
+ acc.retained.push([key, value]);
66
+ }
67
+ return acc;
68
+ }, { retained: [], excluded: [] });
69
+ };
@@ -0,0 +1,3 @@
1
+ import type { SchemaObject, GetRefFn } from './types.js';
2
+ import type * as v from 'valibot';
3
+ export declare const genericMerge: <T>(first: SchemaObject, second: SchemaObject, getRef: GetRefFn, typeCheck?: v.GenericSchema<T>) => SchemaObject;
@@ -0,0 +1,12 @@
1
+ import { mergeEnumValues } from './merge-enum-values.js';
2
+ import { mergeProperties } from './merge-properties.js';
3
+ import { mergeRequired } from './merge-required.js';
4
+ export const genericMerge = (first, second, getRef, typeCheck) => {
5
+ return {
6
+ ...first,
7
+ ...second,
8
+ ...mergeProperties(first, second, getRef),
9
+ ...mergeRequired(first, second),
10
+ ...mergeEnumValues(first, second, typeCheck)
11
+ };
12
+ };
@@ -0,0 +1 @@
1
+ export declare const isEqual: (first: unknown, second: unknown) => boolean;
@@ -0,0 +1,19 @@
1
+ export const isEqual = (first, second) => {
2
+ if (Array.isArray(first) && Array.isArray(second)) {
3
+ if (first.length !== second.length)
4
+ return false;
5
+ return first.every((value, index) => isEqual(value, second[index]));
6
+ }
7
+ if (typeof first === 'object' &&
8
+ typeof second === 'object' &&
9
+ first !== null &&
10
+ second !== null) {
11
+ const aKeys = Object.keys(first);
12
+ const bKeys = Object.keys(second);
13
+ if (aKeys.length !== bKeys.length)
14
+ return false;
15
+ return aKeys.every(key => bKeys.includes(key) &&
16
+ isEqual(first[key], second[key]));
17
+ }
18
+ return first === second;
19
+ };
@@ -0,0 +1,2 @@
1
+ import type { ArraySchemaObject, GetRefFn, SchemaObject } from './types.js';
2
+ export declare function mergeArrayConstraints(first: ArraySchemaObject | SchemaObject, second: ArraySchemaObject | SchemaObject, getRef: GetRefFn): ArraySchemaObject;
@@ -0,0 +1,44 @@
1
+ import { mergeSchemasOrRefs } from './merge.js';
2
+ import { genericMerge } from './generic-merge.js';
3
+ import * as v from 'valibot';
4
+ import { checkTypeConflicts } from './check-type-conflicts.js';
5
+ export function mergeArrayConstraints(first, second, getRef) {
6
+ checkTypeConflicts(first, second);
7
+ if (!('items' in first) && !('items' in second)) {
8
+ throw new Error('Cannot merge array constraints: no items found');
9
+ }
10
+ const result = {
11
+ ...genericMerge(first, second, getRef, v.array(v.any())),
12
+ type: 'array',
13
+ items: mergeItems(first, second, getRef)
14
+ };
15
+ // Merge minItems
16
+ if (first.minItems !== undefined || second.minItems !== undefined) {
17
+ const minA = first.minItems ?? 0;
18
+ const minB = second.minItems ?? 0;
19
+ result.minItems = Math.max(minA, minB);
20
+ }
21
+ // Merge maxItems
22
+ if (first.maxItems !== undefined || second.maxItems !== undefined) {
23
+ const maxA = first.maxItems ?? Infinity;
24
+ const maxB = second.maxItems ?? Infinity;
25
+ result.maxItems = Math.min(maxA, maxB);
26
+ }
27
+ // Merge uniqueItems
28
+ if (first.uniqueItems || second.uniqueItems) {
29
+ result.uniqueItems = true;
30
+ }
31
+ return result;
32
+ }
33
+ const mergeItems = (first, second, getRef) => {
34
+ if ('items' in first && 'items' in second && first.items && second.items) {
35
+ return mergeSchemasOrRefs(first.items, second.items, getRef);
36
+ }
37
+ if ('items' in first && first.items) {
38
+ return first.items;
39
+ }
40
+ if ('items' in second && second.items) {
41
+ return second.items;
42
+ }
43
+ throw new Error('Cannot merge array constraints: no items found');
44
+ };
@@ -0,0 +1,3 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ import type { GetRefFn } from './types.js';
3
+ export declare function mergeBooleanConstraints(first: OpenAPIV3.SchemaObject, second: OpenAPIV3.SchemaObject, getRef: GetRefFn): OpenAPIV3.SchemaObject;
@@ -0,0 +1,7 @@
1
+ import { genericMerge } from './generic-merge.js';
2
+ import * as v from 'valibot';
3
+ import { checkTypeConflicts } from './check-type-conflicts.js';
4
+ export function mergeBooleanConstraints(first, second, getRef) {
5
+ checkTypeConflicts(first, second);
6
+ return genericMerge(first, second, getRef, v.boolean());
7
+ }
@@ -0,0 +1,3 @@
1
+ import type { SchemaObject } from './types.js';
2
+ import * as v from 'valibot';
3
+ export declare function mergeEnumValues<T>(first: SchemaObject, second: SchemaObject, typeCheck?: v.GenericSchema<T>): Pick<SchemaObject, 'enum'>;
@@ -0,0 +1,32 @@
1
+ import { isEqual } from './is-equal.js';
2
+ import * as v from 'valibot';
3
+ const containsEnum = (schema) => {
4
+ return Array.isArray(schema.enum);
5
+ };
6
+ export function mergeEnumValues(first, second, typeCheck) {
7
+ if (!containsEnum(first) && !containsEnum(second)) {
8
+ return {};
9
+ }
10
+ if (!containsEnum(first) && containsEnum(second)) {
11
+ return {
12
+ enum: second.enum
13
+ };
14
+ }
15
+ if (containsEnum(first) && !containsEnum(second)) {
16
+ return {
17
+ enum: first.enum
18
+ };
19
+ }
20
+ // Find intersection of enum values
21
+ const intersection = first
22
+ .enum.filter(value => second.enum.some(bValue => isEqual(value, bValue)))
23
+ .map(value => (typeCheck ? (v.is(typeCheck, value) ? value : undefined) : value));
24
+ // If intersection is empty, throw error
25
+ if (intersection.length === 0) {
26
+ throw new Error('Merged schema has empty enum array');
27
+ }
28
+ // Return merged schema with intersection of enum values
29
+ return {
30
+ enum: intersection
31
+ };
32
+ }
@@ -0,0 +1,3 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ import type { GetRefFn } from './types.js';
3
+ export declare function mergeIntegerConstraints(first: OpenAPIV3.SchemaObject, second: OpenAPIV3.SchemaObject, getRef: GetRefFn): OpenAPIV3.SchemaObject;
@@ -0,0 +1,41 @@
1
+ import { genericMerge } from './generic-merge.js';
2
+ import * as v from 'valibot';
3
+ import { checkTypeConflicts } from './check-type-conflicts.js';
4
+ export function mergeIntegerConstraints(first, second, getRef) {
5
+ checkTypeConflicts(first, second);
6
+ // First merge enum values if present
7
+ const result = genericMerge(first, second, getRef, v.number());
8
+ // Then merge other constraints
9
+ result.type = 'integer';
10
+ // Merge minimum and exclusiveMinimum
11
+ if (first.minimum !== undefined || second.minimum !== undefined) {
12
+ const minA = first.minimum ?? -Infinity;
13
+ const minB = second.minimum ?? -Infinity;
14
+ result.minimum = Math.max(minA, minB);
15
+ // If either minimum is exclusive, the result is exclusive
16
+ if (first.exclusiveMinimum || second.exclusiveMinimum) {
17
+ result.exclusiveMinimum = true;
18
+ }
19
+ }
20
+ // Merge maximum and exclusiveMaximum
21
+ if (first.maximum !== undefined || second.maximum !== undefined) {
22
+ const maxA = first.maximum ?? Infinity;
23
+ const maxB = second.maximum ?? Infinity;
24
+ result.maximum = Math.min(maxA, maxB);
25
+ // If either maximum is exclusive, the result is exclusive
26
+ if (first.exclusiveMaximum || second.exclusiveMaximum) {
27
+ result.exclusiveMaximum = true;
28
+ }
29
+ }
30
+ // Merge multipleOf
31
+ if (first.multipleOf !== undefined && second.multipleOf !== undefined) {
32
+ result.multipleOf = first.multipleOf * second.multipleOf;
33
+ }
34
+ else if (first.multipleOf !== undefined) {
35
+ result.multipleOf = first.multipleOf;
36
+ }
37
+ else if (second.multipleOf !== undefined) {
38
+ result.multipleOf = second.multipleOf;
39
+ }
40
+ return result;
41
+ }
@@ -0,0 +1,8 @@
1
+ import type { GetRefFn, SchemaOrReference, SchemaObject } from './types.js';
2
+ type MergeIntersectionArgs = {
3
+ schema: SchemaObject;
4
+ getRef: GetRefFn;
5
+ throwOnConflict?: boolean;
6
+ };
7
+ export declare const mergeIntersection: ({ schema, getRef }: MergeIntersectionArgs) => SchemaOrReference;
8
+ export {};
@@ -0,0 +1,16 @@
1
+ import { decomposeIntersection } from './decompose-intersection.js';
2
+ import { mergeSchemasOrRefs } from './merge.js';
3
+ export const mergeIntersection = ({ schema, getRef }) => {
4
+ const decomposed = decomposeIntersection({ schema });
5
+ if (decomposed.length === 1) {
6
+ return decomposed[0];
7
+ }
8
+ const dereffed = decomposed.map(decomposed => {
9
+ return '$ref' in decomposed ? getRef(decomposed) : decomposed;
10
+ });
11
+ const result = dereffed.reduce((acc, decomposed) => {
12
+ const merged = mergeSchemasOrRefs(acc, decomposed, getRef);
13
+ return merged;
14
+ }, {});
15
+ return result;
16
+ };
@@ -0,0 +1,3 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ import type { GetRefFn } from './types.js';
3
+ export declare function mergeNumberConstraints(first: OpenAPIV3.SchemaObject, second: OpenAPIV3.SchemaObject, getRef: GetRefFn): OpenAPIV3.SchemaObject;
@@ -0,0 +1,41 @@
1
+ import { genericMerge } from './generic-merge.js';
2
+ import * as v from 'valibot';
3
+ import { checkTypeConflicts } from './check-type-conflicts.js';
4
+ export function mergeNumberConstraints(first, second, getRef) {
5
+ checkTypeConflicts(first, second);
6
+ // First merge enum values if present
7
+ const result = genericMerge(first, second, getRef, v.number());
8
+ // Then merge other constraints
9
+ result.type = 'number';
10
+ // Merge minimum and exclusiveMinimum
11
+ if (first.minimum !== undefined || second.minimum !== undefined) {
12
+ const minA = first.minimum ?? -Infinity;
13
+ const minB = second.minimum ?? -Infinity;
14
+ result.minimum = Math.max(minA, minB);
15
+ // If either minimum is exclusive, the result is exclusive
16
+ if (first.exclusiveMinimum || second.exclusiveMinimum) {
17
+ result.exclusiveMinimum = true;
18
+ }
19
+ }
20
+ // Merge maximum and exclusiveMaximum
21
+ if (first.maximum !== undefined || second.maximum !== undefined) {
22
+ const maxA = first.maximum ?? Infinity;
23
+ const maxB = second.maximum ?? Infinity;
24
+ result.maximum = Math.min(maxA, maxB);
25
+ // If either maximum is exclusive, the result is exclusive
26
+ if (first.exclusiveMaximum || second.exclusiveMaximum) {
27
+ result.exclusiveMaximum = true;
28
+ }
29
+ }
30
+ // Merge multipleOf
31
+ if (first.multipleOf !== undefined && second.multipleOf !== undefined) {
32
+ result.multipleOf = first.multipleOf * second.multipleOf;
33
+ }
34
+ else if (first.multipleOf !== undefined) {
35
+ result.multipleOf = first.multipleOf;
36
+ }
37
+ else if (second.multipleOf !== undefined) {
38
+ result.multipleOf = second.multipleOf;
39
+ }
40
+ return result;
41
+ }
@@ -0,0 +1,5 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ type SchemaObject = OpenAPIV3.SchemaObject;
3
+ type ReferenceObject = OpenAPIV3.ReferenceObject;
4
+ export declare const mergeObjectConstraints: (first: SchemaObject, second: SchemaObject, getRef: (ref: ReferenceObject) => SchemaObject) => SchemaObject;
5
+ export {};