@skmtc/core 0.28.7 → 0.30.1

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 (427) hide show
  1. package/esm/_dnt.polyfills.d.ts +11 -0
  2. package/esm/_dnt.polyfills.js +14 -0
  3. package/esm/context/GenerateContext.js +16 -16
  4. package/esm/context/ParseContext.js +9 -1
  5. package/esm/context/RenderContext.d.ts +7 -7
  6. package/esm/context/RenderContext.js +17 -12
  7. package/esm/context/generateTypes.d.ts +2 -2
  8. package/esm/context/generateTypes.js +3 -1
  9. package/esm/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.d.ts +16 -0
  10. package/esm/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.js +23 -0
  11. package/esm/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.d.ts +16 -0
  12. package/esm/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.js +38 -0
  13. package/esm/dsl/GeneratorKeys.d.ts +2 -2
  14. package/esm/dsl/GeneratorKeys.js +6 -3
  15. package/esm/dsl/model/ModelDriver.js +4 -3
  16. package/esm/dsl/operation/gql/GqlOperationDriver.js +4 -3
  17. package/esm/dsl/operation/oas/OasOperationDriver.js +4 -3
  18. package/esm/dsl/webhook/WebhookDriver.js +4 -3
  19. package/esm/helpers/applyGeneratedSuffix.js +1 -1
  20. package/esm/helpers/isImported.d.ts +10 -74
  21. package/esm/helpers/isImported.js +12 -76
  22. package/esm/helpers/naming.d.ts +2 -1
  23. package/esm/helpers/naming.js +4 -2
  24. package/esm/helpers/normalizeWorkspacePath.d.ts +64 -0
  25. package/esm/helpers/normalizeWorkspacePath.js +98 -0
  26. package/esm/helpers/toResolvedArtifactPath.d.ts +8 -5
  27. package/esm/helpers/toResolvedArtifactPath.js +11 -7
  28. package/esm/helpers/toWorkspacePath.d.ts +3 -3
  29. package/esm/helpers/toWorkspacePath.js +5 -5
  30. package/esm/mod.d.ts +1 -0
  31. package/esm/mod.js +1 -0
  32. package/esm/oas/discriminator/Discriminator.d.ts +3 -0
  33. package/esm/oas/discriminator/Discriminator.js +7 -0
  34. package/esm/oas/document/Document.d.ts +7 -0
  35. package/esm/oas/document/Document.js +8 -0
  36. package/esm/oas/example/Example.d.ts +10 -1
  37. package/esm/oas/example/Example.js +16 -0
  38. package/esm/oas/mediaType/MediaType.d.ts +12 -0
  39. package/esm/oas/mediaType/MediaType.js +24 -0
  40. package/esm/oas/parameter/Parameter.d.ts +2 -1
  41. package/esm/oas/parameter/Parameter.js +5 -2
  42. package/esm/oas/parameter/parameter-types.d.ts +10 -2
  43. package/esm/oas/parameter/parameter-types.js +3 -1
  44. package/esm/oas/response/Response.d.ts +6 -1
  45. package/esm/oas/response/Response.js +8 -0
  46. package/esm/oas/securitySchemes/SecurityScheme.d.ts +47 -4
  47. package/esm/oas/securitySchemes/SecurityScheme.js +46 -1
  48. package/esm/oas/securitySchemes/security-scheme-types.d.ts +21 -0
  49. package/esm/oas/server/Server.d.ts +8 -2
  50. package/esm/oas/server/Server.js +10 -1
  51. package/esm/oas/tag/Tag.d.ts +9 -0
  52. package/esm/oas/tag/Tag.js +9 -0
  53. package/esm/parse/toOasDialect.d.ts +8 -7
  54. package/esm/parse/toOasDialect.js +4 -2
  55. package/esm/parse/v3-0/methods.d.ts +11 -0
  56. package/esm/parse/v3-0/methods.js +16 -0
  57. package/esm/parse/v3-0/operation/toOperationsV3.js +5 -5
  58. package/esm/parse/v3-0/parameter/toParameterV3.d.ts +4 -2
  59. package/esm/parse/v3-0/parameter/toParameterV3.js +17 -3
  60. package/esm/parse/v3-0/securitySchemes/toSecuritySchemes.js +50 -38
  61. package/esm/parse/v3-0/webhook/toWebhooksV3.js +5 -5
  62. package/esm/parse/v3-1/methods.d.ts +11 -0
  63. package/esm/parse/v3-1/methods.js +16 -0
  64. package/esm/parse/v3-1/operation/toOperationsV3.js +5 -5
  65. package/esm/parse/v3-1/parameter/toParameterV3.d.ts +4 -2
  66. package/esm/parse/v3-1/parameter/toParameterV3.js +17 -3
  67. package/esm/parse/v3-1/securitySchemes/toSecuritySchemes.js +50 -38
  68. package/esm/parse/v3-1/webhook/toWebhooksV3.js +5 -5
  69. package/esm/parse/v3-2/_helpers/parseDefault.d.ts +43 -0
  70. package/esm/parse/v3-2/_helpers/parseDefault.js +39 -0
  71. package/esm/parse/v3-2/_helpers/parseEnum.d.ts +13 -0
  72. package/esm/parse/v3-2/_helpers/parseEnum.js +23 -0
  73. package/esm/parse/v3-2/_helpers/parseExample.d.ts +41 -0
  74. package/esm/parse/v3-2/_helpers/parseExample.js +37 -0
  75. package/esm/parse/v3-2/_helpers/parseNullable.d.ts +141 -0
  76. package/esm/parse/v3-2/_helpers/parseNullable.js +140 -0
  77. package/esm/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.d.ts +2 -0
  78. package/esm/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.js +9 -0
  79. package/esm/parse/v3-2/_merge-all-of/check-at-least-one-type-match.d.ts +4 -0
  80. package/esm/parse/v3-2/_merge-all-of/check-at-least-one-type-match.js +5 -0
  81. package/esm/parse/v3-2/_merge-all-of/check-enum-conflicts.d.ts +2 -0
  82. package/esm/parse/v3-2/_merge-all-of/check-enum-conflicts.js +11 -0
  83. package/esm/parse/v3-2/_merge-all-of/check-format-conflicts.d.ts +2 -0
  84. package/esm/parse/v3-2/_merge-all-of/check-format-conflicts.js +5 -0
  85. package/esm/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.d.ts +2 -0
  86. package/esm/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.js +11 -0
  87. package/esm/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.d.ts +2 -0
  88. package/esm/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.js +5 -0
  89. package/esm/parse/v3-2/_merge-all-of/check-type-conflicts.d.ts +2 -0
  90. package/esm/parse/v3-2/_merge-all-of/check-type-conflicts.js +5 -0
  91. package/esm/parse/v3-2/_merge-all-of/cross-product.d.ts +2 -0
  92. package/esm/parse/v3-2/_merge-all-of/cross-product.js +3 -0
  93. package/esm/parse/v3-2/_merge-all-of/decompose-intersection.d.ts +6 -0
  94. package/esm/parse/v3-2/_merge-all-of/decompose-intersection.js +27 -0
  95. package/esm/parse/v3-2/_merge-all-of/decompose-union.d.ts +12 -0
  96. package/esm/parse/v3-2/_merge-all-of/decompose-union.js +69 -0
  97. package/esm/parse/v3-2/_merge-all-of/generic-merge.d.ts +3 -0
  98. package/esm/parse/v3-2/_merge-all-of/generic-merge.js +12 -0
  99. package/esm/parse/v3-2/_merge-all-of/is-equal.d.ts +1 -0
  100. package/esm/parse/v3-2/_merge-all-of/is-equal.js +19 -0
  101. package/esm/parse/v3-2/_merge-all-of/merge-array-constraints.d.ts +2 -0
  102. package/esm/parse/v3-2/_merge-all-of/merge-array-constraints.js +44 -0
  103. package/esm/parse/v3-2/_merge-all-of/merge-boolean-constraints.d.ts +3 -0
  104. package/esm/parse/v3-2/_merge-all-of/merge-boolean-constraints.js +7 -0
  105. package/esm/parse/v3-2/_merge-all-of/merge-enum-values.d.ts +3 -0
  106. package/esm/parse/v3-2/_merge-all-of/merge-enum-values.js +32 -0
  107. package/esm/parse/v3-2/_merge-all-of/merge-integer-constraints.d.ts +3 -0
  108. package/esm/parse/v3-2/_merge-all-of/merge-integer-constraints.js +41 -0
  109. package/esm/parse/v3-2/_merge-all-of/merge-intersection.d.ts +8 -0
  110. package/esm/parse/v3-2/_merge-all-of/merge-intersection.js +16 -0
  111. package/esm/parse/v3-2/_merge-all-of/merge-number-constraints.d.ts +3 -0
  112. package/esm/parse/v3-2/_merge-all-of/merge-number-constraints.js +41 -0
  113. package/esm/parse/v3-2/_merge-all-of/merge-object-constraints.d.ts +5 -0
  114. package/esm/parse/v3-2/_merge-all-of/merge-object-constraints.js +28 -0
  115. package/esm/parse/v3-2/_merge-all-of/merge-properties.d.ts +2 -0
  116. package/esm/parse/v3-2/_merge-all-of/merge-properties.js +25 -0
  117. package/esm/parse/v3-2/_merge-all-of/merge-required.d.ts +3 -0
  118. package/esm/parse/v3-2/_merge-all-of/merge-required.js +10 -0
  119. package/esm/parse/v3-2/_merge-all-of/merge-string-constraints.d.ts +3 -0
  120. package/esm/parse/v3-2/_merge-all-of/merge-string-constraints.js +55 -0
  121. package/esm/parse/v3-2/_merge-all-of/merge-union.d.ts +15 -0
  122. package/esm/parse/v3-2/_merge-all-of/merge-union.js +53 -0
  123. package/esm/parse/v3-2/_merge-all-of/merge.d.ts +2 -0
  124. package/esm/parse/v3-2/_merge-all-of/merge.js +155 -0
  125. package/esm/parse/v3-2/_merge-all-of/nullable-merge.d.ts +3 -0
  126. package/esm/parse/v3-2/_merge-all-of/nullable-merge.js +12 -0
  127. package/esm/parse/v3-2/_merge-all-of/types.d.ts +14 -0
  128. package/esm/parse/v3-2/_merge-all-of/types.js +2 -0
  129. package/esm/parse/v3-2/array/toArray.d.ts +80 -0
  130. package/esm/parse/v3-2/array/toArray.js +165 -0
  131. package/esm/parse/v3-2/boolean/toBoolean.d.ts +78 -0
  132. package/esm/parse/v3-2/boolean/toBoolean.js +139 -0
  133. package/esm/parse/v3-2/components/toComponentsV3.d.ts +14 -0
  134. package/esm/parse/v3-2/components/toComponentsV3.js +43 -0
  135. package/esm/parse/v3-2/contact/toContactV3.d.ts +5 -0
  136. package/esm/parse/v3-2/contact/toContactV3.js +18 -0
  137. package/esm/parse/v3-2/discriminator/toDiscriminatorV3.d.ts +14 -0
  138. package/esm/parse/v3-2/discriminator/toDiscriminatorV3.js +21 -0
  139. package/esm/parse/v3-2/document/toDocumentFieldsV3.d.ts +16 -0
  140. package/esm/parse/v3-2/document/toDocumentFieldsV3.js +33 -0
  141. package/esm/parse/v3-2/example/toExamplesV3.d.ts +77 -0
  142. package/esm/parse/v3-2/example/toExamplesV3.js +143 -0
  143. package/esm/parse/v3-2/externalDocs/toExternalDocs.d.ts +10 -0
  144. package/esm/parse/v3-2/externalDocs/toExternalDocs.js +15 -0
  145. package/esm/parse/v3-2/header/toHeadersV3.d.ts +18 -0
  146. package/esm/parse/v3-2/header/toHeadersV3.js +47 -0
  147. package/esm/parse/v3-2/info/toInfoV3.d.ts +10 -0
  148. package/esm/parse/v3-2/info/toInfoV3.js +23 -0
  149. package/esm/parse/v3-2/integer/toInteger.d.ts +21 -0
  150. package/esm/parse/v3-2/integer/toInteger.js +115 -0
  151. package/esm/parse/v3-2/license/toLicenseV3.d.ts +5 -0
  152. package/esm/parse/v3-2/license/toLicenseV3.js +17 -0
  153. package/esm/parse/v3-2/link/toLinksV3.d.ts +16 -0
  154. package/esm/parse/v3-2/link/toLinksV3.js +40 -0
  155. package/esm/parse/v3-2/mediaType/toMediaTypeItemV3.d.ts +323 -0
  156. package/esm/parse/v3-2/mediaType/toMediaTypeItemV3.js +375 -0
  157. package/esm/parse/v3-2/methods.d.ts +17 -0
  158. package/esm/parse/v3-2/methods.js +21 -0
  159. package/esm/parse/v3-2/number/toNumber.d.ts +10 -0
  160. package/esm/parse/v3-2/number/toNumber.js +115 -0
  161. package/esm/parse/v3-2/object/toAdditionalPropertiesV3.d.ts +11 -0
  162. package/esm/parse/v3-2/object/toAdditionalPropertiesV3.js +10 -0
  163. package/esm/parse/v3-2/object/toObject.d.ts +10 -0
  164. package/esm/parse/v3-2/object/toObject.js +90 -0
  165. package/esm/parse/v3-2/operation/toOperationsV3.d.ts +25 -0
  166. package/esm/parse/v3-2/operation/toOperationsV3.js +129 -0
  167. package/esm/parse/v3-2/parameter/toParameterV3.d.ts +39 -0
  168. package/esm/parse/v3-2/parameter/toParameterV3.js +152 -0
  169. package/esm/parse/v3-2/parameter/warnQuerystringConflictsV3.d.ts +22 -0
  170. package/esm/parse/v3-2/parameter/warnQuerystringConflictsV3.js +39 -0
  171. package/esm/parse/v3-2/pathItem/dropAdditionalOperationsV3.d.ts +17 -0
  172. package/esm/parse/v3-2/pathItem/dropAdditionalOperationsV3.js +34 -0
  173. package/esm/parse/v3-2/pathItem/toPathItemV3.d.ts +23 -0
  174. package/esm/parse/v3-2/pathItem/toPathItemV3.js +45 -0
  175. package/esm/parse/v3-2/ref/toRefV31.d.ts +19 -0
  176. package/esm/parse/v3-2/ref/toRefV31.js +10 -0
  177. package/esm/parse/v3-2/requestBody/toRequestBodiesV3.d.ts +18 -0
  178. package/esm/parse/v3-2/requestBody/toRequestBodiesV3.js +44 -0
  179. package/esm/parse/v3-2/response/toResponseV3.d.ts +29 -0
  180. package/esm/parse/v3-2/response/toResponseV3.js +56 -0
  181. package/esm/parse/v3-2/schema/toSchemasV3.d.ts +29 -0
  182. package/esm/parse/v3-2/schema/toSchemasV3.js +511 -0
  183. package/esm/parse/v3-2/securityRequirement/toSecurityRequirement.d.ts +9 -0
  184. package/esm/parse/v3-2/securityRequirement/toSecurityRequirement.js +9 -0
  185. package/esm/parse/v3-2/securitySchemes/toSecuritySchemes.d.ts +17 -0
  186. package/esm/parse/v3-2/securitySchemes/toSecuritySchemes.js +152 -0
  187. package/esm/parse/v3-2/server/toServerV3.d.ts +26 -0
  188. package/esm/parse/v3-2/server/toServerV3.js +31 -0
  189. package/esm/parse/v3-2/serverVariable/toServerVariableV3.d.ts +22 -0
  190. package/esm/parse/v3-2/serverVariable/toServerVariableV3.js +30 -0
  191. package/esm/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.d.ts +14 -0
  192. package/esm/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.js +25 -0
  193. package/esm/parse/v3-2/string/toString.d.ts +146 -0
  194. package/esm/parse/v3-2/string/toString.js +211 -0
  195. package/esm/parse/v3-2/tag/toTagsV3.d.ts +22 -0
  196. package/esm/parse/v3-2/tag/toTagsV3.js +78 -0
  197. package/esm/parse/v3-2/union/toUnion.d.ts +12 -0
  198. package/esm/parse/v3-2/union/toUnion.js +68 -0
  199. package/esm/parse/v3-2/unknown/toUnknown.d.ts +10 -0
  200. package/esm/parse/v3-2/unknown/toUnknown.js +19 -0
  201. package/esm/parse/v3-2/webhook/toWebhooksV3.d.ts +48 -0
  202. package/esm/parse/v3-2/webhook/toWebhooksV3.js +139 -0
  203. package/esm/types/Method.d.ts +7 -4
  204. package/esm/types/Method.js +17 -4
  205. package/esm/types/Preview.d.ts +2 -1
  206. package/esm/types/Settings.js +6 -8
  207. package/esm/types/SkmtcDocument.d.ts +6 -6
  208. package/package.json +1 -1
  209. package/script/_dnt.polyfills.d.ts +11 -0
  210. package/script/_dnt.polyfills.js +14 -0
  211. package/script/context/GenerateContext.js +16 -16
  212. package/script/context/ParseContext.js +9 -1
  213. package/script/context/RenderContext.d.ts +7 -7
  214. package/script/context/RenderContext.js +17 -12
  215. package/script/context/generateTypes.d.ts +2 -2
  216. package/script/context/generateTypes.js +3 -1
  217. package/script/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.d.ts +16 -0
  218. package/script/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.js +26 -0
  219. package/script/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.d.ts +16 -0
  220. package/script/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.js +41 -0
  221. package/script/dsl/GeneratorKeys.d.ts +2 -2
  222. package/script/dsl/GeneratorKeys.js +6 -3
  223. package/script/dsl/model/ModelDriver.js +4 -3
  224. package/script/dsl/operation/gql/GqlOperationDriver.js +4 -3
  225. package/script/dsl/operation/oas/OasOperationDriver.js +4 -3
  226. package/script/dsl/webhook/WebhookDriver.js +4 -3
  227. package/script/helpers/applyGeneratedSuffix.js +1 -1
  228. package/script/helpers/isImported.d.ts +10 -74
  229. package/script/helpers/isImported.js +12 -76
  230. package/script/helpers/naming.d.ts +2 -1
  231. package/script/helpers/naming.js +4 -2
  232. package/script/helpers/normalizeWorkspacePath.d.ts +64 -0
  233. package/script/helpers/normalizeWorkspacePath.js +107 -0
  234. package/script/helpers/toResolvedArtifactPath.d.ts +8 -5
  235. package/script/helpers/toResolvedArtifactPath.js +11 -7
  236. package/script/helpers/toWorkspacePath.d.ts +3 -3
  237. package/script/helpers/toWorkspacePath.js +5 -5
  238. package/script/mod.d.ts +1 -0
  239. package/script/mod.js +1 -0
  240. package/script/oas/discriminator/Discriminator.d.ts +3 -0
  241. package/script/oas/discriminator/Discriminator.js +7 -0
  242. package/script/oas/document/Document.d.ts +7 -0
  243. package/script/oas/document/Document.js +8 -0
  244. package/script/oas/example/Example.d.ts +10 -1
  245. package/script/oas/example/Example.js +16 -0
  246. package/script/oas/mediaType/MediaType.d.ts +12 -0
  247. package/script/oas/mediaType/MediaType.js +24 -0
  248. package/script/oas/parameter/Parameter.d.ts +2 -1
  249. package/script/oas/parameter/Parameter.js +5 -2
  250. package/script/oas/parameter/parameter-types.d.ts +10 -2
  251. package/script/oas/parameter/parameter-types.js +3 -1
  252. package/script/oas/response/Response.d.ts +6 -1
  253. package/script/oas/response/Response.js +8 -0
  254. package/script/oas/securitySchemes/SecurityScheme.d.ts +47 -4
  255. package/script/oas/securitySchemes/SecurityScheme.js +46 -1
  256. package/script/oas/securitySchemes/security-scheme-types.d.ts +21 -0
  257. package/script/oas/server/Server.d.ts +8 -2
  258. package/script/oas/server/Server.js +10 -1
  259. package/script/oas/tag/Tag.d.ts +9 -0
  260. package/script/oas/tag/Tag.js +9 -0
  261. package/script/parse/toOasDialect.d.ts +8 -7
  262. package/script/parse/toOasDialect.js +4 -2
  263. package/script/parse/v3-0/methods.d.ts +11 -0
  264. package/script/parse/v3-0/methods.js +20 -0
  265. package/script/parse/v3-0/operation/toOperationsV3.js +5 -5
  266. package/script/parse/v3-0/parameter/toParameterV3.d.ts +4 -2
  267. package/script/parse/v3-0/parameter/toParameterV3.js +17 -3
  268. package/script/parse/v3-0/securitySchemes/toSecuritySchemes.js +49 -37
  269. package/script/parse/v3-0/webhook/toWebhooksV3.js +5 -5
  270. package/script/parse/v3-1/methods.d.ts +11 -0
  271. package/script/parse/v3-1/methods.js +20 -0
  272. package/script/parse/v3-1/operation/toOperationsV3.js +5 -5
  273. package/script/parse/v3-1/parameter/toParameterV3.d.ts +4 -2
  274. package/script/parse/v3-1/parameter/toParameterV3.js +17 -3
  275. package/script/parse/v3-1/securitySchemes/toSecuritySchemes.js +49 -37
  276. package/script/parse/v3-1/webhook/toWebhooksV3.js +5 -5
  277. package/script/parse/v3-2/_helpers/parseDefault.d.ts +43 -0
  278. package/script/parse/v3-2/_helpers/parseDefault.js +43 -0
  279. package/script/parse/v3-2/_helpers/parseEnum.d.ts +13 -0
  280. package/script/parse/v3-2/_helpers/parseEnum.js +27 -0
  281. package/script/parse/v3-2/_helpers/parseExample.d.ts +41 -0
  282. package/script/parse/v3-2/_helpers/parseExample.js +41 -0
  283. package/script/parse/v3-2/_helpers/parseNullable.d.ts +141 -0
  284. package/script/parse/v3-2/_helpers/parseNullable.js +144 -0
  285. package/script/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.d.ts +2 -0
  286. package/script/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.js +13 -0
  287. package/script/parse/v3-2/_merge-all-of/check-at-least-one-type-match.d.ts +4 -0
  288. package/script/parse/v3-2/_merge-all-of/check-at-least-one-type-match.js +9 -0
  289. package/script/parse/v3-2/_merge-all-of/check-enum-conflicts.d.ts +2 -0
  290. package/script/parse/v3-2/_merge-all-of/check-enum-conflicts.js +15 -0
  291. package/script/parse/v3-2/_merge-all-of/check-format-conflicts.d.ts +2 -0
  292. package/script/parse/v3-2/_merge-all-of/check-format-conflicts.js +9 -0
  293. package/script/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.d.ts +2 -0
  294. package/script/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.js +15 -0
  295. package/script/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.d.ts +2 -0
  296. package/script/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.js +9 -0
  297. package/script/parse/v3-2/_merge-all-of/check-type-conflicts.d.ts +2 -0
  298. package/script/parse/v3-2/_merge-all-of/check-type-conflicts.js +9 -0
  299. package/script/parse/v3-2/_merge-all-of/cross-product.d.ts +2 -0
  300. package/script/parse/v3-2/_merge-all-of/cross-product.js +7 -0
  301. package/script/parse/v3-2/_merge-all-of/decompose-intersection.d.ts +6 -0
  302. package/script/parse/v3-2/_merge-all-of/decompose-intersection.js +31 -0
  303. package/script/parse/v3-2/_merge-all-of/decompose-union.d.ts +12 -0
  304. package/script/parse/v3-2/_merge-all-of/decompose-union.js +73 -0
  305. package/script/parse/v3-2/_merge-all-of/generic-merge.d.ts +3 -0
  306. package/script/parse/v3-2/_merge-all-of/generic-merge.js +16 -0
  307. package/script/parse/v3-2/_merge-all-of/is-equal.d.ts +1 -0
  308. package/script/parse/v3-2/_merge-all-of/is-equal.js +23 -0
  309. package/script/parse/v3-2/_merge-all-of/merge-array-constraints.d.ts +2 -0
  310. package/script/parse/v3-2/_merge-all-of/merge-array-constraints.js +80 -0
  311. package/script/parse/v3-2/_merge-all-of/merge-boolean-constraints.d.ts +3 -0
  312. package/script/parse/v3-2/_merge-all-of/merge-boolean-constraints.js +43 -0
  313. package/script/parse/v3-2/_merge-all-of/merge-enum-values.d.ts +3 -0
  314. package/script/parse/v3-2/_merge-all-of/merge-enum-values.js +68 -0
  315. package/script/parse/v3-2/_merge-all-of/merge-integer-constraints.d.ts +3 -0
  316. package/script/parse/v3-2/_merge-all-of/merge-integer-constraints.js +77 -0
  317. package/script/parse/v3-2/_merge-all-of/merge-intersection.d.ts +8 -0
  318. package/script/parse/v3-2/_merge-all-of/merge-intersection.js +20 -0
  319. package/script/parse/v3-2/_merge-all-of/merge-number-constraints.d.ts +3 -0
  320. package/script/parse/v3-2/_merge-all-of/merge-number-constraints.js +77 -0
  321. package/script/parse/v3-2/_merge-all-of/merge-object-constraints.d.ts +5 -0
  322. package/script/parse/v3-2/_merge-all-of/merge-object-constraints.js +65 -0
  323. package/script/parse/v3-2/_merge-all-of/merge-properties.d.ts +2 -0
  324. package/script/parse/v3-2/_merge-all-of/merge-properties.js +29 -0
  325. package/script/parse/v3-2/_merge-all-of/merge-required.d.ts +3 -0
  326. package/script/parse/v3-2/_merge-all-of/merge-required.js +15 -0
  327. package/script/parse/v3-2/_merge-all-of/merge-string-constraints.d.ts +3 -0
  328. package/script/parse/v3-2/_merge-all-of/merge-string-constraints.js +91 -0
  329. package/script/parse/v3-2/_merge-all-of/merge-union.d.ts +15 -0
  330. package/script/parse/v3-2/_merge-all-of/merge-union.js +58 -0
  331. package/script/parse/v3-2/_merge-all-of/merge.d.ts +2 -0
  332. package/script/parse/v3-2/_merge-all-of/merge.js +159 -0
  333. package/script/parse/v3-2/_merge-all-of/nullable-merge.d.ts +3 -0
  334. package/script/parse/v3-2/_merge-all-of/nullable-merge.js +17 -0
  335. package/script/parse/v3-2/_merge-all-of/types.d.ts +14 -0
  336. package/script/parse/v3-2/_merge-all-of/types.js +38 -0
  337. package/script/parse/v3-2/array/toArray.d.ts +80 -0
  338. package/script/parse/v3-2/array/toArray.js +203 -0
  339. package/script/parse/v3-2/boolean/toBoolean.d.ts +78 -0
  340. package/script/parse/v3-2/boolean/toBoolean.js +177 -0
  341. package/script/parse/v3-2/components/toComponentsV3.d.ts +14 -0
  342. package/script/parse/v3-2/components/toComponentsV3.js +47 -0
  343. package/script/parse/v3-2/contact/toContactV3.d.ts +5 -0
  344. package/script/parse/v3-2/contact/toContactV3.js +22 -0
  345. package/script/parse/v3-2/discriminator/toDiscriminatorV3.d.ts +14 -0
  346. package/script/parse/v3-2/discriminator/toDiscriminatorV3.js +25 -0
  347. package/script/parse/v3-2/document/toDocumentFieldsV3.d.ts +16 -0
  348. package/script/parse/v3-2/document/toDocumentFieldsV3.js +37 -0
  349. package/script/parse/v3-2/example/toExamplesV3.d.ts +77 -0
  350. package/script/parse/v3-2/example/toExamplesV3.js +149 -0
  351. package/script/parse/v3-2/externalDocs/toExternalDocs.d.ts +10 -0
  352. package/script/parse/v3-2/externalDocs/toExternalDocs.js +52 -0
  353. package/script/parse/v3-2/header/toHeadersV3.d.ts +18 -0
  354. package/script/parse/v3-2/header/toHeadersV3.js +51 -0
  355. package/script/parse/v3-2/info/toInfoV3.d.ts +10 -0
  356. package/script/parse/v3-2/info/toInfoV3.js +27 -0
  357. package/script/parse/v3-2/integer/toInteger.d.ts +21 -0
  358. package/script/parse/v3-2/integer/toInteger.js +153 -0
  359. package/script/parse/v3-2/license/toLicenseV3.d.ts +5 -0
  360. package/script/parse/v3-2/license/toLicenseV3.js +21 -0
  361. package/script/parse/v3-2/link/toLinksV3.d.ts +16 -0
  362. package/script/parse/v3-2/link/toLinksV3.js +44 -0
  363. package/script/parse/v3-2/mediaType/toMediaTypeItemV3.d.ts +323 -0
  364. package/script/parse/v3-2/mediaType/toMediaTypeItemV3.js +381 -0
  365. package/script/parse/v3-2/methods.d.ts +17 -0
  366. package/script/parse/v3-2/methods.js +25 -0
  367. package/script/parse/v3-2/number/toNumber.d.ts +10 -0
  368. package/script/parse/v3-2/number/toNumber.js +152 -0
  369. package/script/parse/v3-2/object/toAdditionalPropertiesV3.d.ts +11 -0
  370. package/script/parse/v3-2/object/toAdditionalPropertiesV3.js +14 -0
  371. package/script/parse/v3-2/object/toObject.d.ts +10 -0
  372. package/script/parse/v3-2/object/toObject.js +94 -0
  373. package/script/parse/v3-2/operation/toOperationsV3.d.ts +25 -0
  374. package/script/parse/v3-2/operation/toOperationsV3.js +134 -0
  375. package/script/parse/v3-2/parameter/toParameterV3.d.ts +39 -0
  376. package/script/parse/v3-2/parameter/toParameterV3.js +191 -0
  377. package/script/parse/v3-2/parameter/warnQuerystringConflictsV3.d.ts +22 -0
  378. package/script/parse/v3-2/parameter/warnQuerystringConflictsV3.js +43 -0
  379. package/script/parse/v3-2/pathItem/dropAdditionalOperationsV3.d.ts +17 -0
  380. package/script/parse/v3-2/pathItem/dropAdditionalOperationsV3.js +38 -0
  381. package/script/parse/v3-2/pathItem/toPathItemV3.d.ts +23 -0
  382. package/script/parse/v3-2/pathItem/toPathItemV3.js +50 -0
  383. package/script/parse/v3-2/ref/toRefV31.d.ts +19 -0
  384. package/script/parse/v3-2/ref/toRefV31.js +14 -0
  385. package/script/parse/v3-2/requestBody/toRequestBodiesV3.d.ts +18 -0
  386. package/script/parse/v3-2/requestBody/toRequestBodiesV3.js +49 -0
  387. package/script/parse/v3-2/response/toResponseV3.d.ts +29 -0
  388. package/script/parse/v3-2/response/toResponseV3.js +62 -0
  389. package/script/parse/v3-2/schema/toSchemasV3.d.ts +29 -0
  390. package/script/parse/v3-2/schema/toSchemasV3.js +518 -0
  391. package/script/parse/v3-2/securityRequirement/toSecurityRequirement.d.ts +9 -0
  392. package/script/parse/v3-2/securityRequirement/toSecurityRequirement.js +13 -0
  393. package/script/parse/v3-2/securitySchemes/toSecuritySchemes.d.ts +17 -0
  394. package/script/parse/v3-2/securitySchemes/toSecuritySchemes.js +189 -0
  395. package/script/parse/v3-2/server/toServerV3.d.ts +26 -0
  396. package/script/parse/v3-2/server/toServerV3.js +37 -0
  397. package/script/parse/v3-2/serverVariable/toServerVariableV3.d.ts +22 -0
  398. package/script/parse/v3-2/serverVariable/toServerVariableV3.js +36 -0
  399. package/script/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.d.ts +14 -0
  400. package/script/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.js +30 -0
  401. package/script/parse/v3-2/string/toString.d.ts +146 -0
  402. package/script/parse/v3-2/string/toString.js +249 -0
  403. package/script/parse/v3-2/tag/toTagsV3.d.ts +22 -0
  404. package/script/parse/v3-2/tag/toTagsV3.js +83 -0
  405. package/script/parse/v3-2/union/toUnion.d.ts +12 -0
  406. package/script/parse/v3-2/union/toUnion.js +72 -0
  407. package/script/parse/v3-2/unknown/toUnknown.d.ts +10 -0
  408. package/script/parse/v3-2/unknown/toUnknown.js +23 -0
  409. package/script/parse/v3-2/webhook/toWebhooksV3.d.ts +48 -0
  410. package/script/parse/v3-2/webhook/toWebhooksV3.js +144 -0
  411. package/script/types/Method.d.ts +7 -4
  412. package/script/types/Method.js +17 -4
  413. package/script/types/Preview.d.ts +2 -1
  414. package/script/types/Settings.js +7 -9
  415. package/script/types/SkmtcDocument.d.ts +6 -6
  416. package/esm/deps/jsr.io/@std/path/1.1.6/extname.d.ts +0 -24
  417. package/esm/deps/jsr.io/@std/path/1.1.6/extname.js +0 -31
  418. package/esm/deps/jsr.io/@std/path/1.1.6/normalize.d.ts +0 -25
  419. package/esm/deps/jsr.io/@std/path/1.1.6/normalize.js +0 -32
  420. package/esm/deps/jsr.io/@std/path/1.1.6/windows/extname.d.ts +0 -17
  421. package/esm/deps/jsr.io/@std/path/1.1.6/windows/extname.js +0 -83
  422. package/script/deps/jsr.io/@std/path/1.1.6/extname.d.ts +0 -24
  423. package/script/deps/jsr.io/@std/path/1.1.6/extname.js +0 -34
  424. package/script/deps/jsr.io/@std/path/1.1.6/normalize.d.ts +0 -25
  425. package/script/deps/jsr.io/@std/path/1.1.6/normalize.js +0 -35
  426. package/script/deps/jsr.io/@std/path/1.1.6/windows/extname.d.ts +0 -17
  427. package/script/deps/jsr.io/@std/path/1.1.6/windows/extname.js +0 -86
@@ -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 {};
@@ -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;