@skmtc/core 0.28.7 → 0.30.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/esm/_dnt.polyfills.d.ts +11 -0
  2. package/esm/_dnt.polyfills.js +14 -0
  3. package/esm/context/GenerateContext.js +16 -16
  4. package/esm/context/ParseContext.js +9 -1
  5. package/esm/context/RenderContext.d.ts +7 -7
  6. package/esm/context/RenderContext.js +17 -12
  7. package/esm/context/generateTypes.d.ts +2 -2
  8. package/esm/context/generateTypes.js +3 -1
  9. package/esm/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.d.ts +16 -0
  10. package/esm/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.js +23 -0
  11. package/esm/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.d.ts +16 -0
  12. package/esm/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.js +38 -0
  13. package/esm/dsl/GeneratorKeys.d.ts +2 -2
  14. package/esm/dsl/GeneratorKeys.js +6 -3
  15. package/esm/dsl/model/ModelDriver.js +4 -3
  16. package/esm/dsl/operation/gql/GqlOperationDriver.js +4 -3
  17. package/esm/dsl/operation/oas/OasOperationDriver.js +4 -3
  18. package/esm/dsl/webhook/WebhookDriver.js +4 -3
  19. package/esm/helpers/applyGeneratedSuffix.js +1 -1
  20. package/esm/helpers/isImported.d.ts +10 -74
  21. package/esm/helpers/isImported.js +12 -76
  22. package/esm/helpers/naming.d.ts +2 -1
  23. package/esm/helpers/naming.js +4 -2
  24. package/esm/helpers/normalizeWorkspacePath.d.ts +64 -0
  25. package/esm/helpers/normalizeWorkspacePath.js +98 -0
  26. package/esm/helpers/toResolvedArtifactPath.d.ts +8 -5
  27. package/esm/helpers/toResolvedArtifactPath.js +11 -7
  28. package/esm/helpers/toWorkspacePath.d.ts +3 -3
  29. package/esm/helpers/toWorkspacePath.js +5 -5
  30. package/esm/mod.d.ts +1 -0
  31. package/esm/mod.js +1 -0
  32. package/esm/oas/discriminator/Discriminator.d.ts +3 -0
  33. package/esm/oas/discriminator/Discriminator.js +7 -0
  34. package/esm/oas/document/Document.d.ts +7 -0
  35. package/esm/oas/document/Document.js +8 -0
  36. package/esm/oas/example/Example.d.ts +10 -1
  37. package/esm/oas/example/Example.js +16 -0
  38. package/esm/oas/mediaType/MediaType.d.ts +12 -0
  39. package/esm/oas/mediaType/MediaType.js +24 -0
  40. package/esm/oas/parameter/Parameter.d.ts +2 -1
  41. package/esm/oas/parameter/Parameter.js +5 -2
  42. package/esm/oas/parameter/parameter-types.d.ts +10 -2
  43. package/esm/oas/parameter/parameter-types.js +3 -1
  44. package/esm/oas/response/Response.d.ts +6 -1
  45. package/esm/oas/response/Response.js +8 -0
  46. package/esm/oas/securitySchemes/SecurityScheme.d.ts +47 -4
  47. package/esm/oas/securitySchemes/SecurityScheme.js +46 -1
  48. package/esm/oas/securitySchemes/security-scheme-types.d.ts +21 -0
  49. package/esm/oas/server/Server.d.ts +8 -2
  50. package/esm/oas/server/Server.js +10 -1
  51. package/esm/oas/tag/Tag.d.ts +9 -0
  52. package/esm/oas/tag/Tag.js +9 -0
  53. package/esm/parse/toOasDialect.d.ts +8 -7
  54. package/esm/parse/toOasDialect.js +4 -2
  55. package/esm/parse/v3-0/methods.d.ts +11 -0
  56. package/esm/parse/v3-0/methods.js +16 -0
  57. package/esm/parse/v3-0/operation/toOperationsV3.js +5 -5
  58. package/esm/parse/v3-0/parameter/toParameterV3.d.ts +4 -2
  59. package/esm/parse/v3-0/parameter/toParameterV3.js +17 -3
  60. package/esm/parse/v3-0/securitySchemes/toSecuritySchemes.js +50 -38
  61. package/esm/parse/v3-0/webhook/toWebhooksV3.js +5 -5
  62. package/esm/parse/v3-1/methods.d.ts +11 -0
  63. package/esm/parse/v3-1/methods.js +16 -0
  64. package/esm/parse/v3-1/operation/toOperationsV3.js +5 -5
  65. package/esm/parse/v3-1/parameter/toParameterV3.d.ts +4 -2
  66. package/esm/parse/v3-1/parameter/toParameterV3.js +17 -3
  67. package/esm/parse/v3-1/securitySchemes/toSecuritySchemes.js +50 -38
  68. package/esm/parse/v3-1/webhook/toWebhooksV3.js +5 -5
  69. package/esm/parse/v3-2/_helpers/parseDefault.d.ts +43 -0
  70. package/esm/parse/v3-2/_helpers/parseDefault.js +39 -0
  71. package/esm/parse/v3-2/_helpers/parseEnum.d.ts +13 -0
  72. package/esm/parse/v3-2/_helpers/parseEnum.js +23 -0
  73. package/esm/parse/v3-2/_helpers/parseExample.d.ts +41 -0
  74. package/esm/parse/v3-2/_helpers/parseExample.js +37 -0
  75. package/esm/parse/v3-2/_helpers/parseNullable.d.ts +141 -0
  76. package/esm/parse/v3-2/_helpers/parseNullable.js +140 -0
  77. package/esm/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.d.ts +2 -0
  78. package/esm/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.js +9 -0
  79. package/esm/parse/v3-2/_merge-all-of/check-at-least-one-type-match.d.ts +4 -0
  80. package/esm/parse/v3-2/_merge-all-of/check-at-least-one-type-match.js +5 -0
  81. package/esm/parse/v3-2/_merge-all-of/check-enum-conflicts.d.ts +2 -0
  82. package/esm/parse/v3-2/_merge-all-of/check-enum-conflicts.js +11 -0
  83. package/esm/parse/v3-2/_merge-all-of/check-format-conflicts.d.ts +2 -0
  84. package/esm/parse/v3-2/_merge-all-of/check-format-conflicts.js +5 -0
  85. package/esm/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.d.ts +2 -0
  86. package/esm/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.js +11 -0
  87. package/esm/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.d.ts +2 -0
  88. package/esm/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.js +5 -0
  89. package/esm/parse/v3-2/_merge-all-of/check-type-conflicts.d.ts +2 -0
  90. package/esm/parse/v3-2/_merge-all-of/check-type-conflicts.js +5 -0
  91. package/esm/parse/v3-2/_merge-all-of/cross-product.d.ts +2 -0
  92. package/esm/parse/v3-2/_merge-all-of/cross-product.js +3 -0
  93. package/esm/parse/v3-2/_merge-all-of/decompose-intersection.d.ts +6 -0
  94. package/esm/parse/v3-2/_merge-all-of/decompose-intersection.js +27 -0
  95. package/esm/parse/v3-2/_merge-all-of/decompose-union.d.ts +12 -0
  96. package/esm/parse/v3-2/_merge-all-of/decompose-union.js +69 -0
  97. package/esm/parse/v3-2/_merge-all-of/generic-merge.d.ts +3 -0
  98. package/esm/parse/v3-2/_merge-all-of/generic-merge.js +12 -0
  99. package/esm/parse/v3-2/_merge-all-of/is-equal.d.ts +1 -0
  100. package/esm/parse/v3-2/_merge-all-of/is-equal.js +19 -0
  101. package/esm/parse/v3-2/_merge-all-of/merge-array-constraints.d.ts +2 -0
  102. package/esm/parse/v3-2/_merge-all-of/merge-array-constraints.js +44 -0
  103. package/esm/parse/v3-2/_merge-all-of/merge-boolean-constraints.d.ts +3 -0
  104. package/esm/parse/v3-2/_merge-all-of/merge-boolean-constraints.js +7 -0
  105. package/esm/parse/v3-2/_merge-all-of/merge-enum-values.d.ts +3 -0
  106. package/esm/parse/v3-2/_merge-all-of/merge-enum-values.js +32 -0
  107. package/esm/parse/v3-2/_merge-all-of/merge-integer-constraints.d.ts +3 -0
  108. package/esm/parse/v3-2/_merge-all-of/merge-integer-constraints.js +41 -0
  109. package/esm/parse/v3-2/_merge-all-of/merge-intersection.d.ts +8 -0
  110. package/esm/parse/v3-2/_merge-all-of/merge-intersection.js +16 -0
  111. package/esm/parse/v3-2/_merge-all-of/merge-number-constraints.d.ts +3 -0
  112. package/esm/parse/v3-2/_merge-all-of/merge-number-constraints.js +41 -0
  113. package/esm/parse/v3-2/_merge-all-of/merge-object-constraints.d.ts +5 -0
  114. package/esm/parse/v3-2/_merge-all-of/merge-object-constraints.js +28 -0
  115. package/esm/parse/v3-2/_merge-all-of/merge-properties.d.ts +2 -0
  116. package/esm/parse/v3-2/_merge-all-of/merge-properties.js +25 -0
  117. package/esm/parse/v3-2/_merge-all-of/merge-required.d.ts +3 -0
  118. package/esm/parse/v3-2/_merge-all-of/merge-required.js +10 -0
  119. package/esm/parse/v3-2/_merge-all-of/merge-string-constraints.d.ts +3 -0
  120. package/esm/parse/v3-2/_merge-all-of/merge-string-constraints.js +55 -0
  121. package/esm/parse/v3-2/_merge-all-of/merge-union.d.ts +15 -0
  122. package/esm/parse/v3-2/_merge-all-of/merge-union.js +53 -0
  123. package/esm/parse/v3-2/_merge-all-of/merge.d.ts +2 -0
  124. package/esm/parse/v3-2/_merge-all-of/merge.js +155 -0
  125. package/esm/parse/v3-2/_merge-all-of/nullable-merge.d.ts +3 -0
  126. package/esm/parse/v3-2/_merge-all-of/nullable-merge.js +12 -0
  127. package/esm/parse/v3-2/_merge-all-of/types.d.ts +14 -0
  128. package/esm/parse/v3-2/_merge-all-of/types.js +2 -0
  129. package/esm/parse/v3-2/array/toArray.d.ts +80 -0
  130. package/esm/parse/v3-2/array/toArray.js +165 -0
  131. package/esm/parse/v3-2/boolean/toBoolean.d.ts +78 -0
  132. package/esm/parse/v3-2/boolean/toBoolean.js +139 -0
  133. package/esm/parse/v3-2/components/toComponentsV3.d.ts +14 -0
  134. package/esm/parse/v3-2/components/toComponentsV3.js +43 -0
  135. package/esm/parse/v3-2/contact/toContactV3.d.ts +5 -0
  136. package/esm/parse/v3-2/contact/toContactV3.js +18 -0
  137. package/esm/parse/v3-2/discriminator/toDiscriminatorV3.d.ts +14 -0
  138. package/esm/parse/v3-2/discriminator/toDiscriminatorV3.js +21 -0
  139. package/esm/parse/v3-2/document/toDocumentFieldsV3.d.ts +16 -0
  140. package/esm/parse/v3-2/document/toDocumentFieldsV3.js +33 -0
  141. package/esm/parse/v3-2/example/toExamplesV3.d.ts +77 -0
  142. package/esm/parse/v3-2/example/toExamplesV3.js +143 -0
  143. package/esm/parse/v3-2/externalDocs/toExternalDocs.d.ts +10 -0
  144. package/esm/parse/v3-2/externalDocs/toExternalDocs.js +15 -0
  145. package/esm/parse/v3-2/header/toHeadersV3.d.ts +18 -0
  146. package/esm/parse/v3-2/header/toHeadersV3.js +47 -0
  147. package/esm/parse/v3-2/info/toInfoV3.d.ts +10 -0
  148. package/esm/parse/v3-2/info/toInfoV3.js +23 -0
  149. package/esm/parse/v3-2/integer/toInteger.d.ts +21 -0
  150. package/esm/parse/v3-2/integer/toInteger.js +115 -0
  151. package/esm/parse/v3-2/license/toLicenseV3.d.ts +5 -0
  152. package/esm/parse/v3-2/license/toLicenseV3.js +17 -0
  153. package/esm/parse/v3-2/link/toLinksV3.d.ts +16 -0
  154. package/esm/parse/v3-2/link/toLinksV3.js +40 -0
  155. package/esm/parse/v3-2/mediaType/toMediaTypeItemV3.d.ts +323 -0
  156. package/esm/parse/v3-2/mediaType/toMediaTypeItemV3.js +375 -0
  157. package/esm/parse/v3-2/methods.d.ts +17 -0
  158. package/esm/parse/v3-2/methods.js +21 -0
  159. package/esm/parse/v3-2/number/toNumber.d.ts +10 -0
  160. package/esm/parse/v3-2/number/toNumber.js +115 -0
  161. package/esm/parse/v3-2/object/toAdditionalPropertiesV3.d.ts +11 -0
  162. package/esm/parse/v3-2/object/toAdditionalPropertiesV3.js +10 -0
  163. package/esm/parse/v3-2/object/toObject.d.ts +10 -0
  164. package/esm/parse/v3-2/object/toObject.js +90 -0
  165. package/esm/parse/v3-2/operation/toOperationsV3.d.ts +25 -0
  166. package/esm/parse/v3-2/operation/toOperationsV3.js +129 -0
  167. package/esm/parse/v3-2/parameter/toParameterV3.d.ts +39 -0
  168. package/esm/parse/v3-2/parameter/toParameterV3.js +152 -0
  169. package/esm/parse/v3-2/parameter/warnQuerystringConflictsV3.d.ts +22 -0
  170. package/esm/parse/v3-2/parameter/warnQuerystringConflictsV3.js +39 -0
  171. package/esm/parse/v3-2/pathItem/dropAdditionalOperationsV3.d.ts +17 -0
  172. package/esm/parse/v3-2/pathItem/dropAdditionalOperationsV3.js +34 -0
  173. package/esm/parse/v3-2/pathItem/toPathItemV3.d.ts +23 -0
  174. package/esm/parse/v3-2/pathItem/toPathItemV3.js +45 -0
  175. package/esm/parse/v3-2/ref/toRefV31.d.ts +19 -0
  176. package/esm/parse/v3-2/ref/toRefV31.js +10 -0
  177. package/esm/parse/v3-2/requestBody/toRequestBodiesV3.d.ts +18 -0
  178. package/esm/parse/v3-2/requestBody/toRequestBodiesV3.js +44 -0
  179. package/esm/parse/v3-2/response/toResponseV3.d.ts +29 -0
  180. package/esm/parse/v3-2/response/toResponseV3.js +56 -0
  181. package/esm/parse/v3-2/schema/toSchemasV3.d.ts +29 -0
  182. package/esm/parse/v3-2/schema/toSchemasV3.js +511 -0
  183. package/esm/parse/v3-2/securityRequirement/toSecurityRequirement.d.ts +9 -0
  184. package/esm/parse/v3-2/securityRequirement/toSecurityRequirement.js +9 -0
  185. package/esm/parse/v3-2/securitySchemes/toSecuritySchemes.d.ts +17 -0
  186. package/esm/parse/v3-2/securitySchemes/toSecuritySchemes.js +152 -0
  187. package/esm/parse/v3-2/server/toServerV3.d.ts +26 -0
  188. package/esm/parse/v3-2/server/toServerV3.js +31 -0
  189. package/esm/parse/v3-2/serverVariable/toServerVariableV3.d.ts +22 -0
  190. package/esm/parse/v3-2/serverVariable/toServerVariableV3.js +30 -0
  191. package/esm/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.d.ts +14 -0
  192. package/esm/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.js +25 -0
  193. package/esm/parse/v3-2/string/toString.d.ts +146 -0
  194. package/esm/parse/v3-2/string/toString.js +211 -0
  195. package/esm/parse/v3-2/tag/toTagsV3.d.ts +22 -0
  196. package/esm/parse/v3-2/tag/toTagsV3.js +78 -0
  197. package/esm/parse/v3-2/union/toUnion.d.ts +12 -0
  198. package/esm/parse/v3-2/union/toUnion.js +68 -0
  199. package/esm/parse/v3-2/unknown/toUnknown.d.ts +10 -0
  200. package/esm/parse/v3-2/unknown/toUnknown.js +19 -0
  201. package/esm/parse/v3-2/webhook/toWebhooksV3.d.ts +48 -0
  202. package/esm/parse/v3-2/webhook/toWebhooksV3.js +139 -0
  203. package/esm/types/Method.d.ts +7 -4
  204. package/esm/types/Method.js +17 -4
  205. package/esm/types/Preview.d.ts +2 -1
  206. package/esm/types/Settings.js +6 -8
  207. package/esm/types/SkmtcDocument.d.ts +6 -6
  208. package/package.json +1 -1
  209. package/script/_dnt.polyfills.d.ts +11 -0
  210. package/script/_dnt.polyfills.js +14 -0
  211. package/script/context/GenerateContext.js +16 -16
  212. package/script/context/ParseContext.js +9 -1
  213. package/script/context/RenderContext.d.ts +7 -7
  214. package/script/context/RenderContext.js +17 -12
  215. package/script/context/generateTypes.d.ts +2 -2
  216. package/script/context/generateTypes.js +3 -1
  217. package/script/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.d.ts +16 -0
  218. package/script/deps/jsr.io/@std/path/1.1.6/posix/is_absolute.js +26 -0
  219. package/script/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.d.ts +16 -0
  220. package/script/deps/jsr.io/@std/path/1.1.6/windows/is_absolute.js +41 -0
  221. package/script/dsl/GeneratorKeys.d.ts +2 -2
  222. package/script/dsl/GeneratorKeys.js +6 -3
  223. package/script/dsl/model/ModelDriver.js +4 -3
  224. package/script/dsl/operation/gql/GqlOperationDriver.js +4 -3
  225. package/script/dsl/operation/oas/OasOperationDriver.js +4 -3
  226. package/script/dsl/webhook/WebhookDriver.js +4 -3
  227. package/script/helpers/applyGeneratedSuffix.js +1 -1
  228. package/script/helpers/isImported.d.ts +10 -74
  229. package/script/helpers/isImported.js +12 -76
  230. package/script/helpers/naming.d.ts +2 -1
  231. package/script/helpers/naming.js +4 -2
  232. package/script/helpers/normalizeWorkspacePath.d.ts +64 -0
  233. package/script/helpers/normalizeWorkspacePath.js +107 -0
  234. package/script/helpers/toResolvedArtifactPath.d.ts +8 -5
  235. package/script/helpers/toResolvedArtifactPath.js +11 -7
  236. package/script/helpers/toWorkspacePath.d.ts +3 -3
  237. package/script/helpers/toWorkspacePath.js +5 -5
  238. package/script/mod.d.ts +1 -0
  239. package/script/mod.js +1 -0
  240. package/script/oas/discriminator/Discriminator.d.ts +3 -0
  241. package/script/oas/discriminator/Discriminator.js +7 -0
  242. package/script/oas/document/Document.d.ts +7 -0
  243. package/script/oas/document/Document.js +8 -0
  244. package/script/oas/example/Example.d.ts +10 -1
  245. package/script/oas/example/Example.js +16 -0
  246. package/script/oas/mediaType/MediaType.d.ts +12 -0
  247. package/script/oas/mediaType/MediaType.js +24 -0
  248. package/script/oas/parameter/Parameter.d.ts +2 -1
  249. package/script/oas/parameter/Parameter.js +5 -2
  250. package/script/oas/parameter/parameter-types.d.ts +10 -2
  251. package/script/oas/parameter/parameter-types.js +3 -1
  252. package/script/oas/response/Response.d.ts +6 -1
  253. package/script/oas/response/Response.js +8 -0
  254. package/script/oas/securitySchemes/SecurityScheme.d.ts +47 -4
  255. package/script/oas/securitySchemes/SecurityScheme.js +46 -1
  256. package/script/oas/securitySchemes/security-scheme-types.d.ts +21 -0
  257. package/script/oas/server/Server.d.ts +8 -2
  258. package/script/oas/server/Server.js +10 -1
  259. package/script/oas/tag/Tag.d.ts +9 -0
  260. package/script/oas/tag/Tag.js +9 -0
  261. package/script/parse/toOasDialect.d.ts +8 -7
  262. package/script/parse/toOasDialect.js +4 -2
  263. package/script/parse/v3-0/methods.d.ts +11 -0
  264. package/script/parse/v3-0/methods.js +20 -0
  265. package/script/parse/v3-0/operation/toOperationsV3.js +5 -5
  266. package/script/parse/v3-0/parameter/toParameterV3.d.ts +4 -2
  267. package/script/parse/v3-0/parameter/toParameterV3.js +17 -3
  268. package/script/parse/v3-0/securitySchemes/toSecuritySchemes.js +49 -37
  269. package/script/parse/v3-0/webhook/toWebhooksV3.js +5 -5
  270. package/script/parse/v3-1/methods.d.ts +11 -0
  271. package/script/parse/v3-1/methods.js +20 -0
  272. package/script/parse/v3-1/operation/toOperationsV3.js +5 -5
  273. package/script/parse/v3-1/parameter/toParameterV3.d.ts +4 -2
  274. package/script/parse/v3-1/parameter/toParameterV3.js +17 -3
  275. package/script/parse/v3-1/securitySchemes/toSecuritySchemes.js +49 -37
  276. package/script/parse/v3-1/webhook/toWebhooksV3.js +5 -5
  277. package/script/parse/v3-2/_helpers/parseDefault.d.ts +43 -0
  278. package/script/parse/v3-2/_helpers/parseDefault.js +43 -0
  279. package/script/parse/v3-2/_helpers/parseEnum.d.ts +13 -0
  280. package/script/parse/v3-2/_helpers/parseEnum.js +27 -0
  281. package/script/parse/v3-2/_helpers/parseExample.d.ts +41 -0
  282. package/script/parse/v3-2/_helpers/parseExample.js +41 -0
  283. package/script/parse/v3-2/_helpers/parseNullable.d.ts +141 -0
  284. package/script/parse/v3-2/_helpers/parseNullable.js +144 -0
  285. package/script/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.d.ts +2 -0
  286. package/script/parse/v3-2/_merge-all-of/check-array-item-type-conflicts.js +13 -0
  287. package/script/parse/v3-2/_merge-all-of/check-at-least-one-type-match.d.ts +4 -0
  288. package/script/parse/v3-2/_merge-all-of/check-at-least-one-type-match.js +9 -0
  289. package/script/parse/v3-2/_merge-all-of/check-enum-conflicts.d.ts +2 -0
  290. package/script/parse/v3-2/_merge-all-of/check-enum-conflicts.js +15 -0
  291. package/script/parse/v3-2/_merge-all-of/check-format-conflicts.d.ts +2 -0
  292. package/script/parse/v3-2/_merge-all-of/check-format-conflicts.js +9 -0
  293. package/script/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.d.ts +2 -0
  294. package/script/parse/v3-2/_merge-all-of/check-number-constraints-conflicts.js +15 -0
  295. package/script/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.d.ts +2 -0
  296. package/script/parse/v3-2/_merge-all-of/check-read-only-write-only-conflicts.js +9 -0
  297. package/script/parse/v3-2/_merge-all-of/check-type-conflicts.d.ts +2 -0
  298. package/script/parse/v3-2/_merge-all-of/check-type-conflicts.js +9 -0
  299. package/script/parse/v3-2/_merge-all-of/cross-product.d.ts +2 -0
  300. package/script/parse/v3-2/_merge-all-of/cross-product.js +7 -0
  301. package/script/parse/v3-2/_merge-all-of/decompose-intersection.d.ts +6 -0
  302. package/script/parse/v3-2/_merge-all-of/decompose-intersection.js +31 -0
  303. package/script/parse/v3-2/_merge-all-of/decompose-union.d.ts +12 -0
  304. package/script/parse/v3-2/_merge-all-of/decompose-union.js +73 -0
  305. package/script/parse/v3-2/_merge-all-of/generic-merge.d.ts +3 -0
  306. package/script/parse/v3-2/_merge-all-of/generic-merge.js +16 -0
  307. package/script/parse/v3-2/_merge-all-of/is-equal.d.ts +1 -0
  308. package/script/parse/v3-2/_merge-all-of/is-equal.js +23 -0
  309. package/script/parse/v3-2/_merge-all-of/merge-array-constraints.d.ts +2 -0
  310. package/script/parse/v3-2/_merge-all-of/merge-array-constraints.js +80 -0
  311. package/script/parse/v3-2/_merge-all-of/merge-boolean-constraints.d.ts +3 -0
  312. package/script/parse/v3-2/_merge-all-of/merge-boolean-constraints.js +43 -0
  313. package/script/parse/v3-2/_merge-all-of/merge-enum-values.d.ts +3 -0
  314. package/script/parse/v3-2/_merge-all-of/merge-enum-values.js +68 -0
  315. package/script/parse/v3-2/_merge-all-of/merge-integer-constraints.d.ts +3 -0
  316. package/script/parse/v3-2/_merge-all-of/merge-integer-constraints.js +77 -0
  317. package/script/parse/v3-2/_merge-all-of/merge-intersection.d.ts +8 -0
  318. package/script/parse/v3-2/_merge-all-of/merge-intersection.js +20 -0
  319. package/script/parse/v3-2/_merge-all-of/merge-number-constraints.d.ts +3 -0
  320. package/script/parse/v3-2/_merge-all-of/merge-number-constraints.js +77 -0
  321. package/script/parse/v3-2/_merge-all-of/merge-object-constraints.d.ts +5 -0
  322. package/script/parse/v3-2/_merge-all-of/merge-object-constraints.js +65 -0
  323. package/script/parse/v3-2/_merge-all-of/merge-properties.d.ts +2 -0
  324. package/script/parse/v3-2/_merge-all-of/merge-properties.js +29 -0
  325. package/script/parse/v3-2/_merge-all-of/merge-required.d.ts +3 -0
  326. package/script/parse/v3-2/_merge-all-of/merge-required.js +15 -0
  327. package/script/parse/v3-2/_merge-all-of/merge-string-constraints.d.ts +3 -0
  328. package/script/parse/v3-2/_merge-all-of/merge-string-constraints.js +91 -0
  329. package/script/parse/v3-2/_merge-all-of/merge-union.d.ts +15 -0
  330. package/script/parse/v3-2/_merge-all-of/merge-union.js +58 -0
  331. package/script/parse/v3-2/_merge-all-of/merge.d.ts +2 -0
  332. package/script/parse/v3-2/_merge-all-of/merge.js +159 -0
  333. package/script/parse/v3-2/_merge-all-of/nullable-merge.d.ts +3 -0
  334. package/script/parse/v3-2/_merge-all-of/nullable-merge.js +17 -0
  335. package/script/parse/v3-2/_merge-all-of/types.d.ts +14 -0
  336. package/script/parse/v3-2/_merge-all-of/types.js +38 -0
  337. package/script/parse/v3-2/array/toArray.d.ts +80 -0
  338. package/script/parse/v3-2/array/toArray.js +203 -0
  339. package/script/parse/v3-2/boolean/toBoolean.d.ts +78 -0
  340. package/script/parse/v3-2/boolean/toBoolean.js +177 -0
  341. package/script/parse/v3-2/components/toComponentsV3.d.ts +14 -0
  342. package/script/parse/v3-2/components/toComponentsV3.js +47 -0
  343. package/script/parse/v3-2/contact/toContactV3.d.ts +5 -0
  344. package/script/parse/v3-2/contact/toContactV3.js +22 -0
  345. package/script/parse/v3-2/discriminator/toDiscriminatorV3.d.ts +14 -0
  346. package/script/parse/v3-2/discriminator/toDiscriminatorV3.js +25 -0
  347. package/script/parse/v3-2/document/toDocumentFieldsV3.d.ts +16 -0
  348. package/script/parse/v3-2/document/toDocumentFieldsV3.js +37 -0
  349. package/script/parse/v3-2/example/toExamplesV3.d.ts +77 -0
  350. package/script/parse/v3-2/example/toExamplesV3.js +149 -0
  351. package/script/parse/v3-2/externalDocs/toExternalDocs.d.ts +10 -0
  352. package/script/parse/v3-2/externalDocs/toExternalDocs.js +52 -0
  353. package/script/parse/v3-2/header/toHeadersV3.d.ts +18 -0
  354. package/script/parse/v3-2/header/toHeadersV3.js +51 -0
  355. package/script/parse/v3-2/info/toInfoV3.d.ts +10 -0
  356. package/script/parse/v3-2/info/toInfoV3.js +27 -0
  357. package/script/parse/v3-2/integer/toInteger.d.ts +21 -0
  358. package/script/parse/v3-2/integer/toInteger.js +153 -0
  359. package/script/parse/v3-2/license/toLicenseV3.d.ts +5 -0
  360. package/script/parse/v3-2/license/toLicenseV3.js +21 -0
  361. package/script/parse/v3-2/link/toLinksV3.d.ts +16 -0
  362. package/script/parse/v3-2/link/toLinksV3.js +44 -0
  363. package/script/parse/v3-2/mediaType/toMediaTypeItemV3.d.ts +323 -0
  364. package/script/parse/v3-2/mediaType/toMediaTypeItemV3.js +381 -0
  365. package/script/parse/v3-2/methods.d.ts +17 -0
  366. package/script/parse/v3-2/methods.js +25 -0
  367. package/script/parse/v3-2/number/toNumber.d.ts +10 -0
  368. package/script/parse/v3-2/number/toNumber.js +152 -0
  369. package/script/parse/v3-2/object/toAdditionalPropertiesV3.d.ts +11 -0
  370. package/script/parse/v3-2/object/toAdditionalPropertiesV3.js +14 -0
  371. package/script/parse/v3-2/object/toObject.d.ts +10 -0
  372. package/script/parse/v3-2/object/toObject.js +94 -0
  373. package/script/parse/v3-2/operation/toOperationsV3.d.ts +25 -0
  374. package/script/parse/v3-2/operation/toOperationsV3.js +134 -0
  375. package/script/parse/v3-2/parameter/toParameterV3.d.ts +39 -0
  376. package/script/parse/v3-2/parameter/toParameterV3.js +191 -0
  377. package/script/parse/v3-2/parameter/warnQuerystringConflictsV3.d.ts +22 -0
  378. package/script/parse/v3-2/parameter/warnQuerystringConflictsV3.js +43 -0
  379. package/script/parse/v3-2/pathItem/dropAdditionalOperationsV3.d.ts +17 -0
  380. package/script/parse/v3-2/pathItem/dropAdditionalOperationsV3.js +38 -0
  381. package/script/parse/v3-2/pathItem/toPathItemV3.d.ts +23 -0
  382. package/script/parse/v3-2/pathItem/toPathItemV3.js +50 -0
  383. package/script/parse/v3-2/ref/toRefV31.d.ts +19 -0
  384. package/script/parse/v3-2/ref/toRefV31.js +14 -0
  385. package/script/parse/v3-2/requestBody/toRequestBodiesV3.d.ts +18 -0
  386. package/script/parse/v3-2/requestBody/toRequestBodiesV3.js +49 -0
  387. package/script/parse/v3-2/response/toResponseV3.d.ts +29 -0
  388. package/script/parse/v3-2/response/toResponseV3.js +62 -0
  389. package/script/parse/v3-2/schema/toSchemasV3.d.ts +29 -0
  390. package/script/parse/v3-2/schema/toSchemasV3.js +518 -0
  391. package/script/parse/v3-2/securityRequirement/toSecurityRequirement.d.ts +9 -0
  392. package/script/parse/v3-2/securityRequirement/toSecurityRequirement.js +13 -0
  393. package/script/parse/v3-2/securitySchemes/toSecuritySchemes.d.ts +17 -0
  394. package/script/parse/v3-2/securitySchemes/toSecuritySchemes.js +189 -0
  395. package/script/parse/v3-2/server/toServerV3.d.ts +26 -0
  396. package/script/parse/v3-2/server/toServerV3.js +37 -0
  397. package/script/parse/v3-2/serverVariable/toServerVariableV3.d.ts +22 -0
  398. package/script/parse/v3-2/serverVariable/toServerVariableV3.js +36 -0
  399. package/script/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.d.ts +14 -0
  400. package/script/parse/v3-2/specificationExtensions/toSpecificationExtensionsV3.js +30 -0
  401. package/script/parse/v3-2/string/toString.d.ts +146 -0
  402. package/script/parse/v3-2/string/toString.js +249 -0
  403. package/script/parse/v3-2/tag/toTagsV3.d.ts +22 -0
  404. package/script/parse/v3-2/tag/toTagsV3.js +83 -0
  405. package/script/parse/v3-2/union/toUnion.d.ts +12 -0
  406. package/script/parse/v3-2/union/toUnion.js +72 -0
  407. package/script/parse/v3-2/unknown/toUnknown.d.ts +10 -0
  408. package/script/parse/v3-2/unknown/toUnknown.js +23 -0
  409. package/script/parse/v3-2/webhook/toWebhooksV3.d.ts +48 -0
  410. package/script/parse/v3-2/webhook/toWebhooksV3.js +144 -0
  411. package/script/types/Method.d.ts +7 -4
  412. package/script/types/Method.js +17 -4
  413. package/script/types/Preview.d.ts +2 -1
  414. package/script/types/Settings.js +7 -9
  415. package/script/types/SkmtcDocument.d.ts +6 -6
  416. package/esm/deps/jsr.io/@std/path/1.1.6/extname.d.ts +0 -24
  417. package/esm/deps/jsr.io/@std/path/1.1.6/extname.js +0 -31
  418. package/esm/deps/jsr.io/@std/path/1.1.6/normalize.d.ts +0 -25
  419. package/esm/deps/jsr.io/@std/path/1.1.6/normalize.js +0 -32
  420. package/esm/deps/jsr.io/@std/path/1.1.6/windows/extname.d.ts +0 -17
  421. package/esm/deps/jsr.io/@std/path/1.1.6/windows/extname.js +0 -83
  422. package/script/deps/jsr.io/@std/path/1.1.6/extname.d.ts +0 -24
  423. package/script/deps/jsr.io/@std/path/1.1.6/extname.js +0 -34
  424. package/script/deps/jsr.io/@std/path/1.1.6/normalize.d.ts +0 -25
  425. package/script/deps/jsr.io/@std/path/1.1.6/normalize.js +0 -35
  426. package/script/deps/jsr.io/@std/path/1.1.6/windows/extname.d.ts +0 -17
  427. package/script/deps/jsr.io/@std/path/1.1.6/windows/extname.js +0 -86
