@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
@@ -10,6 +10,8 @@ import type { OasServerVariable } from '../serverVariable/ServerVariable.js';
10
10
  */
11
11
  export type ServerFields = {
12
12
  description?: string | undefined;
13
+ /** Name that identifies the server (OpenAPI 3.2) */
14
+ name?: string | undefined;
13
15
  url: string;
14
16
  variables?: Record<string, OasServerVariable> | undefined;
15
17
  extensionFields?: Record<string, unknown>;
@@ -54,6 +56,8 @@ export declare class OasServer {
54
56
  oasType: 'server';
55
57
  /** Human-readable description of the server */
56
58
  description: string | undefined;
59
+ /** Name that identifies the server (OpenAPI 3.2) */
60
+ name: string | undefined;
57
61
  /** Server URL with optional variable templating */
58
62
  url: string;
59
63
  /** Variable definitions for URL templating */
@@ -88,7 +92,9 @@ export declare class OasServer {
88
92
  * Converts this OAS server to an OpenAPI v3 JSON schema representation.
89
93
  *
90
94
  * @param _options - Conversion options (currently unused for server objects)
91
- * @returns OpenAPI v3 server object with URL, description, and variables
95
+ * @returns OpenAPI v3 server object with URL, description, variables and, when set, name
92
96
  */
93
- toJsonSchema(_options: ToJsonSchemaOptions): OpenAPIV3.ServerObject;
97
+ toJsonSchema(_options: ToJsonSchemaOptions): OpenAPIV3.ServerObject & {
98
+ name?: string;
99
+ };
94
100
  }
@@ -55,6 +55,13 @@ export class OasServer {
55
55
  writable: true,
56
56
  value: void 0
57
57
  });
58
+ /** Name that identifies the server (OpenAPI 3.2) */
59
+ Object.defineProperty(this, "name", {
60
+ enumerable: true,
61
+ configurable: true,
62
+ writable: true,
63
+ value: void 0
64
+ });
58
65
  /** Server URL with optional variable templating */
59
66
  Object.defineProperty(this, "url", {
60
67
  enumerable: true,
@@ -77,6 +84,7 @@ export class OasServer {
77
84
  value: void 0
78
85
  });
79
86
  this.description = fields.description;
87
+ this.name = fields.name;
80
88
  this.url = fields.url;
81
89
  this.variables = fields.variables;
82
90
  this.extensionFields = fields.extensionFields;
@@ -109,11 +117,12 @@ export class OasServer {
109
117
  * Converts this OAS server to an OpenAPI v3 JSON schema representation.
110
118
  *
111
119
  * @param _options - Conversion options (currently unused for server objects)
112
- * @returns OpenAPI v3 server object with URL, description, and variables
120
+ * @returns OpenAPI v3 server object with URL, description, variables and, when set, name
113
121
  */
114
122
  toJsonSchema(_options) {
115
123
  return {
116
124
  description: this.description,
125
+ ...(this.name !== undefined ? { name: this.name } : {}),
117
126
  url: this.url,
118
127
  variables: this.variables
119
128
  };
@@ -3,6 +3,12 @@ import type { OasExternalDocs } from '../externalDocs/ExternalDocs.js';
3
3
  export type TagFields = {
4
4
  name: string;
5
5
  description: string | undefined;
6
+ /** Short summary of the tag (OpenAPI 3.2) */
7
+ summary?: string;
8
+ /** Name of the tag this tag nests under (OpenAPI 3.2) */
9
+ parent?: string;
10
+ /** Kind of tag, e.g. `nav`, `badge` or `audience` (OpenAPI 3.2, open registry) */
11
+ kind?: string;
6
12
  externalDocs?: OasExternalDocs;
7
13
  extensionFields?: Record<string, unknown>;
8
14
  };
@@ -12,6 +18,9 @@ export declare class OasTag {
12
18
  constructor(fields: TagFields);
13
19
  get name(): string;
14
20
  get description(): string | undefined;
21
+ get summary(): string | undefined;
22
+ get parent(): string | undefined;
23
+ get kind(): string | undefined;
15
24
  get externalDocs(): OasExternalDocs | undefined;
16
25
  /** Specification Extension fields */
17
26
  get extensionFields(): Record<string, unknown> | undefined;
@@ -28,6 +28,15 @@ export class OasTag {
28
28
  get description() {
29
29
  return __classPrivateFieldGet(this, _OasTag_fields, "f").description;
30
30
  }
31
+ get summary() {
32
+ return __classPrivateFieldGet(this, _OasTag_fields, "f").summary;
33
+ }
34
+ get parent() {
35
+ return __classPrivateFieldGet(this, _OasTag_fields, "f").parent;
36
+ }
37
+ get kind() {
38
+ return __classPrivateFieldGet(this, _OasTag_fields, "f").kind;
39
+ }
31
40
  get externalDocs() {
32
41
  return __classPrivateFieldGet(this, _OasTag_fields, "f").externalDocs;
33
42
  }
@@ -113,10 +113,10 @@ export declare class OasWebhook extends OasBase {
113
113
  */
114
114
  toPayload(): OasRequestBody | undefined;
115
115
  /**
116
- * The schema of the received payload for `mediaType` (default
117
- * `application/json`) — the inbound body shape a handler generator emits a
118
- * type for. `undefined` when there is no body or no schema for that media
119
- * type.
116
+ * The schema of the received payload for `mediaType`, an exact lookup —
117
+ * the inbound body shape a handler generator writes a type for. Without
118
+ * `mediaType`, the media type `OasRequestBody.toJsonContent` picks.
119
+ * `undefined` when there is no body or no schema for that media type.
120
120
  */
121
121
  toPayloadSchema(mediaType?: string): OasSchema | OasRef<'schema'> | undefined;
122
122
  /**
@@ -157,13 +157,13 @@ export class OasWebhook extends OasBase {
157
157
  return this.requestBody?.resolve();
158
158
  }
159
159
  /**
160
- * The schema of the received payload for `mediaType` (default
161
- * `application/json`) — the inbound body shape a handler generator emits a
162
- * type for. `undefined` when there is no body or no schema for that media
163
- * type.
160
+ * The schema of the received payload for `mediaType`, an exact lookup —
161
+ * the inbound body shape a handler generator writes a type for. Without
162
+ * `mediaType`, the media type `OasRequestBody.toJsonContent` picks.
163
+ * `undefined` when there is no body or no schema for that media type.
164
164
  */
165
- toPayloadSchema(mediaType = 'application/json') {
166
- return this.toPayload()?.content[mediaType]?.schema;
165
+ toPayloadSchema(mediaType) {
166
+ return this.toPayload()?.toSchema(mediaType);
167
167
  }
168
168
  /**
169
169
  * Resolve the inbound parameters (e.g. the signature/headers a handler
@@ -0,0 +1,27 @@
1
+ import type { ParseContextType } from '../context/parseTypes.js';
2
+ import type { StackTrail } from '../context/StackTrail.js';
3
+ import type { OasMediaType } from '../oas/mediaType/MediaType.js';
4
+ export type LogBodyMediaTypesArgs = {
5
+ /** The parsed `content` map of a response or request body. */
6
+ content: Record<string, OasMediaType> | undefined;
7
+ /** Trail of the response or request body; the issue is logged at its `content` key. */
8
+ stackTrail: StackTrail;
9
+ context: ParseContextType;
10
+ };
11
+ /**
12
+ * Log at most one issue for a parsed response or request body, from the same
13
+ * choice the lookups make (`toJsonContent`), so the issue and the lookup
14
+ * cannot disagree. Called after the body is built, so a body that fails to
15
+ * parse logs nothing.
16
+ *
17
+ * - `WILDCARD_MEDIA_TYPE` (`warning`): the body is read from `*\/*` as JSON,
18
+ * though the document does not say its format.
19
+ * - `NO_JSON_MEDIA_TYPE` (`debug`): no lookup reads the body, and its keys
20
+ * include a range (`*\/*` with a scalar schema, `application/*`), so its
21
+ * format is unknown.
22
+ *
23
+ * A body with only specific non-JSON types (`multipart/form-data`,
24
+ * `application/octet-stream`, `text/plain`) logs nothing: that is a normal
25
+ * text, form or binary body.
26
+ */
27
+ export declare const logBodyMediaTypes: ({ content, stackTrail, context }: LogBodyMediaTypesArgs) => void;
@@ -0,0 +1,50 @@
1
+ import { isAnyMediaType, toJsonContent, toMediaTypeEssence } from '../oas/mediaType/jsonMediaType.js';
2
+ /**
3
+ * Log at most one issue for a parsed response or request body, from the same
4
+ * choice the lookups make (`toJsonContent`), so the issue and the lookup
5
+ * cannot disagree. Called after the body is built, so a body that fails to
6
+ * parse logs nothing.
7
+ *
8
+ * - `WILDCARD_MEDIA_TYPE` (`warning`): the body is read from `*\/*` as JSON,
9
+ * though the document does not say its format.
10
+ * - `NO_JSON_MEDIA_TYPE` (`debug`): no lookup reads the body, and its keys
11
+ * include a range (`*\/*` with a scalar schema, `application/*`), so its
12
+ * format is unknown.
13
+ *
14
+ * A body with only specific non-JSON types (`multipart/form-data`,
15
+ * `application/octet-stream`, `text/plain`) logs nothing: that is a normal
16
+ * text, form or binary body.
17
+ */
18
+ export const logBodyMediaTypes = ({ content, stackTrail, context }) => {
19
+ const mediaTypes = Object.keys(content ?? {});
20
+ if (mediaTypes.length === 0) {
21
+ return;
22
+ }
23
+ const listed = mediaTypes.map(mediaType => `"${mediaType}"`).join(', ');
24
+ // `parent` is only the keys: the issue log serializes it on every issue.
25
+ const parent = { mediaTypes };
26
+ const chosen = toJsonContent(content);
27
+ if (chosen !== undefined) {
28
+ if (isAnyMediaType(chosen.mediaType)) {
29
+ context.logIssue({
30
+ key: 'content',
31
+ level: 'warning',
32
+ type: 'WILDCARD_MEDIA_TYPE',
33
+ message: `Content has no JSON media type (${listed}), so the body is read from "*/*" as JSON although the document does not say its format`,
34
+ parent,
35
+ stackTrail
36
+ });
37
+ }
38
+ return;
39
+ }
40
+ if (mediaTypes.some(mediaType => toMediaTypeEssence(mediaType).includes('*'))) {
41
+ context.logIssue({
42
+ key: 'content',
43
+ level: 'debug',
44
+ type: 'NO_JSON_MEDIA_TYPE',
45
+ message: `Content names only a media type range or non-JSON types (${listed}), so no lookup without a media type reads its schema`,
46
+ parent,
47
+ stackTrail
48
+ });
49
+ }
50
+ };
@@ -1,12 +1,13 @@
1
1
  /**
2
2
  * The OpenAPI dialects SKMTC parses natively. Each has its own complete
3
- * parser tree (`core/parse/v3-0`, `core/parse/v3-1`); this module is the
4
- * ONLY place a document's version is examined. Once a dialect is chosen
5
- * the matching parser runs top-to-bottom and never re-checks the version,
6
- * so a 3.0 document can never reach a line of 3.1 logic (or vice versa) —
7
- * there is no downstream version branch to get wrong.
3
+ * parser tree (`core/parse/v3-0`, `core/parse/v3-1`, `core/parse/v3-2`);
4
+ * this module is the ONLY place a document's version is examined. Once a
5
+ * dialect is chosen the matching parser runs top-to-bottom and never
6
+ * re-checks the version, so a 3.0 document can never reach a line of 3.1
7
+ * logic (or vice versa) — there is no downstream version branch to get
8
+ * wrong.
8
9
  */
9
- export type OasDialect = '3.0' | '3.1';
10
+ export type OasDialect = '3.0' | '3.1' | '3.2';
10
11
  /**
11
12
  * Map an OpenAPI document's `openapi` version string to its parser
12
13
  * dialect.
@@ -15,7 +16,7 @@ export type OasDialect = '3.0' | '3.1';
15
16
  * precondition failure — there is no sensible parser to pick — so it throws
16
17
  * rather than silently defaulting to one dialect and masking the error. A
17
18
  * loose `openapi.startsWith('3.1') ? '3.1' : '3.0'` would route every
18
- * non-3.1 value (a typo, `3.2`, `4.0`, a missing field) into 3.0 unnoticed;
19
+ * non-3.1 value (a typo, `4.0`, a missing field) into 3.0 unnoticed;
19
20
  * that is the footgun this avoids. Mirrors `@skmtc/convert`'s
20
21
  * `toV3Document`, which likewise throws on an unrecognized version.
21
22
  *
@@ -6,7 +6,7 @@
6
6
  * precondition failure — there is no sensible parser to pick — so it throws
7
7
  * rather than silently defaulting to one dialect and masking the error. A
8
8
  * loose `openapi.startsWith('3.1') ? '3.1' : '3.0'` would route every
9
- * non-3.1 value (a typo, `3.2`, `4.0`, a missing field) into 3.0 unnoticed;
9
+ * non-3.1 value (a typo, `4.0`, a missing field) into 3.0 unnoticed;
10
10
  * that is the footgun this avoids. Mirrors `@skmtc/convert`'s
11
11
  * `toV3Document`, which likewise throws on an unrecognized version.
12
12
  *
@@ -18,5 +18,7 @@ export const toOasDialect = (openapi) => {
18
18
  return '3.0';
19
19
  if (openapi?.startsWith('3.1'))
20
20
  return '3.1';
21
- throw new Error(`Unsupported OpenAPI version: ${openapi ?? '(missing)'} — expected 3.0.x or 3.1.x`);
21
+ if (openapi?.startsWith('3.2'))
22
+ return '3.2';
23
+ throw new Error(`Unsupported OpenAPI version: ${openapi ?? '(missing)'} — expected 3.0.x, 3.1.x or 3.2.x`);
22
24
  };
@@ -0,0 +1,11 @@
1
+ import type { Method } from '../../types/Method.js';
2
+ /**
3
+ * A path item field that holds an Operation Object in OpenAPI 3.0. A
4
+ * `query` key is not one of them: it stays a skipped field.
5
+ */
6
+ export type PathItemMethod = Exclude<Method, 'query'>;
7
+ export declare const pathItemMethods: readonly PathItemMethod[];
8
+ /**
9
+ * Returns `key` as a {@link PathItemMethod} when it is one of {@link pathItemMethods}.
10
+ */
11
+ export declare const toPathItemMethod: (key: string) => PathItemMethod | undefined;
@@ -0,0 +1,16 @@
1
+ export const pathItemMethods = [
2
+ 'get',
3
+ 'put',
4
+ 'post',
5
+ 'delete',
6
+ 'options',
7
+ 'head',
8
+ 'patch',
9
+ 'trace'
10
+ ];
11
+ /**
12
+ * Returns `key` as a {@link PathItemMethod} when it is one of {@link pathItemMethods}.
13
+ */
14
+ export const toPathItemMethod = (key) => {
15
+ return pathItemMethods.find(method => method === key);
16
+ };
@@ -3,7 +3,7 @@ import { toResponsesV3 } from '../response/toResponseV3.js';
3
3
  import { toParameterListV3 } from '../parameter/toParameterV3.js';
4
4
  import { OasOperation } from '../../../oas/operation/Operation.js';
5
5
  import { toPathItemV3 } from '../pathItem/toPathItemV3.js';
6
- import { methodValues } from '../../../types/Method.js';
6
+ import { toPathItemMethod } from '../methods.js';
7
7
  import { toSpecificationExtensionsV3 } from '../specificationExtensions/toSpecificationExtensionsV3.js';
8
8
  import { toSecurityRequirementsV3 } from '../securityRequirement/toSecurityRequirement.js';
9
9
  import { isEmpty } from '../../../helpers/isEmpty.js';
@@ -54,14 +54,14 @@ export const toOperationsV3 = ({ paths, stackTrail, context }) => {
54
54
  return [];
55
55
  }
56
56
  const cleaned = Object.entries(pathItem).reduce(({ rest, methodObject }, [key, operation]) => {
57
- const isMethod = methodValues.includes(key);
58
- if (isMethod) {
59
- const { [key]: _deleted, ...remaining } = rest;
57
+ const method = toPathItemMethod(key);
58
+ if (method) {
59
+ const { [method]: _deleted, ...remaining } = rest;
60
60
  return {
61
61
  rest: remaining,
62
62
  methodObject: {
63
63
  ...methodObject,
64
- [key]: operation
64
+ [method]: operation
65
65
  }
66
66
  };
67
67
  }
@@ -1,9 +1,10 @@
1
1
  import type { ParseContextType } from '../../../context/parseTypes.js';
2
- import { type OasParameterLocation } from '../../../oas/parameter/parameter-types.js';
2
+ import type { OasParameterLocation } from '../../../oas/parameter/parameter-types.js';
3
3
  import type { OpenAPIV3 } from 'openapi-types';
4
4
  import { OasParameter } from '../../../oas/parameter/Parameter.js';
5
5
  import type { OasRef } from '../../../oas/ref/Ref.js';
6
6
  import type { StackTrail } from '../../../context/StackTrail.js';
7
+ type ParameterLocation = Exclude<OasParameterLocation, 'querystring'>;
7
8
  export type ToParameterListV3Args = {
8
9
  parameters: (OpenAPIV3.ParameterObject | OpenAPIV3.ReferenceObject)[] | undefined;
9
10
  stackTrail: StackTrail;
@@ -29,7 +30,7 @@ export type ToParameterV3Args = {
29
30
  };
30
31
  export type ToStyleArgs = {
31
32
  style: string | undefined;
32
- location: OasParameterLocation;
33
+ location: ParameterLocation;
33
34
  stackTrail: StackTrail;
34
35
  };
35
36
  export type ToExplodeArgs = {
@@ -37,3 +38,4 @@ export type ToExplodeArgs = {
37
38
  style: string | undefined;
38
39
  stackTrail: StackTrail;
39
40
  };
41
+ export {};
@@ -1,6 +1,5 @@
1
1
  import { tryParseAt } from '../../../context/tryParseAt.js';
2
2
  import { isRef } from '../../../helpers/refFns.js';
3
- import { oasParameterLocation, oasParameterStyle } from '../../../oas/parameter/parameter-types.js';
4
3
  import { toExamplesV3 } from '../example/toExamplesV3.js';
5
4
  import { toRefV31 } from '../ref/toRefV31.js';
6
5
  import { toOptionalSchemaV3 } from '../schema/toSchemasV3.js';
@@ -8,6 +7,21 @@ import { toOptionalMediaTypeItemsV3 } from '../mediaType/toMediaTypeItemV3.js';
8
7
  import { OasParameter } from '../../../oas/parameter/Parameter.js';
9
8
  import { toSpecificationExtensionsV3 } from '../specificationExtensions/toSpecificationExtensionsV3.js';
10
9
  import * as v from 'valibot';
10
+ const parameterLocation = v.enum({
11
+ query: 'query',
12
+ header: 'header',
13
+ path: 'path',
14
+ cookie: 'cookie'
15
+ });
16
+ const parameterStyle = v.enum({
17
+ matrix: 'matrix',
18
+ label: 'label',
19
+ form: 'form',
20
+ simple: 'simple',
21
+ spaceDelimited: 'spaceDelimited',
22
+ pipeDelimited: 'pipeDelimited',
23
+ deepObject: 'deepObject'
24
+ });
11
25
  export const toParameterListV3 = ({ parameters, stackTrail, context }) => {
12
26
  if (!parameters) {
13
27
  return undefined;
@@ -52,7 +66,7 @@ const toParameterV3 = ({ parameter, stackTrail, context }) => {
52
66
  stackTrail,
53
67
  parentType: 'parameter'
54
68
  });
55
- const parsedLocation = v.parse(oasParameterLocation, location);
69
+ const parsedLocation = v.parse(parameterLocation, location);
56
70
  if (parsedLocation === 'path' && !required) {
57
71
  console.warn(`Path parameters must be required`);
58
72
  }
@@ -82,7 +96,7 @@ const toParameterV3 = ({ parameter, stackTrail, context }) => {
82
96
  return context.withStackTrail(stackTrail, () => new OasParameter(fields, context));
83
97
  };
84
98
  const toStyle = ({ style, location, stackTrail }) => {
85
- const parsed = v.parse(v.optional(oasParameterStyle), style);
99
+ const parsed = v.parse(v.optional(parameterStyle), style);
86
100
  if (parsed !== undefined) {
87
101
  return parsed;
88
102
  }
@@ -3,6 +3,7 @@ import { toRefV31 } from '../ref/toRefV31.js';
3
3
  import { toMediaTypeItemsV3 } from '../mediaType/toMediaTypeItemV3.js';
4
4
  import { OasRequestBody } from '../../../oas/requestBody/RequestBody.js';
5
5
  import { toSpecificationExtensionsV3 } from '../specificationExtensions/toSpecificationExtensionsV3.js';
6
+ import { logBodyMediaTypes } from '../../logBodyMediaTypes.js';
6
7
  export const toRequestBodyV3 = ({ requestBody, stackTrail, context }) => {
7
8
  if (!requestBody) {
8
9
  return undefined;
@@ -26,7 +27,9 @@ export const toRequestBodyV3 = ({ requestBody, stackTrail, context }) => {
26
27
  required,
27
28
  extensionFields
28
29
  };
29
- return context.withStackTrail(stackTrail, () => new OasRequestBody(fields, context));
30
+ const parsed = context.withStackTrail(stackTrail, () => new OasRequestBody(fields, context));
31
+ logBodyMediaTypes({ content: fields.content, stackTrail, context });
32
+ return parsed;
30
33
  };
31
34
  export const toRequestBodiesV3 = ({ requestBodies, stackTrail, context }) => {
32
35
  if (!requestBodies) {
@@ -6,6 +6,7 @@ import { toOptionalMediaTypeItemsV3 } from '../mediaType/toMediaTypeItemV3.js';
6
6
  import { OasResponse } from '../../../oas/response/Response.js';
7
7
  import { toSpecificationExtensionsV3 } from '../specificationExtensions/toSpecificationExtensionsV3.js';
8
8
  import { tryParseAt } from '../../../context/tryParseAt.js';
9
+ import { logBodyMediaTypes } from '../../logBodyMediaTypes.js';
9
10
  export const toResponsesV3 = ({ responses, stackTrail, context }) => {
10
11
  const output = {};
11
12
  const entries = Object.entries(responses);
@@ -45,11 +46,13 @@ export const toResponseV3 = ({ response, stackTrail, context }) => {
45
46
  const parsedHeaders = stackTrail.trace('headers', st => toHeadersV3({ headers, stackTrail: st, context }));
46
47
  const parsedLinks = stackTrail.trace('links', st => toLinksV3({ links, stackTrail: st, context }));
47
48
  const parsedContent = stackTrail.trace('content', st => toOptionalMediaTypeItemsV3({ content, stackTrail: st, context }));
48
- return context.withStackTrail(stackTrail, () => new OasResponse({
49
+ const parsed = context.withStackTrail(stackTrail, () => new OasResponse({
49
50
  description,
50
51
  headers: parsedHeaders,
51
52
  links: parsedLinks,
52
53
  content: parsedContent,
53
54
  extensionFields
54
55
  }, context));
56
+ logBodyMediaTypes({ content: parsedContent, stackTrail, context });
57
+ return parsed;
55
58
  };
@@ -1,10 +1,10 @@
1
1
  import { OasHttpSecurityScheme, OasApiKeySecurityScheme, OasOAuth2SecurityScheme, OasOpenIdSecurityScheme } from '../../../oas/securitySchemes/SecurityScheme.js';
2
2
  import * as v from 'valibot';
3
- import { oasApiKeySecuritySchemeData, oasHttpSecuritySchemeData, oasOAuth2SecuritySchemeData, oasOpenIdSecuritySchemeData } from '../../../oas/securitySchemes/security-scheme-types.js';
3
+ import { oasApiKeySecuritySchemeData, oasHttpSecuritySchemeData, oasOAuth2FlowsData, oasOAuth2SecuritySchemeData, oasOpenIdSecuritySchemeData } from '../../../oas/securitySchemes/security-scheme-types.js';
4
4
  import { toRefV31 } from '../ref/toRefV31.js';
5
5
  import { isRef } from '../../../helpers/refFns.js';
6
- import { isEmpty } from '../../../helpers/isEmpty.js';
7
6
  import { tryParseAt } from '../../../context/tryParseAt.js';
7
+ import { toSpecificationExtensionsV3 } from '../specificationExtensions/toSpecificationExtensionsV3.js';
8
8
  export const toSecuritySchemesV3 = ({ securitySchemes, stackTrail, context }) => {
9
9
  if (!securitySchemes) {
10
10
  return undefined;
@@ -27,21 +27,29 @@ export const toSecuritySchemesV3 = ({ securitySchemes, stackTrail, context }) =>
27
27
  }
28
28
  return output;
29
29
  };
30
+ /**
31
+ * Log the keys of `value` that `known` does not name as skipped fields.
32
+ * `v.parse` on a `v.object` schema strips unknown keys, so they are read
33
+ * off the raw object. `x-` extensions are not logged.
34
+ */
35
+ const logSkippedKeys = ({ value, known, parentType, stackTrail, context }) => {
36
+ const skipped = Object.fromEntries(Object.entries(value).filter(([key]) => !Object.hasOwn(known, key)));
37
+ toSpecificationExtensionsV3({ skipped, parent: value, parentType, stackTrail, context });
38
+ };
30
39
  const toSecuritySchemeV3 = ({ securityScheme, stackTrail, context }) => {
31
40
  if (isRef(securityScheme)) {
32
41
  return toRefV31({ ref: securityScheme, refType: 'securityScheme', stackTrail, context });
33
42
  }
34
43
  switch (securityScheme.type) {
35
44
  case 'http': {
36
- const { type: _type, description, scheme, bearerFormat, ...skipped } = v.parse(oasHttpSecuritySchemeData, securityScheme);
37
- if (!isEmpty(skipped)) {
38
- context.logSkippedFields({
39
- skipped,
40
- parent: securityScheme,
41
- stackTrail,
42
- parentType: 'securityScheme:http'
43
- });
44
- }
45
+ const { description, scheme, bearerFormat } = v.parse(oasHttpSecuritySchemeData, securityScheme);
46
+ logSkippedKeys({
47
+ value: securityScheme,
48
+ known: oasHttpSecuritySchemeData.entries,
49
+ parentType: 'securityScheme:http',
50
+ stackTrail,
51
+ context
52
+ });
45
53
  return new OasHttpSecurityScheme({
46
54
  description,
47
55
  scheme,
@@ -49,15 +57,14 @@ const toSecuritySchemeV3 = ({ securityScheme, stackTrail, context }) => {
49
57
  });
50
58
  }
51
59
  case 'apiKey': {
52
- const { type: _type, in: location, description, name, ...skipped } = v.parse(oasApiKeySecuritySchemeData, securityScheme);
53
- if (!isEmpty(skipped)) {
54
- context.logSkippedFields({
55
- skipped,
56
- parent: securityScheme,
57
- stackTrail,
58
- parentType: 'securityScheme:apiKey'
59
- });
60
- }
60
+ const { in: location, description, name } = v.parse(oasApiKeySecuritySchemeData, securityScheme);
61
+ logSkippedKeys({
62
+ value: securityScheme,
63
+ known: oasApiKeySecuritySchemeData.entries,
64
+ parentType: 'securityScheme:apiKey',
65
+ stackTrail,
66
+ context
67
+ });
61
68
  return new OasApiKeySecurityScheme({
62
69
  description,
63
70
  name,
@@ -65,30 +72,35 @@ const toSecuritySchemeV3 = ({ securityScheme, stackTrail, context }) => {
65
72
  });
66
73
  }
67
74
  case 'oauth2': {
68
- const { type: _type, flows, description, ...skipped } = v.parse(oasOAuth2SecuritySchemeData, securityScheme);
69
- if (!isEmpty(skipped)) {
70
- context.logSkippedFields({
71
- skipped,
72
- parent: securityScheme,
73
- stackTrail,
74
- parentType: 'securityScheme:oauth2'
75
- });
76
- }
75
+ const { flows, description } = v.parse(oasOAuth2SecuritySchemeData, securityScheme);
76
+ logSkippedKeys({
77
+ value: securityScheme,
78
+ known: oasOAuth2SecuritySchemeData.entries,
79
+ parentType: 'securityScheme:oauth2',
80
+ stackTrail,
81
+ context
82
+ });
83
+ stackTrail.trace('flows', st => logSkippedKeys({
84
+ value: securityScheme.flows,
85
+ known: oasOAuth2FlowsData.entries,
86
+ parentType: 'oauthFlows',
87
+ stackTrail: st,
88
+ context
89
+ }));
77
90
  return new OasOAuth2SecurityScheme({
78
91
  description,
79
92
  flows
80
93
  });
81
94
  }
82
95
  case 'openIdConnect': {
83
- const { type: _type, description, openIdConnectUrl, ...skipped } = v.parse(oasOpenIdSecuritySchemeData, securityScheme);
84
- if (!isEmpty(skipped)) {
85
- context.logSkippedFields({
86
- skipped,
87
- parent: securityScheme,
88
- stackTrail,
89
- parentType: 'securityScheme:openIdConnect'
90
- });
91
- }
96
+ const { description, openIdConnectUrl } = v.parse(oasOpenIdSecuritySchemeData, securityScheme);
97
+ logSkippedKeys({
98
+ value: securityScheme,
99
+ known: oasOpenIdSecuritySchemeData.entries,
100
+ parentType: 'securityScheme:openIdConnect',
101
+ stackTrail,
102
+ context
103
+ });
92
104
  return new OasOpenIdSecurityScheme({
93
105
  description,
94
106
  openIdConnectUrl
@@ -3,7 +3,7 @@ import { toResponsesV3 } from '../response/toResponseV3.js';
3
3
  import { toParameterListV3 } from '../parameter/toParameterV3.js';
4
4
  import { OasWebhook } from '../../../oas/webhook/Webhook.js';
5
5
  import { toPathItemV3 } from '../pathItem/toPathItemV3.js';
6
- import { methodValues } from '../../../types/Method.js';
6
+ import { toPathItemMethod } from '../methods.js';
7
7
  import { toSpecificationExtensionsV3 } from '../specificationExtensions/toSpecificationExtensionsV3.js';
8
8
  import { toSecurityRequirementsV3 } from '../securityRequirement/toSecurityRequirement.js';
9
9
  import { isEmpty } from '../../../helpers/isEmpty.js';
@@ -69,14 +69,14 @@ export const toWebhooksV3 = ({ webhooks, stackTrail, context }) => {
69
69
  return [];
70
70
  }
71
71
  const cleaned = Object.entries(pathItem).reduce(({ rest, methodObject }, [key, operation]) => {
72
- const isMethod = methodValues.includes(key);
73
- if (isMethod) {
74
- const { [key]: _deleted, ...remaining } = rest;
72
+ const method = toPathItemMethod(key);
73
+ if (method) {
74
+ const { [method]: _deleted, ...remaining } = rest;
75
75
  return {
76
76
  rest: remaining,
77
77
  methodObject: {
78
78
  ...methodObject,
79
- [key]: operation
79
+ [method]: operation
80
80
  }
81
81
  };
82
82
  }
@@ -0,0 +1,11 @@
1
+ import type { Method } from '../../types/Method.js';
2
+ /**
3
+ * A path item field that holds an Operation Object in OpenAPI 3.1. A
4
+ * `query` key is not one of them: it stays a skipped field.
5
+ */
6
+ export type PathItemMethod = Exclude<Method, 'query'>;
7
+ export declare const pathItemMethods: readonly PathItemMethod[];
8
+ /**
9
+ * Returns `key` as a {@link PathItemMethod} when it is one of {@link pathItemMethods}.
10
+ */
11
+ export declare const toPathItemMethod: (key: string) => PathItemMethod | undefined;
@@ -0,0 +1,16 @@
1
+ export const pathItemMethods = [
2
+ 'get',
3
+ 'put',
4
+ 'post',
5
+ 'delete',
6
+ 'options',
7
+ 'head',
8
+ 'patch',
9
+ 'trace'
10
+ ];
11
+ /**
12
+ * Returns `key` as a {@link PathItemMethod} when it is one of {@link pathItemMethods}.
13
+ */
14
+ export const toPathItemMethod = (key) => {
15
+ return pathItemMethods.find(method => method === key);
16
+ };