@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,375 @@
1
+ import { toOptionalSchemaV3 } from '../schema/toSchemasV3.js';
2
+ import { toExamplesV3 } from '../example/toExamplesV3.js';
3
+ import { OasMediaType } from '../../../oas/mediaType/MediaType.js';
4
+ import { toSpecificationExtensionsV3 } from '../specificationExtensions/toSpecificationExtensionsV3.js';
5
+ import { isRef } from '../../../helpers/refFns.js';
6
+ import { fromJsonPointer } from '../../../types/JsonPointer.js';
7
+ /**
8
+ * Transforms an OpenAPI v3 media type object into an internal OAS media type representation.
9
+ *
10
+ * This function processes OpenAPI v3 MediaType objects, extracting schema definitions,
11
+ * examples, encoding information, and specification extensions. It creates a structured
12
+ * internal representation that can be used by the SKMTC pipeline for code generation
13
+ * and validation.
14
+ *
15
+ * The transformation handles all standard OpenAPI v3 MediaType properties including
16
+ * schema references, inline schemas, examples, encoding specifications, and custom
17
+ * extension fields that begin with 'x-'.
18
+ *
19
+ * @param args - Transformation arguments
20
+ * @param args.mediaTypeItem - The OpenAPI v3 media type object to process
21
+ * @param args.mediaType - The media type identifier (MIME type)
22
+ * @param args.context - Parsing context for tracing and error handling
23
+ * @returns Structured OAS media type object for internal processing
24
+ *
25
+ * @example Transforming JSON media type
26
+ * ```typescript
27
+ * import { toMediaTypeItemV3 } from '@skmtc/core/oas/mediaType';
28
+ *
29
+ * const jsonMediaType = {
30
+ * schema: {
31
+ * type: 'object',
32
+ * properties: {
33
+ * name: { type: 'string' },
34
+ * email: { type: 'string', format: 'email' }
35
+ * }
36
+ * },
37
+ * example: {
38
+ * name: 'John Doe',
39
+ * email: 'john@example.com'
40
+ * }
41
+ * };
42
+ *
43
+ * const result = toMediaTypeItemV3({
44
+ * mediaTypeItem: jsonMediaType,
45
+ * mediaType: 'application/json',
46
+ * context: parseContext
47
+ * });
48
+ *
49
+ * console.log(result.mediaType); // 'application/json'
50
+ * console.log(result.schema); // Processed schema object
51
+ * ```
52
+ *
53
+ * @example Processing form data with encoding
54
+ * ```typescript
55
+ * const formMediaType = {
56
+ * schema: {
57
+ * type: 'object',
58
+ * properties: {
59
+ * file: { type: 'string', format: 'binary' },
60
+ * metadata: { type: 'string' }
61
+ * }
62
+ * },
63
+ * encoding: {
64
+ * file: {
65
+ * contentType: 'image/png',
66
+ * headers: {
67
+ * 'X-Rate-Limit': {
68
+ * schema: { type: 'integer' }
69
+ * }
70
+ * }
71
+ * }
72
+ * }
73
+ * };
74
+ *
75
+ * const result = toMediaTypeItemV3({
76
+ * mediaTypeItem: formMediaType,
77
+ * mediaType: 'multipart/form-data',
78
+ * context: parseContext
79
+ * });
80
+ *
81
+ * console.log(result.encoding); // Processed encoding configuration
82
+ * ```
83
+ *
84
+ * @example Handling multiple examples
85
+ * ```typescript
86
+ * const mediaTypeWithExamples = {
87
+ * schema: { type: 'string' },
88
+ * examples: {
89
+ * success: {
90
+ * summary: 'Successful response',
91
+ * value: 'Operation completed'
92
+ * },
93
+ * error: {
94
+ * summary: 'Error response',
95
+ * value: 'Operation failed'
96
+ * }
97
+ * }
98
+ * };
99
+ *
100
+ * const result = toMediaTypeItemV3({
101
+ * mediaTypeItem: mediaTypeWithExamples,
102
+ * mediaType: 'text/plain',
103
+ * context: parseContext
104
+ * });
105
+ *
106
+ * console.log(Object.keys(result.examples)); // ['success', 'error']
107
+ * ```
108
+ */
109
+ export const toMediaTypeItemV3 = ({ mediaTypeItem, mediaType, stackTrail, context }) => {
110
+ const { schema, itemSchema, example, examples, encoding, prefixEncoding, itemEncoding, ...skipped } = mediaTypeItem;
111
+ const extensionFields = toSpecificationExtensionsV3({
112
+ skipped,
113
+ parent: mediaTypeItem,
114
+ context,
115
+ stackTrail,
116
+ parentType: 'mediaType'
117
+ });
118
+ if (encoding !== undefined && (prefixEncoding !== undefined || itemEncoding !== undefined)) {
119
+ context.logIssue({
120
+ key: 'encoding',
121
+ level: 'warning',
122
+ message: `'encoding' must not be present together with 'prefixEncoding' or 'itemEncoding' in ${mediaType}`,
123
+ parent: mediaTypeItem,
124
+ stackTrail,
125
+ type: 'UNEXPECTED_PROPERTY'
126
+ });
127
+ }
128
+ const fields = {
129
+ mediaType,
130
+ encoding,
131
+ prefixEncoding,
132
+ itemEncoding,
133
+ schema: stackTrail.trace('schema', st => toOptionalSchemaV3({ schema, stackTrail: st, context })),
134
+ itemSchema: stackTrail.trace('itemSchema', st => toOptionalSchemaV3({ schema: itemSchema, stackTrail: st, context })),
135
+ examples: stackTrail.trace('examples', st => toExamplesV3({
136
+ example,
137
+ examples,
138
+ exampleKey: mediaType,
139
+ stackTrail: st,
140
+ context
141
+ })),
142
+ extensionFields
143
+ };
144
+ return context.withStackTrail(stackTrail, () => new OasMediaType(fields, context));
145
+ };
146
+ /**
147
+ * Transforms multiple OpenAPI v3 media type objects into internal OAS representations.
148
+ *
149
+ * This function processes a complete content map from OpenAPI v3, transforming each
150
+ * media type entry into its internal OAS representation. It's commonly used to process
151
+ * the `content` property of request bodies, responses, and parameters that support
152
+ * multiple media types.
153
+ *
154
+ * The function maintains the original media type keys while transforming the values
155
+ * into structured OAS media type objects. Each transformation is traced for debugging
156
+ * and error tracking purposes.
157
+ *
158
+ * @param args - Transformation arguments
159
+ * @param args.content - Map of media types to OpenAPI MediaType objects
160
+ * @param args.context - Parsing context for tracing and error handling
161
+ * @returns Map of media type strings to processed OAS media type objects
162
+ *
163
+ * @example Processing multiple content types
164
+ * ```typescript
165
+ * import { toMediaTypeItemsV3 } from '@skmtc/core/oas/mediaType';
166
+ *
167
+ * const content = {
168
+ * 'application/json': {
169
+ * schema: {
170
+ * type: 'object',
171
+ * properties: { message: { type: 'string' } }
172
+ * }
173
+ * },
174
+ * 'application/xml': {
175
+ * schema: {
176
+ * type: 'string'
177
+ * }
178
+ * },
179
+ * 'text/plain': {
180
+ * schema: {
181
+ * type: 'string'
182
+ * },
183
+ * example: 'Plain text response'
184
+ * }
185
+ * };
186
+ *
187
+ * const result = toMediaTypeItemsV3({
188
+ * content,
189
+ * context: parseContext
190
+ * });
191
+ *
192
+ * console.log(Object.keys(result)); // ['application/json', 'application/xml', 'text/plain']
193
+ * console.log(result['application/json'].mediaType); // 'application/json'
194
+ * ```
195
+ *
196
+ * @example Processing request body content types
197
+ * ```typescript
198
+ * const requestBodyContent = {
199
+ * 'application/json': {
200
+ * schema: { $ref: '#/components/schemas/CreateUserRequest' }
201
+ * },
202
+ * 'application/x-www-form-urlencoded': {
203
+ * schema: {
204
+ * type: 'object',
205
+ * properties: {
206
+ * name: { type: 'string' },
207
+ * email: { type: 'string' }
208
+ * }
209
+ * },
210
+ * encoding: {
211
+ * email: {
212
+ * style: 'form',
213
+ * explode: false
214
+ * }
215
+ * }
216
+ * }
217
+ * };
218
+ *
219
+ * const processed = toMediaTypeItemsV3({
220
+ * content: requestBodyContent,
221
+ * context: parseContext
222
+ * });
223
+ *
224
+ * // Each media type is processed with its specific configuration
225
+ * console.log(processed['application/json'].schema); // Reference object
226
+ * console.log(processed['application/x-www-form-urlencoded'].encoding); // Form encoding config
227
+ * ```
228
+ */
229
+ export const toMediaTypeItemsV3 = ({ content, stackTrail, context }) => {
230
+ const output = {};
231
+ const entries = Object.entries(content);
232
+ for (const [mediaType, value] of entries) {
233
+ // A `$ref` is replaced by the Media Type Object it names, so a
234
+ // referenced media type parses exactly like an inline one.
235
+ const mediaTypeItem = isRef(value) ? toComponentMediaType({ $ref: value.$ref, context }) : value;
236
+ if (mediaTypeItem === undefined) {
237
+ context.logIssue({
238
+ key: mediaType,
239
+ level: 'error',
240
+ message: `Reference ${JSON.stringify(value)} does not resolve to an entry in components.mediaTypes; dropping '${mediaType}'`,
241
+ parent: value,
242
+ stackTrail,
243
+ type: 'INVALID_DEPENDENCY_REF'
244
+ });
245
+ continue;
246
+ }
247
+ output[mediaType] = stackTrail.trace(mediaType, st => toMediaTypeItemV3({ mediaTypeItem, mediaType, stackTrail: st, context }));
248
+ }
249
+ return output;
250
+ };
251
+ const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
252
+ const isMediaTypeObject = (value) => isRecord(value) && !isRef(value);
253
+ /**
254
+ * The Media Type Object a `$ref` names in `components.mediaTypes`, read off
255
+ * the raw document. An entry that is itself a `$ref` is followed. `undefined`
256
+ * when a `$ref` on the chain points elsewhere or names a missing entry, or
257
+ * when the chain is a cycle.
258
+ */
259
+ const toComponentMediaType = ({ $ref, context, visited = new Set() }) => {
260
+ const segments = $ref.startsWith('#') ? fromJsonPointer($ref) : undefined;
261
+ if (segments?.length !== 3 || segments[0] !== 'components' || segments[1] !== 'mediaTypes') {
262
+ return undefined;
263
+ }
264
+ const [, , name] = segments;
265
+ if (visited.has(name)) {
266
+ return undefined;
267
+ }
268
+ const { components } = context.documentObject;
269
+ const mediaTypes = isRecord(components) ? components.mediaTypes : undefined;
270
+ if (!isRecord(mediaTypes) || !Object.hasOwn(mediaTypes, name)) {
271
+ return undefined;
272
+ }
273
+ const mediaTypeItem = mediaTypes[name];
274
+ if (isRef(mediaTypeItem)) {
275
+ return toComponentMediaType({
276
+ $ref: mediaTypeItem.$ref,
277
+ context,
278
+ visited: new Set([...visited, name])
279
+ });
280
+ }
281
+ return isMediaTypeObject(mediaTypeItem) ? mediaTypeItem : undefined;
282
+ };
283
+ /**
284
+ * Optionally transforms OpenAPI v3 media type objects when content is provided.
285
+ *
286
+ * This function provides a safe way to process media type content that may or may not
287
+ * be present in the OpenAPI specification. It handles the common pattern where content
288
+ * properties are optional in OpenAPI objects (like responses without bodies or
289
+ * operations without request bodies).
290
+ *
291
+ * When content is undefined, the function returns undefined without processing.
292
+ * When content is provided, it delegates to `toMediaTypeItemsV3` for full processing.
293
+ *
294
+ * @param args - Transformation arguments
295
+ * @param args.content - Optional map of media types to OpenAPI MediaType objects
296
+ * @param args.context - Parsing context for tracing and error handling
297
+ * @returns Map of processed media types if content exists, undefined otherwise
298
+ *
299
+ * @example Handling optional response content
300
+ * ```typescript
301
+ * import { toOptionalMediaTypeItemsV3 } from '@skmtc/core/oas/mediaType';
302
+ *
303
+ * // Response with content
304
+ * const responseWithContent = {
305
+ * description: 'Successful response',
306
+ * content: {
307
+ * 'application/json': {
308
+ * schema: { type: 'object' }
309
+ * }
310
+ * }
311
+ * };
312
+ *
313
+ * const withContent = toOptionalMediaTypeItemsV3({
314
+ * content: responseWithContent.content,
315
+ * context: parseContext
316
+ * });
317
+ * console.log(withContent); // { 'application/json': OasMediaType }
318
+ *
319
+ * // Response without content (like 204 No Content)
320
+ * const responseNoContent = {
321
+ * description: 'No content response'
322
+ * };
323
+ *
324
+ * const noContent = toOptionalMediaTypeItemsV3({
325
+ * content: responseNoContent.content, // undefined
326
+ * context: parseContext
327
+ * });
328
+ * console.log(noContent); // undefined
329
+ * ```
330
+ *
331
+ * @example Processing operations with optional request bodies
332
+ * ```typescript
333
+ * function processOperation(operation: OpenAPIV3.OperationObject) {
334
+ * const requestBodyContent = toOptionalMediaTypeItemsV3({
335
+ * content: operation.requestBody?.content,
336
+ * context: parseContext
337
+ * });
338
+ *
339
+ * if (requestBodyContent) {
340
+ * console.log('Operation has request body with media types:');
341
+ * console.log(Object.keys(requestBodyContent));
342
+ * } else {
343
+ * console.log('Operation has no request body');
344
+ * }
345
+ * }
346
+ * ```
347
+ *
348
+ * @example Safe processing in response handlers
349
+ * ```typescript
350
+ * class ResponseProcessor {
351
+ * processResponse(response: OpenAPIV3.ResponseObject) {
352
+ * const mediaTypes = toOptionalMediaTypeItemsV3({
353
+ * content: response.content,
354
+ * context: this.context
355
+ * });
356
+ *
357
+ * // Safe to check without worrying about undefined content
358
+ * const hasJsonResponse = mediaTypes && 'application/json' in mediaTypes;
359
+ *
360
+ * if (hasJsonResponse) {
361
+ * const jsonMediaType = mediaTypes['application/json'];
362
+ * return this.generateJsonResponseHandler(jsonMediaType);
363
+ * }
364
+ *
365
+ * return this.generateEmptyResponseHandler();
366
+ * }
367
+ * }
368
+ * ```
369
+ */
370
+ export const toOptionalMediaTypeItemsV3 = ({ content, stackTrail, context }) => {
371
+ if (!content) {
372
+ return;
373
+ }
374
+ return toMediaTypeItemsV3({ content, stackTrail, context });
375
+ };
@@ -0,0 +1,17 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ import type { Method } from '../../types/Method.js';
3
+ /**
4
+ * The path item fields that hold an Operation Object in OpenAPI 3.2.
5
+ * `query` is new in 3.2.
6
+ */
7
+ export declare const pathItemMethods: readonly Method[];
8
+ /**
9
+ * A 3.2 path item: the `openapi-types` path item plus the `query` operation.
10
+ */
11
+ export type PathItemObjectV3 = OpenAPIV3.PathItemObject & {
12
+ query?: OpenAPIV3.OperationObject;
13
+ };
14
+ /**
15
+ * Returns `key` as a {@link Method} when it is one of {@link pathItemMethods}.
16
+ */
17
+ export declare const toPathItemMethod: (key: string) => Method | undefined;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The path item fields that hold an Operation Object in OpenAPI 3.2.
3
+ * `query` is new in 3.2.
4
+ */
5
+ export const pathItemMethods = [
6
+ 'get',
7
+ 'put',
8
+ 'post',
9
+ 'delete',
10
+ 'options',
11
+ 'head',
12
+ 'patch',
13
+ 'trace',
14
+ 'query'
15
+ ];
16
+ /**
17
+ * Returns `key` as a {@link Method} when it is one of {@link pathItemMethods}.
18
+ */
19
+ export const toPathItemMethod = (key) => {
20
+ return pathItemMethods.find(method => method === key);
21
+ };
@@ -0,0 +1,10 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ import type { ParseContextType } from '../../../context/parseTypes.js';
3
+ import { OasNumber } from '../../../oas/number/Number.js';
4
+ import type { StackTrail } from '../../../context/StackTrail.js';
5
+ export type ToNumberArgs = {
6
+ value: OpenAPIV3.SchemaObject;
7
+ stackTrail: StackTrail;
8
+ context: ParseContextType;
9
+ };
10
+ export declare const toNumber: ({ context, value, stackTrail }: ToNumberArgs) => OasNumber;
@@ -0,0 +1,115 @@
1
+ import { OasNumber } from '../../../oas/number/Number.js';
2
+ import { toSpecificationExtensionsV3 } from '../specificationExtensions/toSpecificationExtensionsV3.js';
3
+ import { oasNumberData, numberFormat } from '../../../oas/number/number-types.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
+ export const toNumber = ({ context, value, stackTrail }) => {
10
+ const { nullable, value: valueWithoutNullable } = parseNullable({
11
+ value,
12
+ context,
13
+ stackTrail
14
+ });
15
+ const { example: unparsedExample, ...valueWithoutExample } = valueWithoutNullable;
16
+ const example = parseExample({
17
+ value: unparsedExample,
18
+ context,
19
+ parent: valueWithoutNullable,
20
+ nullable,
21
+ check: isNumber,
22
+ toMessage: item => `Removed invalid example. Expected "number", got: ${item}`,
23
+ stackTrail
24
+ });
25
+ const { enum: unparsedEnums, ...valueWithoutEnums } = valueWithoutExample;
26
+ const enums = parseEnum({
27
+ value: unparsedEnums,
28
+ nullable,
29
+ stackTrail,
30
+ parent: valueWithoutExample,
31
+ context,
32
+ check: isNumber,
33
+ toMessage: item => `Removed invalid enum. Expected "number", got: ${item}`
34
+ });
35
+ const { default: unparsedDefaultValue, ...valueWithoutDefault } = valueWithoutEnums;
36
+ const defaultValue = parseDefault({
37
+ value: unparsedDefaultValue,
38
+ context,
39
+ parent: valueWithoutEnums,
40
+ nullable,
41
+ check: isNumber,
42
+ toMessage: item => `Removed invalid default. Expected "number", got: ${item}`,
43
+ stackTrail
44
+ });
45
+ return toParsedNumber({
46
+ context,
47
+ nullable,
48
+ example,
49
+ enums,
50
+ defaultValue,
51
+ value: valueWithoutDefault,
52
+ stackTrail
53
+ });
54
+ };
55
+ const toParsedNumber = ({ context, nullable, example, enums, defaultValue, value: valueWithoutEnums, stackTrail }) => {
56
+ const { format: unparsedFormat, ...valueWithoutFormat } = valueWithoutEnums;
57
+ const format = parseNumberFormat({
58
+ format: unparsedFormat,
59
+ context,
60
+ stackTrail,
61
+ parent: valueWithoutEnums
62
+ });
63
+ if (!v.is(oasNumberData, valueWithoutFormat)) {
64
+ v.parse(oasNumberData, valueWithoutFormat);
65
+ }
66
+ const { type: _type, title, description, multipleOf, maximum, exclusiveMaximum, minimum, exclusiveMinimum, readOnly, writeOnly, deprecated, ...skipped } = valueWithoutFormat;
67
+ const extensionFields = toSpecificationExtensionsV3({
68
+ skipped,
69
+ parent: valueWithoutFormat,
70
+ context,
71
+ stackTrail,
72
+ parentType: 'schema:number'
73
+ });
74
+ return context.withStackTrail(stackTrail, () => new OasNumber({
75
+ title,
76
+ description,
77
+ nullable,
78
+ default: defaultValue,
79
+ extensionFields,
80
+ example,
81
+ enums,
82
+ format,
83
+ multipleOf,
84
+ maximum,
85
+ exclusiveMaximum,
86
+ minimum,
87
+ readOnly,
88
+ writeOnly,
89
+ exclusiveMinimum,
90
+ deprecated
91
+ }, context));
92
+ };
93
+ const parseNumberFormat = ({ format, context, parent, stackTrail }) => {
94
+ if (format === undefined) {
95
+ return undefined;
96
+ }
97
+ if (!v.is(numberFormat, format)) {
98
+ // `format` is an open vocabulary; a value the IR's numberFormat can't
99
+ // hold (e.g. `decimal`) is dropped. Recorded at `debug` — the dropped
100
+ // hint is informational, not a correctness issue.
101
+ context.logIssue({
102
+ key: 'format',
103
+ level: 'debug',
104
+ message: `Invalid format: ${format}`,
105
+ parent,
106
+ stackTrail,
107
+ type: 'INVALID_FORMAT'
108
+ });
109
+ return undefined;
110
+ }
111
+ return format;
112
+ };
113
+ const isNumber = (value) => {
114
+ return typeof value === 'number';
115
+ };
@@ -0,0 +1,11 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ import type { ParseContextType } from '../../../context/parseTypes.js';
3
+ import type { OasSchema } from '../../../oas/schema/Schema.js';
4
+ import type { OasRef } from '../../../oas/ref/Ref.js';
5
+ import type { StackTrail } from '../../../context/StackTrail.js';
6
+ export type ToAdditionalPropertiesV3Args = {
7
+ additionalProperties: boolean | OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject | undefined;
8
+ stackTrail: StackTrail;
9
+ context: ParseContextType;
10
+ };
11
+ export declare const toAdditionalPropertiesV3: ({ additionalProperties, stackTrail, context }: ToAdditionalPropertiesV3Args) => OasSchema | OasRef<"schema"> | boolean | undefined;
@@ -0,0 +1,10 @@
1
+ import { toSchemaV3 } from '../schema/toSchemasV3.js';
2
+ export const toAdditionalPropertiesV3 = ({ additionalProperties, stackTrail, context }) => {
3
+ if (typeof additionalProperties === 'boolean') {
4
+ return additionalProperties;
5
+ }
6
+ if (additionalProperties === undefined) {
7
+ return undefined;
8
+ }
9
+ return toSchemaV3({ schema: additionalProperties, stackTrail, context });
10
+ };
@@ -0,0 +1,10 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ import type { ParseContextType } from '../../../context/parseTypes.js';
3
+ import { OasObject } from '../../../oas/object/Object.js';
4
+ import type { StackTrail } from '../../../context/StackTrail.js';
5
+ export type ToObjectArgs = {
6
+ value: OpenAPIV3.SchemaObject;
7
+ context: ParseContextType;
8
+ stackTrail: StackTrail;
9
+ };
10
+ export declare const toObject: ({ value, context, stackTrail }: ToObjectArgs) => OasObject;
@@ -0,0 +1,90 @@
1
+ import { OasObject } from '../../../oas/object/Object.js';
2
+ import { toOptionalSchemasV3 } from '../schema/toSchemasV3.js';
3
+ import { toAdditionalPropertiesV3 } from './toAdditionalPropertiesV3.js';
4
+ import { toSpecificationExtensionsV3 } from '../specificationExtensions/toSpecificationExtensionsV3.js';
5
+ import { parseNullable } from '../_helpers/parseNullable.js';
6
+ import { parseEnum } from '../_helpers/parseEnum.js';
7
+ import { parseExample } from '../_helpers/parseExample.js';
8
+ import { parseDefault } from '../_helpers/parseDefault.js';
9
+ import { toExternalDocs } from '../externalDocs/toExternalDocs.js';
10
+ export const toObject = ({ value, context, stackTrail }) => {
11
+ const { nullable, value: valueWithoutNullable } = parseNullable({
12
+ value,
13
+ context,
14
+ stackTrail
15
+ });
16
+ const { example: unparsedExample, ...valueWithoutExample } = valueWithoutNullable;
17
+ const example = parseExample({
18
+ value: unparsedExample,
19
+ context,
20
+ parent: valueWithoutNullable,
21
+ nullable,
22
+ check: isObject,
23
+ toMessage: item => `Removed invalid example. Expected "object", got: ${item}`,
24
+ stackTrail
25
+ });
26
+ const { enum: unparsedEnums, ...valueWithoutEnums } = valueWithoutExample;
27
+ const enums = parseEnum({
28
+ value: unparsedEnums,
29
+ nullable,
30
+ parent: valueWithoutExample,
31
+ context,
32
+ stackTrail,
33
+ check: isObject,
34
+ toMessage: item => `Removed invalid enum. Expected "object", got: ${item}`
35
+ });
36
+ const { default: unparsedDefaultValue, ...valueWithoutDefault } = valueWithoutEnums;
37
+ const defaultValue = parseDefault({
38
+ value: unparsedDefaultValue,
39
+ context,
40
+ parent: valueWithoutEnums,
41
+ nullable,
42
+ check: isObject,
43
+ toMessage: item => `Removed invalid default. Expected "object", got: ${item}`,
44
+ stackTrail
45
+ });
46
+ return toParsedObject({
47
+ context,
48
+ nullable,
49
+ example,
50
+ enums,
51
+ defaultValue,
52
+ value: valueWithoutDefault,
53
+ stackTrail
54
+ });
55
+ };
56
+ const toParsedObject = ({ context, stackTrail, nullable, example, enums, defaultValue, value }) => {
57
+ const { type: _type, title, description, externalDocs, deprecated, properties, required, maxProperties, minProperties, additionalProperties, readOnly, writeOnly, ...skipped } = value;
58
+ const extensionFields = toSpecificationExtensionsV3({
59
+ skipped,
60
+ parent: value,
61
+ context,
62
+ stackTrail,
63
+ parentType: 'schema:object'
64
+ });
65
+ return context.withStackTrail(stackTrail, () => new OasObject({
66
+ title,
67
+ description,
68
+ externalDocs: stackTrail.trace('externalDocs', st => toExternalDocs({ externalDocs, stackTrail: st, context })),
69
+ nullable,
70
+ example,
71
+ enums,
72
+ properties: stackTrail.trace('properties', st => toOptionalSchemasV3({
73
+ schemas: properties,
74
+ stackTrail: st,
75
+ context
76
+ })),
77
+ required,
78
+ maxProperties,
79
+ minProperties,
80
+ additionalProperties: stackTrail.trace('additionalProperties', st => toAdditionalPropertiesV3({ additionalProperties, stackTrail: st, context })),
81
+ extensionFields,
82
+ default: defaultValue,
83
+ deprecated,
84
+ readOnly,
85
+ writeOnly
86
+ }, context));
87
+ };
88
+ const isObject = (value) => {
89
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
90
+ };
@@ -0,0 +1,25 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ import type { Method } from '../../../types/Method.js';
3
+ import type { ParseContextType } from '../../../context/parseTypes.js';
4
+ import { OasOperation } from '../../../oas/operation/Operation.js';
5
+ import type { OasPathItem } from '../../../oas/pathItem/PathItem.js';
6
+ import type { StackTrail } from '../../../context/StackTrail.js';
7
+ type OperationInfo = {
8
+ method: Method;
9
+ path: string;
10
+ pathItem: OasPathItem | undefined;
11
+ };
12
+ export type ToOperationV3Args = {
13
+ operation: OpenAPIV3.OperationObject;
14
+ operationInfo: OperationInfo;
15
+ stackTrail: StackTrail;
16
+ context: ParseContextType;
17
+ };
18
+ export declare const toOperationV3: ({ operation, operationInfo, stackTrail, context }: ToOperationV3Args) => OasOperation;
19
+ export type ToOperationsV3Args = {
20
+ paths: OpenAPIV3.PathsObject | undefined;
21
+ stackTrail: StackTrail;
22
+ context: ParseContextType;
23
+ };
24
+ export declare const toOperationsV3: ({ paths, stackTrail, context }: ToOperationsV3Args) => OasOperation[];
25
+ export {};