@@ -1,81 +1,17 @@
1
1
  /**
2
- * Determines whether two file paths represent different locations (import required).
2
+ * Whether two workspace paths name different files, so a symbol from one
3
+ * must be imported into the other.
3
4
  *
4
- * This utility function normalizes two file paths and compares them to determine
5
- * if they represent different files. It's used throughout the SKMTC system to
6
- * decide when import statements are needed - if two paths are different, an
7
- * import is required to access symbols from one file in another.
5
+ * Both are canonicalized with {@link normalizeWorkspacePath}, so every
6
+ * spelling of one file compares equal: `@/`, `./`, the bare form, and
7
+ * Windows separators. Throws, as that does, for a path that cannot name a
8
+ * file below `basePath` (a `..` segment, a Windows drive path).
8
9
  *
9
- * The function handles path normalization to ensure consistent comparisons
10
- * across different operating systems and path formats (handling './' vs absolute
11
- * paths, different separators, etc.).
12
- *
13
- * @param pathOne - The first file path to compare
14
- * @param pathTwo - The second file path to compare
15
- * @returns `true` if the paths are different (import needed), `false` if they're the same file
16
- *
17
- * @example Basic path comparison
18
- * ```typescript
19
- * import { isImported } from '@skmtc/core';
20
- *
21
- * // Same file, no import needed
22
- * console.log(isImported('./src/user.ts', './src/user.ts')); // false
23
- *
24
- * // Different files, import needed
25
- * console.log(isImported('./src/user.ts', './src/product.ts')); // true
26
- * ```
27
- *
28
- * @example Path normalization handling
29
- * ```typescript
30
- * // These all represent the same file after normalization
31
- * console.log(isImported('./src/user.ts', 'src/user.ts')); // false
32
- * console.log(isImported('src/./user.ts', 'src/user.ts')); // false
33
- * console.log(isImported('src/models/../user.ts', 'src/user.ts')); // false
34
- * ```
35
- *
36
- * @example Usage in import decision logic
10
+ * @example
37
11
  * ```typescript
38
- * class FileGenerator {
39
- * addImportIfNeeded(
40
- * sourceFile: string,
41
- * targetFile: string,
42
- * importName: string
43
- * ) {
44
- * if (isImported(sourceFile, targetFile)) {
45
- * // Files are different, add import
46
- * this.addImport(sourceFile, targetFile, importName);
47
- * console.log(`Added import: ${importName} from ${targetFile}`);
48
- * } else {
49
- * // Same file, no import needed
50
- * console.log(`No import needed - same file: ${sourceFile}`);
51
- * }
52
- * }
53
- * }
54
- * ```
55
- *
56
- * @example Cross-platform path handling
57
- * ```typescript
58
- * // Works consistently across platforms
59
- * const windowsPath = 'src\\models\\user.ts';
60
- * const unixPath = 'src/models/user.ts';
61
- *
62
- * console.log(isImported(windowsPath, unixPath)); // false (same file)
63
- * ```
64
- *
65
- * @example In generator context
66
- * ```typescript
67
- * class ModelGenerator {
68
- * generateModel(modelPath: string, referencePath: string) {
69
- * const definition = this.createModelDefinition();
70
- *
71
- * if (isImported(modelPath, referencePath)) {
72
- * // Need to import the referenced model
73
- * definition.addImport(referencePath, 'ReferencedModel');
74
- * }
75
- *
76
- * return definition;
77
- * }
78
- * }
12
+ * isImported('@/src/user.ts', './src/user.ts') // false — one file
13
+ * isImported('src\\user.ts', 'src/user.ts') // false — one file
14
+ * isImported('@/src/user.ts', '@/src/product.ts') // true
79
15
  * ```
80
16
  */
