@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,28 @@
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 const mergeObjectConstraints = (first, second, getRef) => {
6
+ // Check for type conflicts
7
+ checkTypeConflicts(first, second);
8
+ const result = genericMerge(first, second, getRef, v.record(v.string(), v.any()));
9
+ if (typeof second.additionalProperties === 'object' &&
10
+ typeof first.additionalProperties === 'object') {
11
+ // If both have additionalProperties as schemas, merge them
12
+ result.additionalProperties = mergeSchemasOrRefs(first.additionalProperties, second.additionalProperties, getRef);
13
+ }
14
+ else if (second.additionalProperties !== undefined) {
15
+ result.additionalProperties = second.additionalProperties;
16
+ }
17
+ else if (first.additionalProperties !== undefined) {
18
+ result.additionalProperties = first.additionalProperties;
19
+ }
20
+ // Merge minProperties and maxProperties
21
+ if (second.minProperties !== undefined || first.minProperties !== undefined) {
22
+ result.minProperties = Math.max(second.minProperties ?? 0, first.minProperties ?? 0);
23
+ }
24
+ if (second.maxProperties !== undefined || first.maxProperties !== undefined) {
25
+ result.maxProperties = Math.min(second.maxProperties ?? Infinity, first.maxProperties ?? Infinity);
26
+ }
27
+ return result;
28
+ };
@@ -0,0 +1,2 @@
1
+ import type { SchemaObject, GetRefFn } from './types.js';
2
+ export declare const mergeProperties: (first: SchemaObject, second: SchemaObject, getRef: GetRefFn) => SchemaObject | undefined;
@@ -0,0 +1,25 @@
1
+ import { mergeSchemasOrRefs } from './merge.js';
2
+ export const mergeProperties = (first, second, getRef) => {
3
+ if (containsProperties(first, second)) {
4
+ const properties = { ...first.properties };
5
+ if (!properties) {
6
+ return {
7
+ properties: second.properties
8
+ };
9
+ }
10
+ for (const key in second.properties) {
11
+ if (key in properties) {
12
+ properties[key] = mergeSchemasOrRefs(properties[key], second.properties[key], getRef);
13
+ }
14
+ else {
15
+ properties[key] = second.properties[key];
16
+ }
17
+ }
18
+ return {
19
+ properties
20
+ };
21
+ }
22
+ };
23
+ const containsProperties = (first, second) => {
24
+ return Boolean(first.properties || second.properties);
25
+ };
@@ -0,0 +1,3 @@
1
+ import type { SchemaObject } from './types.js';
2
+ export declare const containsRequired: (first: SchemaObject, second: SchemaObject) => boolean;
3
+ export declare const mergeRequired: (first: SchemaObject, second: SchemaObject) => SchemaObject | undefined;
@@ -0,0 +1,10 @@
1
+ export const containsRequired = (first, second) => {
2
+ return Boolean(first.required || second.required);
3
+ };
4
+ export const mergeRequired = (first, second) => {
5
+ if (containsRequired(first, second)) {
6
+ return {
7
+ required: [...(first.required ?? []), ...(second.required ?? [])]
8
+ };
9
+ }
10
+ };
@@ -0,0 +1,3 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ import type { GetRefFn } from './types.js';
3
+ export declare function mergeStringConstraints(first: OpenAPIV3.SchemaObject, second: OpenAPIV3.SchemaObject, getRef: GetRefFn): OpenAPIV3.SchemaObject;
@@ -0,0 +1,55 @@
1
+ import { genericMerge } from './generic-merge.js';
2
+ import * as v from 'valibot';
3
+ import { checkTypeConflicts } from './check-type-conflicts.js';
4
+ import { checkAtLeastOneTypeMatch } from './check-at-least-one-type-match.js';
5
+ export function mergeStringConstraints(first, second, getRef) {
6
+ checkTypeConflicts(first, second);
7
+ if (!checkAtLeastOneTypeMatch(first, second, 'string')) {
8
+ return genericMerge(first, second, getRef);
9
+ }
10
+ // First merge enum values if present
11
+ const result = genericMerge(first, second, getRef, v.string());
12
+ // Then merge other constraints
13
+ result.type = 'string';
14
+ // Merge minLength
15
+ if (first.minLength !== undefined || second.minLength !== undefined) {
16
+ const minA = first.minLength ?? 0;
17
+ const minB = second.minLength ?? 0;
18
+ result.minLength = Math.max(minA, minB);
19
+ }
20
+ // Merge maxLength
21
+ if (first.maxLength !== undefined || second.maxLength !== undefined) {
22
+ const maxA = first.maxLength ?? Infinity;
23
+ const maxB = second.maxLength ?? Infinity;
24
+ result.maxLength = Math.min(maxA, maxB);
25
+ }
26
+ // Merge pattern
27
+ if (first.pattern !== undefined && second.pattern !== undefined) {
28
+ // If both have patterns, they must match
29
+ if (first.pattern !== second.pattern) {
30
+ throw new Error(`Cannot merge schemas: conflicting patterns '${first.pattern}' and '${second.pattern}'`);
31
+ }
32
+ result.pattern = first.pattern;
33
+ }
34
+ else if (first.pattern !== undefined) {
35
+ result.pattern = first.pattern;
36
+ }
37
+ else if (second.pattern !== undefined) {
38
+ result.pattern = second.pattern;
39
+ }
40
+ // Merge format
41
+ if (first.format !== undefined && second.format !== undefined) {
42
+ // If both have formats, they must match
43
+ if (first.format !== second.format) {
44
+ throw new Error('Incompatible string formats');
45
+ }
46
+ result.format = first.format;
47
+ }
48
+ else if (first.format !== undefined) {
49
+ result.format = first.format;
50
+ }
51
+ else if (second.format !== undefined) {
52
+ result.format = second.format;
53
+ }
54
+ return result;
55
+ }
@@ -0,0 +1,15 @@
1
+ import type { GetRefFn, SchemaOrReference, SchemaObject } from './types.js';
2
+ type MergeUnionArgs = {
3
+ schema: SchemaObject;
4
+ getRef: GetRefFn;
5
+ groupType: 'oneOf' | 'anyOf';
6
+ };
7
+ export declare const mergeUnion: ({ schema, getRef, groupType }: MergeUnionArgs) => SchemaOrReference;
8
+ type MergeCrossProductArgs = {
9
+ first: SchemaObject;
10
+ second: SchemaObject;
11
+ getRef: GetRefFn;
12
+ groupType: 'oneOf' | 'anyOf';
13
+ };
14
+ export declare const mergeCrossProduct: ({ first, second, getRef, groupType }: MergeCrossProductArgs) => SchemaObject;
15
+ export {};
@@ -0,0 +1,53 @@
1
+ import { decomposeUnion } from './decompose-union.js';
2
+ import { mergeSchemasOrRefs } from './merge.js';
3
+ import { crossProduct } from './cross-product.js';
4
+ import { isRef } from '../../../helpers/refFns.js';
5
+ export const mergeUnion = ({ schema, getRef, groupType }) => {
6
+ const { beforeExcluded, decomposed, afterExcluded } = decomposeUnion({ schema, groupType });
7
+ // if (decomposed.length === 1) {
8
+ // console.log('DECOMPOSED', JSON.stringify(decomposed[0], null, 2))
9
+ // const result = {
10
+ // ...beforeExcluded,
11
+ // ...decomposed[0],
12
+ // ...afterExcluded
13
+ // }
14
+ // console.log('MERGED UNION - SHORT', JSON.stringify(result, null, 2))
15
+ // return result
16
+ // }
17
+ const dereffed = decomposed.map(decomposed => {
18
+ return '$ref' in decomposed ? getRef(decomposed) : decomposed;
19
+ });
20
+ const result = dereffed.reduce((acc, decomposed) => {
21
+ const merged = mergeCrossProduct({ first: acc, second: decomposed, getRef, groupType });
22
+ return merged;
23
+ }, {});
24
+ const output = {
25
+ ...beforeExcluded,
26
+ ...result,
27
+ ...afterExcluded
28
+ };
29
+ return output;
30
+ };
31
+ export const mergeCrossProduct = ({ first, second, getRef, groupType }) => {
32
+ const firstGroup = Array.isArray(first[groupType]) ? first[groupType] : [first];
33
+ const secondGroup = Array.isArray(second[groupType]) ? second[groupType] : [second];
34
+ const mergedGroup = crossProduct(firstGroup, secondGroup)
35
+ .map(([firstItem, secondItem]) => {
36
+ try {
37
+ const result = mergeSchemasOrRefs(firstItem, secondItem, getRef);
38
+ return result;
39
+ }
40
+ catch (_error) {
41
+ return undefined;
42
+ }
43
+ })
44
+ .filter(item => item !== undefined);
45
+ return {
46
+ [groupType]: mergedGroup.flatMap(item => {
47
+ if (!isRef(item) && Array.isArray(item[groupType])) {
48
+ return item[groupType];
49
+ }
50
+ return [item];
51
+ })
52
+ };
53
+ };
@@ -0,0 +1,2 @@
1
+ import type { SchemaOrReference, GetRefFn } from './types.js';
2
+ export declare const mergeSchemasOrRefs: (first: SchemaOrReference, second: SchemaOrReference, getRef: GetRefFn) => SchemaOrReference;
@@ -0,0 +1,155 @@
1
+ import { isRef } from '../../../helpers/refFns.js';
2
+ import { checkTypeConflicts } from './check-type-conflicts.js';
3
+ import { checkReadOnlyWriteOnlyConflicts } from './check-read-only-write-only-conflicts.js';
4
+ import { checkFormatConflicts } from './check-format-conflicts.js';
5
+ import { checkEnumConflicts } from './check-enum-conflicts.js';
6
+ import { checkNumberConstraintsConflicts } from './check-number-constraints-conflicts.js';
7
+ import { checkArrayItemTypeConflicts } from './check-array-item-type-conflicts.js';
8
+ import { mergeObjectConstraints } from './merge-object-constraints.js';
9
+ import { mergeArrayConstraints } from './merge-array-constraints.js';
10
+ import { mergeStringConstraints } from './merge-string-constraints.js';
11
+ import { mergeNumberConstraints } from './merge-number-constraints.js';
12
+ import { mergeIntegerConstraints } from './merge-integer-constraints.js';
13
+ import { mergeBooleanConstraints } from './merge-boolean-constraints.js';
14
+ import { genericMerge } from './generic-merge.js';
15
+ import { checkAtLeastOneTypeMatch } from './check-at-least-one-type-match.js';
16
+ import { mergeIntersection } from './merge-intersection.js';
17
+ import { mergeCrossProduct } from './merge-union.js';
18
+ import { isEmpty } from '../../../helpers/isEmpty.js';
19
+ import { isNullOnly, mergeNullOnly } from './nullable-merge.js';
20
+ export const mergeSchemasOrRefs = (first, second, getRef) => {
21
+ if (containsRef(first, second)) {
22
+ return mergeWithRef(first, second, getRef);
23
+ }
24
+ if (isRef(first)) {
25
+ throw new Error('Ref in first');
26
+ }
27
+ if (isRef(second)) {
28
+ throw new Error('Ref in second');
29
+ }
30
+ if (containsAllOf(first) || containsAllOf(second)) {
31
+ const mergedFirst = containsAllOf(first) ? mergeIntersection({ schema: first, getRef }) : first;
32
+ const mergedSecond = containsAllOf(second)
33
+ ? mergeIntersection({ schema: second, getRef })
34
+ : second;
35
+ return mergeSchemasOrRefs(mergedFirst, mergedSecond, getRef);
36
+ }
37
+ if (containsOneOf(first, second)) {
38
+ return mergeCrossProduct({ first, second, getRef, groupType: 'oneOf' });
39
+ }
40
+ if (containsAnyOf(first, second)) {
41
+ return mergeCrossProduct({ first, second, getRef, groupType: 'anyOf' });
42
+ }
43
+ if (isNullOnly(first)) {
44
+ return mergeNullOnly(second);
45
+ }
46
+ if (isNullOnly(second)) {
47
+ return mergeNullOnly(first);
48
+ }
49
+ return mergeSchemas(first, second, getRef);
50
+ };
51
+ const containsAllOf = (schema) => {
52
+ if (schema.allOf) {
53
+ if (schema.allOf?.length) {
54
+ return true;
55
+ }
56
+ throw new Error('Empty allOf');
57
+ }
58
+ return false;
59
+ };
60
+ const containsAnyOf = (first, second) => {
61
+ if (first.anyOf) {
62
+ if (first.anyOf?.length) {
63
+ return true;
64
+ }
65
+ throw new Error('Empty anyOf');
66
+ }
67
+ if (second.anyOf) {
68
+ if (second.anyOf?.length) {
69
+ return true;
70
+ }
71
+ throw new Error('Empty anyOf');
72
+ }
73
+ return false;
74
+ };
75
+ const containsOneOf = (first, second) => {
76
+ if (first.oneOf) {
77
+ if (first.oneOf?.length) {
78
+ return true;
79
+ }
80
+ throw new Error('Empty oneOf');
81
+ }
82
+ if (second.oneOf) {
83
+ if (second.oneOf?.length) {
84
+ return true;
85
+ }
86
+ throw new Error('Empty oneOf');
87
+ }
88
+ return false;
89
+ };
90
+ const containsRef = (first, second) => {
91
+ return isRef(first) || isRef(second);
92
+ };
93
+ const mergeSchemas = (first, second, getRef) => {
94
+ try {
95
+ checkTypeConflicts(first, second);
96
+ }
97
+ catch (e) {
98
+ throw e;
99
+ }
100
+ checkReadOnlyWriteOnlyConflicts(first, second);
101
+ checkFormatConflicts(first, second);
102
+ checkEnumConflicts(first, second);
103
+ checkNumberConstraintsConflicts(first, second);
104
+ checkArrayItemTypeConflicts(first, second);
105
+ if (first.not || second.not) {
106
+ throw new Error('Merging schemas with "not" keyword is not supported');
107
+ }
108
+ return typedMerge(first, second, getRef);
109
+ };
110
+ const typedMerge = (first, second, getRef) => {
111
+ if (!first.type && !second.type) {
112
+ return genericMerge(first, second, getRef);
113
+ }
114
+ if (checkAtLeastOneTypeMatch(first, second, 'object')) {
115
+ return mergeObjectConstraints(first, second, getRef);
116
+ }
117
+ if (checkAtLeastOneTypeMatch(first, second, 'array')) {
118
+ return mergeArrayConstraints(first, second, getRef);
119
+ }
120
+ if (checkAtLeastOneTypeMatch(first, second, 'string')) {
121
+ return mergeStringConstraints(first, second, getRef);
122
+ }
123
+ if (checkAtLeastOneTypeMatch(first, second, 'number')) {
124
+ return mergeNumberConstraints(first, second, getRef);
125
+ }
126
+ if (checkAtLeastOneTypeMatch(first, second, 'integer')) {
127
+ return mergeIntegerConstraints(first, second, getRef);
128
+ }
129
+ if (checkAtLeastOneTypeMatch(first, second, 'boolean')) {
130
+ return mergeBooleanConstraints(first, second, getRef);
131
+ }
132
+ throw new Error(`Cannot merge schemas with type "${first.type}" with type "${second.type}"`);
133
+ };
134
+ const mergeWithRef = (first, second, getRef) => {
135
+ if (isRef(first) && isRef(second)) {
136
+ if (first.$ref === second.$ref) {
137
+ return {
138
+ ...first,
139
+ ...second
140
+ };
141
+ }
142
+ else {
143
+ return mergeSchemas(getRef(first), getRef(second), getRef);
144
+ }
145
+ }
146
+ if (isRef(first) && !isRef(second)) {
147
+ const merged = isEmpty(second) ? first : mergeSchemas(getRef(first), second, getRef);
148
+ return merged;
149
+ }
150
+ if (!isRef(first) && isRef(second)) {
151
+ const merged = isEmpty(first) ? second : mergeSchemas(first, getRef(second), getRef);
152
+ return merged;
153
+ }
154
+ throw new Error('Invalid input');
155
+ };
@@ -0,0 +1,3 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ export declare const mergeNullOnly: (schema: OpenAPIV3.SchemaObject) => OpenAPIV3.SchemaObject;
3
+ export declare const isNullOnly: (schema: OpenAPIV3.SchemaObject) => boolean;
@@ -0,0 +1,12 @@
1
+ import { isEmpty } from '../../../helpers/isEmpty.js';
2
+ export const mergeNullOnly = (schema) => {
3
+ if (schema.enum && !schema.enum.includes(null)) {
4
+ schema.enum.push(null);
5
+ }
6
+ schema.nullable = true;
7
+ return schema;
8
+ };
9
+ export const isNullOnly = (schema) => {
10
+ const { type: _type, nullable, enum: enumValues, ...rest } = schema;
11
+ return (Boolean(nullable) && enumValues?.length === 1 && enumValues[0] === null && isEmpty(rest ?? {}));
12
+ };
@@ -0,0 +1,14 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ import * as v from 'valibot';
3
+ export type GetRefFn = (ref: OpenAPIV3.ReferenceObject) => OpenAPIV3.SchemaObject;
4
+ export type OneOfObject = {
5
+ oneOf?: (OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject)[];
6
+ } & OpenAPIV3.SchemaObject;
7
+ export type AnyOfObject = {
8
+ anyOf?: (OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject)[];
9
+ } & OpenAPIV3.SchemaObject;
10
+ export type SchemaObject = OpenAPIV3.SchemaObject;
11
+ export type ReferenceObject = OpenAPIV3.ReferenceObject;
12
+ export type SchemaOrReference = SchemaObject | ReferenceObject;
13
+ export type ArraySchemaObject = OpenAPIV3.ArraySchemaObject;
14
+ export declare const IntegerSchema: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, "The number must be an integer.">]>;
@@ -0,0 +1,2 @@
1
+ import * as v from 'valibot';
2
+ export const IntegerSchema = v.pipe(v.number(), v.integer('The number must be an integer.'));
@@ -0,0 +1,80 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ import { OasArray } from '../../../oas/array/Array.js';
3
+ import type { ParseContextType } from '../../../context/parseTypes.js';
4
+ import type { StackTrail } from '../../../context/StackTrail.js';
5
+ export type ToArrayArgs = {
6
+ value: OpenAPIV3.ArraySchemaObject;
7
+ stackTrail: StackTrail;
8
+ context: ParseContextType;
9
+ };
10
+ /**
11
+ * Transforms an OpenAPI v3 array schema object into an internal OAS array representation.
12
+ *
13
+ * This function processes OpenAPI array schemas by extracting and parsing nullable values,
14
+ * examples, enumerations, and default values. It handles the complete transformation from
15
+ * raw OpenAPI JSON to the SKMTC internal array representation with proper type safety.
16
+ *
17
+ * The transformation follows a pipeline approach:
18
+ * 1. Parse nullable flag and extract base value
19
+ * 2. Parse example values with nullable support
20
+ * 3. Parse enumeration constraints
21
+ * 4. Parse default values
22
+ * 5. Create final OasArray instance
23
+ *
24
+ * @param args - Transformation arguments
25
+ * @param args.value - The OpenAPI v3 array schema object to transform
26
+ * @param args.context - Parse context providing utilities and tracing
27
+ * @returns Transformed OAS array object with parsed properties
28
+ *
29
+ * @example Basic array transformation
30
+ * ```typescript
31
+ * import { toArray } from '@skmtc/core';
32
+ *
33
+ * const openApiArray = {
34
+ * type: 'array',
35
+ * items: { type: 'string' },
36
+ * maxItems: 10,
37
+ * uniqueItems: true
38
+ * };
39
+ *
40
+ * const oasArray = toArray({
41
+ * value: openApiArray,
42
+ * context: parseContext
43
+ * });
44
+ *
45
+ * console.log(oasArray.maxItems); // 10
46
+ * console.log(oasArray.uniqueItems); // true
47
+ * ```
48
+ *
49
+ * @example Array with nullable and examples
50
+ * ```typescript
51
+ * const complexArray = {
52
+ * type: 'array',
53
+ * items: { type: 'number' },
54
+ * nullable: true,
55
+ * example: [1, 2, 3],
56
+ * default: [],
57
+ * enum: [[1, 2], [3, 4], null]
58
+ * };
59
+ *
60
+ * const oasArray = toArray({
61
+ * value: complexArray,
62
+ * context: parseContext
63
+ * });
64
+ *
65
+ * console.log(oasArray.nullable); // true
66
+ * console.log(oasArray.example); // [1, 2, 3]
67
+ * ```
68
+ */
69
+ export declare const toArray: ({ value, context, stackTrail }: ToArrayArgs) => OasArray;
70
+ type ToParsedArrayArgs<Nullable extends boolean | undefined> = {
71
+ value: Omit<OpenAPIV3.ArraySchemaObject, 'nullable' | 'example' | 'enums' | 'default'>;
72
+ stackTrail: StackTrail;
73
+ context: ParseContextType;
74
+ nullable: Nullable;
75
+ example: Nullable extends true ? unknown[] | null | undefined : unknown[] | undefined;
76
+ enums: Nullable extends true ? (unknown[] | null)[] | undefined : unknown[] | undefined;
77
+ defaultValue: Nullable extends true ? unknown[] | null | undefined : unknown[] | undefined;
78
+ };
79
+ export declare const toParsedArray: <Nullable extends boolean | undefined>({ context, stackTrail, nullable, example, enums, defaultValue, value }: ToParsedArrayArgs<Nullable>) => OasArray<Nullable>;
80
+ export {};
@@ -0,0 +1,165 @@
1
+ import { OasArray } from '../../../oas/array/Array.js';
2
+ import { toSchemaV3 } from '../schema/toSchemasV3.js';
3
+ import { toSpecificationExtensionsV3 } from '../specificationExtensions/toSpecificationExtensionsV3.js';
4
+ import { parseNullable } from '../_helpers/parseNullable.js';
5
+ import { parseEnum } from '../_helpers/parseEnum.js';
6
+ import { parseExample } from '../_helpers/parseExample.js';
7
+ import { parseDefault } from '../_helpers/parseDefault.js';
8
+ import * as v from 'valibot';
9
+ import { oasArrayDataWithoutItems } from '../../../oas/array/array-types.js';
10
+ /**
11
+ * Transforms an OpenAPI v3 array schema object into an internal OAS array representation.
12
+ *
13
+ * This function processes OpenAPI array schemas by extracting and parsing nullable values,
14
+ * examples, enumerations, and default values. It handles the complete transformation from
15
+ * raw OpenAPI JSON to the SKMTC internal array representation with proper type safety.
16
+ *
17
+ * The transformation follows a pipeline approach:
18
+ * 1. Parse nullable flag and extract base value
19
+ * 2. Parse example values with nullable support
20
+ * 3. Parse enumeration constraints
21
+ * 4. Parse default values
22
+ * 5. Create final OasArray instance
23
+ *
24
+ * @param args - Transformation arguments
25
+ * @param args.value - The OpenAPI v3 array schema object to transform
26
+ * @param args.context - Parse context providing utilities and tracing
27
+ * @returns Transformed OAS array object with parsed properties
28
+ *
29
+ * @example Basic array transformation
30
+ * ```typescript
31
+ * import { toArray } from '@skmtc/core';
32
+ *
33
+ * const openApiArray = {
34
+ * type: 'array',
35
+ * items: { type: 'string' },
36
+ * maxItems: 10,
37
+ * uniqueItems: true
38
+ * };
39
+ *
40
+ * const oasArray = toArray({
41
+ * value: openApiArray,
42
+ * context: parseContext
43
+ * });
44
+ *
45
+ * console.log(oasArray.maxItems); // 10
46
+ * console.log(oasArray.uniqueItems); // true
47
+ * ```
48
+ *
49
+ * @example Array with nullable and examples
50
+ * ```typescript
51
+ * const complexArray = {
52
+ * type: 'array',
53
+ * items: { type: 'number' },
54
+ * nullable: true,
55
+ * example: [1, 2, 3],
56
+ * default: [],
57
+ * enum: [[1, 2], [3, 4], null]
58
+ * };
59
+ *
60
+ * const oasArray = toArray({
61
+ * value: complexArray,
62
+ * context: parseContext
63
+ * });
64
+ *
65
+ * console.log(oasArray.nullable); // true
66
+ * console.log(oasArray.example); // [1, 2, 3]
67
+ * ```
68
+ */
69
+ export const toArray = ({ value, context, stackTrail }) => {
70
+ const { nullable, value: valueWithoutNullable } = parseNullable({
71
+ value,
72
+ context,
73
+ stackTrail
74
+ });
75
+ const { example: unparsedExample, ...valueWithoutExample } = valueWithoutNullable;
76
+ const example = parseExample({
77
+ value: unparsedExample,
78
+ context,
79
+ parent: valueWithoutNullable,
80
+ nullable,
81
+ check: isArray,
82
+ toMessage: item => `Removed invalid example. Expected "array", got: ${item}`,
83
+ stackTrail
84
+ });
85
+ const { enum: unparsedEnums, ...valueWithoutEnums } = valueWithoutExample;
86
+ const enums = parseEnum({
87
+ value: unparsedEnums,
88
+ nullable,
89
+ stackTrail,
90
+ parent: valueWithoutExample,
91
+ context,
92
+ check: Array.isArray,
93
+ toMessage: item => `Removed invalid enum. Expected "array", got: ${item}`
94
+ });
95
+ const { default: unparsedDefaultValue, ...valueWithoutDefault } = valueWithoutEnums;
96
+ const defaultValue = parseDefault({
97
+ value: unparsedDefaultValue,
98
+ context,
99
+ parent: valueWithoutEnums,
100
+ nullable,
101
+ check: isArray,
102
+ toMessage: item => `Removed invalid default. Expected "array", got: ${item}`,
103
+ stackTrail
104
+ });
105
+ return toParsedArray({
106
+ context,
107
+ nullable,
108
+ example,
109
+ enums,
110
+ defaultValue,
111
+ stackTrail,
112
+ value: valueWithoutDefault
113
+ });
114
+ };
115
+ export const toParsedArray = ({ context, stackTrail, nullable, example, enums, defaultValue, value }) => {
116
+ // We only want parse non-items fields here since items is handled below
117
+ const { items, ...rest } = value;
118
+ // Parse the object without items field
119
+ if (!v.is(oasArrayDataWithoutItems, rest)) {
120
+ v.parse(oasArrayDataWithoutItems, rest);
121
+ }
122
+ const { type: _type, title, description, uniqueItems, maxItems, minItems, readOnly, writeOnly, deprecated, ...skipped } = rest;
123
+ const extensionFields = toSpecificationExtensionsV3({
124
+ skipped,
125
+ parent: value,
126
+ context,
127
+ stackTrail,
128
+ parentType: 'schema:array'
129
+ });
130
+ return context.withStackTrail(stackTrail, () => new OasArray({
131
+ title,
132
+ description,
133
+ nullable,
134
+ defaultValue,
135
+ items: stackTrail.trace('items', st => {
136
+ // An array schema with no `items` is invalid OAS but must not
137
+ // kill the run (fail open): log the issue and treat the items
138
+ // as unknown — `{}` falls through toSchemaV3 to OasUnknown.
139
+ if (items === undefined) {
140
+ context.logIssue({
141
+ key: 'items',
142
+ level: 'warning',
143
+ message: 'Array schema has no "items" — treating as an array of unknown values',
144
+ parent: value,
145
+ stackTrail: st,
146
+ type: 'INVALID_SCHEMA'
147
+ });
148
+ return toSchemaV3({ schema: {}, stackTrail: st, context });
149
+ }
150
+ return toSchemaV3({ schema: items, stackTrail: st, context });
151
+ }),
152
+ extensionFields,
153
+ example,
154
+ uniqueItems,
155
+ maxItems,
156
+ minItems,
157
+ enums,
158
+ readOnly,
159
+ writeOnly,
160
+ deprecated
161
+ }, context));
162
+ };
163
+ const isArray = (value) => {
164
+ return Array.isArray(value);
165
+ };