@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,43 @@
1
+ import type { ParseContextType } from '../../../context/parseTypes.js';
2
+ import type { StackTrail } from '../../../context/StackTrail.js';
3
+ /**
4
+ * Arguments for parsing the `default` property from OpenAPI schemas.
5
+ *
6
+ * @template Value - The narrowed type a valid (non-null) default holds
7
+ */
8
+ export type ParseDefaultArgs<Value> = {
9
+ /** The raw `default` value extracted from the schema */
10
+ value: unknown;
11
+ /** The parsed nullable flag — `null` is only a valid default when this is `true` */
12
+ nullable: boolean | undefined;
13
+ /** The surrounding schema object, used as the issue location's parent */
14
+ parent: unknown;
15
+ /** Type guard narrowing an acceptable non-null default to `Value` */
16
+ check: (item: unknown) => item is Value;
17
+ /** Builds the warning message for a rejected default */
18
+ toMessage: (item: unknown) => string;
19
+ /** Parse context for logging issues */
20
+ context: ParseContextType;
21
+ /** Stack trail for tracking the current parsing location */
22
+ stackTrail: StackTrail;
23
+ };
24
+ /**
25
+ * Parses and validates the `default` property of an OpenAPI scalar/structural
26
+ * schema, applying the nullable-conditional rule shared by `example`, `enum`,
27
+ * and `default`:
28
+ *
29
+ * - `undefined` → `undefined` (no default present)
30
+ * - `null` → kept only when `nullable` is `true`; otherwise rejected
31
+ * - a value passing `check` → kept
32
+ * - anything else → logged as an `INVALID_DEFAULT` warning and dropped
33
+ *
34
+ * This mirrors the OpenAPI 3.0 rule that a `default` MUST conform to the
35
+ * schema's type, where `nullable: true` widens that type to include `null`.
36
+ * The function is fail-open: an invalid default is stripped and recorded as a
37
+ * `ParseIssue`, never thrown.
38
+ *
39
+ * @template Value - The narrowed type a valid default holds
40
+ * @param args - Parsing configuration
41
+ * @returns The validated default (`Value`), `null` (nullable), or `undefined`
42
+ */
43
+ export declare const parseDefault: <Value>({ value, nullable, parent, context, check, toMessage, stackTrail }: ParseDefaultArgs<Value>) => Value | null | undefined;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Parses and validates the `default` property of an OpenAPI scalar/structural
3
+ * schema, applying the nullable-conditional rule shared by `example`, `enum`,
4
+ * and `default`:
5
+ *
6
+ * - `undefined` → `undefined` (no default present)
7
+ * - `null` → kept only when `nullable` is `true`; otherwise rejected
8
+ * - a value passing `check` → kept
9
+ * - anything else → logged as an `INVALID_DEFAULT` warning and dropped
10
+ *
11
+ * This mirrors the OpenAPI 3.0 rule that a `default` MUST conform to the
12
+ * schema's type, where `nullable: true` widens that type to include `null`.
13
+ * The function is fail-open: an invalid default is stripped and recorded as a
14
+ * `ParseIssue`, never thrown.
15
+ *
16
+ * @template Value - The narrowed type a valid default holds
17
+ * @param args - Parsing configuration
18
+ * @returns The validated default (`Value`), `null` (nullable), or `undefined`
19
+ */
20
+ export const parseDefault = ({ value, nullable, parent, context, check, toMessage, stackTrail }) => {
21
+ if (value === undefined) {
22
+ return undefined;
23
+ }
24
+ if (nullable && value === null) {
25
+ return null;
26
+ }
27
+ if (!check(value)) {
28
+ context.logIssue({
29
+ key: 'default',
30
+ level: 'warning',
31
+ message: toMessage(value),
32
+ parent,
33
+ stackTrail,
34
+ type: 'INVALID_DEFAULT'
35
+ });
36
+ return undefined;
37
+ }
38
+ return value;
39
+ };
@@ -0,0 +1,13 @@
1
+ import type { ParseContextType } from '../../../context/parseTypes.js';
2
+ import type { StackTrail } from '../../../context/StackTrail.js';
3
+ type ParseEnumArgs = {
4
+ value: unknown;
5
+ nullable: boolean | undefined;
6
+ parent: unknown;
7
+ check: (item: unknown) => boolean;
8
+ toMessage: (item: unknown) => string;
9
+ context: ParseContextType;
10
+ stackTrail: StackTrail;
11
+ };
12
+ export declare const parseEnum: ({ value, nullable, parent, context, check, toMessage, stackTrail }: ParseEnumArgs) => any[] | undefined;
13
+ export {};
@@ -0,0 +1,23 @@
1
+ export const parseEnum = ({ value, nullable, parent, context, check, toMessage, stackTrail }) => {
2
+ if (Array.isArray(value)) {
3
+ for (const item of value) {
4
+ if (nullable && item === null) {
5
+ continue;
6
+ }
7
+ if (check(item)) {
8
+ continue;
9
+ }
10
+ context.logIssue({
11
+ key: 'enum',
12
+ level: 'warning',
13
+ message: toMessage(item),
14
+ parent,
15
+ stackTrail,
16
+ type: 'INVALID_ENUM'
17
+ });
18
+ return undefined;
19
+ }
20
+ return value;
21
+ }
22
+ return undefined;
23
+ };
@@ -0,0 +1,41 @@
1
+ import type { ParseContextType } from '../../../context/parseTypes.js';
2
+ import type { StackTrail } from '../../../context/StackTrail.js';
3
+ /**
4
+ * Arguments for parsing the `example` property from OpenAPI schemas.
5
+ *
6
+ * @template Value - The narrowed type a valid (non-null) example holds
7
+ */
8
+ export type ParseExampleArgs<Value> = {
9
+ /** The raw `example` value extracted from the schema */
10
+ value: unknown;
11
+ /** The parsed nullable flag — `null` is only a valid example when this is `true` */
12
+ nullable: boolean | undefined;
13
+ /** The surrounding schema object, used as the issue location's parent */
14
+ parent: unknown;
15
+ /** Type guard narrowing an acceptable non-null example to `Value` */
16
+ check: (item: unknown) => item is Value;
17
+ /** Builds the warning message for a rejected example */
18
+ toMessage: (item: unknown) => string;
19
+ /** Parse context for logging issues */
20
+ context: ParseContextType;
21
+ /** Stack trail for tracking the current parsing location */
22
+ stackTrail: StackTrail;
23
+ };
24
+ /**
25
+ * Parses and validates the `example` property of an OpenAPI scalar/structural
26
+ * schema, applying the nullable-conditional rule shared by `example`, `enum`,
27
+ * and `default`:
28
+ *
29
+ * - `undefined` → `undefined` (no example present)
30
+ * - `null` → kept only when `nullable` is `true`; otherwise rejected
31
+ * - a value passing `check` → kept
32
+ * - anything else → logged as an `INVALID_EXAMPLE` warning and dropped
33
+ *
34
+ * The function is fail-open: an invalid example is stripped and recorded as a
35
+ * `ParseIssue`, never thrown.
36
+ *
37
+ * @template Value - The narrowed type a valid example holds
38
+ * @param args - Parsing configuration
39
+ * @returns The validated example (`Value`), `null` (nullable), or `undefined`
40
+ */
41
+ export declare const parseExample: <Value>({ value, nullable, parent, context, check, toMessage, stackTrail }: ParseExampleArgs<Value>) => Value | null | undefined;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Parses and validates the `example` property of an OpenAPI scalar/structural
3
+ * schema, applying the nullable-conditional rule shared by `example`, `enum`,
4
+ * and `default`:
5
+ *
6
+ * - `undefined` → `undefined` (no example present)
7
+ * - `null` → kept only when `nullable` is `true`; otherwise rejected
8
+ * - a value passing `check` → kept
9
+ * - anything else → logged as an `INVALID_EXAMPLE` warning and dropped
10
+ *
11
+ * The function is fail-open: an invalid example is stripped and recorded as a
12
+ * `ParseIssue`, never thrown.
13
+ *
14
+ * @template Value - The narrowed type a valid example holds
15
+ * @param args - Parsing configuration
16
+ * @returns The validated example (`Value`), `null` (nullable), or `undefined`
17
+ */
18
+ export const parseExample = ({ value, nullable, parent, context, check, toMessage, stackTrail }) => {
19
+ if (value === undefined) {
20
+ return undefined;
21
+ }
22
+ if (nullable && value === null) {
23
+ return null;
24
+ }
25
+ if (!check(value)) {
26
+ context.logIssue({
27
+ key: 'example',
28
+ level: 'warning',
29
+ message: toMessage(value),
30
+ parent,
31
+ stackTrail,
32
+ type: 'INVALID_EXAMPLE'
33
+ });
34
+ return undefined;
35
+ }
36
+ return value;
37
+ };
@@ -0,0 +1,141 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ import type { ParseContextType } from '../../../context/parseTypes.js';
3
+ import type { StackTrail } from '../../../context/StackTrail.js';
4
+ /**
5
+ * Arguments for parsing the nullable property from OpenAPI schemas.
6
+ *
7
+ * @template Value - The OpenAPI schema object type
8
+ */
9
+ export type ParseNullableArgs<Value extends OpenAPIV3.SchemaObject> = {
10
+ /** The OpenAPI schema object containing the nullable property */
11
+ value: Value;
12
+ /** Stack trail for tracking current parsing context */
13
+ stackTrail: StackTrail;
14
+ /** Parse context for error handling */
15
+ context: ParseContextType;
16
+ };
17
+ /**
18
+ * Return type for parsed nullable data.
19
+ *
20
+ * @template Value - The OpenAPI schema object type
21
+ */
22
+ export type ParseNullableReturn<Value extends OpenAPIV3.SchemaObject> = {
23
+ /** The validated nullable flag (true, false, or undefined) */
24
+ nullable: boolean | undefined;
25
+ /** The schema object without the nullable property */
26
+ value: Omit<Value, 'nullable'>;
27
+ };
28
+ /**
29
+ * Parses and validates the nullable property from OpenAPI schema objects.
30
+ *
31
+ * This function extracts and validates the `nullable` property from OpenAPI
32
+ * schema objects, ensuring it's a valid boolean value. Invalid nullable values
33
+ * are removed and logged as warnings through the parse context.
34
+ *
35
+ * The nullable property determines whether a schema value can be null in addition
36
+ * to its primary type, which affects type generation and validation logic.
37
+ *
38
+ * @template Value - The OpenAPI schema object type
39
+ *
40
+ * @param args - Parsing configuration
41
+ * @returns Parsed nullable data with the validated flag and cleaned schema
42
+ *
43
+ * @example Valid nullable property
44
+ * ```typescript
45
+ * import { parseNullable } from '@skmtc/core/oas/_helpers';
46
+ *
47
+ * const result = parseNullable({
48
+ * value: {
49
+ * type: 'string',
50
+ * nullable: true,
51
+ * description: 'An optional string that can be null'
52
+ * },
53
+ * context: parseContext
54
+ * });
55
+ *
56
+ * console.log(result.nullable); // true
57
+ * console.log(result.value); // { type: 'string', description: 'An optional string that can be null' }
58
+ * ```
59
+ *
60
+ * @example Explicitly non-nullable
61
+ * ```typescript
62
+ * const result = parseNullable({
63
+ * value: {
64
+ * type: 'number',
65
+ * nullable: false,
66
+ * minimum: 0
67
+ * },
68
+ * context: parseContext
69
+ * });
70
+ *
71
+ * console.log(result.nullable); // false
72
+ * console.log(result.value); // { type: 'number', minimum: 0 }
73
+ * ```
74
+ *
75
+ * @example Missing nullable property (undefined)
76
+ * ```typescript
77
+ * const result = parseNullable({
78
+ * value: {
79
+ * type: 'string',
80
+ * format: 'email'
81
+ * },
82
+ * context: parseContext
83
+ * });
84
+ *
85
+ * console.log(result.nullable); // undefined (property not present)
86
+ * console.log(result.value); // { type: 'string', format: 'email' }
87
+ * ```
88
+ *
89
+ * @example Invalid nullable value
90
+ * ```typescript
91
+ * const result = parseNullable({
92
+ * value: {
93
+ * type: 'boolean',
94
+ * nullable: 'yes', // Invalid - should be boolean
95
+ * description: 'A flag'
96
+ * } as any,
97
+ * context: parseContext
98
+ * });
99
+ *
100
+ * console.log(result.nullable); // undefined (invalid value removed)
101
+ * console.log(result.value); // { type: 'boolean', description: 'A flag' }
102
+ * // Context will log a warning about the invalid nullable value
103
+ * ```
104
+ *
105
+ * @example Usage in type generation
106
+ * ```typescript
107
+ * function generateTypeScript(schema: OpenAPIV3.SchemaObject) {
108
+ * const { nullable, value } = parseNullable({ value: schema, context });
109
+ *
110
+ * const baseType = generateBaseType(value);
111
+ * const nullableType = nullable ? ` | null` : '';
112
+ *
113
+ * return `${baseType}${nullableType}`;
114
+ * }
115
+ *
116
+ * // Examples:
117
+ * // nullable: true -> 'string | null'
118
+ * // nullable: false -> 'string'
119
+ * // nullable: undefined -> 'string' (default behavior)
120
+ * ```
121
+ *
122
+ * @example Complex schema with nullable
123
+ * ```typescript
124
+ * const result = parseNullable({
125
+ * value: {
126
+ * type: 'object',
127
+ * properties: {
128
+ * name: { type: 'string' },
129
+ * age: { type: 'number' }
130
+ * },
131
+ * required: ['name'],
132
+ * nullable: true // The entire object can be null
133
+ * },
134
+ * context: parseContext
135
+ * });
136
+ *
137
+ * console.log(result.nullable); // true
138
+ * // Generated type might be: { name: string; age?: number } | null
139
+ * ```
140
+ */
141
+ export declare const parseNullable: <Value extends OpenAPIV3.SchemaObject>({ value, stackTrail, context }: ParseNullableArgs<Value>) => ParseNullableReturn<Value>;
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Parses and validates the nullable property from OpenAPI schema objects.
3
+ *
4
+ * This function extracts and validates the `nullable` property from OpenAPI
5
+ * schema objects, ensuring it's a valid boolean value. Invalid nullable values
6
+ * are removed and logged as warnings through the parse context.
7
+ *
8
+ * The nullable property determines whether a schema value can be null in addition
9
+ * to its primary type, which affects type generation and validation logic.
10
+ *
11
+ * @template Value - The OpenAPI schema object type
12
+ *
13
+ * @param args - Parsing configuration
14
+ * @returns Parsed nullable data with the validated flag and cleaned schema
15
+ *
16
+ * @example Valid nullable property
17
+ * ```typescript
18
+ * import { parseNullable } from '@skmtc/core/oas/_helpers';
19
+ *
20
+ * const result = parseNullable({
21
+ * value: {
22
+ * type: 'string',
23
+ * nullable: true,
24
+ * description: 'An optional string that can be null'
25
+ * },
26
+ * context: parseContext
27
+ * });
28
+ *
29
+ * console.log(result.nullable); // true
30
+ * console.log(result.value); // { type: 'string', description: 'An optional string that can be null' }
31
+ * ```
32
+ *
33
+ * @example Explicitly non-nullable
34
+ * ```typescript
35
+ * const result = parseNullable({
36
+ * value: {
37
+ * type: 'number',
38
+ * nullable: false,
39
+ * minimum: 0
40
+ * },
41
+ * context: parseContext
42
+ * });
43
+ *
44
+ * console.log(result.nullable); // false
45
+ * console.log(result.value); // { type: 'number', minimum: 0 }
46
+ * ```
47
+ *
48
+ * @example Missing nullable property (undefined)
49
+ * ```typescript
50
+ * const result = parseNullable({
51
+ * value: {
52
+ * type: 'string',
53
+ * format: 'email'
54
+ * },
55
+ * context: parseContext
56
+ * });
57
+ *
58
+ * console.log(result.nullable); // undefined (property not present)
59
+ * console.log(result.value); // { type: 'string', format: 'email' }
60
+ * ```
61
+ *
62
+ * @example Invalid nullable value
63
+ * ```typescript
64
+ * const result = parseNullable({
65
+ * value: {
66
+ * type: 'boolean',
67
+ * nullable: 'yes', // Invalid - should be boolean
68
+ * description: 'A flag'
69
+ * } as any,
70
+ * context: parseContext
71
+ * });
72
+ *
73
+ * console.log(result.nullable); // undefined (invalid value removed)
74
+ * console.log(result.value); // { type: 'boolean', description: 'A flag' }
75
+ * // Context will log a warning about the invalid nullable value
76
+ * ```
77
+ *
78
+ * @example Usage in type generation
79
+ * ```typescript
80
+ * function generateTypeScript(schema: OpenAPIV3.SchemaObject) {
81
+ * const { nullable, value } = parseNullable({ value: schema, context });
82
+ *
83
+ * const baseType = generateBaseType(value);
84
+ * const nullableType = nullable ? ` | null` : '';
85
+ *
86
+ * return `${baseType}${nullableType}`;
87
+ * }
88
+ *
89
+ * // Examples:
90
+ * // nullable: true -> 'string | null'
91
+ * // nullable: false -> 'string'
92
+ * // nullable: undefined -> 'string' (default behavior)
93
+ * ```
94
+ *
95
+ * @example Complex schema with nullable
96
+ * ```typescript
97
+ * const result = parseNullable({
98
+ * value: {
99
+ * type: 'object',
100
+ * properties: {
101
+ * name: { type: 'string' },
102
+ * age: { type: 'number' }
103
+ * },
104
+ * required: ['name'],
105
+ * nullable: true // The entire object can be null
106
+ * },
107
+ * context: parseContext
108
+ * });
109
+ *
110
+ * console.log(result.nullable); // true
111
+ * // Generated type might be: { name: string; age?: number } | null
112
+ * ```
113
+ */
114
+ export const parseNullable = ({ value, stackTrail, context }) => {
115
+ if (value.nullable === undefined) {
116
+ return {
117
+ nullable: undefined,
118
+ value: value
119
+ };
120
+ }
121
+ const { nullable, ...rest } = value;
122
+ if (typeof nullable === 'boolean') {
123
+ return {
124
+ nullable: nullable,
125
+ value: rest
126
+ };
127
+ }
128
+ context.logIssue({
129
+ key: 'nullable',
130
+ stackTrail,
131
+ parent: value,
132
+ level: 'warning',
133
+ message: `Invalid nullable: ${value}`,
134
+ type: 'INVALID_NULLABLE'
135
+ });
136
+ return {
137
+ nullable: undefined,
138
+ value: rest
139
+ };
140
+ };
@@ -0,0 +1,2 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ export declare const checkArrayItemTypeConflicts: (a: OpenAPIV3.SchemaObject, b: OpenAPIV3.SchemaObject) => void;
@@ -0,0 +1,9 @@
1
+ export const checkArrayItemTypeConflicts = (a, b) => {
2
+ if (a.type === 'array' && b.type === 'array' && 'items' in a && 'items' in b) {
3
+ const aItems = a.items;
4
+ const bItems = b.items;
5
+ if (aItems.type && bItems.type && aItems.type !== bItems.type) {
6
+ throw new Error(`Cannot merge schemas: array items have conflicting types '${aItems.type}' and '${bItems.type}'`);
7
+ }
8
+ }
9
+ };
@@ -0,0 +1,4 @@
1
+ import type { SchemaObject } from './types.js';
2
+ type SchemaType = 'string' | 'number' | 'integer' | 'boolean' | 'object' | 'array';
3
+ export declare const checkAtLeastOneTypeMatch: (first: SchemaObject, second: SchemaObject, type: SchemaType) => boolean;
4
+ export {};
@@ -0,0 +1,5 @@
1
+ export const checkAtLeastOneTypeMatch = (first, second, type) => {
2
+ return ((first.type === type && second.type === type) ||
3
+ (first.type === type && !second.type) ||
4
+ (!first.type && second.type === type));
5
+ };
@@ -0,0 +1,2 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ export declare const checkEnumConflicts: (first: OpenAPIV3.SchemaObject, second: OpenAPIV3.SchemaObject) => void;
@@ -0,0 +1,11 @@
1
+ import { isEqual } from './is-equal.js';
2
+ export const checkEnumConflicts = (first, second) => {
3
+ if (first.enum && second.enum) {
4
+ const intersection = first.enum.filter(value => {
5
+ return second.enum.some(bValue => isEqual(value, bValue));
6
+ });
7
+ if (intersection.length === 0) {
8
+ throw new Error(`Cannot merge schemas: enum values have no intersection. First: ${first.enum}, Second: ${second.enum}`);
9
+ }
10
+ }
11
+ };
@@ -0,0 +1,2 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ export declare const checkFormatConflicts: (a: OpenAPIV3.SchemaObject, b: OpenAPIV3.SchemaObject) => void;
@@ -0,0 +1,5 @@
1
+ export const checkFormatConflicts = (a, b) => {
2
+ if (a.format && b.format && a.format !== b.format) {
3
+ throw new Error(`Cannot merge schemas: conflicting formats '${a.format}' and '${b.format}'`);
4
+ }
5
+ };
@@ -0,0 +1,2 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ export declare const checkNumberConstraintsConflicts: (a: OpenAPIV3.SchemaObject, b: OpenAPIV3.SchemaObject) => void;
@@ -0,0 +1,11 @@
1
+ export const checkNumberConstraintsConflicts = (a, b) => {
2
+ if (a.type === 'number' && b.type === 'number') {
3
+ const aMin = a.minimum ?? -Infinity;
4
+ const aMax = a.maximum ?? Infinity;
5
+ const bMin = b.minimum ?? -Infinity;
6
+ const bMax = b.maximum ?? Infinity;
7
+ if (aMin > bMax || bMin > aMax) {
8
+ throw new Error(`Cannot merge schemas: incompatible number ranges [${aMin},${aMax}] and [${bMin},${bMax}]`);
9
+ }
10
+ }
11
+ };
@@ -0,0 +1,2 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ export declare const checkReadOnlyWriteOnlyConflicts: (a: OpenAPIV3.SchemaObject, b: OpenAPIV3.SchemaObject) => void;
@@ -0,0 +1,5 @@
1
+ export const checkReadOnlyWriteOnlyConflicts = (a, b) => {
2
+ if ((a.readOnly && b.writeOnly) || (a.writeOnly && b.readOnly)) {
3
+ throw new Error('Cannot merge schemas: property cannot be both readOnly and writeOnly');
4
+ }
5
+ };
@@ -0,0 +1,2 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ export declare const checkTypeConflicts: (first: OpenAPIV3.SchemaObject, second: OpenAPIV3.SchemaObject) => void;
@@ -0,0 +1,5 @@
1
+ export const checkTypeConflicts = (first, second) => {
2
+ if (first.type && second.type && first.type !== second.type) {
3
+ throw new Error(`Cannot merge schemas: conflicting types '${first.type}' and '${second.type}', ${JSON.stringify(first)} and ${JSON.stringify(second)}`);
4
+ }
5
+ };
@@ -0,0 +1,2 @@
1
+ import type { SchemaOrReference } from './types.js';
2
+ export declare const crossProduct: (a: SchemaOrReference[], b: SchemaOrReference[]) => [SchemaOrReference, SchemaOrReference][];
@@ -0,0 +1,3 @@
1
+ export const crossProduct = (a, b) => {
2
+ return a.reduce((acc, x) => [...acc, ...b.map((y) => [x, y])], []);
3
+ };
@@ -0,0 +1,6 @@
1
+ import type { OpenAPIV3 } from 'openapi-types';
2
+ type DecomposeIntersectionArgs = {
3
+ schema: OpenAPIV3.SchemaObject;
4
+ };
5
+ export declare const decomposeIntersection: ({ schema }: DecomposeIntersectionArgs) => (OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject)[];
6
+ export {};
@@ -0,0 +1,27 @@
1
+ // Convert a schema object into an array of schemas that can be merged iteratively into a new schema
2
+ export const decomposeIntersection = ({ schema }) => {
3
+ if (!schema.allOf) {
4
+ return [schema];
5
+ }
6
+ let location = 'before';
7
+ const output = {
8
+ before: [],
9
+ inside: [],
10
+ after: []
11
+ };
12
+ for (const [key, value] of Object.entries(schema)) {
13
+ if (key === 'allOf') {
14
+ // do not decompose wrapper for unions (oneOf, anyOf)
15
+ output.inside = value;
16
+ location = 'after';
17
+ }
18
+ else {
19
+ output[location].push([key, value]);
20
+ }
21
+ }
22
+ return [
23
+ output.before.length > 0 ? Object.fromEntries(output.before) : undefined,
24
+ ...output.inside,
25
+ output.after.length > 0 ? Object.fromEntries(output.after) : undefined
26
+ ].filter(item => item !== undefined);
27
+ };
@@ -0,0 +1,12 @@
1
+ import type { SchemaObject, ReferenceObject } from './types.js';
2
+ type DecomposeUnionArgs = {
3
+ schema: SchemaObject;
4
+ groupType: 'oneOf' | 'anyOf';
5
+ };
6
+ type DecomposeUnionReturn = {
7
+ beforeExcluded: SchemaObject;
8
+ decomposed: (SchemaObject | ReferenceObject)[];
9
+ afterExcluded: SchemaObject;
10
+ };
11
+ export declare const decomposeUnion: ({ schema, groupType }: DecomposeUnionArgs) => DecomposeUnionReturn;
12
+ export {};