81
17
  export declare const isImported: (pathOne: string, pathTwo: string) => boolean;
@@ -1,84 +1,20 @@
1
- import { normalize } from '../deps/jsr.io/@std/path/1.1.6/normalize.js';
1
+ import { normalizeWorkspacePath } from './normalizeWorkspacePath.js';
2
2
  /**
3
- * Determines whether two file paths represent different locations (import required).
3
+ * Whether two workspace paths name different files, so a symbol from one
4
+ * must be imported into the other.
4
5
  *
5
- * This utility function normalizes two file paths and compares them to determine
6
- * if they represent different files. It's used throughout the SKMTC system to
7
- * decide when import statements are needed - if two paths are different, an
8
- * import is required to access symbols from one file in another.
6
+ * Both are canonicalized with {@link normalizeWorkspacePath}, so every
7
+ * spelling of one file compares equal: `@/`, `./`, the bare form, and
8
+ * Windows separators. Throws, as that does, for a path that cannot name a
9
+ * file below `basePath` (a `..` segment, a Windows drive path).
9
10
  *
10
- * The function handles path normalization to ensure consistent comparisons
11
- * across different operating systems and path formats (handling './' vs absolute
12
- * paths, different separators, etc.).
13
- *
14
- * @param pathOne - The first file path to compare
15
- * @param pathTwo - The second file path to compare
16
- * @returns `true` if the paths are different (import needed), `false` if they're the same file
17
- *
18
- * @example Basic path comparison
19
- * ```typescript
20
- * import { isImported } from '@skmtc/core';
21
- *
22
- * // Same file, no import needed
23
- * console.log(isImported('./src/user.ts', './src/user.ts')); // false
24
- *
25
- * // Different files, import needed
26
- * console.log(isImported('./src/user.ts', './src/product.ts')); // true
27
- * ```
28
- *
29
- * @example Path normalization handling
30
- * ```typescript
31
- * // These all represent the same file after normalization
32
- * console.log(isImported('./src/user.ts', 'src/user.ts')); // false
33
- * console.log(isImported('src/./user.ts', 'src/user.ts')); // false
34
- * console.log(isImported('src/models/../user.ts', 'src/user.ts')); // false
35
- * ```
36
- *
37
- * @example Usage in import decision logic
11
+ * @example
38
12
  * ```typescript
39
- * class FileGenerator {
40
- * addImportIfNeeded(
41
- * sourceFile: string,
42
- * targetFile: string,
43
- * importName: string
44
- * ) {
45
- * if (isImported(sourceFile, targetFile)) {
46
- * // Files are different, add import
47
- * this.addImport(sourceFile, targetFile, importName);
48
- * console.log(`Added import: ${importName} from ${targetFile}`);
49
- * } else {
50
- * // Same file, no import needed
51
- * console.log(`No import needed - same file: ${sourceFile}`);
52
- * }
53
- * }
54
- * }
55
- * ```
56
- *
57
- * @example Cross-platform path handling
58
- * ```typescript
59
- * // Works consistently across platforms
60
- * const windowsPath = 'src\\models\\user.ts';
61
- * const unixPath = 'src/models/user.ts';
62
- *
63
- * console.log(isImported(windowsPath, unixPath)); // false (same file)
64
- * ```
65
- *
66
- * @example In generator context
67
- * ```typescript
68
- * class ModelGenerator {
69
- * generateModel(modelPath: string, referencePath: string) {
70
- * const definition = this.createModelDefinition();
71
- *
72
- * if (isImported(modelPath, referencePath)) {
73
- * // Need to import the referenced model
74
- * definition.addImport(referencePath, 'ReferencedModel');
75
- * }
76
- *
77
- * return definition;
78
- * }
79
- * }
13
+ * isImported('@/src/user.ts', './src/user.ts') // false — one file
14
+ * isImported('src\\user.ts', 'src/user.ts') // false — one file
15
+ * isImported('@/src/user.ts', '@/src/product.ts') // true
80
16
  * ```
81
17
  */
