@skmtc/core 0.28.7 → 0.30.1

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