@skmtc/core 0.28.7 → 0.30.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/esm/_dnt.polyfills.d.ts +11 -0
  2. package/esm/_dnt.polyfills.js +14 -0
  3. package/esm/context/GenerateContext.js +16 -16
  4. package/esm/context/ParseContext.js +9 -1
  5. package/esm/context/RenderContext.d.ts +7 -7
  6. package/esm/context/RenderContext.js +17 -12
  7. package/esm/context/generateTypes.d.ts +2 -2
  8. package/esm/context/generateTypes.js +3 -1
  9. package/esm/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.d.ts +16 -0
  10. package/esm/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.js +23 -0
  11. package/esm/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.d.ts +16 -0
  12. package/esm/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.js +38 -0
  13. package/esm/dsl/GeneratorKeys.d.ts +2 -2
  14. package/esm/dsl/GeneratorKeys.js +6 -3
  15. package/esm/dsl/model/ModelDriver.js +4 -3
  16. package/esm/dsl/operation/gql/GqlOperationDriver.js +4 -3
  17. package/esm/dsl/operation/oas/OasOperationDriver.js +4 -3
  18. package/esm/dsl/webhook/WebhookDriver.js +4 -3
  19. package/esm/helpers/applyGeneratedSuffix.js +1 -1
  20. package/esm/helpers/isImported.d.ts +10 -74
  21. package/esm/helpers/isImported.js +12 -76
  22. package/esm/helpers/naming.d.ts +2 -1
  23. package/esm/helpers/naming.js +4 -2
  24. package/esm/helpers/normalizeWorkspacePath.d.ts +64 -0
  25. package/esm/helpers/normalizeWorkspacePath.js +98 -0
  26. package/esm/helpers/toResolvedArtifactPath.d.ts +8 -5
  27. package/esm/helpers/toResolvedArtifactPath.js +11 -7
  28. package/esm/helpers/toWorkspacePath.d.ts +3 -3
  29. package/esm/helpers/toWorkspacePath.js +5 -5
  30. package/esm/mod.d.ts +1 -0
  31. package/esm/mod.js +1 -0
  32. package/esm/oas/discriminator/Discriminator.d.ts +3 -0
  33. package/esm/oas/discriminator/Discriminator.js +7 -0
  34. package/esm/oas/document/Document.d.ts +7 -0
  35. package/esm/oas/document/Document.js +8 -0
  36. package/esm/oas/example/Example.d.ts +10 -1
  37. package/esm/oas/example/Example.js +16 -0
  38. package/esm/oas/mediaType/MediaType.d.ts +12 -0
  39. package/esm/oas/mediaType/MediaType.js +24 -0
  40. package/esm/oas/parameter/Parameter.d.ts +2 -1
  41. package/esm/oas/parameter/Parameter.js +5 -2
  42. package/esm/oas/parameter/parameter-types.d.ts +10 -2
  43. package/esm/oas/parameter/parameter-types.js +3 -1
  44. package/esm/oas/response/Response.d.ts +6 -1
  45. package/esm/oas/response/Response.js +8 -0
  46. package/esm/oas/securitySchemes/SecurityScheme.d.ts +47 -4
  47. package/esm/oas/securitySchemes/SecurityScheme.js +46 -1
  48. package/esm/oas/securitySchemes/security-scheme-types.d.ts +21 -0
  49. package/esm/oas/server/Server.d.ts +8 -2
  50. package/esm/oas/server/Server.js +10 -1
  51. package/esm/oas/tag/Tag.d.ts +9 -0
  52. package/esm/oas/tag/Tag.js +9 -0
  53. package/esm/parse/toOasDialect.d.ts +8 -7
  54. package/esm/parse/toOasDialect.js +4 -2
  55. package/esm/parse/v3-0/methods.d.ts +11 -0
  56. package/esm/parse/v3-0/methods.js +16 -0
  57. package/esm/parse/v3-0/operation/toOperationsV3.js +5 -5
  58. package/esm/parse/v3-0/parameter/toParameterV3.d.ts +4 -2
  59. package/esm/parse/v3-0/parameter/toParameterV3.js +17 -3
  60. package/esm/parse/v3-0/securitySchemes/toSecuritySchemes.js +50 -38
  61. package/esm/parse/v3-0/webhook/toWebhooksV3.js +5 -5
  62. package/esm/parse/v3-1/methods.d.ts +11 -0
  63. package/esm/parse/v3-1/methods.js +16 -0
  64. package/esm/parse/v3-1/operation/toOperationsV3.js +5 -5
  65. package/esm/parse/v3-1/parameter/toParameterV3.d.ts +4 -2
  66. package/esm/parse/v3-1/parameter/toParameterV3.js +17 -3
  67. package/esm/parse/v3-1/securitySchemes/toSecuritySchemes.js +50 -38
  68. package/esm/parse/v3-1/webhook/toWebhooksV3.js +5 -5
  69. package/esm/parse/v3-2/_helpers/parseDefault.d.ts +43 -0
  70. package/esm/parse/v3-2/_helpers/parseDefault.js +39 -0
  71. package/esm/parse/v3-2/_helpers/parseEnum.d.ts +13 -0
  72. package/esm/parse/v3-2/_helpers/parseEnum.js +23 -0
  73. package/esm/parse/v3-2/_helpers/parseExample.d.ts +41 -0
  74. package/esm/parse/v3-2/_helpers/parseExample.js +37 -0
  75. package/esm/parse/v3-2/_helpers/parseNullable.d.ts +141 -0
  76. package/esm/parse/v3-2/_helpers/parseNullable.js +140 -0
  77. package/esm/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.d.ts +2 -0
  78. package/esm/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.js +9 -0
  79. package/esm/parse/v3-2/_merge-all-of/check-at-least-one-type-match.d.ts +4 -0
  80. package/esm/parse/v3-2/_merge-all-of/check-at-least-one-type-match.js +5 -0
  81. package/esm/parse/v3-2/_merge-all-of/check-enum-conflicts.d.ts +2 -0
  82. package/esm/parse/v3-2/_merge-all-of/check-enum-conflicts.js +11 -0
  83. package/esm/parse/v3-2/_merge-all-of/check-format-conflicts.d.ts +2 -0
  84. package/esm/parse/v3-2/_merge-all-of/check-format-conflicts.js +5 -0
  85. package/esm/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.d.ts +2 -0
  86. package/esm/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.js +11 -0
  87. package/esm/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.d.ts +2 -0
  88. package/esm/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.js +5 -0
  89. package/esm/parse/v3-2/_merge-all-of/check-type-conflicts.d.ts +2 -0
  90. package/esm/parse/v3-2/_merge-all-of/check-type-conflicts.js +5 -0
  91. package/esm/parse/v3-2/_merge-all-of/cross-product.d.ts +2 -0
  92. package/esm/parse/v3-2/_merge-all-of/cross-product.js +3 -0
  93. package/esm/parse/v3-2/_merge-all-of/decompose-intersection.d.ts +6 -0
  94. package/esm/parse/v3-2/_merge-all-of/decompose-intersection.js +27 -0
  95. package/esm/parse/v3-2/_merge-all-of/decompose-union.d.ts +12 -0
  96. package/esm/parse/v3-2/_merge-all-of/decompose-union.js +69 -0
  97. package/esm/parse/v3-2/_merge-all-of/generic-merge.d.ts +3 -0
  98. package/esm/parse/v3-2/_merge-all-of/generic-merge.js +12 -0
  99. package/esm/parse/v3-2/_merge-all-of/is-equal.d.ts +1 -0
  100. package/esm/parse/v3-2/_merge-all-of/is-equal.js +19 -0
  101. package/esm/parse/v3-2/_merge-all-of/merge-array-constraints.d.ts +2 -0
  102. package/esm/parse/v3-2/_merge-all-of/merge-array-constraints.js +44 -0
  103. package/esm/parse/v3-2/_merge-all-of/merge-boolean-constraints.d.ts +3 -0
  104. package/esm/parse/v3-2/_merge-all-of/merge-boolean-constraints.js +7 -0
  105. package/esm/parse/v3-2/_merge-all-of/merge-enum-values.d.ts +3 -0
  106. package/esm/parse/v3-2/_merge-all-of/merge-enum-values.js +32 -0
  107. package/esm/parse/v3-2/_merge-all-of/merge-integer-constraints.d.ts +3 -0
  108. package/esm/parse/v3-2/_merge-all-of/merge-integer-constraints.js +41 -0
  109. package/esm/parse/v3-2/_merge-all-of/merge-intersection.d.ts +8 -0
  110. package/esm/parse/v3-2/_merge-all-of/merge-intersection.js +16 -0
  111. package/esm/parse/v3-2/_merge-all-of/merge-number-constraints.d.ts +3 -0
  112. package/esm/parse/v3-2/_merge-all-of/merge-number-constraints.js +41 -0
  113. package/esm/parse/v3-2/_merge-all-of/merge-object-constraints.d.ts +5 -0
  114. package/esm/parse/v3-2/_merge-all-of/merge-object-constraints.js +28 -0
  115. package/esm/parse/v3-2/_merge-all-of/merge-properties.d.ts +2 -0
  116. package/esm/parse/v3-2/_merge-all-of/merge-properties.js +25 -0
  117. package/esm/parse/v3-2/_merge-all-of/merge-required.d.ts +3 -0
  118. package/esm/parse/v3-2/_merge-all-of/merge-required.js +10 -0
  119. package/esm/parse/v3-2/_merge-all-of/merge-string-constraints.d.ts +3 -0
  120. package/esm/parse/v3-2/_merge-all-of/merge-string-constraints.js +55 -0
  121. package/esm/parse/v3-2/_merge-all-of/merge-union.d.ts +15 -0
  122. package/esm/parse/v3-2/_merge-all-of/merge-union.js +53 -0
  123. package/esm/parse/v3-2/_merge-all-of/merge.d.ts +2 -0
  124. package/esm/parse/v3-2/_merge-all-of/merge.js +155 -0
  125. package/esm/parse/v3-2/_merge-all-of/nullable-merge.d.ts +3 -0
  126. package/esm/parse/v3-2/_merge-all-of/nullable-merge.js +12 -0
  127. package/esm/parse/v3-2/_merge-all-of/types.d.ts +14 -0
  128. package/esm/parse/v3-2/_merge-all-of/types.js +2 -0
  129. package/esm/parse/v3-2/array/toArray.d.ts +80 -0
  130. package/esm/parse/v3-2/array/toArray.js +165 -0
  131. package/esm/parse/v3-2/boolean/toBoolean.d.ts +78 -0
  132. package/esm/parse/v3-2/boolean/toBoolean.js +139 -0
  133. package/esm/parse/v3-2/components/toComponentsV3.d.ts +14 -0
  134. package/esm/parse/v3-2/components/toComponentsV3.js +43 -0
  135. package/esm/parse/v3-2/contact/toContactV3.d.ts +5 -0
  136. package/esm/parse/v3-2/contact/toContactV3.js +18 -0
  137. package/esm/parse/v3-2/discriminator/toDiscriminatorV3.d.ts +14 -0
  138. package/esm/parse/v3-2/discriminator/toDiscriminatorV3.js +21 -0
  139. package/esm/parse/v3-2/document/toDocumentFieldsV3.d.ts +16 -0
  140. package/esm/parse/v3-2/document/toDocumentFieldsV3.js +33 -0
  141. package/esm/parse/v3-2/example/toExamplesV3.d.ts +77 -0
  142. package/esm/parse/v3-2/example/toExamplesV3.js +143 -0
  143. package/esm/parse/v3-2/externalDocs/toExternalDocs.d.ts +10 -0
  144. package/esm/parse/v3-2/externalDocs/toExternalDocs.js +15 -0
  145. package/esm/parse/v3-2/header/toHeadersV3.d.ts +18 -0
  146. package/esm/parse/v3-2/header/toHeadersV3.js +47 -0
  147. package/esm/parse/v3-2/info/toInfoV3.d.ts +10 -0
  148. package/esm/parse/v3-2/info/toInfoV3.js +23 -0
  149. package/esm/parse/v3-2/integer/toInteger.d.ts +21 -0
  150. package/esm/parse/v3-2/integer/toInteger.js +115 -0
  151. package/esm/parse/v3-2/license/toLicenseV3.d.ts +5 -0
  152. package/esm/parse/v3-2/license/toLicenseV3.js +17 -0
  153. package/esm/parse/v3-2/link/toLinksV3.d.ts +16 -0
  154. package/esm/parse/v3-2/link/toLinksV3.js +40 -0
  155. package/esm/parse/v3-2/mediaType/toMediaTypeItemV3.d.ts +323 -0
  156. package/esm/parse/v3-2/mediaType/toMediaTypeItemV3.js +375 -0
  157. package/esm/parse/v3-2/methods.d.ts +17 -0
  158. package/esm/parse/v3-2/methods.js +21 -0
  159. package/esm/parse/v3-2/number/toNumber.d.ts +10 -0
  160. package/esm/parse/v3-2/number/toNumber.js +115 -0
  161. package/esm/parse/v3-2/object/toAdditionalPropertiesV3.d.ts +11 -0
  162. package/esm/parse/v3-2/object/toAdditionalPropertiesV3.js +10 -0
  163. package/esm/parse/v3-2/object/toObject.d.ts +10 -0
  164. package/esm/parse/v3-2/object/toObject.js +90 -0
  165. package/esm/parse/v3-2/operation/toOperationsV3.d.ts +25 -0
  166. package/esm/parse/v3-2/operation/toOperationsV3.js +129 -0
  167. package/esm/parse/v3-2/parameter/toParameterV3.d.ts +39 -0
  168. package/esm/parse/v3-2/parameter/toParameterV3.js +152 -0
  169. package/esm/parse/v3-2/parameter/warnQuerystringConflictsV3.d.ts +22 -0
  170. package/esm/parse/v3-2/parameter/warnQuerystringConflictsV3.js +39 -0
  171. package/esm/parse/v3-2/pathItem/dropAdditionalOperationsV3.d.ts +17 -0
  172. package/esm/parse/v3-2/pathItem/dropAdditionalOperationsV3.js +34 -0
  173. package/esm/parse/v3-2/pathItem/toPathItemV3.d.ts +23 -0
  174. package/esm/parse/v3-2/pathItem/toPathItemV3.js +45 -0
  175. package/esm/parse/v3-2/ref/toRefV31.d.ts +19 -0
  176. package/esm/parse/v3-2/ref/toRefV31.js +10 -0
  177. package/esm/parse/v3-2/requestBody/toRequestBodiesV3.d.ts +18 -0
  178. package/esm/parse/v3-2/requestBody/toRequestBodiesV3.js +44 -0
  179. package/esm/parse/v3-2/response/toResponseV3.d.ts +29 -0
  180. package/esm/parse/v3-2/response/toResponseV3.js +56 -0
  181. package/esm/parse/v3-2/schema/toSchemasV3.d.ts +29 -0
  182. package/esm/parse/v3-2/schema/toSchemasV3.js +511 -0
  183. package/esm/parse/v3-2/securityRequirement/toSecurityRequirement.d.ts +9 -0
  184. package/esm/parse/v3-2/securityRequirement/toSecurityRequirement.js +9 -0
  185. package/esm/parse/v3-2/securitySchemes/toSecuritySchemes.d.ts +17 -0
  186. package/esm/parse/v3-2/securitySchemes/toSecuritySchemes.js +152 -0
  187. package/esm/parse/v3-2/server/toServerV3.d.ts +26 -0
  188. package/esm/parse/v3-2/server/toServerV3.js +31 -0
  189. package/esm/parse/v3-2/serverVariable/toServerVariableV3.d.ts +22 -0
  190. package/esm/parse/v3-2/serverVariable/toServerVariableV3.js +30 -0
  191. package/esm/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.d.ts +14 -0
  192. package/esm/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.js +25 -0
  193. package/esm/parse/v3-2/string/toString.d.ts +146 -0
  194. package/esm/parse/v3-2/string/toString.js +211 -0
  195. package/esm/parse/v3-2/tag/toTagsV3.d.ts +22 -0
  196. package/esm/parse/v3-2/tag/toTagsV3.js +78 -0
  197. package/esm/parse/v3-2/union/toUnion.d.ts +12 -0
  198. package/esm/parse/v3-2/union/toUnion.js +68 -0
  199. package/esm/parse/v3-2/unknown/toUnknown.d.ts +10 -0
  200. package/esm/parse/v3-2/unknown/toUnknown.js +19 -0
  201. package/esm/parse/v3-2/webhook/toWebhooksV3.d.ts +48 -0
  202. package/esm/parse/v3-2/webhook/toWebhooksV3.js +139 -0
  203. package/esm/types/Method.d.ts +7 -4
  204. package/esm/types/Method.js +17 -4
  205. package/esm/types/Preview.d.ts +2 -1
  206. package/esm/types/Settings.js +6 -8
  207. package/esm/types/SkmtcDocument.d.ts +6 -6
  208. package/package.json +1 -1
  209. package/script/_dnt.polyfills.d.ts +11 -0
  210. package/script/_dnt.polyfills.js +14 -0
  211. package/script/context/GenerateContext.js +16 -16
  212. package/script/context/ParseContext.js +9 -1
  213. package/script/context/RenderContext.d.ts +7 -7
  214. package/script/context/RenderContext.js +17 -12
  215. package/script/context/generateTypes.d.ts +2 -2
  216. package/script/context/generateTypes.js +3 -1
  217. package/script/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.d.ts +16 -0
  218. package/script/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.js +26 -0
  219. package/script/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.d.ts +16 -0
  220. package/script/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.js +41 -0
  221. package/script/dsl/GeneratorKeys.d.ts +2 -2
  222. package/script/dsl/GeneratorKeys.js +6 -3
  223. package/script/dsl/model/ModelDriver.js +4 -3
  224. package/script/dsl/operation/gql/GqlOperationDriver.js +4 -3
  225. package/script/dsl/operation/oas/OasOperationDriver.js +4 -3
  226. package/script/dsl/webhook/WebhookDriver.js +4 -3
  227. package/script/helpers/applyGeneratedSuffix.js +1 -1
  228. package/script/helpers/isImported.d.ts +10 -74
  229. package/script/helpers/isImported.js +12 -76
  230. package/script/helpers/naming.d.ts +2 -1
  231. package/script/helpers/naming.js +4 -2
  232. package/script/helpers/normalizeWorkspacePath.d.ts +64 -0
  233. package/script/helpers/normalizeWorkspacePath.js +107 -0
  234. package/script/helpers/toResolvedArtifactPath.d.ts +8 -5
  235. package/script/helpers/toResolvedArtifactPath.js +11 -7
  236. package/script/helpers/toWorkspacePath.d.ts +3 -3
  237. package/script/helpers/toWorkspacePath.js +5 -5
  238. package/script/mod.d.ts +1 -0
  239. package/script/mod.js +1 -0
  240. package/script/oas/discriminator/Discriminator.d.ts +3 -0
  241. package/script/oas/discriminator/Discriminator.js +7 -0
  242. package/script/oas/document/Document.d.ts +7 -0
  243. package/script/oas/document/Document.js +8 -0
  244. package/script/oas/example/Example.d.ts +10 -1
  245. package/script/oas/example/Example.js +16 -0
  246. package/script/oas/mediaType/MediaType.d.ts +12 -0
  247. package/script/oas/mediaType/MediaType.js +24 -0
  248. package/script/oas/parameter/Parameter.d.ts +2 -1
  249. package/script/oas/parameter/Parameter.js +5 -2
  250. package/script/oas/parameter/parameter-types.d.ts +10 -2
  251. package/script/oas/parameter/parameter-types.js +3 -1
  252. package/script/oas/response/Response.d.ts +6 -1
  253. package/script/oas/response/Response.js +8 -0
  254. package/script/oas/securitySchemes/SecurityScheme.d.ts +47 -4
  255. package/script/oas/securitySchemes/SecurityScheme.js +46 -1
  256. package/script/oas/securitySchemes/security-scheme-types.d.ts +21 -0
  257. package/script/oas/server/Server.d.ts +8 -2
  258. package/script/oas/server/Server.js +10 -1
  259. package/script/oas/tag/Tag.d.ts +9 -0
  260. package/script/oas/tag/Tag.js +9 -0
  261. package/script/parse/toOasDialect.d.ts +8 -7
  262. package/script/parse/toOasDialect.js +4 -2
  263. package/script/parse/v3-0/methods.d.ts +11 -0
  264. package/script/parse/v3-0/methods.js +20 -0
  265. package/script/parse/v3-0/operation/toOperationsV3.js +5 -5
  266. package/script/parse/v3-0/parameter/toParameterV3.d.ts +4 -2
  267. package/script/parse/v3-0/parameter/toParameterV3.js +17 -3
  268. package/script/parse/v3-0/securitySchemes/toSecuritySchemes.js +49 -37
  269. package/script/parse/v3-0/webhook/toWebhooksV3.js +5 -5
  270. package/script/parse/v3-1/methods.d.ts +11 -0
  271. package/script/parse/v3-1/methods.js +20 -0
  272. package/script/parse/v3-1/operation/toOperationsV3.js +5 -5
  273. package/script/parse/v3-1/parameter/toParameterV3.d.ts +4 -2
  274. package/script/parse/v3-1/parameter/toParameterV3.js +17 -3
  275. package/script/parse/v3-1/securitySchemes/toSecuritySchemes.js +49 -37
  276. package/script/parse/v3-1/webhook/toWebhooksV3.js +5 -5
  277. package/script/parse/v3-2/_helpers/parseDefault.d.ts +43 -0
  278. package/script/parse/v3-2/_helpers/parseDefault.js +43 -0
  279. package/script/parse/v3-2/_helpers/parseEnum.d.ts +13 -0
  280. package/script/parse/v3-2/_helpers/parseEnum.js +27 -0
  281. package/script/parse/v3-2/_helpers/parseExample.d.ts +41 -0
  282. package/script/parse/v3-2/_helpers/parseExample.js +41 -0
  283. package/script/parse/v3-2/_helpers/parseNullable.d.ts +141 -0
  284. package/script/parse/v3-2/_helpers/parseNullable.js +144 -0
  285. package/script/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.d.ts +2 -0
  286. package/script/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.js +13 -0
  287. package/script/parse/v3-2/_merge-all-of/check-at-least-one-type-match.d.ts +4 -0
  288. package/script/parse/v3-2/_merge-all-of/check-at-least-one-type-match.js +9 -0
  289. package/script/parse/v3-2/_merge-all-of/check-enum-conflicts.d.ts +2 -0
  290. package/script/parse/v3-2/_merge-all-of/check-enum-conflicts.js +15 -0
  291. package/script/parse/v3-2/_merge-all-of/check-format-conflicts.d.ts +2 -0
  292. package/script/parse/v3-2/_merge-all-of/check-format-conflicts.js +9 -0
  293. package/script/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.d.ts +2 -0
  294. package/script/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.js +15 -0
  295. package/script/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.d.ts +2 -0
  296. package/script/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.js +9 -0
  297. package/script/parse/v3-2/_merge-all-of/check-type-conflicts.d.ts +2 -0
  298. package/script/parse/v3-2/_merge-all-of/check-type-conflicts.js +9 -0
  299. package/script/parse/v3-2/_merge-all-of/cross-product.d.ts +2 -0
  300. package/script/parse/v3-2/_merge-all-of/cross-product.js +7 -0
  301. package/script/parse/v3-2/_merge-all-of/decompose-intersection.d.ts +6 -0
  302. package/script/parse/v3-2/_merge-all-of/decompose-intersection.js +31 -0
  303. package/script/parse/v3-2/_merge-all-of/decompose-union.d.ts +12 -0
  304. package/script/parse/v3-2/_merge-all-of/decompose-union.js +73 -0
  305. package/script/parse/v3-2/_merge-all-of/generic-merge.d.ts +3 -0
  306. package/script/parse/v3-2/_merge-all-of/generic-merge.js +16 -0
  307. package/script/parse/v3-2/_merge-all-of/is-equal.d.ts +1 -0
  308. package/script/parse/v3-2/_merge-all-of/is-equal.js +23 -0
  309. package/script/parse/v3-2/_merge-all-of/merge-array-constraints.d.ts +2 -0
  310. package/script/parse/v3-2/_merge-all-of/merge-array-constraints.js +80 -0
  311. package/script/parse/v3-2/_merge-all-of/merge-boolean-constraints.d.ts +3 -0
  312. package/script/parse/v3-2/_merge-all-of/merge-boolean-constraints.js +43 -0
  313. package/script/parse/v3-2/_merge-all-of/merge-enum-values.d.ts +3 -0
  314. package/script/parse/v3-2/_merge-all-of/merge-enum-values.js +68 -0
  315. package/script/parse/v3-2/_merge-all-of/merge-integer-constraints.d.ts +3 -0
  316. package/script/parse/v3-2/_merge-all-of/merge-integer-constraints.js +77 -0
  317. package/script/parse/v3-2/_merge-all-of/merge-intersection.d.ts +8 -0
  318. package/script/parse/v3-2/_merge-all-of/merge-intersection.js +20 -0
  319. package/script/parse/v3-2/_merge-all-of/merge-number-constraints.d.ts +3 -0
  320. package/script/parse/v3-2/_merge-all-of/merge-number-constraints.js +77 -0
  321. package/script/parse/v3-2/_merge-all-of/merge-object-constraints.d.ts +5 -0
  322. package/script/parse/v3-2/_merge-all-of/merge-object-constraints.js +65 -0
  323. package/script/parse/v3-2/_merge-all-of/merge-properties.d.ts +2 -0
  324. package/script/parse/v3-2/_merge-all-of/merge-properties.js +29 -0
  325. package/script/parse/v3-2/_merge-all-of/merge-required.d.ts +3 -0
  326. package/script/parse/v3-2/_merge-all-of/merge-required.js +15 -0
  327. package/script/parse/v3-2/_merge-all-of/merge-string-constraints.d.ts +3 -0
  328. package/script/parse/v3-2/_merge-all-of/merge-string-constraints.js +91 -0
  329. package/script/parse/v3-2/_merge-all-of/merge-union.d.ts +15 -0
  330. package/script/parse/v3-2/_merge-all-of/merge-union.js +58 -0
  331. package/script/parse/v3-2/_merge-all-of/merge.d.ts +2 -0
  332. package/script/parse/v3-2/_merge-all-of/merge.js +159 -0
  333. package/script/parse/v3-2/_merge-all-of/nullable-merge.d.ts +3 -0
  334. package/script/parse/v3-2/_merge-all-of/nullable-merge.js +17 -0
  335. package/script/parse/v3-2/_merge-all-of/types.d.ts +14 -0
  336. package/script/parse/v3-2/_merge-all-of/types.js +38 -0
  337. package/script/parse/v3-2/array/toArray.d.ts +80 -0
  338. package/script/parse/v3-2/array/toArray.js +203 -0
  339. package/script/parse/v3-2/boolean/toBoolean.d.ts +78 -0
  340. package/script/parse/v3-2/boolean/toBoolean.js +177 -0
  341. package/script/parse/v3-2/components/toComponentsV3.d.ts +14 -0
  342. package/script/parse/v3-2/components/toComponentsV3.js +47 -0
  343. package/script/parse/v3-2/contact/toContactV3.d.ts +5 -0
  344. package/script/parse/v3-2/contact/toContactV3.js +22 -0
  345. package/script/parse/v3-2/discriminator/toDiscriminatorV3.d.ts +14 -0
  346. package/script/parse/v3-2/discriminator/toDiscriminatorV3.js +25 -0
  347. package/script/parse/v3-2/document/toDocumentFieldsV3.d.ts +16 -0
  348. package/script/parse/v3-2/document/toDocumentFieldsV3.js +37 -0
  349. package/script/parse/v3-2/example/toExamplesV3.d.ts +77 -0
  350. package/script/parse/v3-2/example/toExamplesV3.js +149 -0
  351. package/script/parse/v3-2/externalDocs/toExternalDocs.d.ts +10 -0
  352. package/script/parse/v3-2/externalDocs/toExternalDocs.js +52 -0
  353. package/script/parse/v3-2/header/toHeadersV3.d.ts +18 -0
  354. package/script/parse/v3-2/header/toHeadersV3.js +51 -0
  355. package/script/parse/v3-2/info/toInfoV3.d.ts +10 -0
  356. package/script/parse/v3-2/info/toInfoV3.js +27 -0
  357. package/script/parse/v3-2/integer/toInteger.d.ts +21 -0
  358. package/script/parse/v3-2/integer/toInteger.js +153 -0
  359. package/script/parse/v3-2/license/toLicenseV3.d.ts +5 -0
  360. package/script/parse/v3-2/license/toLicenseV3.js +21 -0
  361. package/script/parse/v3-2/link/toLinksV3.d.ts +16 -0
  362. package/script/parse/v3-2/link/toLinksV3.js +44 -0
  363. package/script/parse/v3-2/mediaType/toMediaTypeItemV3.d.ts +323 -0
  364. package/script/parse/v3-2/mediaType/toMediaTypeItemV3.js +381 -0
  365. package/script/parse/v3-2/methods.d.ts +17 -0
  366. package/script/parse/v3-2/methods.js +25 -0
  367. package/script/parse/v3-2/number/toNumber.d.ts +10 -0
  368. package/script/parse/v3-2/number/toNumber.js +152 -0
  369. package/script/parse/v3-2/object/toAdditionalPropertiesV3.d.ts +11 -0
  370. package/script/parse/v3-2/object/toAdditionalPropertiesV3.js +14 -0
  371. package/script/parse/v3-2/object/toObject.d.ts +10 -0
  372. package/script/parse/v3-2/object/toObject.js +94 -0
  373. package/script/parse/v3-2/operation/toOperationsV3.d.ts +25 -0
  374. package/script/parse/v3-2/operation/toOperationsV3.js +134 -0
  375. package/script/parse/v3-2/parameter/toParameterV3.d.ts +39 -0
  376. package/script/parse/v3-2/parameter/toParameterV3.js +191 -0
  377. package/script/parse/v3-2/parameter/warnQuerystringConflictsV3.d.ts +22 -0
  378. package/script/parse/v3-2/parameter/warnQuerystringConflictsV3.js +43 -0
  379. package/script/parse/v3-2/pathItem/dropAdditionalOperationsV3.d.ts +17 -0
  380. package/script/parse/v3-2/pathItem/dropAdditionalOperationsV3.js +38 -0
  381. package/script/parse/v3-2/pathItem/toPathItemV3.d.ts +23 -0
  382. package/script/parse/v3-2/pathItem/toPathItemV3.js +50 -0
  383. package/script/parse/v3-2/ref/toRefV31.d.ts +19 -0
  384. package/script/parse/v3-2/ref/toRefV31.js +14 -0
  385. package/script/parse/v3-2/requestBody/toRequestBodiesV3.d.ts +18 -0
  386. package/script/parse/v3-2/requestBody/toRequestBodiesV3.js +49 -0
  387. package/script/parse/v3-2/response/toResponseV3.d.ts +29 -0
  388. package/script/parse/v3-2/response/toResponseV3.js +62 -0
  389. package/script/parse/v3-2/schema/toSchemasV3.d.ts +29 -0
  390. package/script/parse/v3-2/schema/toSchemasV3.js +518 -0
  391. package/script/parse/v3-2/securityRequirement/toSecurityRequirement.d.ts +9 -0
  392. package/script/parse/v3-2/securityRequirement/toSecurityRequirement.js +13 -0
  393. package/script/parse/v3-2/securitySchemes/toSecuritySchemes.d.ts +17 -0
  394. package/script/parse/v3-2/securitySchemes/toSecuritySchemes.js +189 -0
  395. package/script/parse/v3-2/server/toServerV3.d.ts +26 -0
  396. package/script/parse/v3-2/server/toServerV3.js +37 -0
  397. package/script/parse/v3-2/serverVariable/toServerVariableV3.d.ts +22 -0
  398. package/script/parse/v3-2/serverVariable/toServerVariableV3.js +36 -0
  399. package/script/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.d.ts +14 -0
  400. package/script/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.js +30 -0
  401. package/script/parse/v3-2/string/toString.d.ts +146 -0
  402. package/script/parse/v3-2/string/toString.js +249 -0
  403. package/script/parse/v3-2/tag/toTagsV3.d.ts +22 -0
  404. package/script/parse/v3-2/tag/toTagsV3.js +83 -0
  405. package/script/parse/v3-2/union/toUnion.d.ts +12 -0
  406. package/script/parse/v3-2/union/toUnion.js +72 -0
  407. package/script/parse/v3-2/unknown/toUnknown.d.ts +10 -0
  408. package/script/parse/v3-2/unknown/toUnknown.js +23 -0
  409. package/script/parse/v3-2/webhook/toWebhooksV3.d.ts +48 -0
  410. package/script/parse/v3-2/webhook/toWebhooksV3.js +144 -0
  411. package/script/types/Method.d.ts +7 -4
  412. package/script/types/Method.js +17 -4
  413. package/script/types/Preview.d.ts +2 -1
  414. package/script/types/Settings.js +7 -9
  415. package/script/types/SkmtcDocument.d.ts +6 -6
  416. package/esm/deps/jsr.io/@std/path/1.1.6/extname.d.ts +0 -24
  417. package/esm/deps/jsr.io/@std/path/1.1.6/extname.js +0 -31
  418. package/esm/deps/jsr.io/@std/path/1.1.6/normalize.d.ts +0 -25
  419. package/esm/deps/jsr.io/@std/path/1.1.6/normalize.js +0 -32
  420. package/esm/deps/jsr.io/@std/path/1.1.6/windows/extname.d.ts +0 -17
  421. package/esm/deps/jsr.io/@std/path/1.1.6/windows/extname.js +0 -83
  422. package/script/deps/jsr.io/@std/path/1.1.6/extname.d.ts +0 -24
  423. package/script/deps/jsr.io/@std/path/1.1.6/extname.js +0 -34
  424. package/script/deps/jsr.io/@std/path/1.1.6/normalize.d.ts +0 -25
  425. package/script/deps/jsr.io/@std/path/1.1.6/normalize.js +0 -35
  426. package/script/deps/jsr.io/@std/path/1.1.6/windows/extname.d.ts +0 -17
  427. package/script/deps/jsr.io/@std/path/1.1.6/windows/extname.js +0 -86