82
18
  export const isImported = (pathOne, pathTwo) => {
83
- return normalize(pathOne) !== normalize(pathTwo);
19
+ return normalizeWorkspacePath(pathOne) !== normalizeWorkspacePath(pathTwo);
84
20
  };
@@ -4,7 +4,7 @@ import type { Method } from '../types/Method.js';
4
4
  * Determines the endpoint type based on HTTP method.
5
5
  *
6
6
  * @param operation - The OpenAPI operation to analyze
7
- * @returns 'query' for GET operations, 'mutation' for all others
7
+ * @returns 'query' for GET and QUERY operations, 'mutation' for all others
8
8
  *
9
9
  * @example
10
10
  * ```typescript
@@ -67,6 +67,7 @@ export declare const toArgsName: (operation: OasOperation) => string;
67
67
  * console.log(toMethodVerb('put')); // 'Update'
68
68
  * console.log(toMethodVerb('get')); // 'get'
69
69
  * console.log(toMethodVerb('delete')); // 'delete'
70
+ * console.log(toMethodVerb('query')); // 'Query'
70
71
  * ```
71
72
  */
72
73
  export declare const toMethodVerb: (method: Method) => string;
@@ -3,7 +3,7 @@ import { camelCase, capitalize } from './strings.js';
3
3
  * Determines the endpoint type based on HTTP method.
