@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,155 @@
1
+ import { isRef } from '../../../helpers/refFns.js';
2
+ import { checkTypeConflicts } from './check-type-conflicts.js';
3
+ import { checkReadOnlyWriteOnlyConflicts } from './check-read-only-write-only-conflicts.js';
4
+ import { checkFormatConflicts } from './check-format-conflicts.js';
5
+ import { checkEnumConflicts } from './check-enum-conflicts.js';
6
+ import { checkNumberConstraintsConflicts } from './check-number-constraints-conflicts.js';
7
+ import { checkArrayItemTypeConflicts } from './check-array-item-type-conflicts.js';
8
+ import { mergeObjectConstraints } from './merge-object-constraints.js';
9
+ import { mergeArrayConstraints } from './merge-array-constraints.js';
10
+ import { mergeStringConstraints } from './merge-string-constraints.js';
11
+ import { mergeNumberConstraints } from './merge-number-constraints.js';
12
+ import { mergeIntegerConstraints } from './merge-integer-constraints.js';
13
+ import { mergeBooleanConstraints } from './merge-boolean-constraints.js';
14
+ import { genericMerge } from './generic-merge.js';
15
+ import { checkAtLeastOneTypeMatch } from './check-at-least-one-type-match.js';
16
+ import { mergeIntersection } from './merge-intersection.js';
17
+ import { mergeCrossProduct } from './merge-union.js';
18
+ import { isEmpty } from '../../../helpers/isEmpty.js';
19
+ import { isNullOnly, mergeNullOnly } from './nullable-merge.js';
20
+ export const mergeSchemasOrRefs = (first, second, getRef) => {
21
+ if (containsRef(first, second)) {
22
+ return mergeWithRef(first, second, getRef);
23
+ }
24
+ if (isRef(first)) {
25
+ throw new Error('Ref in first');
26
+ }
27
+ if (isRef(second)) {
28
+ throw new Error('Ref in second');
29
+ }
30
+ if (containsAllOf(first) || containsAllOf(second)) {
31
+ const mergedFirst = containsAllOf(first) ? mergeIntersection({ schema: first, getRef }) : first;
32
+ const mergedSecond = containsAllOf(second)
33
+ ? mergeIntersection({ schema: second, getRef })
34
+ : second;
35
+ return mergeSchemasOrRefs(mergedFirst, mergedSecond, getRef);
36
+ }
37
+ if (containsOneOf(first, second)) {
38
+ return mergeCrossProduct({ first, second, getRef, groupType: 'oneOf' });
39
+ }
40
+ if (containsAnyOf(first, second)) {
41
+ return mergeCrossProduct({ first, second, getRef, groupType: 'anyOf' });
42
+ }
43
+ if (isNullOnly(first)) {
44
+ return mergeNullOnly(second);
45
+ }
46
+ if (isNullOnly(second)) {
47
+ return mergeNullOnly(first);
48
+ }
49
+ return mergeSchemas(first, second, getRef);
50
+ };
51
+ const containsAllOf = (schema) => {
52
+ if (schema.allOf) {
53
+ if (schema.allOf?.length) {
54
+ return true;
55
+ }
56
+ throw new Error('Empty allOf');
57
+ }
58
+ return false;
59
+ };
60
+ const containsAnyOf = (first, second) => {
61
+ if (first.anyOf) {
62
+ if (first.anyOf?.length) {
63
+ return true;
64
+ }
65
+ throw new Error('Empty anyOf');
66
+ }
67
+ if (second.anyOf) {
68
+ if (second.anyOf?.length) {
69
+ return true;
70
+ }
71
+ throw new Error('Empty anyOf');
72
+ }
73
+ return false;
74
+ };
75
+ const containsOneOf = (first, second) => {
76
+ if (first.oneOf) {
77
+ if (first.oneOf?.length) {
78
+ return true;
79
+ }
80
+ throw new Error('Empty oneOf');
81
+ }
82
+ if (second.oneOf) {
83
+ if (second.oneOf?.length) {
84
+ return true;
85
+ }
86
+ throw new Error('Empty oneOf');
87
+ }
88
+ return false;
89
+ };
90
+ const containsRef = (first, second) => {
91
+ return isRef(first) || isRef(second);
92
+ };
93
+ const mergeSchemas = (first, second, getRef) => {
94
+ try {
95
+ checkTypeConflicts(first, second);
96
+ }
97
+ catch (e) {
98
+ throw e;
99
+ }
100
+ checkReadOnlyWriteOnlyConflicts(first, second);
101
+ checkFormatConflicts(first, second);
102
+ checkEnumConflicts(first, second);
103
+ checkNumberConstraintsConflicts(first, second);
104
+ checkArrayItemTypeConflicts(first, second);
105
+ if (first.not || second.not) {
106
+ throw new Error('Merging schemas with "not" keyword is not supported');
107
+ }
108
+ return typedMerge(first, second, getRef);
109
+ };
110
+ const typedMerge = (first, second, getRef) => {
111
+ if (!first.type && !second.type) {
112
+ return genericMerge(first, second, getRef);
113
+ }
114
+ if (checkAtLeastOneTypeMatch(first, second, 'object')) {
115
+ return mergeObjectConstraints(first, second, getRef);
116
+ }
117
+ if (checkAtLeastOneTypeMatch(first, second, 'array')) {
118
+ return mergeArrayConstraints(first, second, getRef);
119
+ }
120
+ if (checkAtLeastOneTypeMatch(first, second, 'string')) {
121
+ return mergeStringConstraints(first, second, getRef);
122
+ }
123
+ if (checkAtLeastOneTypeMatch(first, second, 'number')) {
124
+ return mergeNumberConstraints(first, second, getRef);
125
+ }
126
+ if (checkAtLeastOneTypeMatch(first, second, 'integer')) {
127
+ return mergeIntegerConstraints(first, second, getRef);
128
+ }
129
+ if (checkAtLeastOneTypeMatch(first, second, 'boolean')) {
130
+ return mergeBooleanConstraints(first, second, getRef);
131
+ }
132
+ throw new Error(`Cannot merge schemas with type "${first.type}" with type "${second.type}"`);
133
+ };
134
+ const mergeWithRef = (first, second, getRef) => {
135
+ if (isRef(first) && isRef(second)) {
136
+ if (first.$ref === second.$ref) {
137
+ return {
138
+ ...first,
139
+ ...second
140
+ };
141
+ }
142
+ else {
143
+ return mergeSchemas(getRef(first), getRef(second), getRef);
144
+ }
145
+ }
146
+ if (isRef(first) && !isRef(second)) {
147
+ const merged = isEmpty(second) ? first : mergeSchemas(getRef(first), second, getRef);
148
+ return merged;
149
+ }
150
+ if (!isRef(first) && isRef(second)) {
151
+ const merged = isEmpty(first) ? second : mergeSchemas(first, getRef(second), getRef);
152
+ return merged;
153
+ }
154
+ throw new Error('Invalid input');
155
+ };
@@ -0,0 +1,3 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ export declare const mergeNullOnly: (schema: OpenAPIV3.SchemaObject) => OpenAPIV3.SchemaObject;
3
+ export declare const isNullOnly: (schema: OpenAPIV3.SchemaObject) => boolean;
@@ -0,0 +1,12 @@
1
+ import { isEmpty } from '../../../helpers/isEmpty.js';
2
+ export const mergeNullOnly = (schema) => {
3
+ if (schema.enum && !schema.enum.includes(null)) {
4
+ schema.enum.push(null);
5
+ }
6
+ schema.nullable = true;
7
+ return schema;
8
+ };
9
+ export const isNullOnly = (schema) => {
10
+ const { type: _type, nullable, enum: enumValues, ...rest } = schema;
11
+ return (Boolean(nullable) && enumValues?.length === 1 && enumValues[0] === null && isEmpty(rest ?? {}));
12
+ };
@@ -0,0 +1,14 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ import * as v from 'valibot';
3
+ export type GetRefFn = (ref: OpenAPIV3.ReferenceObject) => OpenAPIV3.SchemaObject;
4
+ export type OneOfObject = {
5
+ oneOf?: (OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject)[];
6
+ } & OpenAPIV3.SchemaObject;
7
+ export type AnyOfObject = {
8
+ anyOf?: (OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject)[];
9
+ } & OpenAPIV3.SchemaObject;
10
+ export type SchemaObject = OpenAPIV3.SchemaObject;
11
+ export type ReferenceObject = OpenAPIV3.ReferenceObject;
12
+ export type SchemaOrReference = SchemaObject | ReferenceObject;
13
+ export type ArraySchemaObject = OpenAPIV3.ArraySchemaObject;
14
+ export declare const IntegerSchema: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, "The number must be an integer.">]>;
@@ -0,0 +1,2 @@
1
+ import * as v from 'valibot';
2
+ export const IntegerSchema = v.pipe(v.number(), v.integer('The number must be an integer.'));
@@ -0,0 +1,80 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ import { OasArray } from '../../../oas/array/Array.js';
3
+ import type { ParseContextType } from '../../../context/parseTypes.js';
4
+ import type { StackTrail } from '../../../context/StackTrail.js';
5
+ export type ToArrayArgs = {
6
+ value: OpenAPIV3.ArraySchemaObject;
7
+ stackTrail: StackTrail;
8
+ context: ParseContextType;
9
+ };
10
+ /**
11
+ * Transforms an OpenAPI v3 array schema object into an internal OAS array representation.
12
+ *
13
+ * This function processes OpenAPI array schemas by extracting and parsing nullable values,
14
+ * examples, enumerations, and default values. It handles the complete transformation from
15
+ * raw OpenAPI JSON to the SKMTC internal array representation with proper type safety.
16
+ *
17
+ * The transformation follows a pipeline approach:
18
+ * 1. Parse nullable flag and extract base value
19
+ * 2. Parse example values with nullable support
20
+ * 3. Parse enumeration constraints
21
+ * 4. Parse default values
22
+ * 5. Create final OasArray instance
23
+ *
24
+ * @param args - Transformation arguments
25
+ * @param args.value - The OpenAPI v3 array schema object to transform
26
+ * @param args.context - Parse context providing utilities and tracing
27
+ * @returns Transformed OAS array object with parsed properties
28
+ *
29
+ * @example Basic array transformation
30
+ * ```typescript
31
+ * import { toArray } from '@skmtc/core';
32
+ *
33
+ * const openApiArray = {
34
+ * type: 'array',
35
+ * items: { type: 'string' },
36
+ * maxItems: 10,
37
+ * uniqueItems: true
38
+ * };
39
+ *
40
+ * const oasArray = toArray({
41
+ * value: openApiArray,
42
+ * context: parseContext
43
+ * });
44
+ *
45
+ * console.log(oasArray.maxItems); // 10
46
+ * console.log(oasArray.uniqueItems); // true
47
+ * ```
48
+ *
49
+ * @example Array with nullable and examples
50
+ * ```typescript
51
+ * const complexArray = {
52
+ * type: 'array',
53
+ * items: { type: 'number' },
54
+ * nullable: true,
55
+ * example: [1, 2, 3],
56
+ * default: [],
57
+ * enum: [[1, 2], [3, 4], null]
58
+ * };
59
+ *
60
+ * const oasArray = toArray({
61
+ * value: complexArray,
62
+ * context: parseContext
63
+ * });
64
+ *
65
+ * console.log(oasArray.nullable); // true
66
+ * console.log(oasArray.example); // [1, 2, 3]
67
+ * ```
68
+ */
69
+ export declare const toArray: ({ value, context, stackTrail }: ToArrayArgs) => OasArray;
70
+ type ToParsedArrayArgs<Nullable extends boolean | undefined> = {
71
+ value: Omit<OpenAPIV3.ArraySchemaObject, 'nullable' | 'example' | 'enums' | 'default'>;
72
+ stackTrail: StackTrail;
73
+ context: ParseContextType;
74
+ nullable: Nullable;
75
+ example: Nullable extends true ? unknown[] | null | undefined : unknown[] | undefined;
76
+ enums: Nullable extends true ? (unknown[] | null)[] | undefined : unknown[] | undefined;
77
+ defaultValue: Nullable extends true ? unknown[] | null | undefined : unknown[] | undefined;
78
+ };
79
+ export declare const toParsedArray: <Nullable extends boolean | undefined>({ context, stackTrail, nullable, example, enums, defaultValue, value }: ToParsedArrayArgs<Nullable>) => OasArray<Nullable>;
80
+ export {};
@@ -0,0 +1,165 @@
1
+ import { OasArray } from '../../../oas/array/Array.js';
2
+ import { toSchemaV3 } from '../schema/toSchemasV3.js';
3
+ import { toSpecificationExtensionsV3 } from '../specificationExtensions/toSpecificationExtensionsV3.js';
4
+ import { parseNullable } from '../_helpers/parseNullable.js';
5
+ import { parseEnum } from '../_helpers/parseEnum.js';
6
+ import { parseExample } from '../_helpers/parseExample.js';
7
+ import { parseDefault } from '../_helpers/parseDefault.js';
8
+ import * as v from 'valibot';
9
+ import { oasArrayDataWithoutItems } from '../../../oas/array/array-types.js';
10
+ /**
11
+ * Transforms an OpenAPI v3 array schema object into an internal OAS array representation.
12
+ *
13
+ * This function processes OpenAPI array schemas by extracting and parsing nullable values,
14
+ * examples, enumerations, and default values. It handles the complete transformation from
15
+ * raw OpenAPI JSON to the SKMTC internal array representation with proper type safety.
16
+ *
17
+ * The transformation follows a pipeline approach:
18
+ * 1. Parse nullable flag and extract base value
19
+ * 2. Parse example values with nullable support
20
+ * 3. Parse enumeration constraints
21
+ * 4. Parse default values
22
+ * 5. Create final OasArray instance
23
+ *
24
+ * @param args - Transformation arguments
25
+ * @param args.value - The OpenAPI v3 array schema object to transform
26
+ * @param args.context - Parse context providing utilities and tracing
27
+ * @returns Transformed OAS array object with parsed properties
28
+ *
29
+ * @example Basic array transformation
30
+ * ```typescript
31
+ * import { toArray } from '@skmtc/core';
32
+ *
33
+ * const openApiArray = {
34
+ * type: 'array',
35
+ * items: { type: 'string' },
36
+ * maxItems: 10,
37
+ * uniqueItems: true
38
+ * };
39
+ *
40
+ * const oasArray = toArray({
41
+ * value: openApiArray,
42
+ * context: parseContext
43
+ * });
44
+ *
45
+ * console.log(oasArray.maxItems); // 10
46
+ * console.log(oasArray.uniqueItems); // true
47
+ * ```
48
+ *
49
+ * @example Array with nullable and examples
50
+ * ```typescript
51
+ * const complexArray = {
52
+ * type: 'array',
53
+ * items: { type: 'number' },
54
+ * nullable: true,
55
+ * example: [1, 2, 3],
56
+ * default: [],
57
+ * enum: [[1, 2], [3, 4], null]
58
+ * };
59
+ *
60
+ * const oasArray = toArray({
61
+ * value: complexArray,
62
+ * context: parseContext
63
+ * });
64
+ *
65
+ * console.log(oasArray.nullable); // true
66
+ * console.log(oasArray.example); // [1, 2, 3]
67
+ * ```
68
+ */
69
+ export const toArray = ({ value, context, stackTrail }) => {
70
+ const { nullable, value: valueWithoutNullable } = parseNullable({
71
+ value,
72
+ context,
73
+ stackTrail
74
+ });
75
+ const { example: unparsedExample, ...valueWithoutExample } = valueWithoutNullable;
76
+ const example = parseExample({
77
+ value: unparsedExample,
78
+ context,
79
+ parent: valueWithoutNullable,
80
+ nullable,
81
+ check: isArray,
82
+ toMessage: item => `Removed invalid example. Expected "array", got: ${item}`,
83
+ stackTrail
84
+ });
85
+ const { enum: unparsedEnums, ...valueWithoutEnums } = valueWithoutExample;
86
+ const enums = parseEnum({
87
+ value: unparsedEnums,
88
+ nullable,
89
+ stackTrail,
90
+ parent: valueWithoutExample,
91
+ context,
92
+ check: Array.isArray,
93
+ toMessage: item => `Removed invalid enum. Expected "array", got: ${item}`
94
+ });
95
+ const { default: unparsedDefaultValue, ...valueWithoutDefault } = valueWithoutEnums;
96
+ const defaultValue = parseDefault({
97
+ value: unparsedDefaultValue,
98
+ context,
99
+ parent: valueWithoutEnums,
100
+ nullable,
101
+ check: isArray,
102
+ toMessage: item => `Removed invalid default. Expected "array", got: ${item}`,
103
+ stackTrail
104
+ });
105
+ return toParsedArray({
106
+ context,
107
+ nullable,
108
+ example,
109
+ enums,
110
+ defaultValue,
111
+ stackTrail,
112
+ value: valueWithoutDefault
113
+ });
114
+ };
115
+ export const toParsedArray = ({ context, stackTrail, nullable, example, enums, defaultValue, value }) => {
116
+ // We only want parse non-items fields here since items is handled below
117
+ const { items, ...rest } = value;
118
+ // Parse the object without items field
119
+ if (!v.is(oasArrayDataWithoutItems, rest)) {
120
+ v.parse(oasArrayDataWithoutItems, rest);
121
+ }
122
+ const { type: _type, title, description, uniqueItems, maxItems, minItems, readOnly, writeOnly, deprecated, ...skipped } = rest;
123
+ const extensionFields = toSpecificationExtensionsV3({
124
+ skipped,
125
+ parent: value,
126
+ context,
127
+ stackTrail,
128
+ parentType: 'schema:array'
129
+ });
130
+ return context.withStackTrail(stackTrail, () => new OasArray({
131
+ title,
132
+ description,
133
+ nullable,
134
+ defaultValue,
135
+ items: stackTrail.trace('items', st => {
136
+ // An array schema with no `items` is invalid OAS but must not
137
+ // kill the run (fail open): log the issue and treat the items
138
+ // as unknown — `{}` falls through toSchemaV3 to OasUnknown.
139
+ if (items === undefined) {
140
+ context.logIssue({
141
+ key: 'items',
142
+ level: 'warning',
143
+ message: 'Array schema has no "items" — treating as an array of unknown values',
144
+ parent: value,
145
+ stackTrail: st,
146
+ type: 'INVALID_SCHEMA'
147
+ });
148
+ return toSchemaV3({ schema: {}, stackTrail: st, context });
149
+ }
150
+ return toSchemaV3({ schema: items, stackTrail: st, context });
151
+ }),
152
+ extensionFields,
153
+ example,
154
+ uniqueItems,
155
+ maxItems,
156
+ minItems,
157
+ enums,
158
+ readOnly,
159
+ writeOnly,
160
+ deprecated
161
+ }, context));
162
+ };
163
+ const isArray = (value) => {
164
+ return Array.isArray(value);
165
+ };
@@ -0,0 +1,78 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ import type { ParseContextType } from '../../../context/parseTypes.js';
3
+ import { OasBoolean } from '../../../oas/boolean/Boolean.js';
4
+ import type { StackTrail } from '../../../context/StackTrail.js';
5
+ export type ToBooleanArgs = {
6
+ value: OpenAPIV3.SchemaObject;
7
+ stackTrail: StackTrail;
8
+ context: ParseContextType;
9
+ };
10
+ /**
11
+ * Transforms an OpenAPI v3 boolean schema object into an internal OAS boolean representation.
12
+ *
13
+ * This function processes OpenAPI boolean schemas by extracting and parsing nullable values,
14
+ * examples, enumerations, and default values. It handles the complete transformation from
15
+ * raw OpenAPI JSON to the SKMTC internal boolean representation with proper validation.
16
+ *
17
+ * The transformation follows a pipeline approach:
18
+ * 1. Parse nullable flag and extract base value
19
+ * 2. Parse example values with nullable support
20
+ * 3. Parse enumeration constraints (typically [true], [false], or [true, false])
21
+ * 4. Parse default values
22
+ * 5. Create final OasBoolean instance
23
+ *
24
+ * @param args - Transformation arguments
25
+ * @param args.value - The OpenAPI v3 boolean schema object to transform
26
+ * @param args.context - Parse context providing utilities and tracing
27
+ * @returns Transformed OAS boolean object with parsed properties
28
+ *
29
+ * @example Basic boolean transformation
30
+ * ```typescript
31
+ * import { toBoolean } from '@skmtc/core';
32
+ *
33
+ * const openApiBoolean = {
34
+ * type: 'boolean',
35
+ * default: false
36
+ * };
37
+ *
38
+ * const oasBoolean = toBoolean({
39
+ * value: openApiBoolean,
40
+ * context: parseContext
41
+ * });
42
+ *
43
+ * console.log(oasBoolean.default); // false
44
+ * ```
45
+ *
46
+ * @example Boolean with nullable and enum
47
+ * ```typescript
48
+ * const flagBoolean = {
49
+ * type: 'boolean',
50
+ * nullable: true,
51
+ * enum: [true, null],
52
+ * default: null,
53
+ * example: true,
54
+ * title: 'Feature Flag',
55
+ * description: 'Whether the feature is enabled'
56
+ * };
57
+ *
58
+ * const oasBoolean = toBoolean({
59
+ * value: flagBoolean,
60
+ * context: parseContext
61
+ * });
62
+ *
63
+ * console.log(oasBoolean.nullable); // true
64
+ * console.log(oasBoolean.enums); // [true, null]
65
+ * ```
66
+ */
67
+ export declare const toBoolean: ({ value, stackTrail, context }: ToBooleanArgs) => OasBoolean;
68
+ type ToParsedBooleanArgs<Nullable extends boolean | undefined> = {
69
+ value: Omit<OpenAPIV3.SchemaObject, 'nullable' | 'example' | 'enums'>;
70
+ context: ParseContextType;
71
+ nullable: Nullable;
72
+ example: Nullable extends true ? boolean | null | undefined : boolean | undefined;
73
+ enums: Nullable extends true ? (boolean | null)[] | undefined : boolean[] | undefined;
74
+ defaultValue: Nullable extends true ? boolean | null | undefined : boolean | undefined;
75
+ stackTrail: StackTrail;
76
+ };
77
+ export declare const toParsedBoolean: <Nullable extends boolean | undefined>({ context, nullable, example, enums, defaultValue, value, stackTrail }: ToParsedBooleanArgs<Nullable>) => OasBoolean<Nullable>;
78
+ export {};
@@ -0,0 +1,139 @@
1
+ import { OasBoolean } from '../../../oas/boolean/Boolean.js';
2
+ import { toSpecificationExtensionsV3 } from '../specificationExtensions/toSpecificationExtensionsV3.js';
3
+ import { oasBooleanData } from '../../../oas/boolean/boolean-types.js';
4
+ import { parseNullable } from '../_helpers/parseNullable.js';
5
+ import { parseEnum } from '../_helpers/parseEnum.js';
6
+ import { parseExample } from '../_helpers/parseExample.js';
7
+ import { parseDefault } from '../_helpers/parseDefault.js';
8
+ import * as v from 'valibot';
9
+ /**
10
+ * Transforms an OpenAPI v3 boolean schema object into an internal OAS boolean representation.
11
+ *
12
+ * This function processes OpenAPI boolean schemas by extracting and parsing nullable values,
13
+ * examples, enumerations, and default values. It handles the complete transformation from
14
+ * raw OpenAPI JSON to the SKMTC internal boolean representation with proper validation.
15
+ *
16
+ * The transformation follows a pipeline approach:
17
+ * 1. Parse nullable flag and extract base value
18
+ * 2. Parse example values with nullable support
19
+ * 3. Parse enumeration constraints (typically [true], [false], or [true, false])
20
+ * 4. Parse default values
21
+ * 5. Create final OasBoolean instance
22
+ *
23
+ * @param args - Transformation arguments
24
+ * @param args.value - The OpenAPI v3 boolean schema object to transform
25
+ * @param args.context - Parse context providing utilities and tracing
26
+ * @returns Transformed OAS boolean object with parsed properties
27
+ *
28
+ * @example Basic boolean transformation
29
+ * ```typescript
30
+ * import { toBoolean } from '@skmtc/core';
31
+ *
32
+ * const openApiBoolean = {
33
+ * type: 'boolean',
34
+ * default: false
35
+ * };
36
+ *
37
+ * const oasBoolean = toBoolean({
38
+ * value: openApiBoolean,
39
+ * context: parseContext
40
+ * });
41
+ *
42
+ * console.log(oasBoolean.default); // false
43
+ * ```
44
+ *
45
+ * @example Boolean with nullable and enum
46
+ * ```typescript
47
+ * const flagBoolean = {
48
+ * type: 'boolean',
49
+ * nullable: true,
50
+ * enum: [true, null],
51
+ * default: null,
52
+ * example: true,
53
+ * title: 'Feature Flag',
54
+ * description: 'Whether the feature is enabled'
55
+ * };
56
+ *
57
+ * const oasBoolean = toBoolean({
58
+ * value: flagBoolean,
59
+ * context: parseContext
60
+ * });
61
+ *
62
+ * console.log(oasBoolean.nullable); // true
63
+ * console.log(oasBoolean.enums); // [true, null]
64
+ * ```
65
+ */
66
+ export const toBoolean = ({ value, stackTrail, context }) => {
67
+ const { nullable, value: valueWithoutNullable } = parseNullable({
68
+ value,
69
+ context,
70
+ stackTrail
71
+ });
72
+ const { example: unparsedExample, ...valueWithoutExample } = valueWithoutNullable;
73
+ const example = parseExample({
74
+ value: unparsedExample,
75
+ context,
76
+ parent: valueWithoutNullable,
77
+ nullable,
78
+ check: isBoolean,
79
+ toMessage: item => `Removed invalid example. Expected "boolean", got: ${item}`,
80
+ stackTrail
81
+ });
82
+ const { enum: unparsedEnums, ...valueWithoutEnums } = valueWithoutExample;
83
+ const enums = parseEnum({
84
+ value: unparsedEnums,
85
+ nullable,
86
+ parent: valueWithoutExample,
87
+ stackTrail,
88
+ context,
89
+ check: isBoolean,
90
+ toMessage: item => `Removed invalid enum. Expected "boolean", got: ${item}`
91
+ });
92
+ const { default: unparsedDefaultValue, ...valueWithoutDefault } = valueWithoutEnums;
93
+ const defaultValue = parseDefault({
94
+ value: unparsedDefaultValue,
95
+ context,
96
+ parent: valueWithoutEnums,
97
+ nullable,
98
+ check: isBoolean,
99
+ toMessage: item => `Removed invalid default. Expected "boolean", got: ${item}`,
100
+ stackTrail
101
+ });
102
+ return toParsedBoolean({
103
+ context,
104
+ nullable,
105
+ example,
106
+ enums,
107
+ defaultValue,
108
+ value: valueWithoutDefault,
109
+ stackTrail
110
+ });
111
+ };
112
+ export const toParsedBoolean = ({ context, nullable, example, enums, defaultValue, value, stackTrail }) => {
113
+ if (!v.is(oasBooleanData, value)) {
114
+ v.parse(oasBooleanData, value);
115
+ }
116
+ const { type: _type, title, description, readOnly, writeOnly, deprecated, ...skipped } = value;
117
+ const extensionFields = toSpecificationExtensionsV3({
118
+ skipped,
119
+ parent: value,
120
+ context,
121
+ stackTrail,
122
+ parentType: 'schema:boolean'
123
+ });
124
+ return context.withStackTrail(stackTrail, () => new OasBoolean({
125
+ nullable,
126
+ title,
127
+ description,
128
+ example,
129
+ enums: enums,
130
+ default: defaultValue,
131
+ extensionFields,
132
+ readOnly,
133
+ writeOnly,
134
+ deprecated
135
+ }, context));
136
+ };
137
+ const isBoolean = (value) => {
138
+ return typeof value === 'boolean';
139
+ };
@@ -0,0 +1,14 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ import type { ParseContextType } from '../../../context/parseTypes.js';
3
+ import { OasComponents } from '../../../oas/components/Components.js';
4
+ import type { StackTrail } from '../../../context/StackTrail.js';
5
+ /** An OpenAPI 3.2 Components Object: the 3.0/3.1 maps plus `mediaTypes`. */
6
+ export type ComponentsObjectV32 = OpenAPIV3.ComponentsObject & {
7
+ mediaTypes?: Record<string, unknown>;
8
+ };
9
+ export type ToComponentsV3Args = {
10
+ components: ComponentsObjectV32 | undefined;
11
+ stackTrail: StackTrail;
12
+ context: ParseContextType;
13
+ };
14
+ export declare const toComponentsV3: ({ components, stackTrail, context }: ToComponentsV3Args) => OasComponents | undefined;