@@ -0,0 +1,323 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ import type { ParseContextType } from '../../../context/parseTypes.js';
3
+ import { OasMediaType } from '../../../oas/mediaType/MediaType.js';
4
+ import type { StackTrail } from '../../../context/StackTrail.js';
5
+ /**
6
+ * An OpenAPI 3.2 Media Type Object: the 3.0/3.1 fields plus the fields for
7
+ * sequential and multipart array media types.
8
+ */
9
+ export type MediaTypeObjectV32 = OpenAPIV3.MediaTypeObject & {
10
+ itemSchema?: OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject;
11
+ prefixEncoding?: Record<string, unknown>[];
12
+ itemEncoding?: Record<string, unknown>;
13
+ };
14
+ /**
15
+ * Arguments for transforming an OpenAPI v3 media type item into an OAS media type.
16
+ */
17
+ export type ToMediaTypeItemV3Args = {
18
+ /** The OpenAPI v3 media type object to transform */
19
+ mediaTypeItem: MediaTypeObjectV32;
20
+ /** The media type string (e.g., 'application/json', 'text/plain') */
21
+ mediaType: string;
22
+ /** The stack trail for tracing */
23
+ stackTrail: StackTrail;
24
+ /** The parsing context for tracing and processing */
25
+ context: ParseContextType;
26
+ };
27
+ /**
28
+ * Transforms an OpenAPI v3 media type object into an internal OAS media type representation.
29
+ *
30
+ * This function processes OpenAPI v3 MediaType objects, extracting schema definitions,
31
+ * examples, encoding information, and specification extensions. It creates a structured
32
+ * internal representation that can be used by the SKMTC pipeline for code generation
33
+ * and validation.
34
+ *
35
+ * The transformation handles all standard OpenAPI v3 MediaType properties including
36
+ * schema references, inline schemas, examples, encoding specifications, and custom
37
+ * extension fields that begin with 'x-'.
38
+ *
39
+ * @param args - Transformation arguments
40
+ * @param args.mediaTypeItem - The OpenAPI v3 media type object to process
41
+ * @param args.mediaType - The media type identifier (MIME type)
42
+ * @param args.context - Parsing context for tracing and error handling
43
+ * @returns Structured OAS media type object for internal processing
44
+ *
45
+ * @example Transforming JSON media type
46
+ * ```typescript
47
+ * import { toMediaTypeItemV3 } from '@skmtc/core/oas/mediaType';
48
+ *
49
+ * const jsonMediaType = {
50
+ * schema: {
51
+ * type: 'object',
52
+ * properties: {
53
+ * name: { type: 'string' },
54
+ * email: { type: 'string', format: 'email' }
55
+ * }
56
+ * },
57
+ * example: {
58
+ * name: 'John Doe',
59
+ * email: 'john@example.com'
60
+ * }
61
+ * };
62
+ *
63
+ * const result = toMediaTypeItemV3({
64
+ * mediaTypeItem: jsonMediaType,
65
+ * mediaType: 'application/json',
66
+ * context: parseContext
67
+ * });
68
+ *
69
+ * console.log(result.mediaType); // 'application/json'
70
+ * console.log(result.schema); // Processed schema object
71
+ * ```
72
+ *
73
+ * @example Processing form data with encoding
74
+ * ```typescript
75
+ * const formMediaType = {
76
+ * schema: {
77
+ * type: 'object',
78
+ * properties: {
79
+ * file: { type: 'string', format: 'binary' },
80
+ * metadata: { type: 'string' }
81
+ * }
82
+ * },
83
+ * encoding: {
84
+ * file: {
85
+ * contentType: 'image/png',
86
+ * headers: {
87
+ * 'X-Rate-Limit': {
88
+ * schema: { type: 'integer' }
89
+ * }
90
+ * }
91
+ * }
92
+ * }
93
+ * };
94
+ *
95
+ * const result = toMediaTypeItemV3({
96
+ * mediaTypeItem: formMediaType,
97
+ * mediaType: 'multipart/form-data',
98
+ * context: parseContext
99
+ * });
100
+ *
101
+ * console.log(result.encoding); // Processed encoding configuration
102
+ * ```
103
+ *
104
+ * @example Handling multiple examples
105
+ * ```typescript
106
+ * const mediaTypeWithExamples = {
107
+ * schema: { type: 'string' },
108
+ * examples: {
109
+ * success: {
110
+ * summary: 'Successful response',
111
+ * value: 'Operation completed'
112
+ * },
113
+ * error: {
114
+ * summary: 'Error response',
115
+ * value: 'Operation failed'
116
+ * }
117
+ * }
118
+ * };
119
+ *
120
+ * const result = toMediaTypeItemV3({
121
+ * mediaTypeItem: mediaTypeWithExamples,
122
+ * mediaType: 'text/plain',
123
+ * context: parseContext
124
+ * });
125
+ *
126
+ * console.log(Object.keys(result.examples)); // ['success', 'error']
127
+ * ```
128
+ */
129
+ export declare const toMediaTypeItemV3: ({ mediaTypeItem, mediaType, stackTrail, context }: ToMediaTypeItemV3Args) => OasMediaType;
130
+ /**
131
+ * Arguments for transforming multiple OpenAPI v3 media type items.
132
+ */
133
+ export type ToMediaTypeItemsV3Args = {
134
+ /** Map of media type strings to MediaType objects or `components.mediaTypes` references */
135
+ content: Record<string, MediaTypeObjectV32 | OpenAPIV3.ReferenceObject>;
136
+ /** The stack trail for tracing */
137
+ stackTrail: StackTrail;
138
+ /** The parsing context for tracing and processing */
139
+ context: ParseContextType;
140
+ };
141
+ /**
142
+ * Transforms multiple OpenAPI v3 media type objects into internal OAS representations.
143
+ *
144
+ * This function processes a complete content map from OpenAPI v3, transforming each
145
+ * media type entry into its internal OAS representation. It's commonly used to process
146
+ * the `content` property of request bodies, responses, and parameters that support
147
+ * multiple media types.
148
+ *
149
+ * The function maintains the original media type keys while transforming the values
150
+ * into structured OAS media type objects. Each transformation is traced for debugging
151
+ * and error tracking purposes.
152
+ *
153
+ * @param args - Transformation arguments
154
+ * @param args.content - Map of media types to OpenAPI MediaType objects
155
+ * @param args.context - Parsing context for tracing and error handling
156
+ * @returns Map of media type strings to processed OAS media type objects
157
+ *
158
+ * @example Processing multiple content types
159
+ * ```typescript
160
+ * import { toMediaTypeItemsV3 } from '@skmtc/core/oas/mediaType';
161
+ *
162
+ * const content = {
163
+ * 'application/json': {
164
+ * schema: {
165
+ * type: 'object',
166
+ * properties: { message: { type: 'string' } }
167
+ * }
168
+ * },
169
+ * 'application/xml': {
170
+ * schema: {
171
+ * type: 'string'
172
+ * }
173
+ * },
174
+ * 'text/plain': {
175
+ * schema: {
176
+ * type: 'string'
177
+ * },
178
+ * example: 'Plain text response'
179
+ * }
180
+ * };
181
+ *
182
+ * const result = toMediaTypeItemsV3({
183
+ * content,
184
+ * context: parseContext
185
+ * });
186
+ *
187
+ * console.log(Object.keys(result)); // ['application/json', 'application/xml', 'text/plain']
188
+ * console.log(result['application/json'].mediaType); // 'application/json'
189
+ * ```
190
+ *
191
+ * @example Processing request body content types
192
+ * ```typescript
193
+ * const requestBodyContent = {
194
+ * 'application/json': {
195
+ * schema: { $ref: '#/components/schemas/CreateUserRequest' }
196
+ * },
197
+ * 'application/x-www-form-urlencoded': {
198
+ * schema: {
199
+ * type: 'object',
200
+ * properties: {
201
+ * name: { type: 'string' },
202
+ * email: { type: 'string' }
203
+ * }
204
+ * },
205
+ * encoding: {
206
+ * email: {
207
+ * style: 'form',
208
+ * explode: false
209
+ * }
210
+ * }
211
+ * }
212
+ * };
213
+ *
214
+ * const processed = toMediaTypeItemsV3({
215
+ * content: requestBodyContent,
216
+ * context: parseContext
217
+ * });
218
+ *
219
+ * // Each media type is processed with its specific configuration
220
+ * console.log(processed['application/json'].schema); // Reference object
221
+ * console.log(processed['application/x-www-form-urlencoded'].encoding); // Form encoding config
222
+ * ```
223
+ */
224
+ export declare const toMediaTypeItemsV3: ({ content, stackTrail, context }: ToMediaTypeItemsV3Args) => Record<string, OasMediaType>;
225
+ /**
226
+ * Arguments for optionally transforming OpenAPI v3 media type items.
227
+ */
228
+ export type ToOptionalMediaTypeItemsV3Args = {
229
+ /** Optional map of media type strings to MediaType objects or `components.mediaTypes` references */
230
+ content: Record<string, MediaTypeObjectV32 | OpenAPIV3.ReferenceObject> | undefined;
231
+ /** The stack trail for tracing */
232
+ stackTrail: StackTrail;
233
+ /** The parsing context for tracing and processing */
234
+ context: ParseContextType;
235
+ };
236
+ /**
237
+ * Optionally transforms OpenAPI v3 media type objects when content is provided.
238
+ *
239
+ * This function provides a safe way to process media type content that may or may not
240
+ * be present in the OpenAPI specification. It handles the common pattern where content
241
+ * properties are optional in OpenAPI objects (like responses without bodies or
242
+ * operations without request bodies).
243
+ *
244
+ * When content is undefined, the function returns undefined without processing.
245
+ * When content is provided, it delegates to `toMediaTypeItemsV3` for full processing.
246
+ *
247
+ * @param args - Transformation arguments
248
+ * @param args.content - Optional map of media types to OpenAPI MediaType objects
249
+ * @param args.context - Parsing context for tracing and error handling
250
+ * @returns Map of processed media types if content exists, undefined otherwise
251
+ *
252
+ * @example Handling optional response content
253
+ * ```typescript
254
+ * import { toOptionalMediaTypeItemsV3 } from '@skmtc/core/oas/mediaType';
255
+ *
256
+ * // Response with content
257
+ * const responseWithContent = {
258
+ * description: 'Successful response',
259
+ * content: {
260
+ * 'application/json': {
261
+ * schema: { type: 'object' }
262
+ * }
263
+ * }
264
+ * };
265
+ *
266
+ * const withContent = toOptionalMediaTypeItemsV3({
267
+ * content: responseWithContent.content,
268
+ * context: parseContext
269
+ * });
270
+ * console.log(withContent); // { 'application/json': OasMediaType }
271
+ *
272
+ * // Response without content (like 204 No Content)
273
+ * const responseNoContent = {
274
+ * description: 'No content response'
275
+ * };
276
+ *
277
+ * const noContent = toOptionalMediaTypeItemsV3({
278
+ * content: responseNoContent.content, // undefined
279
+ * context: parseContext
280
+ * });
281
+ * console.log(noContent); // undefined
282
+ * ```
283
+ *
284
+ * @example Processing operations with optional request bodies
285
+ * ```typescript
286
+ * function processOperation(operation: OpenAPIV3.OperationObject) {
287
+ * const requestBodyContent = toOptionalMediaTypeItemsV3({
288
+ * content: operation.requestBody?.content,
289
+ * context: parseContext
290
+ * });
291
+ *
292
+ * if (requestBodyContent) {
293
+ * console.log('Operation has request body with media types:');
294
+ * console.log(Object.keys(requestBodyContent));
295
+ * } else {
296
+ * console.log('Operation has no request body');
297
+ * }
298
+ * }
299
+ * ```
300
+ *
301
+ * @example Safe processing in response handlers
302
+ * ```typescript
303
+ * class ResponseProcessor {
304
+ * processResponse(response: OpenAPIV3.ResponseObject) {
305
+ * const mediaTypes = toOptionalMediaTypeItemsV3({
306
+ * content: response.content,
307
+ * context: this.context
308
+ * });
309
+ *
310
+ * // Safe to check without worrying about undefined content
311
+ * const hasJsonResponse = mediaTypes && 'application/json' in mediaTypes;
312
+ *
313
+ * if (hasJsonResponse) {
314
+ * const jsonMediaType = mediaTypes['application/json'];
315
+ * return this.generateJsonResponseHandler(jsonMediaType);
316
+ * }
317
+ *
318
+ * return this.generateEmptyResponseHandler();
319
+ * }
320
+ * }
321
+ * ```
322
+ */
323
+ export declare const toOptionalMediaTypeItemsV3: ({ content, stackTrail, context }: ToOptionalMediaTypeItemsV3Args) => Record<string, OasMediaType> | undefined;
@@ -0,0 +1,381 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toOptionalMediaTypeItemsV3 = exports.toMediaTypeItemsV3 = exports.toMediaTypeItemV3 = void 0;
4
+ const toSchemasV3_js_1 = require("../schema/toSchemasV3.js");
5
+ const toExamplesV3_js_1 = require("../example/toExamplesV3.js");
6
+ const MediaType_js_1 = require("../../../oas/mediaType/MediaType.js");
7
+ const toSpecificationExtensionsV3_js_1 = require("../specificationExtensions/toSpecificationExtensionsV3.js");
8
+ const refFns_js_1 = require("../../../helpers/refFns.js");
9
+ const JsonPointer_js_1 = require("../../../types/JsonPointer.js");
10
+ /**
11
+ * Transforms an OpenAPI v3 media type object into an internal OAS media type representation.
12
+ *
13
+ * This function processes OpenAPI v3 MediaType objects, extracting schema definitions,
14
+ * examples, encoding information, and specification extensions. It creates a structured
15
+ * internal representation that can be used by the SKMTC pipeline for code generation
16
+ * and validation.
17
+ *
18
+ * The transformation handles all standard OpenAPI v3 MediaType properties including
19
+ * schema references, inline schemas, examples, encoding specifications, and custom
20
+ * extension fields that begin with 'x-'.
21
+ *
22
+ * @param args - Transformation arguments
23
+ * @param args.mediaTypeItem - The OpenAPI v3 media type object to process
24
+ * @param args.mediaType - The media type identifier (MIME type)
25
+ * @param args.context - Parsing context for tracing and error handling
26
+ * @returns Structured OAS media type object for internal processing
27
+ *
28
+ * @example Transforming JSON media type
29
+ * ```typescript
30
+ * import { toMediaTypeItemV3 } from '@skmtc/core/oas/mediaType';
31
+ *
32
+ * const jsonMediaType = {
33
+ * schema: {
34
+ * type: 'object',
35
+ * properties: {
36
+ * name: { type: 'string' },
37
+ * email: { type: 'string', format: 'email' }
38
+ * }
39
+ * },
40
+ * example: {
41
+ * name: 'John Doe',
42
+ * email: 'john@example.com'
43
+ * }
44
+ * };
45
+ *
46
+ * const result = toMediaTypeItemV3({
47
+ * mediaTypeItem: jsonMediaType,
48
+ * mediaType: 'application/json',
49
+ * context: parseContext
50
+ * });
51
+ *
52
+ * console.log(result.mediaType); // 'application/json'
53
+ * console.log(result.schema); // Processed schema object
54
+ * ```
55
+ *
56
+ * @example Processing form data with encoding
57
+ * ```typescript
58
+ * const formMediaType = {
59
+ * schema: {
60
+ * type: 'object',
61
+ * properties: {
62
+ * file: { type: 'string', format: 'binary' },
63
+ * metadata: { type: 'string' }
64
+ * }
65
+ * },
66
+ * encoding: {
67
+ * file: {
68
+ * contentType: 'image/png',
69
+ * headers: {
70
+ * 'X-Rate-Limit': {
71
+ * schema: { type: 'integer' }
72
+ * }
73
+ * }
74
+ * }
75
+ * }
76
+ * };
77
+ *
78
+ * const result = toMediaTypeItemV3({
79
+ * mediaTypeItem: formMediaType,
80
+ * mediaType: 'multipart/form-data',
81
+ * context: parseContext
82
+ * });
83
+ *
84
+ * console.log(result.encoding); // Processed encoding configuration
85
+ * ```
86
+ *
87
+ * @example Handling multiple examples
88
+ * ```typescript
89
+ * const mediaTypeWithExamples = {
90
+ * schema: { type: 'string' },
91
+ * examples: {
92
+ * success: {
93
+ * summary: 'Successful response',
94
+ * value: 'Operation completed'
95
+ * },
96
+ * error: {
97
+ * summary: 'Error response',
98
+ * value: 'Operation failed'
99
+ * }
100
+ * }
101
+ * };
102
+ *
103
+ * const result = toMediaTypeItemV3({
104
+ * mediaTypeItem: mediaTypeWithExamples,
105
+ * mediaType: 'text/plain',
106
+ * context: parseContext
107
+ * });
108
+ *
109
+ * console.log(Object.keys(result.examples)); // ['success', 'error']
110
+ * ```
111
+ */
112
+ const toMediaTypeItemV3 = ({ mediaTypeItem, mediaType, stackTrail, context }) => {
113
+ const { schema, itemSchema, example, examples, encoding, prefixEncoding, itemEncoding, ...skipped } = mediaTypeItem;
114
+ const extensionFields = (0, toSpecificationExtensionsV3_js_1.toSpecificationExtensionsV3)({
115
+ skipped,
116
+ parent: mediaTypeItem,
117
+ context,
118
+ stackTrail,
119
+ parentType: 'mediaType'
120
+ });
121
+ if (encoding !== undefined && (prefixEncoding !== undefined || itemEncoding !== undefined)) {
122
+ context.logIssue({
123
+ key: 'encoding',
124
+ level: 'warning',
125
+ message: `'encoding' must not be present together with 'prefixEncoding' or 'itemEncoding' in ${mediaType}`,
126
+ parent: mediaTypeItem,
127
+ stackTrail,
128
+ type: 'UNEXPECTED_PROPERTY'
129
+ });
130
+ }
131
+ const fields = {
132
+ mediaType,
133
+ encoding,
134
+ prefixEncoding,
135
+ itemEncoding,
136
+ schema: stackTrail.trace('schema', st => (0, toSchemasV3_js_1.toOptionalSchemaV3)({ schema, stackTrail: st, context })),
137
+ itemSchema: stackTrail.trace('itemSchema', st => (0, toSchemasV3_js_1.toOptionalSchemaV3)({ schema: itemSchema, stackTrail: st, context })),
138
+ examples: stackTrail.trace('examples', st => (0, toExamplesV3_js_1.toExamplesV3)({
139
+ example,
140
+ examples,
141
+ exampleKey: mediaType,
142
+ stackTrail: st,
143
+ context
144
+ })),
145
+ extensionFields
146
+ };
147
+ return context.withStackTrail(stackTrail, () => new MediaType_js_1.OasMediaType(fields, context));
148
+ };
149
+ exports.toMediaTypeItemV3 = toMediaTypeItemV3;
150
+ /**
151
+ * Transforms multiple OpenAPI v3 media type objects into internal OAS representations.
152
+ *
153
+ * This function processes a complete content map from OpenAPI v3, transforming each
154
+ * media type entry into its internal OAS representation. It's commonly used to process
155
+ * the `content` property of request bodies, responses, and parameters that support
156
+ * multiple media types.
157
+ *
158
+ * The function maintains the original media type keys while transforming the values
159
+ * into structured OAS media type objects. Each transformation is traced for debugging
160
+ * and error tracking purposes.
161
+ *
162
+ * @param args - Transformation arguments
163
+ * @param args.content - Map of media types to OpenAPI MediaType objects
164
+ * @param args.context - Parsing context for tracing and error handling
165
+ * @returns Map of media type strings to processed OAS media type objects
166
+ *
167
+ * @example Processing multiple content types
168
+ * ```typescript
169
+ * import { toMediaTypeItemsV3 } from '@skmtc/core/oas/mediaType';
170
+ *
171
+ * const content = {
172
+ * 'application/json': {
173
+ * schema: {
174
+ * type: 'object',
175
+ * properties: { message: { type: 'string' } }
176
+ * }
177
+ * },
178
+ * 'application/xml': {
179
+ * schema: {
180
+ * type: 'string'
181
+ * }
182
+ * },
183
+ * 'text/plain': {
184
+ * schema: {
185
+ * type: 'string'
186
+ * },
187
+ * example: 'Plain text response'
188
+ * }
189
+ * };
190
+ *
191
+ * const result = toMediaTypeItemsV3({
192
+ * content,
193
+ * context: parseContext
194
+ * });
195
+ *
196
+ * console.log(Object.keys(result)); // ['application/json', 'application/xml', 'text/plain']
197
+ * console.log(result['application/json'].mediaType); // 'application/json'
198
+ * ```
199
+ *
200
+ * @example Processing request body content types
201
+ * ```typescript
202
+ * const requestBodyContent = {
203
+ * 'application/json': {
204
+ * schema: { $ref: '#/components/schemas/CreateUserRequest' }
205
+ * },
206
+ * 'application/x-www-form-urlencoded': {
207
+ * schema: {
208
+ * type: 'object',
209
+ * properties: {
210
+ * name: { type: 'string' },
211
+ * email: { type: 'string' }
212
+ * }
213
+ * },
214
+ * encoding: {
215
+ * email: {
216
+ * style: 'form',
217
+ * explode: false
218
+ * }
219
+ * }
220
+ * }
221
+ * };
222
+ *
223
+ * const processed = toMediaTypeItemsV3({
224
+ * content: requestBodyContent,
225
+ * context: parseContext
226
+ * });
227
+ *
228
+ * // Each media type is processed with its specific configuration
229
+ * console.log(processed['application/json'].schema); // Reference object
230
+ * console.log(processed['application/x-www-form-urlencoded'].encoding); // Form encoding config
231
+ * ```
232
+ */
233
+ const toMediaTypeItemsV3 = ({ content, stackTrail, context }) => {
234
+ const output = {};
235
+ const entries = Object.entries(content);
236
+ for (const [mediaType, value] of entries) {
237
+ // A `$ref` is replaced by the Media Type Object it names, so a
238
+ // referenced media type parses exactly like an inline one.
239
+ const mediaTypeItem = (0, refFns_js_1.isRef)(value) ? toComponentMediaType({ $ref: value.$ref, context }) : value;
240
+ if (mediaTypeItem === undefined) {
241
+ context.logIssue({
242
+ key: mediaType,
243
+ level: 'error',
244
+ message: `Reference ${JSON.stringify(value)} does not resolve to an entry in components.mediaTypes; dropping '${mediaType}'`,
245
+ parent: value,
246
+ stackTrail,
247
+ type: 'INVALID_DEPENDENCY_REF'
248
+ });
249
+ continue;
250
+ }
251
+ output[mediaType] = stackTrail.trace(mediaType, st => (0, exports.toMediaTypeItemV3)({ mediaTypeItem, mediaType, stackTrail: st, context }));
252
+ }
253
+ return output;
254
+ };
255
+ exports.toMediaTypeItemsV3 = toMediaTypeItemsV3;
256
+ const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
257
+ const isMediaTypeObject = (value) => isRecord(value) && !(0, refFns_js_1.isRef)(value);
258
+ /**
259
+ * The Media Type Object a `$ref` names in `components.mediaTypes`, read off
260
+ * the raw document. An entry that is itself a `$ref` is followed. `undefined`
261
+ * when a `$ref` on the chain points elsewhere or names a missing entry, or
262
+ * when the chain is a cycle.
263
+ */
264
+ const toComponentMediaType = ({ $ref, context, visited = new Set() }) => {
265
+ const segments = $ref.startsWith('#') ? (0, JsonPointer_js_1.fromJsonPointer)($ref) : undefined;
266
+ if (segments?.length !== 3 || segments[0] !== 'components' || segments[1] !== 'mediaTypes') {
267
+ return undefined;
268
+ }
269
+ const [, , name] = segments;
270
+ if (visited.has(name)) {
271
+ return undefined;
272
+ }
273
+ const { components } = context.documentObject;
274
+ const mediaTypes = isRecord(components) ? components.mediaTypes : undefined;
275
+ if (!isRecord(mediaTypes) || !Object.hasOwn(mediaTypes, name)) {
276
+ return undefined;
277
+ }
278
+ const mediaTypeItem = mediaTypes[name];
279
+ if ((0, refFns_js_1.isRef)(mediaTypeItem)) {
280
+ return toComponentMediaType({
281
+ $ref: mediaTypeItem.$ref,
282
+ context,
283
+ visited: new Set([...visited, name])
284
+ });
285
+ }
286
+ return isMediaTypeObject(mediaTypeItem) ? mediaTypeItem : undefined;
287
+ };
288
+ /**
289
+ * Optionally transforms OpenAPI v3 media type objects when content is provided.
290
+ *
291
+ * This function provides a safe way to process media type content that may or may not
292
+ * be present in the OpenAPI specification. It handles the common pattern where content
293
+ * properties are optional in OpenAPI objects (like responses without bodies or
294
+ * operations without request bodies).
295
+ *
296
+ * When content is undefined, the function returns undefined without processing.
297
+ * When content is provided, it delegates to `toMediaTypeItemsV3` for full processing.
298
+ *
299
+ * @param args - Transformation arguments
300
+ * @param args.content - Optional map of media types to OpenAPI MediaType objects
301
+ * @param args.context - Parsing context for tracing and error handling
302
+ * @returns Map of processed media types if content exists, undefined otherwise
303
+ *
304
+ * @example Handling optional response content
305
+ * ```typescript
306
+ * import { toOptionalMediaTypeItemsV3 } from '@skmtc/core/oas/mediaType';
307
+ *
308
+ * // Response with content
309
+ * const responseWithContent = {
310
+ * description: 'Successful response',
311
+ * content: {
312
+ * 'application/json': {
313
+ * schema: { type: 'object' }
314
+ * }
315
+ * }
316
+ * };
317
+ *
318
+ * const withContent = toOptionalMediaTypeItemsV3({
319
+ * content: responseWithContent.content,
320
+ * context: parseContext
321
+ * });
322
+ * console.log(withContent); // { 'application/json': OasMediaType }
323
+ *
324
+ * // Response without content (like 204 No Content)
325
+ * const responseNoContent = {
326
+ * description: 'No content response'
327
+ * };
328
+ *
329
+ * const noContent = toOptionalMediaTypeItemsV3({
330
+ * content: responseNoContent.content, // undefined
331
+ * context: parseContext
332
+ * });
333
+ * console.log(noContent); // undefined
334
+ * ```
335
+ *
336
+ * @example Processing operations with optional request bodies
337
+ * ```typescript
338
+ * function processOperation(operation: OpenAPIV3.OperationObject) {
339
+ * const requestBodyContent = toOptionalMediaTypeItemsV3({
340
+ * content: operation.requestBody?.content,
341
+ * context: parseContext
342
+ * });
343
+ *
344
+ * if (requestBodyContent) {
345
+ * console.log('Operation has request body with media types:');
346
+ * console.log(Object.keys(requestBodyContent));
347
+ * } else {
348
+ * console.log('Operation has no request body');
349
+ * }
350
+ * }
351
+ * ```
352
+ *
353
+ * @example Safe processing in response handlers
354
+ * ```typescript
355
+ * class ResponseProcessor {
356
+ * processResponse(response: OpenAPIV3.ResponseObject) {
357
+ * const mediaTypes = toOptionalMediaTypeItemsV3({
358
+ * content: response.content,
359
+ * context: this.context
360
+ * });
361
+ *
362
+ * // Safe to check without worrying about undefined content
363
+ * const hasJsonResponse = mediaTypes && 'application/json' in mediaTypes;
364
+ *
365
+ * if (hasJsonResponse) {
366
+ * const jsonMediaType = mediaTypes['application/json'];
367
+ * return this.generateJsonResponseHandler(jsonMediaType);
368
+ * }
369
+ *
370
+ * return this.generateEmptyResponseHandler();
371
+ * }
372
+ * }
373
+ * ```
374
+ */
375
+ const toOptionalMediaTypeItemsV3 = ({ content, stackTrail, context }) => {
376
+ if (!content) {
377
+ return;
378
+ }
379
+ return (0, exports.toMediaTypeItemsV3)({ content, stackTrail, context });
380
+ };
381
+ exports.toOptionalMediaTypeItemsV3 = toOptionalMediaTypeItemsV3;