4
4
  *
5
5
  * @param operation - The OpenAPI operation to analyze
6
- * @returns 'query' for GET operations, 'mutation' for all others
6
+ * @returns 'query' for GET and QUERY operations, 'mutation' for all others
7
7
  *
8
8
  * @example
9
9
  * ```typescript
@@ -15,7 +15,8 @@ import { camelCase, capitalize } from './strings.js';
15
15
  * ```
16
16
  */
17
17
  export const toEndpointType = (operation) => {
18
- return operation.method === 'get' ? 'query' : 'mutation';
18
+ // QUERY is safe and idempotent, like GET.
19
+ return operation.method === 'get' || operation.method === 'query' ? 'query' : 'mutation';
19
20
  };
20
21
  /**
21
22
  * Generates endpoint name in the `camelCase{method}Api{path}` format.
@@ -78,6 +79,7 @@ export const toArgsName = (operation) => {
78
79
  * console.log(toMethodVerb('put')); // 'Update'
79
80
  * console.log(toMethodVerb('get')); // 'get'
80
81
  * console.log(toMethodVerb('delete')); // 'delete'
82
+ * console.log(toMethodVerb('query')); // 'Query'
81
83
  * ```
82
84
  */
83
85
  export const toMethodVerb = (method) => {
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Options for {@link normalizeWorkspacePath} and {@link toNormalizedWorkspacePath}.
3
+ */
4
+ export type NormalizeWorkspacePathOptions = {
5
+ /** Names the generator in the error when the path is rejected. */
6
+ generatorId?: string;
7
+ };
8
+ /**
9
+ * Whether a path contains a `..` parent-reference segment. `..` is a parent
10
+ * reference only as a whole segment — a directory name that merely contains
11
+ * dots is not flagged.
12
+ */
13
+ export declare const hasParentSegment: (path: string) => boolean;
14
+ /**
15
+ * Whether a path is absolute on either host: a POSIX root, a Windows drive
16
+ * (`C:\`, `C:/`) or a UNC share. Checked on every host, so a client.json
17
+ * written on Windows is rejected the same way on Linux.
18
+ */
19
+ export declare const isAbsolutePath: (path: string) => boolean;
20
+ /**
21
+ * Whether `path` is spelled from the workspace root — `@/`, `./`, a bare
22
+ * leading `/`, or their Windows forms. An artifact path, never a bare
23
+ * module specifier such as `zod` or `@tanstack/query`.
24
+ */
25
+ export declare const hasWorkspaceAnchor: (path: string) => boolean;
26
+ /**
27
+ * Whether `path` can name a file below `basePath`: not a Windows drive or
28
+ * UNC path, no `..` segment, and not `basePath` itself. The non-throwing
29
+ * form of {@link normalizeWorkspacePath}'s checks, for schema validation
30
+ * and for comparing a module specifier against a file path.
31
+ */
32
+ export declare const isValidWorkspacePath: (path: string) => boolean;
33
+ /**
34
+ * The path relative to `basePath`, normalized and with no anchor:
35
+ * what {@link normalizeWorkspacePath} writes after `@/`, and what
36
+ * {@link toResolvedArtifactPath} joins onto `basePath`.
37
+ *
38
+ * Throws when the path cannot name a file below `basePath`: a Windows
39
+ * drive or UNC path, a `..` segment (checked as a whole segment before
40
+ * normalization, so it is never resolved), or a path naming `basePath`
41
+ * itself (`@/`, `@`, `./`, `.`, `/`, ``).
42
+ */
43
+ export declare const toNormalizedWorkspacePath: (path: string, { generatorId }?: NormalizeWorkspacePathOptions) => string;
44
+ /**
45
+ * The one spelling of a workspace path — an export path or a destination
46
+ * path: `@/` followed by a POSIX path relative to `basePath`.
47
+ *
48
+ * A workspace path is a logical path inside the workspace, never a
49
+ * filesystem path, so it reads the same on every host. A generator may
50
+ * return one as `@/types/User.ts`, `./types/User.ts`, `/types/User.ts`,
51
+ * `types/User.ts`, or with Windows separators; the engine stores this form
52
+ * and nothing else, so file-map keys, import modules and the ejected lookup
53
+ * always agree. The result is a fixed point.
54
+ *
55
+ * Throws in the cases {@link toNormalizedWorkspacePath} throws.
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * normalizeWorkspacePath('@\\types\\User.ts') // '@/types/User.ts'
60
+ * normalizeWorkspacePath('./types/User.ts') // '@/types/User.ts'
61
+ * normalizeWorkspacePath('../User.ts') // throws
62
+ * ```
63
+ */
64
+ export declare const normalizeWorkspacePath: (path: string, options?: NormalizeWorkspacePathOptions) => string;
@@ -0,0 +1,98 @@
1
+ import { normalize } from '../deps/jsr.io/@std/path/1.1.6/posix/normalize.js';
2
+ import { isAbsolute as isPosixAbsolute } from '../deps/jsr.io/@std/path/1.1.6/posix/is_absolute.js';
3
+ import { isAbsolute as isWindowsAbsolute } from '../deps/jsr.io/@std/path/1.1.6/windows/is_absolute.js';
4
+ import { toWorkspacePath } from './toWorkspacePath.js';
5
+ /**
6
+ * Whether a path contains a `..` parent-reference segment. `..` is a parent
7
+ * reference only as a whole segment — a directory name that merely contains
8
+ * dots is not flagged.
9
+ */
10
+ export const hasParentSegment = (path) => path.split(/[/\\]/).some(segment => segment === '..');
11
+ /**
12
+ * Whether a path is absolute on either host: a POSIX root, a Windows drive
13
+ * (`C:\`, `C:/`) or a UNC share. Checked on every host, so a client.json
14
+ * written on Windows is rejected the same way on Linux.
15
+ */
16
+ export const isAbsolutePath = (path) => isPosixAbsolute(path.replaceAll('\\', '/')) || isWindowsAbsolute(path);
17
+ /**
18
+ * A Windows drive path (`C:\`, `C:/`) or a UNC path (`\\server\share`):
19
+ * the two absolute forms that can never be relative to `basePath`. A bare
20
+ * leading `/` is not one — it is an anchor spelling of the workspace root.
21
+ */
22
+ const isDriveOrUncPath = (path) => /^[A-Za-z]:[\\/]/.test(path) || path.startsWith('\\\\');
23
+ /**
24
+ * Whether `path` is spelled from the workspace root — `@/`, `./`, a bare
25
+ * leading `/`, or their Windows forms. An artifact path, never a bare
26
+ * module specifier such as `zod` or `@tanstack/query`.
27
+ */
28
+ export const hasWorkspaceAnchor = (path) => /^(@[\\/]|\.[\\/]|[\\/])/.test(path);
29
+ /**
30
+ * Whether `path` can name a file below `basePath`: not a Windows drive or
31
+ * UNC path, no `..` segment, and not `basePath` itself. The non-throwing
32
+ * form of {@link normalizeWorkspacePath}'s checks, for schema validation
33
+ * and for comparing a module specifier against a file path.
34
+ */
35
+ export const isValidWorkspacePath = (path) => !isDriveOrUncPath(path) && !hasParentSegment(path) && toBody(path) !== '';
36
+ /**
37
+ * The path relative to `basePath`, normalized and with no anchor:
38
+ * what {@link normalizeWorkspacePath} writes after `@/`, and what
39
+ * {@link toResolvedArtifactPath} joins onto `basePath`.
40
+ *
41
+ * Throws when the path cannot name a file below `basePath`: a Windows
42
+ * drive or UNC path, a `..` segment (checked as a whole segment before
43
+ * normalization, so it is never resolved), or a path naming `basePath`
44
+ * itself (`@/`, `@`, `./`, `.`, `/`, ``).
45
+ */
46
+ export const toNormalizedWorkspacePath = (path, { generatorId } = {}) => {
47
+ const reject = (reason) => {
48
+ const source = generatorId ? ` returned by generator '${generatorId}'` : '';
49
+ throw new Error(`Path '${path}'${source} ${reason}`);
50
+ };
51
+ if (isDriveOrUncPath(path)) {
52
+ return reject('is a Windows drive or UNC path; a workspace path is relative to basePath');
53
+ }
54
+ if (hasParentSegment(path)) {
55
+ return reject('contains a ".." segment; a workspace path is a forward path below basePath');
56
+ }
57
+ const body = toBody(path);
58
+ if (body === '') {
59
+ return reject('names basePath itself; a workspace path names a file below it');
60
+ }
61
+ return body;
62
+ };
63
+ /**
64
+ * The one spelling of a workspace path — an export path or a destination
65
+ * path: `@/` followed by a POSIX path relative to `basePath`.
66
+ *
67
+ * A workspace path is a logical path inside the workspace, never a
68
+ * filesystem path, so it reads the same on every host. A generator may
69
+ * return one as `@/types/User.ts`, `./types/User.ts`, `/types/User.ts`,
70
+ * `types/User.ts`, or with Windows separators; the engine stores this form
71
+ * and nothing else, so file-map keys, import modules and the ejected lookup
72
+ * always agree. The result is a fixed point.
73
+ *
74
+ * Throws in the cases {@link toNormalizedWorkspacePath} throws.
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * normalizeWorkspacePath('@\\types\\User.ts') // '@/types/User.ts'
79
+ * normalizeWorkspacePath('./types/User.ts') // '@/types/User.ts'
80
+ * normalizeWorkspacePath('../User.ts') // throws
81
+ * ```
82
+ */
83
+ export const normalizeWorkspacePath = (path, options = {}) => `@/${toNormalizedWorkspacePath(path, options)}`;
84
+ /**
85
+ * Separator swap, then every anchor spelling goes (`@/`, `./`, a leading
86
+ * `/` — {@link toWorkspacePath}), then POSIX normalize of what is left so
87
+ * `@//x` and `@/./x` collapse. The anchor goes first so normalize can
88
+ * never fold it into a name (`@/.` is the root, not a file called `@`).
89
+ * The root in any spelling is the empty string.
90
+ */
91
+ const toBody = (path) => {
92
+ const stripped = toWorkspacePath(path.replaceAll('\\', '/'));
93
+ if (stripped === '') {
94
+ return '';
95
+ }
96
+ const normalized = normalize(stripped);
97
+ return normalized === '.' ? '' : normalized;
98
+ };
@@ -2,9 +2,11 @@
2
2
  * Resolves an artifact's destination path onto `basePath`.
3
3
  *
4
4
  * `destinationPath` is a workspace path in any spelling
5
- * ({@link toWorkspacePath}) — `@/models/User.ts` as a generator wrote it,
6
- * or `./models/User.ts` — and is always joined onto `basePath`; there is no
7
- * absolute-path escape.
5
+ * ({@link toNormalizedWorkspacePath}) — `@/models/User.ts` as a generator
6
+ * wrote it, `./models/User.ts`, or with Windows separators — and is always
7
+ * joined onto `basePath` with forward slashes, so the artifact key reads
8
+ * the same on every host. A `..` segment or an absolute path is refused:
9
+ * every artifact lands below `basePath`, whoever writes it.
8
10
  *
9
11
  * @module toResolvedArtifactPath
10
12
  */
@@ -22,8 +24,9 @@ type ToResolvedArtifactPathArgs = {
22
24
  destinationPath: string;
23
25
  };
24
26
  /**
25
- * Joins `destinationPath` (canonicalized) onto `basePath`, or onto `./` when
26
- * `basePath` is undefined.
27
+ * Joins `destinationPath` (canonicalized) onto `basePath`, or onto the
28
+ * workspace root when `basePath` is undefined. Throws when
29
+ * `destinationPath` cannot name a file below `basePath`.
27
30
  *
28
31
  * @example
29
32
  * ```typescript
@@ -2,18 +2,22 @@
2
2
  * Resolves an artifact's destination path onto `basePath`.
3
3
  *
4
4
  * `destinationPath` is a workspace path in any spelling
5
- * ({@link toWorkspacePath}) — `@/models/User.ts` as a generator wrote it,
6
- * or `./models/User.ts` — and is always joined onto `basePath`; there is no
7
- * absolute-path escape.
5
+ * ({@link toNormalizedWorkspacePath}) — `@/models/User.ts` as a generator
6
+ * wrote it, `./models/User.ts`, or with Windows separators — and is always
7
+ * joined onto `basePath` with forward slashes, so the artifact key reads
8
+ * the same on every host. A `..` segment or an absolute path is refused:
9
+ * every artifact lands below `basePath`, whoever writes it.
8
10
  *
9
11
  * @module toResolvedArtifactPath
10
12
  */
11
13
  import "../_dnt.polyfills.js";
12
- import { join } from '../deps/jsr.io/@std/path/1.1.6/join.js';
14
+ import { join } from '../deps/jsr.io/@std/path/1.1.6/posix/join.js';
15
+ import { toNormalizedWorkspacePath } from './normalizeWorkspacePath.js';
13
16
  import { toWorkspacePath } from './toWorkspacePath.js';
14
17
  /**
15
- * Joins `destinationPath` (canonicalized) onto `basePath`, or onto `./` when
16
- * `basePath` is undefined.
18
+ * Joins `destinationPath` (canonicalized) onto `basePath`, or onto the
19
+ * workspace root when `basePath` is undefined. Throws when
20
+ * `destinationPath` cannot name a file below `basePath`.
17
21
  *
18
22
  * @example
19
23
  * ```typescript
@@ -24,5 +28,5 @@ import { toWorkspacePath } from './toWorkspacePath.js';
24
28
  * ```
25
29
  */
26
30
  export const toResolvedArtifactPath = ({ basePath, destinationPath }) => {
27
- return join(basePath ?? './', toWorkspacePath(destinationPath));
31
+ return join(toWorkspacePath(basePath ?? ''), toNormalizedWorkspacePath(destinationPath));
28
32
  };
@@ -7,9 +7,9 @@
7
7
  * config and examples write it as `./`, and std `normalize` — applied to
8
8
  * `File.path` by the drivers — strips `./` but leaves `@/` alone. Anything
9
9
  * that compares paths from more than one of those sources (package matching,
10
- * on-disk resolution) must see all spellings as equal: every leading `@/` or
11
- * `./` goes, a trailing `/` goes, a Windows `\` is a `/`, and the workspace
12
- * root itself (`@/`, `./`, `.`, ``) is the empty string. The result is a fixed
10
+ * on-disk resolution) must see all spellings as equal: every leading `@/`,
11
+ * `./` or bare `/` goes, a trailing `/` goes, a Windows `\` is a `/`, and the
12
+ * workspace root itself (`@/`, `@`, `./`, `.`, `/`, ``) is the empty string. The result is a fixed
13
13
  * point: canonicalizing it again changes nothing.
14
14
  *
15
15
  * The `@/` stripped here is Skmtc's **workspace root** — the prefix
@@ -7,9 +7,9 @@
7
7
  * config and examples write it as `./`, and std `normalize` — applied to
8
8
  * `File.path` by the drivers — strips `./` but leaves `@/` alone. Anything
9
9
  * that compares paths from more than one of those sources (package matching,
10
- * on-disk resolution) must see all spellings as equal: every leading `@/` or
11
- * `./` goes, a trailing `/` goes, a Windows `\` is a `/`, and the workspace
12
- * root itself (`@/`, `./`, `.`, ``) is the empty string. The result is a fixed
10
+ * on-disk resolution) must see all spellings as equal: every leading `@/`,
11
+ * `./` or bare `/` goes, a trailing `/` goes, a Windows `\` is a `/`, and the
12
+ * workspace root itself (`@/`, `@`, `./`, `.`, `/`, ``) is the empty string. The result is a fixed
13
13
  * point: canonicalizing it again changes nothing.
14
14
  *
15
15
  * The `@/` stripped here is Skmtc's **workspace root** — the prefix
@@ -29,9 +29,9 @@
29
29
  export const toWorkspacePath = (path) => {
30
30
  const withoutAnchor = path
31
31
  .replaceAll('\\', '/')
32
- .replace(/^(?:@\/|\.\/)+/, '')
32
+ .replace(/^(?:@\/|\.\/|\/)+/, '')
33
33
  .replace(/\/+$/, '');
34
- return withoutAnchor === '.' ? '' : withoutAnchor;
34
+ return withoutAnchor === '.' || withoutAnchor === '@' ? '' : withoutAnchor;
35
35
  };
36
36
  /**
37
37
  * `path` is `rootPath` itself or a file or folder below it. A root is a
package/esm/mod.d.ts CHANGED
@@ -118,6 +118,7 @@ export * from './helpers/strings.js';
118
118
  export * from './helpers/parseModuleName.js';
119
119
  export * from './helpers/toResolvedArtifactPath.js';
120
120
  export * from './helpers/toWorkspacePath.js';
121
+ export * from './helpers/normalizeWorkspacePath.js';
121
122
  export * from './helpers/matchPackage.js';
122
123
  export * from './helpers/withVariant.js';
123
124
  export * from './helpers/toVariantList.js';
package/esm/mod.js CHANGED
@@ -118,6 +118,7 @@ export * from './helpers/strings.js';
118
118
  export * from './helpers/parseModuleName.js';
119
119
  export * from './helpers/toResolvedArtifactPath.js';
120
120
  export * from './helpers/toWorkspacePath.js';
121
+ export * from './helpers/normalizeWorkspacePath.js';
121
122
  export * from './helpers/matchPackage.js';
122
123
  export * from './helpers/withVariant.js';
123
124
  export * from './helpers/toVariantList.js';
@@ -2,10 +2,13 @@ import "../../_dnt.polyfills.js";
2
2
  export type DiscriminatorFields = {
3
3
  propertyName: string;
4
4
  mapping?: Record<string, string>;
5
+ /** Schema to use when the discriminating value has no mapping entry (OpenAPI 3.2) */
6
+ defaultMapping?: string;
5
7
  };
6
8
  export declare class OasDiscriminator {
7
9
  oasType: 'discriminator';
8
10
  propertyName: string;
9
11
  mapping?: Record<string, string>;
12
+ defaultMapping?: string;
10
13
  constructor(fields: DiscriminatorFields);
11
14
  }
@@ -19,7 +19,14 @@ export class OasDiscriminator {
19
19
  writable: true,
20
20
  value: void 0
21
21
  });
22
+ Object.defineProperty(this, "defaultMapping", {
23
+ enumerable: true,
24
+ configurable: true,
25
+ writable: true,
26
+ value: void 0
27
+ });
22
28
  this.propertyName = fields.propertyName;
23
29
  this.mapping = fields.mapping;
30
+ this.defaultMapping = fields.defaultMapping;
24
31
  }
25
32
  }
@@ -20,6 +20,11 @@ import type { OasExternalDocs } from '../externalDocs/ExternalDocs.js';
20
20
  export type DocumentFields = {
21
21
  /** OpenAPI specification version (e.g., '3.0.0', '3.1.0') */
22
22
  openapi: string;
23
+ /**
24
+ * The document's own URI (OpenAPI 3.2 `$self`). Stored only: reference
25
+ * resolution does not use it.
26
+ */
27
+ $self?: string | undefined;
23
28
  /** API metadata including title, version, description */
24
29
  info: OasInfo;
25
30
  /** Array of server objects providing connectivity information */
@@ -215,6 +220,8 @@ export declare class OasDocument {
215
220
  set fields(fields: DocumentFields);
216
221
  /** OpenAPI specification version */
217
222
  get openapi(): string;
223
+ /** The document's own URI (OpenAPI 3.2 `$self`) */
224
+ get $self(): string | undefined;
218
225
  /** API metadata */
219
226
  get info(): OasInfo;
220
227
  get servers(): OasServer[] | undefined;
@@ -225,6 +225,13 @@ export class OasDocument {
225
225
  }
226
226
  return __classPrivateFieldGet(this, _OasDocument_fields, "f").openapi;
227
227
  }
228
+ /** The document's own URI (OpenAPI 3.2 `$self`) */
229
+ get $self() {
230
+ if (!__classPrivateFieldGet(this, _OasDocument_fields, "f")) {
231
+ throw new Error(`Accessing '$self' before fields are set`);
232
+ }
233
+ return __classPrivateFieldGet(this, _OasDocument_fields, "f").$self;
234
+ }
228
235
  /** API metadata */
229
236
  get info() {
230
237
  if (!__classPrivateFieldGet(this, _OasDocument_fields, "f")) {
@@ -311,6 +318,7 @@ export class OasDocument {
311
318
  toJSON() {
312
319
  return {
313
320
  openapi: this.openapi,
321
+ ...(this.$self !== undefined ? { $self: this.$self } : {}),
314
322
  info: this.info,
315
323
  servers: this.servers,
316
324
  operations: this.operations,
@@ -11,6 +11,10 @@ export type ExampleFields = {
11
11
  description?: string;
12
12
  /** The example value — absent when the example is given as an `externalValue` */
13
13
  value?: unknown;
14
+ /** The example as data that is valid against its schema (OpenAPI 3.2) */
15
+ dataValue?: unknown;
16
+ /** The example in its serialized form (OpenAPI 3.2) */
17
+ serializedValue?: string;
14
18
  /** The external value of the example */
15
19
  externalValue?: string;
16
20
  /** Custom extension fields (x-* properties) */
@@ -23,6 +27,8 @@ export declare class OasExample {
23
27
  summary?: string;
24
28
  description?: string;
25
29
  value?: unknown;
30
+ dataValue?: unknown;
31
+ serializedValue?: string;
26
32
  externalValue?: string;
27
33
  extensionFields?: Record<string, unknown>;
28
34
  constructor(fields: ExampleFields);
@@ -31,5 +37,8 @@ export declare class OasExample {
31
37
  /** Returns itself */
32
38
  resolve(): OasExample;
33
39
  resolveOnce(): OasExample;
34
- toJsonSchema(_options: ToJsonSchemaOptions): OpenAPIV3.ExampleObject;
40
+ toJsonSchema(_options: ToJsonSchemaOptions): OpenAPIV3.ExampleObject & {
41
+ dataValue?: unknown;
42
+ serializedValue?: string;
43
+ };
35
44
  }