openapi-typesafe 1.0.0-rc.0 → 1.0.0-rc.2

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 (513) hide show
  1. package/README.md +12 -5
  2. package/dist/adapters/redocly-loader/configured-headers.cjs +32 -0
  3. package/dist/adapters/redocly-loader/configured-headers.cjs.map +1 -0
  4. package/dist/adapters/redocly-loader/configured-headers.mjs +30 -0
  5. package/dist/adapters/redocly-loader/configured-headers.mjs.map +1 -0
  6. package/dist/adapters/redocly-loader/redocly-config-source.cjs +21 -2
  7. package/dist/adapters/redocly-loader/redocly-config-source.cjs.map +1 -1
  8. package/dist/adapters/redocly-loader/redocly-config-source.mjs +22 -3
  9. package/dist/adapters/redocly-loader/redocly-config-source.mjs.map +1 -1
  10. package/dist/adapters/redocly-loader/redocly-schema-loader.cjs +34 -11
  11. package/dist/adapters/redocly-loader/redocly-schema-loader.cjs.map +1 -1
  12. package/dist/adapters/redocly-loader/redocly-schema-loader.mjs +33 -10
  13. package/dist/adapters/redocly-loader/redocly-schema-loader.mjs.map +1 -1
  14. package/dist/adapters/redocly-loader/ref-access.cjs +37 -4
  15. package/dist/adapters/redocly-loader/ref-access.cjs.map +1 -1
  16. package/dist/adapters/redocly-loader/ref-access.mjs +37 -4
  17. package/dist/adapters/redocly-loader/ref-access.mjs.map +1 -1
  18. package/dist/adapters/redocly-loader/ref-resolution-check.cjs +191 -0
  19. package/dist/adapters/redocly-loader/ref-resolution-check.cjs.map +1 -0
  20. package/dist/adapters/redocly-loader/ref-resolution-check.mjs +189 -0
  21. package/dist/adapters/redocly-loader/ref-resolution-check.mjs.map +1 -0
  22. package/dist/adapters/redocly-loader/ref-resolution-steps.cjs +73 -0
  23. package/dist/adapters/redocly-loader/ref-resolution-steps.cjs.map +1 -0
  24. package/dist/adapters/redocly-loader/ref-resolution-steps.mjs +60 -0
  25. package/dist/adapters/redocly-loader/ref-resolution-steps.mjs.map +1 -0
  26. package/dist/adapters/redocly-loader/remote-fetch.cjs +41 -14
  27. package/dist/adapters/redocly-loader/remote-fetch.cjs.map +1 -1
  28. package/dist/adapters/redocly-loader/remote-fetch.mjs +40 -14
  29. package/dist/adapters/redocly-loader/remote-fetch.mjs.map +1 -1
  30. package/dist/adapters/redocly-loader/schema-load-errors.cjs +23 -5
  31. package/dist/adapters/redocly-loader/schema-load-errors.cjs.map +1 -1
  32. package/dist/adapters/redocly-loader/schema-load-errors.mjs +23 -5
  33. package/dist/adapters/redocly-loader/schema-load-errors.mjs.map +1 -1
  34. package/dist/adapters/redocly-loader/unsupported-keys.cjs +9 -1
  35. package/dist/adapters/redocly-loader/unsupported-keys.cjs.map +1 -1
  36. package/dist/adapters/redocly-loader/unsupported-keys.mjs +9 -1
  37. package/dist/adapters/redocly-loader/unsupported-keys.mjs.map +1 -1
  38. package/dist/adapters/terminal-logger/terminal-logger.cjs +6 -4
  39. package/dist/adapters/terminal-logger/terminal-logger.cjs.map +1 -1
  40. package/dist/adapters/terminal-logger/terminal-logger.mjs +6 -4
  41. package/dist/adapters/terminal-logger/terminal-logger.mjs.map +1 -1
  42. package/dist/adapters/type-ast-bridge/ir-to-typescript.cjs +5 -1
  43. package/dist/adapters/type-ast-bridge/ir-to-typescript.cjs.map +1 -1
  44. package/dist/adapters/type-ast-bridge/ir-to-typescript.mjs +5 -1
  45. package/dist/adapters/type-ast-bridge/ir-to-typescript.mjs.map +1 -1
  46. package/dist/adapters/type-ast-bridge/print-typescript.cjs.map +1 -1
  47. package/dist/adapters/type-ast-bridge/print-typescript.mjs.map +1 -1
  48. package/dist/adapters/type-ast-bridge/typescript-to-ir.cjs +15 -9
  49. package/dist/adapters/type-ast-bridge/typescript-to-ir.cjs.map +1 -1
  50. package/dist/adapters/type-ast-bridge/typescript-to-ir.mjs +15 -9
  51. package/dist/adapters/type-ast-bridge/typescript-to-ir.mjs.map +1 -1
  52. package/dist/api/default-ports.cjs +9 -0
  53. package/dist/api/default-ports.cjs.map +1 -1
  54. package/dist/api/default-ports.mjs +8 -1
  55. package/dist/api/default-ports.mjs.map +1 -1
  56. package/dist/api/discriminator-conflict-warnings.cjs +25 -0
  57. package/dist/api/discriminator-conflict-warnings.cjs.map +1 -0
  58. package/dist/api/discriminator-conflict-warnings.mjs +23 -0
  59. package/dist/api/discriminator-conflict-warnings.mjs.map +1 -0
  60. package/dist/api/discriminator-enum-names.cjs +19 -0
  61. package/dist/api/discriminator-enum-names.cjs.map +1 -0
  62. package/dist/api/discriminator-enum-names.mjs +17 -0
  63. package/dist/api/discriminator-enum-names.mjs.map +1 -0
  64. package/dist/api/discriminator-enum-parent.cjs +59 -0
  65. package/dist/api/discriminator-enum-parent.cjs.map +1 -0
  66. package/dist/api/discriminator-enum-parent.mjs +57 -0
  67. package/dist/api/discriminator-enum-parent.mjs.map +1 -0
  68. package/dist/api/discriminator-enum.cjs +25 -0
  69. package/dist/api/discriminator-enum.cjs.map +1 -1
  70. package/dist/api/discriminator-enum.mjs +25 -1
  71. package/dist/api/discriminator-enum.mjs.map +1 -1
  72. package/dist/api/discriminator-other-owners.cjs +67 -0
  73. package/dist/api/discriminator-other-owners.cjs.map +1 -0
  74. package/dist/api/discriminator-other-owners.mjs +64 -0
  75. package/dist/api/discriminator-other-owners.mjs.map +1 -0
  76. package/dist/api/discriminator-patch.cjs +92 -0
  77. package/dist/api/discriminator-patch.cjs.map +1 -0
  78. package/dist/api/discriminator-patch.mjs +86 -0
  79. package/dist/api/discriminator-patch.mjs.map +1 -0
  80. package/dist/api/discriminator-scan.cjs +50 -65
  81. package/dist/api/discriminator-scan.cjs.map +1 -1
  82. package/dist/api/discriminator-scan.mjs +44 -59
  83. package/dist/api/discriminator-scan.mjs.map +1 -1
  84. package/dist/api/document-refs.cjs +15 -12
  85. package/dist/api/document-refs.cjs.map +1 -1
  86. package/dist/api/document-refs.mjs +15 -12
  87. package/dist/api/document-refs.mjs.map +1 -1
  88. package/dist/api/document-run.cjs +21 -4
  89. package/dist/api/document-run.cjs.map +1 -1
  90. package/dist/api/document-run.mjs +22 -5
  91. package/dist/api/document-run.mjs.map +1 -1
  92. package/dist/api/enum-values-warnings.cjs +16 -0
  93. package/dist/api/enum-values-warnings.cjs.map +1 -0
  94. package/dist/api/enum-values-warnings.mjs +14 -0
  95. package/dist/api/enum-values-warnings.mjs.map +1 -0
  96. package/dist/api/footer-sink.cjs +25 -2
  97. package/dist/api/footer-sink.cjs.map +1 -1
  98. package/dist/api/footer-sink.mjs +25 -2
  99. package/dist/api/footer-sink.mjs.map +1 -1
  100. package/dist/api/legacy-callback-warning.cjs +4 -1
  101. package/dist/api/legacy-callback-warning.cjs.map +1 -1
  102. package/dist/api/legacy-callback-warning.mjs +4 -1
  103. package/dist/api/legacy-callback-warning.mjs.map +1 -1
  104. package/dist/api/legacy-ts-helpers.cjs.map +1 -1
  105. package/dist/api/legacy-ts-helpers.mjs.map +1 -1
  106. package/dist/api/legacy-utils.cjs.map +1 -1
  107. package/dist/api/legacy-utils.mjs.map +1 -1
  108. package/dist/api/openapi-ts.cjs +2 -1
  109. package/dist/api/openapi-ts.cjs.map +1 -1
  110. package/dist/api/openapi-ts.mjs +3 -2
  111. package/dist/api/openapi-ts.mjs.map +1 -1
  112. package/dist/api/path-template-warnings.cjs +21 -0
  113. package/dist/api/path-template-warnings.cjs.map +1 -0
  114. package/dist/api/path-template-warnings.mjs +19 -0
  115. package/dist/api/path-template-warnings.mjs.map +1 -0
  116. package/dist/api/transform-context.cjs +4 -2
  117. package/dist/api/transform-context.cjs.map +1 -1
  118. package/dist/api/transform-context.mjs +4 -2
  119. package/dist/api/transform-context.mjs.map +1 -1
  120. package/dist/api/transform-schema.cjs +52 -3
  121. package/dist/api/transform-schema.cjs.map +1 -1
  122. package/dist/api/transform-schema.mjs +53 -4
  123. package/dist/api/transform-schema.mjs.map +1 -1
  124. package/dist/api/unsupported-feature-warnings.cjs +6 -1
  125. package/dist/api/unsupported-feature-warnings.cjs.map +1 -1
  126. package/dist/api/unsupported-feature-warnings.mjs +6 -1
  127. package/dist/api/unsupported-feature-warnings.mjs.map +1 -1
  128. package/dist/application/print/type-printer.cjs +7 -1
  129. package/dist/application/print/type-printer.cjs.map +1 -1
  130. package/dist/application/print/type-printer.mjs +7 -1
  131. package/dist/application/print/type-printer.mjs.map +1 -1
  132. package/dist/application/transform/document/assignability.cjs +144 -0
  133. package/dist/application/transform/document/assignability.cjs.map +1 -0
  134. package/dist/application/transform/document/assignability.mjs +138 -0
  135. package/dist/application/transform/document/assignability.mjs.map +1 -0
  136. package/dist/application/transform/document/components.cjs +2 -2
  137. package/dist/application/transform/document/components.cjs.map +1 -1
  138. package/dist/application/transform/document/components.mjs +4 -4
  139. package/dist/application/transform/document/components.mjs.map +1 -1
  140. package/dist/application/transform/document/declared-types.cjs +66 -0
  141. package/dist/application/transform/document/declared-types.cjs.map +1 -0
  142. package/dist/application/transform/document/declared-types.mjs +63 -0
  143. package/dist/application/transform/document/declared-types.mjs.map +1 -0
  144. package/dist/application/transform/document/document.cjs +32 -9
  145. package/dist/application/transform/document/document.cjs.map +1 -1
  146. package/dist/application/transform/document/document.mjs +34 -11
  147. package/dist/application/transform/document/document.mjs.map +1 -1
  148. package/dist/application/transform/document/exploded-query.cjs +46 -0
  149. package/dist/application/transform/document/exploded-query.cjs.map +1 -0
  150. package/dist/application/transform/document/exploded-query.mjs +43 -0
  151. package/dist/application/transform/document/exploded-query.mjs.map +1 -0
  152. package/dist/application/transform/document/global-type-references.cjs +63 -0
  153. package/dist/application/transform/document/global-type-references.cjs.map +1 -0
  154. package/dist/application/transform/document/global-type-references.mjs +61 -0
  155. package/dist/application/transform/document/global-type-references.mjs.map +1 -0
  156. package/dist/application/transform/document/list-assignability.cjs +54 -0
  157. package/dist/application/transform/document/list-assignability.cjs.map +1 -0
  158. package/dist/application/transform/document/list-assignability.mjs +52 -0
  159. package/dist/application/transform/document/list-assignability.mjs.map +1 -0
  160. package/dist/application/transform/document/parameters.cjs +41 -9
  161. package/dist/application/transform/document/parameters.cjs.map +1 -1
  162. package/dist/application/transform/document/parameters.mjs +42 -10
  163. package/dist/application/transform/document/parameters.mjs.map +1 -1
  164. package/dist/application/transform/document/path-key-overlaps.cjs +83 -33
  165. package/dist/application/transform/document/path-key-overlaps.cjs.map +1 -1
  166. package/dist/application/transform/document/path-key-overlaps.mjs +83 -33
  167. package/dist/application/transform/document/path-key-overlaps.mjs.map +1 -1
  168. package/dist/application/transform/document/path-template-replace.cjs +48 -0
  169. package/dist/application/transform/document/path-template-replace.cjs.map +1 -0
  170. package/dist/application/transform/document/path-template-replace.mjs +45 -0
  171. package/dist/application/transform/document/path-template-replace.mjs.map +1 -0
  172. package/dist/application/transform/document/paths.cjs +55 -29
  173. package/dist/application/transform/document/paths.cjs.map +1 -1
  174. package/dist/application/transform/document/paths.mjs +54 -30
  175. package/dist/application/transform/document/paths.mjs.map +1 -1
  176. package/dist/application/transform/document/root-type-aliases.cjs +15 -14
  177. package/dist/application/transform/document/root-type-aliases.cjs.map +1 -1
  178. package/dist/application/transform/document/root-type-aliases.mjs +15 -13
  179. package/dist/application/transform/document/root-type-aliases.mjs.map +1 -1
  180. package/dist/application/transform/document/template-key-match.cjs +128 -0
  181. package/dist/application/transform/document/template-key-match.cjs.map +1 -0
  182. package/dist/application/transform/document/template-key-match.mjs +125 -0
  183. package/dist/application/transform/document/template-key-match.mjs.map +1 -0
  184. package/dist/application/transform/document/type-assignability.cjs +192 -0
  185. package/dist/application/transform/document/type-assignability.cjs.map +1 -0
  186. package/dist/application/transform/document/type-assignability.mjs +190 -0
  187. package/dist/application/transform/document/type-assignability.mjs.map +1 -0
  188. package/dist/application/transform/document/type-key.cjs +70 -0
  189. package/dist/application/transform/document/type-key.cjs.map +1 -0
  190. package/dist/application/transform/document/type-key.mjs +68 -0
  191. package/dist/application/transform/document/type-key.mjs.map +1 -0
  192. package/dist/application/transform/document/type-resolution.cjs +131 -0
  193. package/dist/application/transform/document/type-resolution.cjs.map +1 -0
  194. package/dist/application/transform/document/type-resolution.mjs +125 -0
  195. package/dist/application/transform/document/type-resolution.mjs.map +1 -0
  196. package/dist/application/transform/footer/document-footer.cjs +66 -4
  197. package/dist/application/transform/footer/document-footer.cjs.map +1 -1
  198. package/dist/application/transform/footer/document-footer.mjs +67 -5
  199. package/dist/application/transform/footer/document-footer.mjs.map +1 -1
  200. package/dist/application/transform/footer/enum-naming.cjs +17 -0
  201. package/dist/application/transform/footer/enum-naming.cjs.map +1 -1
  202. package/dist/application/transform/footer/enum-naming.mjs +17 -1
  203. package/dist/application/transform/footer/enum-naming.mjs.map +1 -1
  204. package/dist/application/transform/footer/enum-values-check.cjs +129 -0
  205. package/dist/application/transform/footer/enum-values-check.cjs.map +1 -0
  206. package/dist/application/transform/footer/enum-values-check.mjs +127 -0
  207. package/dist/application/transform/footer/enum-values-check.mjs.map +1 -0
  208. package/dist/application/transform/footer/evaluation.cjs +42 -0
  209. package/dist/application/transform/footer/evaluation.cjs.map +1 -0
  210. package/dist/application/transform/footer/evaluation.mjs +33 -0
  211. package/dist/application/transform/footer/evaluation.mjs.map +1 -0
  212. package/dist/application/transform/footer/shared-enum-names.cjs +60 -0
  213. package/dist/application/transform/footer/shared-enum-names.cjs.map +1 -0
  214. package/dist/application/transform/footer/shared-enum-names.mjs +57 -0
  215. package/dist/application/transform/footer/shared-enum-names.mjs.map +1 -0
  216. package/dist/application/transform/footer/type-evaluation.cjs +138 -0
  217. package/dist/application/transform/footer/type-evaluation.cjs.map +1 -0
  218. package/dist/application/transform/footer/type-evaluation.mjs +136 -0
  219. package/dist/application/transform/footer/type-evaluation.mjs.map +1 -0
  220. package/dist/application/transform/footer/type-indexing.cjs +107 -0
  221. package/dist/application/transform/footer/type-indexing.cjs.map +1 -0
  222. package/dist/application/transform/footer/type-indexing.mjs +105 -0
  223. package/dist/application/transform/footer/type-indexing.mjs.map +1 -0
  224. package/dist/application/transform/footer/type-rules.cjs +172 -0
  225. package/dist/application/transform/footer/type-rules.cjs.map +1 -0
  226. package/dist/application/transform/footer/type-rules.mjs +166 -0
  227. package/dist/application/transform/footer/type-rules.mjs.map +1 -0
  228. package/dist/application/transform/ref-pointer/generated-location.cjs +138 -0
  229. package/dist/application/transform/ref-pointer/generated-location.cjs.map +1 -0
  230. package/dist/application/transform/ref-pointer/generated-location.mjs +136 -0
  231. package/dist/application/transform/ref-pointer/generated-location.mjs.map +1 -0
  232. package/dist/application/transform/ref-pointer/generated-shape.cjs +171 -0
  233. package/dist/application/transform/ref-pointer/generated-shape.cjs.map +1 -0
  234. package/dist/application/transform/ref-pointer/generated-shape.mjs +162 -0
  235. package/dist/application/transform/ref-pointer/generated-shape.mjs.map +1 -0
  236. package/dist/application/transform/ref-pointer/inline-cycles.cjs +44 -0
  237. package/dist/application/transform/ref-pointer/inline-cycles.cjs.map +1 -0
  238. package/dist/application/transform/ref-pointer/inline-cycles.mjs +42 -0
  239. package/dist/application/transform/ref-pointer/inline-cycles.mjs.map +1 -0
  240. package/dist/application/transform/ref-pointer/original-index.cjs +62 -0
  241. package/dist/application/transform/ref-pointer/original-index.cjs.map +1 -0
  242. package/dist/application/transform/ref-pointer/original-index.mjs +60 -0
  243. package/dist/application/transform/ref-pointer/original-index.mjs.map +1 -0
  244. package/dist/application/transform/ref-pointer/pointer-type.cjs +60 -0
  245. package/dist/application/transform/ref-pointer/pointer-type.cjs.map +1 -0
  246. package/dist/application/transform/ref-pointer/pointer-type.mjs +57 -0
  247. package/dist/application/transform/ref-pointer/pointer-type.mjs.map +1 -0
  248. package/dist/application/transform/ref-pointer/pointer-walk.cjs +66 -0
  249. package/dist/application/transform/ref-pointer/pointer-walk.cjs.map +1 -0
  250. package/dist/application/transform/ref-pointer/pointer-walk.mjs +56 -0
  251. package/dist/application/transform/ref-pointer/pointer-walk.mjs.map +1 -0
  252. package/dist/application/transform/ref-pointer/typed-walk.cjs +124 -0
  253. package/dist/application/transform/ref-pointer/typed-walk.cjs.map +1 -0
  254. package/dist/application/transform/ref-pointer/typed-walk.mjs +122 -0
  255. package/dist/application/transform/ref-pointer/typed-walk.mjs.map +1 -0
  256. package/dist/application/transform/ref-type.cjs +7 -2
  257. package/dist/application/transform/ref-type.cjs.map +1 -1
  258. package/dist/application/transform/ref-type.mjs +3 -2
  259. package/dist/application/transform/ref-type.mjs.map +1 -1
  260. package/dist/application/transform/schema/access-flags.cjs +38 -0
  261. package/dist/application/transform/schema/access-flags.cjs.map +1 -0
  262. package/dist/application/transform/schema/access-flags.mjs +36 -0
  263. package/dist/application/transform/schema/access-flags.mjs.map +1 -0
  264. package/dist/application/transform/schema/array-type.cjs +32 -1
  265. package/dist/application/transform/schema/array-type.cjs.map +1 -1
  266. package/dist/application/transform/schema/array-type.mjs +33 -2
  267. package/dist/application/transform/schema/array-type.mjs.map +1 -1
  268. package/dist/application/transform/schema/composition-type.cjs +50 -15
  269. package/dist/application/transform/schema/composition-type.cjs.map +1 -1
  270. package/dist/application/transform/schema/composition-type.mjs +50 -15
  271. package/dist/application/transform/schema/composition-type.mjs.map +1 -1
  272. package/dist/application/transform/schema/core-type.cjs +3 -1
  273. package/dist/application/transform/schema/core-type.cjs.map +1 -1
  274. package/dist/application/transform/schema/core-type.mjs +3 -1
  275. package/dist/application/transform/schema/core-type.mjs.map +1 -1
  276. package/dist/application/transform/schema/discriminated-union.cjs +30 -0
  277. package/dist/application/transform/schema/discriminated-union.cjs.map +1 -0
  278. package/dist/application/transform/schema/discriminated-union.mjs +27 -0
  279. package/dist/application/transform/schema/discriminated-union.mjs.map +1 -0
  280. package/dist/application/transform/schema/discriminator-property.cjs +3 -2
  281. package/dist/application/transform/schema/discriminator-property.cjs.map +1 -1
  282. package/dist/application/transform/schema/discriminator-property.mjs +3 -2
  283. package/dist/application/transform/schema/discriminator-property.mjs.map +1 -1
  284. package/dist/application/transform/schema/enum-rule.cjs +66 -10
  285. package/dist/application/transform/schema/enum-rule.cjs.map +1 -1
  286. package/dist/application/transform/schema/enum-rule.mjs +67 -12
  287. package/dist/application/transform/schema/enum-rule.mjs.map +1 -1
  288. package/dist/application/transform/schema/inherited-discriminator.cjs +29 -0
  289. package/dist/application/transform/schema/inherited-discriminator.cjs.map +1 -0
  290. package/dist/application/transform/schema/inherited-discriminator.mjs +26 -0
  291. package/dist/application/transform/schema/inherited-discriminator.mjs.map +1 -0
  292. package/dist/application/transform/schema/object-type.cjs +38 -25
  293. package/dist/application/transform/schema/object-type.cjs.map +1 -1
  294. package/dist/application/transform/schema/object-type.mjs +39 -27
  295. package/dist/application/transform/schema/object-type.mjs.map +1 -1
  296. package/dist/application/transform/schema/required-variants.cjs +45 -0
  297. package/dist/application/transform/schema/required-variants.cjs.map +1 -0
  298. package/dist/application/transform/schema/required-variants.mjs +42 -0
  299. package/dist/application/transform/schema/required-variants.mjs.map +1 -0
  300. package/dist/application/transform/schema/schema-transform.cjs +2 -2
  301. package/dist/application/transform/schema/schema-transform.cjs.map +1 -1
  302. package/dist/application/transform/schema/schema-transform.mjs +2 -2
  303. package/dist/application/transform/schema/schema-transform.mjs.map +1 -1
  304. package/dist/application/transform/schema-comment.cjs +51 -5
  305. package/dist/application/transform/schema-comment.cjs.map +1 -1
  306. package/dist/application/transform/schema-comment.mjs +50 -6
  307. package/dist/application/transform/schema-comment.mjs.map +1 -1
  308. package/dist/application/transform/type-combinators.mjs +1 -1
  309. package/dist/cli/api-settings.cjs +78 -0
  310. package/dist/cli/api-settings.cjs.map +1 -0
  311. package/dist/cli/api-settings.mjs +73 -0
  312. package/dist/cli/api-settings.mjs.map +1 -0
  313. package/dist/cli/cli-arguments.cjs +12 -3
  314. package/dist/cli/cli-arguments.cjs.map +1 -1
  315. package/dist/cli/cli-arguments.mjs +12 -4
  316. package/dist/cli/cli-arguments.mjs.map +1 -1
  317. package/dist/cli/cli-errors.cjs +3 -2
  318. package/dist/cli/cli-errors.cjs.map +1 -1
  319. package/dist/cli/cli-errors.mjs +3 -2
  320. package/dist/cli/cli-errors.mjs.map +1 -1
  321. package/dist/cli/cli-output.cjs +8 -3
  322. package/dist/cli/cli-output.cjs.map +1 -1
  323. package/dist/cli/cli-output.mjs +9 -4
  324. package/dist/cli/cli-output.mjs.map +1 -1
  325. package/dist/cli/help-text.cjs +3 -3
  326. package/dist/cli/help-text.cjs.map +1 -1
  327. package/dist/cli/help-text.mjs +3 -3
  328. package/dist/cli/help-text.mjs.map +1 -1
  329. package/dist/cli/main.cjs +5 -0
  330. package/dist/cli/main.cjs.map +1 -1
  331. package/dist/cli/main.mjs +5 -0
  332. package/dist/cli/main.mjs.map +1 -1
  333. package/dist/cli/redocly-apis.cjs +15 -7
  334. package/dist/cli/redocly-apis.cjs.map +1 -1
  335. package/dist/cli/redocly-apis.mjs +15 -7
  336. package/dist/cli/redocly-apis.mjs.map +1 -1
  337. package/dist/cli/ref-limits.cjs +1 -1
  338. package/dist/cli/ref-limits.cjs.map +1 -1
  339. package/dist/cli/ref-limits.mjs +2 -2
  340. package/dist/cli/ref-limits.mjs.map +1 -1
  341. package/dist/cli/run-cli.cjs +20 -3
  342. package/dist/cli/run-cli.cjs.map +1 -1
  343. package/dist/cli/run-cli.mjs +21 -4
  344. package/dist/cli/run-cli.mjs.map +1 -1
  345. package/dist/domain/errors.cjs +6 -1
  346. package/dist/domain/errors.cjs.map +1 -1
  347. package/dist/domain/errors.mjs +6 -1
  348. package/dist/domain/errors.mjs.map +1 -1
  349. package/dist/domain/ir/constructors.cjs +7 -1
  350. package/dist/domain/ir/constructors.cjs.map +1 -1
  351. package/dist/domain/ir/constructors.mjs +6 -2
  352. package/dist/domain/ir/constructors.mjs.map +1 -1
  353. package/dist/domain/openapi/admitted-values.cjs +75 -0
  354. package/dist/domain/openapi/admitted-values.cjs.map +1 -0
  355. package/dist/domain/openapi/admitted-values.mjs +72 -0
  356. package/dist/domain/openapi/admitted-values.mjs.map +1 -0
  357. package/dist/domain/openapi/discriminated-union.cjs +68 -0
  358. package/dist/domain/openapi/discriminated-union.cjs.map +1 -0
  359. package/dist/domain/openapi/discriminated-union.mjs +62 -0
  360. package/dist/domain/openapi/discriminated-union.mjs.map +1 -0
  361. package/dist/domain/openapi/discriminator-conflicts.cjs +143 -0
  362. package/dist/domain/openapi/discriminator-conflicts.cjs.map +1 -0
  363. package/dist/domain/openapi/discriminator-conflicts.mjs +141 -0
  364. package/dist/domain/openapi/discriminator-conflicts.mjs.map +1 -0
  365. package/dist/domain/openapi/parameter-object.cjs.map +1 -1
  366. package/dist/domain/openapi/parameter-object.mjs.map +1 -1
  367. package/dist/domain/openapi/path-templates.cjs +23 -0
  368. package/dist/domain/openapi/path-templates.cjs.map +1 -0
  369. package/dist/domain/openapi/path-templates.mjs +21 -0
  370. package/dist/domain/openapi/path-templates.mjs.map +1 -0
  371. package/dist/domain/output-fixes.cjs +36 -1
  372. package/dist/domain/output-fixes.cjs.map +1 -1
  373. package/dist/domain/output-fixes.mjs +36 -1
  374. package/dist/domain/output-fixes.mjs.map +1 -1
  375. package/dist/domain/url-credentials.cjs +10 -0
  376. package/dist/domain/url-credentials.cjs.map +1 -0
  377. package/dist/domain/url-credentials.mjs +8 -0
  378. package/dist/domain/url-credentials.mjs.map +1 -0
  379. package/dist/domain/warnings.cjs +23 -0
  380. package/dist/domain/warnings.cjs.map +1 -0
  381. package/dist/domain/warnings.mjs +20 -0
  382. package/dist/domain/warnings.mjs.map +1 -0
  383. package/dist/index.cjs +2 -0
  384. package/dist/index.cjs.map +1 -1
  385. package/dist/index.d.cts +1182 -46
  386. package/dist/index.d.mts +1182 -46
  387. package/dist/index.d.ts +1182 -46
  388. package/dist/index.mjs +1 -0
  389. package/dist/index.mjs.map +1 -1
  390. package/dist/transform/components-object.cjs +2 -1
  391. package/dist/transform/components-object.cjs.map +1 -1
  392. package/dist/transform/components-object.mjs +2 -1
  393. package/dist/transform/components-object.mjs.map +1 -1
  394. package/dist/transform/path-item-object.cjs.map +1 -1
  395. package/dist/transform/path-item-object.mjs.map +1 -1
  396. package/package.json +6 -5
  397. package/src/adapters/redocly-loader/configured-headers.ts +65 -0
  398. package/src/adapters/redocly-loader/redocly-config-source.ts +41 -6
  399. package/src/adapters/redocly-loader/redocly-schema-loader.ts +44 -13
  400. package/src/adapters/redocly-loader/ref-access.ts +60 -5
  401. package/src/adapters/redocly-loader/ref-resolution-check.ts +257 -0
  402. package/src/adapters/redocly-loader/ref-resolution-steps.ts +113 -0
  403. package/src/adapters/redocly-loader/remote-fetch.ts +77 -21
  404. package/src/adapters/redocly-loader/schema-load-errors.ts +33 -11
  405. package/src/adapters/redocly-loader/unsupported-keys.ts +17 -2
  406. package/src/adapters/terminal-logger/terminal-logger.ts +9 -5
  407. package/src/adapters/type-ast-bridge/ir-to-typescript.ts +5 -1
  408. package/src/adapters/type-ast-bridge/print-typescript.ts +3 -1
  409. package/src/adapters/type-ast-bridge/typescript-to-ir.ts +26 -12
  410. package/src/adapters/type-ast-bridge/typescript-types.ts +57 -5
  411. package/src/api/default-ports.ts +16 -0
  412. package/src/api/discriminator-conflict-warnings.ts +43 -0
  413. package/src/api/discriminator-enum-names.ts +26 -0
  414. package/src/api/discriminator-enum-parent.ts +129 -0
  415. package/src/api/discriminator-enum.ts +39 -0
  416. package/src/api/discriminator-other-owners.ts +97 -0
  417. package/src/api/discriminator-patch.ts +152 -0
  418. package/src/api/discriminator-scan.ts +78 -90
  419. package/src/api/document-refs.ts +19 -15
  420. package/src/api/document-run.ts +32 -11
  421. package/src/api/enum-values-warnings.ts +21 -0
  422. package/src/api/footer-sink.ts +34 -2
  423. package/src/api/legacy-callback-warning.ts +7 -3
  424. package/src/api/legacy-ts-helpers.ts +7 -5
  425. package/src/api/legacy-utils.ts +1 -1
  426. package/src/api/openapi-ts.ts +2 -0
  427. package/src/api/path-template-warnings.ts +27 -0
  428. package/src/api/run-context.ts +34 -0
  429. package/src/api/transform-context.ts +17 -9
  430. package/src/api/transform-schema.ts +90 -5
  431. package/src/api/unsupported-feature-warnings.ts +8 -1
  432. package/src/application/ports/redocly-config-source.ts +5 -1
  433. package/src/application/print/type-printer.ts +8 -1
  434. package/src/application/transform/document/assignability.ts +203 -0
  435. package/src/application/transform/document/components.ts +6 -6
  436. package/src/application/transform/document/declared-types.ts +93 -0
  437. package/src/application/transform/document/document.ts +71 -13
  438. package/src/application/transform/document/exploded-query.ts +91 -0
  439. package/src/application/transform/document/global-type-references.ts +78 -0
  440. package/src/application/transform/document/list-assignability.ts +87 -0
  441. package/src/application/transform/document/parameters.ts +78 -12
  442. package/src/application/transform/document/path-key-overlaps.ts +148 -59
  443. package/src/application/transform/document/path-template-replace.ts +90 -0
  444. package/src/application/transform/document/paths.ts +101 -38
  445. package/src/application/transform/document/root-type-aliases.ts +29 -28
  446. package/src/application/transform/document/template-key-match.ts +183 -0
  447. package/src/application/transform/document/type-assignability.ts +268 -0
  448. package/src/application/transform/document/type-key.ts +80 -0
  449. package/src/application/transform/document/type-resolution.ts +163 -0
  450. package/src/application/transform/footer/document-footer.ts +91 -6
  451. package/src/application/transform/footer/enum-naming.ts +29 -0
  452. package/src/application/transform/footer/enum-values-check.ts +171 -0
  453. package/src/application/transform/footer/evaluation.ts +57 -0
  454. package/src/application/transform/footer/shared-enum-names.ts +86 -0
  455. package/src/application/transform/footer/type-evaluation.ts +167 -0
  456. package/src/application/transform/footer/type-indexing.ts +152 -0
  457. package/src/application/transform/footer/type-rules.ts +269 -0
  458. package/src/application/transform/ref-pointer/generated-location.ts +211 -0
  459. package/src/application/transform/ref-pointer/generated-shape.ts +275 -0
  460. package/src/application/transform/ref-pointer/inline-cycles.ts +56 -0
  461. package/src/application/transform/ref-pointer/original-index.ts +95 -0
  462. package/src/application/transform/ref-pointer/pointer-type.ts +92 -0
  463. package/src/application/transform/ref-pointer/pointer-walk.ts +96 -0
  464. package/src/application/transform/ref-pointer/typed-walk.ts +192 -0
  465. package/src/application/transform/ref-type.ts +11 -6
  466. package/src/application/transform/schema/access-flags.ts +63 -0
  467. package/src/application/transform/schema/array-type.ts +66 -5
  468. package/src/application/transform/schema/composition-type.ts +96 -24
  469. package/src/application/transform/schema/core-type.ts +8 -4
  470. package/src/application/transform/schema/discriminated-union.ts +58 -0
  471. package/src/application/transform/schema/discriminator-property.ts +8 -3
  472. package/src/application/transform/schema/enum-rule.ts +136 -13
  473. package/src/application/transform/schema/inherited-discriminator.ts +54 -0
  474. package/src/application/transform/schema/object-type.ts +51 -33
  475. package/src/application/transform/schema/required-variants.ts +88 -0
  476. package/src/application/transform/schema/schema-context.ts +26 -0
  477. package/src/application/transform/schema/schema-transform.ts +2 -2
  478. package/src/application/transform/schema-comment.ts +84 -4
  479. package/src/cli/api-settings.ts +109 -0
  480. package/src/cli/cli-arguments.ts +18 -5
  481. package/src/cli/cli-dependencies.ts +5 -0
  482. package/src/cli/cli-errors.ts +4 -2
  483. package/src/cli/cli-output.ts +18 -4
  484. package/src/cli/help-text.ts +4 -4
  485. package/src/cli/main.ts +6 -0
  486. package/src/cli/redocly-apis.ts +21 -11
  487. package/src/cli/ref-limits.ts +2 -2
  488. package/src/cli/run-cli.ts +25 -4
  489. package/src/domain/errors.ts +10 -2
  490. package/src/domain/ir/constructors.ts +9 -1
  491. package/src/domain/ir/nodes.ts +11 -7
  492. package/src/domain/openapi/admitted-values.ts +113 -0
  493. package/src/domain/openapi/discriminated-union.ts +109 -0
  494. package/src/domain/openapi/discriminator-conflicts.ts +251 -0
  495. package/src/domain/openapi/parameter-object.ts +4 -0
  496. package/src/domain/openapi/path-templates.ts +32 -0
  497. package/src/domain/openapi/schema-object.ts +2 -0
  498. package/src/domain/output-fixes.ts +43 -2
  499. package/src/domain/url-credentials.ts +18 -0
  500. package/src/domain/warnings.ts +28 -0
  501. package/src/index.ts +1 -0
  502. package/src/transform/components-object.ts +3 -1
  503. package/src/transform/path-item-object.ts +6 -2
  504. package/src/types/generator-options.ts +12 -21
  505. package/src/types/openapi-common.ts +1 -0
  506. package/src/types/openapi-request.ts +3 -0
  507. package/src/types/openapi-schema.ts +2 -0
  508. package/src/types/openapi-security.ts +1 -0
  509. package/dist/application/transform/document/path-item-conflicts.cjs +0 -51
  510. package/dist/application/transform/document/path-item-conflicts.cjs.map +0 -1
  511. package/dist/application/transform/document/path-item-conflicts.mjs +0 -49
  512. package/dist/application/transform/document/path-item-conflicts.mjs.map +0 -1
  513. package/src/application/transform/document/path-item-conflicts.ts +0 -79
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Typed warnings. A warning does not stop the run: the output is written and the CLI exits with 0.
3
+ * Each one ends with a stable machine-readable code in parentheses, as the CLI prints errors
4
+ * (`message (CODE)`), so a script or a person can search for it.
5
+ */
6
+
7
+ /** Every warning code. */
8
+ export const WARNING_CODES = {
9
+ CLI_INPUT_IGNORED: "CLI_INPUT_IGNORED",
10
+ CONFIG_SETTING_UNKNOWN: "CONFIG_SETTING_UNKNOWN",
11
+ DISCRIMINATOR_MAPPING_INVALID: "DISCRIMINATOR_MAPPING_INVALID",
12
+ DISCRIMINATOR_VALUE_NOT_ALLOWED: "DISCRIMINATOR_VALUE_NOT_ALLOWED",
13
+ ENUM_VALUES_EXCLUDED: "ENUM_VALUES_EXCLUDED",
14
+ FIX_NEEDS_OPTION: "FIX_NEEDS_OPTION",
15
+ LEGACY_CALLBACK_DEPRECATED: "LEGACY_CALLBACK_DEPRECATED",
16
+ LINT_PROBLEM: "LINT_PROBLEM",
17
+ PATH_TEMPLATES_IDENTICAL: "PATH_TEMPLATES_IDENTICAL",
18
+ QUERYSTRING_NEXT_TO_QUERY: "QUERYSTRING_NEXT_TO_QUERY",
19
+ REF_CIRCULAR: "REF_CIRCULAR",
20
+ REF_NOT_FOUND: "REF_NOT_FOUND",
21
+ } as const;
22
+
23
+ export type WarningCode = (typeof WARNING_CODES)[keyof typeof WARNING_CODES];
24
+
25
+ /** The warning line for people, with its code at the end. */
26
+ export function warningText(message: string, code: WarningCode): string {
27
+ return `${message} (${code})`;
28
+ }
package/src/index.ts CHANGED
@@ -48,6 +48,7 @@ export {
48
48
  OutputFix,
49
49
  type OutputFixName,
50
50
  } from "./domain/output-fixes.js";
51
+ export { WARNING_CODES, type WarningCode } from "./domain/warnings.js";
51
52
  export { default as transformComponentsObject } from "./transform/components-object.js";
52
53
  export { default as transformHeaderObject } from "./transform/header-object.js";
53
54
  export { default as transformMediaTypeObject } from "./transform/media-type-object.js";
@@ -1,5 +1,6 @@
1
1
  import { createTransformContext } from "../api/transform-context.js";
2
2
  import { componentsType } from "../application/transform/document/components.js";
3
+ import { renameTakenAliases } from "../application/transform/document/root-type-aliases.js";
3
4
  import type { IrType, IrTypeAliasDeclaration } from "../domain/ir/nodes.js";
4
5
  import { isEnumSchema, singularizeComponentKind } from "../domain/openapi/components-object.js";
5
6
  import type { ComponentsObject, GlobalContext } from "../types.js";
@@ -21,5 +22,6 @@ export default function transformComponentsObject(
21
22
  ctx: GlobalContext,
22
23
  ): (IrType | IrTypeAliasDeclaration)[] {
23
24
  const { type, rootTypes } = componentsType(componentsObject, createTransformContext(ctx));
24
- return [type, ...rootTypes];
25
+ // No footer here: only the aliases the `root-type-numbering` fix keeps get numbers.
26
+ return [type, ...renameTakenAliases(rootTypes, [])];
25
27
  }
@@ -1,10 +1,14 @@
1
1
  import { createTransformContext, schemaLocation } from "../api/transform-context.js";
2
2
  import { pathItemType } from "../application/transform/document/path-item.js";
3
3
  import type { IrType } from "../domain/ir/nodes.js";
4
- import type { HttpMethod } from "../domain/openapi/path-item-object.js";
4
+ import type { PathItemMethod } from "../domain/openapi/path-item-object.js";
5
5
  import type { PathItemObject, TransformNodeOptions } from "../types.js";
6
6
 
7
- export type Method = HttpMethod;
7
+ /**
8
+ * The operation methods of a path item: openapi-typescript's eight, plus the OpenAPI 3.2 `query`
9
+ * (ADR-020), as `HttpMethod` of openapi-typesafe-helpers lists them.
10
+ */
11
+ export type Method = PathItemMethod;
8
12
 
9
13
  /**
10
14
  * Transform PathItem nodes (4.8.9)
@@ -3,8 +3,6 @@ import type { Readable } from "node:stream";
3
3
  import type { Config as RedoclyConfig } from "@redocly/openapi-core";
4
4
  import type { ts } from "../adapters/type-ast-bridge/typescript-types.js";
5
5
  import type { FooterEntry } from "../api/footer-entry.js";
6
- import type { Logger } from "../application/ports/logger.js";
7
- import type { DocumentFooter } from "../application/transform/transform-context.js";
8
6
  import type { IrPropertySignature, IrType } from "../domain/ir/nodes.js";
9
7
  import type { OutputFix, OutputFixName } from "../domain/output-fixes.js";
10
8
  import type { ReferenceObject } from "./openapi-common.js";
@@ -74,7 +72,7 @@ export interface OpenAPITSBaseOptions {
74
72
  lint?: boolean;
75
73
  /** (optional) Should logging be suppressed? (necessary for STDOUT) */
76
74
  silent?: boolean;
77
- /** (optional) OpenAPI version. Must be present if parsing raw schema */
75
+ /** Accepted for compatibility with openapi-typescript; not read. */
78
76
  version?: number;
79
77
  /** (optional) Export type instead of interface */
80
78
  exportType?: boolean;
@@ -197,13 +195,18 @@ export interface OpenAPITSIrOptions extends OpenAPITSBaseOptions, IrCallbackOpti
197
195
  /** Either form of the generator options. */
198
196
  export type GeneratorOptions = OpenAPITSOptions | OpenAPITSIrOptions;
199
197
 
200
- /** Context passed to all submodules */
198
+ /**
199
+ * Context passed to all submodules, and to the callbacks as `options.ctx`. To call an exported
200
+ * transformer outside a run, build one with the fields of openapi-typescript's context; the
201
+ * fields openapi-typesafe added are optional.
202
+ */
201
203
  export interface GlobalContext {
202
204
  // user options
203
205
  additionalProperties: boolean;
204
206
  alphabetize: boolean;
205
207
  arrayLength: boolean;
206
- binaryAsBlob: boolean;
208
+ /** `format: binary` and `contentMediaType` strings become `Blob` (default: false). */
209
+ binaryAsBlob?: boolean;
207
210
  defaultNonNullable: boolean;
208
211
  discriminators: {
209
212
  objects: Record<string, DiscriminatorObject>;
@@ -224,24 +227,12 @@ export interface GlobalContext {
224
227
  * callbacks may add IR declarations or TypeScript nodes.
225
228
  */
226
229
  injectFooter: FooterEntry[];
230
+ pathParamsAsTypes: boolean;
227
231
  /**
228
- * @internal Footer state of this run (enum registry and enum naming), created on first use by
229
- * the transform context adapter. Not an option; do not set it.
230
- */
231
- runFooter?: DocumentFooter;
232
- /**
233
- * @internal The deprecated callback forms this run has warned about (once each). Not an
234
- * option; do not set it.
235
- */
236
- legacyCallbackWarnings?: Set<LegacyCallbackName>;
237
- /**
238
- * @internal Where this run reports warnings and debug output. Not an option; a context without
239
- * it logs to the terminal.
232
+ * Whether the callbacks below take IR (`OpenAPITSIrOptions`) or TypeScript nodes
233
+ * (default: false, TypeScript nodes).
240
234
  */
241
- logger?: Logger;
242
- pathParamsAsTypes: boolean;
243
- /** Whether the callbacks below take IR (`OpenAPITSIrOptions`) or TypeScript nodes. */
244
- irCallbacks: boolean;
235
+ irCallbacks?: boolean;
245
236
  postTransform: GeneratorOptions["postTransform"];
246
237
  propertiesRequiredByDefault: boolean;
247
238
  rootTypes: boolean;
@@ -7,6 +7,7 @@
7
7
  // for ways schemas _can_ be written, not necessarily how they _should_ be.
8
8
 
9
9
  export interface Extensable {
10
+ // biome-ignore lint/suspicious/noExplicitAny: public type under semver (ADR-034)
10
11
  [key: `x-${string}`]: any;
11
12
  }
12
13
 
@@ -67,6 +67,7 @@ export interface ParameterObject extends Extensable {
67
67
  /** The schema defining the type used for the parameter. */
68
68
  schema?: SchemaObject;
69
69
  /** Example of the parameter’s potential value. */
70
+ // biome-ignore lint/suspicious/noExplicitAny: public type under semver (ADR-034)
70
71
  example?: any;
71
72
  /** Examples of the parameter’s potential value. */
72
73
  examples?: { [name: string]: ExampleObject | ReferenceObject };
@@ -111,6 +112,7 @@ export interface MediaTypeObject extends Extensable {
111
112
  * referencing a schema which contains an example, the example value SHALL override the example
112
113
  * provided by the schema.
113
114
  */
115
+ // biome-ignore lint/suspicious/noExplicitAny: public type under semver (ADR-034)
114
116
  example?: any;
115
117
  /**
116
118
  * Examples of the media type. Each example object SHOULD match the media type and specified
@@ -188,6 +190,7 @@ export interface ExampleObject extends Extensable {
188
190
  * represent examples of media types that cannot naturally represented in JSON or YAML, use a
189
191
  * string value to contain the example, escaping where necessary.
190
192
  */
193
+ // biome-ignore lint/suspicious/noExplicitAny: public type under semver (ADR-034)
191
194
  value?: any;
192
195
  /**
193
196
  * A URI that points to the literal example. This provides the capability to reference examples
@@ -21,6 +21,7 @@ export type SchemaObject = {
21
21
  /** Additional external documentation for this schema. */
22
22
  externalDocs?: ExternalDocumentationObject;
23
23
  /** @deprecated */
24
+ // biome-ignore lint/suspicious/noExplicitAny: public type under semver (ADR-034)
24
25
  example?: any;
25
26
  title?: string;
26
27
  description?: string;
@@ -47,6 +48,7 @@ export type SchemaObject = {
47
48
  allOf?: (SchemaObject | ReferenceObject)[];
48
49
  anyOf?: (SchemaObject | ReferenceObject)[];
49
50
  required?: string[];
51
+ // biome-ignore lint/suspicious/noExplicitAny: public type under semver (ADR-034)
50
52
  [key: `x-${string}`]: any;
51
53
  } & (
52
54
  | StringSubtype
@@ -10,6 +10,7 @@ export type SecuritySchemeObject = {
10
10
  * A description for security scheme. CommonMark syntax MAY be used for rich text representation.
11
11
  */
12
12
  description?: string;
13
+ // biome-ignore lint/suspicious/noExplicitAny: public type under semver (ADR-034)
13
14
  [key: `x-${string}`]: any;
14
15
  } & (
15
16
  | {
@@ -1,51 +0,0 @@
1
- 'use strict';
2
-
3
- function nameOf(member) {
4
- return member.name.kind === "string" ? member.name.value : member.name.text;
5
- }
6
- function presenceOf(member) {
7
- if (member === void 0) {
8
- return "absent";
9
- }
10
- if (member.type.kind === "keyword" && member.type.keyword === "never") {
11
- return member.isOptional ? "never" : "unknown";
12
- }
13
- return member.isOptional ? "optional" : "required";
14
- }
15
- function propertiesOf(type) {
16
- if (type.kind !== "object") {
17
- return null;
18
- }
19
- const properties = type.members.filter((member) => {
20
- return member.kind === "property";
21
- });
22
- return new Map(properties.map((property) => [nameOf(property), property]));
23
- }
24
- function isPresenceRejected(covering, covered) {
25
- if (covered === "unknown") {
26
- return false;
27
- }
28
- if (covering === "required") {
29
- return covered !== "required";
30
- }
31
- return covering === "never" && (covered === "optional" || covered === "required");
32
- }
33
- function isPropertyRejected(covering, covered) {
34
- if (isPresenceRejected(presenceOf(covering), presenceOf(covered))) {
35
- return true;
36
- }
37
- return covered !== void 0 && isCoveredPathItemRejected(covered.type, covering.type);
38
- }
39
- function isCoveredPathItemRejected(covered, covering) {
40
- const coveredProperties = propertiesOf(covered);
41
- const coveringProperties = propertiesOf(covering);
42
- if (coveredProperties === null || coveringProperties === null) {
43
- return false;
44
- }
45
- return [...coveringProperties].some(
46
- ([name, property]) => isPropertyRejected(property, coveredProperties.get(name))
47
- );
48
- }
49
-
50
- exports.isCoveredPathItemRejected = isCoveredPathItemRejected;
51
- //# sourceMappingURL=path-item-conflicts.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"path-item-conflicts.cjs","sources":["../../../../src/application/transform/document/path-item-conflicts.ts"],"sourcesContent":["import type { IrMember, IrPropertySignature, IrType } from \"../../../domain/ir/nodes.js\";\n\n/**\n * Whether TypeScript surely rejects a covered path item for the index signature that covers it\n * (roadmap R10.2). The original output compiles when every covered type is assignable to the\n * signature's type, and that output must stay the same, so a signature is only moved when this\n * check proves the error. It compares object types property by property, as the checker does: a\n * property the signature needs and the covered type may lack, or a value where the signature has\n * the `?: never` of an empty slot (a missing method, an empty parameter location), proves it. Two\n * object properties are compared the same way, inside. Any other pair of types (references,\n * unions, keywords) decides nothing, and that output is left as it was.\n */\n\n/**\n * How a property is written. `never` is the `?: never` of an empty slot; a required `never`\n * (assignable to every type) is `unknown` and decides nothing.\n */\ntype Presence = \"absent\" | \"never\" | \"optional\" | \"required\" | \"unknown\";\n\nfunction nameOf(member: IrPropertySignature): string {\n return member.name.kind === \"string\" ? member.name.value : member.name.text;\n}\n\nfunction presenceOf(member: IrPropertySignature | undefined): Presence {\n if (member === undefined) {\n return \"absent\";\n }\n if (member.type.kind === \"keyword\" && member.type.keyword === \"never\") {\n return member.isOptional ? \"never\" : \"unknown\";\n }\n return member.isOptional ? \"optional\" : \"required\";\n}\n\nfunction propertiesOf(type: IrType): ReadonlyMap<string, IrPropertySignature> | null {\n if (type.kind !== \"object\") {\n return null;\n }\n const properties = type.members.filter((member: IrMember): member is IrPropertySignature => {\n return member.kind === \"property\";\n });\n return new Map(properties.map((property) => [nameOf(property), property]));\n}\n\n/**\n * Whether the covered property's presence fails the signature's: a required value it may lack, or\n * a value where the signature has `never` (an object is not `undefined`).\n */\nfunction isPresenceRejected(covering: Presence, covered: Presence): boolean {\n if (covered === \"unknown\") {\n return false;\n }\n if (covering === \"required\") {\n return covered !== \"required\";\n }\n return covering === \"never\" && (covered === \"optional\" || covered === \"required\");\n}\n\nfunction isPropertyRejected(\n covering: IrPropertySignature,\n covered: IrPropertySignature | undefined,\n): boolean {\n if (isPresenceRejected(presenceOf(covering), presenceOf(covered))) {\n return true;\n }\n // A `never` is not an object type, so a slot that is empty on either side decides nothing here.\n return covered !== undefined && isCoveredPathItemRejected(covered.type, covering.type);\n}\n\n/** Whether the covered type is surely not assignable to the covering signature's type. */\nexport function isCoveredPathItemRejected(covered: IrType, covering: IrType): boolean {\n const coveredProperties = propertiesOf(covered);\n const coveringProperties = propertiesOf(covering);\n if (coveredProperties === null || coveringProperties === null) {\n return false;\n }\n return [...coveringProperties].some(([name, property]) =>\n isPropertyRejected(property, coveredProperties.get(name)),\n );\n}\n"],"names":[],"mappings":";;AAmBA,SAAS,OAAO,MAAA,EAAqC;AACnD,EAAA,OAAO,MAAA,CAAO,KAAK,IAAA,KAAS,QAAA,GAAW,OAAO,IAAA,CAAK,KAAA,GAAQ,OAAO,IAAA,CAAK,IAAA;AACzE;AAEA,SAAS,WAAW,MAAA,EAAmD;AACrE,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,OAAO,QAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAO,IAAA,CAAK,IAAA,KAAS,aAAa,MAAA,CAAO,IAAA,CAAK,YAAY,OAAA,EAAS;AACrE,IAAA,OAAO,MAAA,CAAO,aAAa,OAAA,GAAU,SAAA;AAAA,EACvC;AACA,EAAA,OAAO,MAAA,CAAO,aAAa,UAAA,GAAa,UAAA;AAC1C;AAEA,SAAS,aAAa,IAAA,EAA+D;AACnF,EAAA,IAAI,IAAA,CAAK,SAAS,QAAA,EAAU;AAC1B,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,CAAC,MAAA,KAAoD;AAC1F,IAAA,OAAO,OAAO,IAAA,KAAS,UAAA;AAAA,EACzB,CAAC,CAAA;AACD,EAAA,OAAO,IAAI,GAAA,CAAI,UAAA,CAAW,GAAA,CAAI,CAAC,QAAA,KAAa,CAAC,MAAA,CAAO,QAAQ,CAAA,EAAG,QAAQ,CAAC,CAAC,CAAA;AAC3E;AAMA,SAAS,kBAAA,CAAmB,UAAoB,OAAA,EAA4B;AAC1E,EAAA,IAAI,YAAY,SAAA,EAAW;AACzB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,aAAa,UAAA,EAAY;AAC3B,IAAA,OAAO,OAAA,KAAY,UAAA;AAAA,EACrB;AACA,EAAA,OAAO,QAAA,KAAa,OAAA,KAAY,OAAA,KAAY,UAAA,IAAc,OAAA,KAAY,UAAA,CAAA;AACxE;AAEA,SAAS,kBAAA,CACP,UACA,OAAA,EACS;AACT,EAAA,IAAI,mBAAmB,UAAA,CAAW,QAAQ,GAAG,UAAA,CAAW,OAAO,CAAC,CAAA,EAAG;AACjE,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO,YAAY,MAAA,IAAa,yBAAA,CAA0B,OAAA,CAAQ,IAAA,EAAM,SAAS,IAAI,CAAA;AACvF;AAGO,SAAS,yBAAA,CAA0B,SAAiB,QAAA,EAA2B;AACpF,EAAA,MAAM,iBAAA,GAAoB,aAAa,OAAO,CAAA;AAC9C,EAAA,MAAM,kBAAA,GAAqB,aAAa,QAAQ,CAAA;AAChD,EAAA,IAAI,iBAAA,KAAsB,IAAA,IAAQ,kBAAA,KAAuB,IAAA,EAAM;AAC7D,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,CAAC,GAAG,kBAAkB,CAAA,CAAE,IAAA;AAAA,IAAK,CAAC,CAAC,IAAA,EAAM,QAAQ,CAAA,KAClD,mBAAmB,QAAA,EAAU,iBAAA,CAAkB,GAAA,CAAI,IAAI,CAAC;AAAA,GAC1D;AACF;;"}
@@ -1,49 +0,0 @@
1
- function nameOf(member) {
2
- return member.name.kind === "string" ? member.name.value : member.name.text;
3
- }
4
- function presenceOf(member) {
5
- if (member === void 0) {
6
- return "absent";
7
- }
8
- if (member.type.kind === "keyword" && member.type.keyword === "never") {
9
- return member.isOptional ? "never" : "unknown";
10
- }
11
- return member.isOptional ? "optional" : "required";
12
- }
13
- function propertiesOf(type) {
14
- if (type.kind !== "object") {
15
- return null;
16
- }
17
- const properties = type.members.filter((member) => {
18
- return member.kind === "property";
19
- });
20
- return new Map(properties.map((property) => [nameOf(property), property]));
21
- }
22
- function isPresenceRejected(covering, covered) {
23
- if (covered === "unknown") {
24
- return false;
25
- }
26
- if (covering === "required") {
27
- return covered !== "required";
28
- }
29
- return covering === "never" && (covered === "optional" || covered === "required");
30
- }
31
- function isPropertyRejected(covering, covered) {
32
- if (isPresenceRejected(presenceOf(covering), presenceOf(covered))) {
33
- return true;
34
- }
35
- return covered !== void 0 && isCoveredPathItemRejected(covered.type, covering.type);
36
- }
37
- function isCoveredPathItemRejected(covered, covering) {
38
- const coveredProperties = propertiesOf(covered);
39
- const coveringProperties = propertiesOf(covering);
40
- if (coveredProperties === null || coveringProperties === null) {
41
- return false;
42
- }
43
- return [...coveringProperties].some(
44
- ([name, property]) => isPropertyRejected(property, coveredProperties.get(name))
45
- );
46
- }
47
-
48
- export { isCoveredPathItemRejected };
49
- //# sourceMappingURL=path-item-conflicts.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"path-item-conflicts.mjs","sources":["../../../../src/application/transform/document/path-item-conflicts.ts"],"sourcesContent":["import type { IrMember, IrPropertySignature, IrType } from \"../../../domain/ir/nodes.js\";\n\n/**\n * Whether TypeScript surely rejects a covered path item for the index signature that covers it\n * (roadmap R10.2). The original output compiles when every covered type is assignable to the\n * signature's type, and that output must stay the same, so a signature is only moved when this\n * check proves the error. It compares object types property by property, as the checker does: a\n * property the signature needs and the covered type may lack, or a value where the signature has\n * the `?: never` of an empty slot (a missing method, an empty parameter location), proves it. Two\n * object properties are compared the same way, inside. Any other pair of types (references,\n * unions, keywords) decides nothing, and that output is left as it was.\n */\n\n/**\n * How a property is written. `never` is the `?: never` of an empty slot; a required `never`\n * (assignable to every type) is `unknown` and decides nothing.\n */\ntype Presence = \"absent\" | \"never\" | \"optional\" | \"required\" | \"unknown\";\n\nfunction nameOf(member: IrPropertySignature): string {\n return member.name.kind === \"string\" ? member.name.value : member.name.text;\n}\n\nfunction presenceOf(member: IrPropertySignature | undefined): Presence {\n if (member === undefined) {\n return \"absent\";\n }\n if (member.type.kind === \"keyword\" && member.type.keyword === \"never\") {\n return member.isOptional ? \"never\" : \"unknown\";\n }\n return member.isOptional ? \"optional\" : \"required\";\n}\n\nfunction propertiesOf(type: IrType): ReadonlyMap<string, IrPropertySignature> | null {\n if (type.kind !== \"object\") {\n return null;\n }\n const properties = type.members.filter((member: IrMember): member is IrPropertySignature => {\n return member.kind === \"property\";\n });\n return new Map(properties.map((property) => [nameOf(property), property]));\n}\n\n/**\n * Whether the covered property's presence fails the signature's: a required value it may lack, or\n * a value where the signature has `never` (an object is not `undefined`).\n */\nfunction isPresenceRejected(covering: Presence, covered: Presence): boolean {\n if (covered === \"unknown\") {\n return false;\n }\n if (covering === \"required\") {\n return covered !== \"required\";\n }\n return covering === \"never\" && (covered === \"optional\" || covered === \"required\");\n}\n\nfunction isPropertyRejected(\n covering: IrPropertySignature,\n covered: IrPropertySignature | undefined,\n): boolean {\n if (isPresenceRejected(presenceOf(covering), presenceOf(covered))) {\n return true;\n }\n // A `never` is not an object type, so a slot that is empty on either side decides nothing here.\n return covered !== undefined && isCoveredPathItemRejected(covered.type, covering.type);\n}\n\n/** Whether the covered type is surely not assignable to the covering signature's type. */\nexport function isCoveredPathItemRejected(covered: IrType, covering: IrType): boolean {\n const coveredProperties = propertiesOf(covered);\n const coveringProperties = propertiesOf(covering);\n if (coveredProperties === null || coveringProperties === null) {\n return false;\n }\n return [...coveringProperties].some(([name, property]) =>\n isPropertyRejected(property, coveredProperties.get(name)),\n );\n}\n"],"names":[],"mappings":"AAmBA,SAAS,OAAO,MAAA,EAAqC;AACnD,EAAA,OAAO,MAAA,CAAO,KAAK,IAAA,KAAS,QAAA,GAAW,OAAO,IAAA,CAAK,KAAA,GAAQ,OAAO,IAAA,CAAK,IAAA;AACzE;AAEA,SAAS,WAAW,MAAA,EAAmD;AACrE,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,OAAO,QAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAO,IAAA,CAAK,IAAA,KAAS,aAAa,MAAA,CAAO,IAAA,CAAK,YAAY,OAAA,EAAS;AACrE,IAAA,OAAO,MAAA,CAAO,aAAa,OAAA,GAAU,SAAA;AAAA,EACvC;AACA,EAAA,OAAO,MAAA,CAAO,aAAa,UAAA,GAAa,UAAA;AAC1C;AAEA,SAAS,aAAa,IAAA,EAA+D;AACnF,EAAA,IAAI,IAAA,CAAK,SAAS,QAAA,EAAU;AAC1B,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,CAAC,MAAA,KAAoD;AAC1F,IAAA,OAAO,OAAO,IAAA,KAAS,UAAA;AAAA,EACzB,CAAC,CAAA;AACD,EAAA,OAAO,IAAI,GAAA,CAAI,UAAA,CAAW,GAAA,CAAI,CAAC,QAAA,KAAa,CAAC,MAAA,CAAO,QAAQ,CAAA,EAAG,QAAQ,CAAC,CAAC,CAAA;AAC3E;AAMA,SAAS,kBAAA,CAAmB,UAAoB,OAAA,EAA4B;AAC1E,EAAA,IAAI,YAAY,SAAA,EAAW;AACzB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,aAAa,UAAA,EAAY;AAC3B,IAAA,OAAO,OAAA,KAAY,UAAA;AAAA,EACrB;AACA,EAAA,OAAO,QAAA,KAAa,OAAA,KAAY,OAAA,KAAY,UAAA,IAAc,OAAA,KAAY,UAAA,CAAA;AACxE;AAEA,SAAS,kBAAA,CACP,UACA,OAAA,EACS;AACT,EAAA,IAAI,mBAAmB,UAAA,CAAW,QAAQ,GAAG,UAAA,CAAW,OAAO,CAAC,CAAA,EAAG;AACjE,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO,YAAY,MAAA,IAAa,yBAAA,CAA0B,OAAA,CAAQ,IAAA,EAAM,SAAS,IAAI,CAAA;AACvF;AAGO,SAAS,yBAAA,CAA0B,SAAiB,QAAA,EAA2B;AACpF,EAAA,MAAM,iBAAA,GAAoB,aAAa,OAAO,CAAA;AAC9C,EAAA,MAAM,kBAAA,GAAqB,aAAa,QAAQ,CAAA;AAChD,EAAA,IAAI,iBAAA,KAAsB,IAAA,IAAQ,kBAAA,KAAuB,IAAA,EAAM;AAC7D,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,CAAC,GAAG,kBAAkB,CAAA,CAAE,IAAA;AAAA,IAAK,CAAC,CAAC,IAAA,EAAM,QAAQ,CAAA,KAClD,mBAAmB,QAAA,EAAU,iBAAA,CAAkB,GAAA,CAAI,IAAI,CAAC;AAAA,GAC1D;AACF;;"}
@@ -1,79 +0,0 @@
1
- import type { IrMember, IrPropertySignature, IrType } from "../../../domain/ir/nodes.js";
2
-
3
- /**
4
- * Whether TypeScript surely rejects a covered path item for the index signature that covers it
5
- * (roadmap R10.2). The original output compiles when every covered type is assignable to the
6
- * signature's type, and that output must stay the same, so a signature is only moved when this
7
- * check proves the error. It compares object types property by property, as the checker does: a
8
- * property the signature needs and the covered type may lack, or a value where the signature has
9
- * the `?: never` of an empty slot (a missing method, an empty parameter location), proves it. Two
10
- * object properties are compared the same way, inside. Any other pair of types (references,
11
- * unions, keywords) decides nothing, and that output is left as it was.
12
- */
13
-
14
- /**
15
- * How a property is written. `never` is the `?: never` of an empty slot; a required `never`
16
- * (assignable to every type) is `unknown` and decides nothing.
17
- */
18
- type Presence = "absent" | "never" | "optional" | "required" | "unknown";
19
-
20
- function nameOf(member: IrPropertySignature): string {
21
- return member.name.kind === "string" ? member.name.value : member.name.text;
22
- }
23
-
24
- function presenceOf(member: IrPropertySignature | undefined): Presence {
25
- if (member === undefined) {
26
- return "absent";
27
- }
28
- if (member.type.kind === "keyword" && member.type.keyword === "never") {
29
- return member.isOptional ? "never" : "unknown";
30
- }
31
- return member.isOptional ? "optional" : "required";
32
- }
33
-
34
- function propertiesOf(type: IrType): ReadonlyMap<string, IrPropertySignature> | null {
35
- if (type.kind !== "object") {
36
- return null;
37
- }
38
- const properties = type.members.filter((member: IrMember): member is IrPropertySignature => {
39
- return member.kind === "property";
40
- });
41
- return new Map(properties.map((property) => [nameOf(property), property]));
42
- }
43
-
44
- /**
45
- * Whether the covered property's presence fails the signature's: a required value it may lack, or
46
- * a value where the signature has `never` (an object is not `undefined`).
47
- */
48
- function isPresenceRejected(covering: Presence, covered: Presence): boolean {
49
- if (covered === "unknown") {
50
- return false;
51
- }
52
- if (covering === "required") {
53
- return covered !== "required";
54
- }
55
- return covering === "never" && (covered === "optional" || covered === "required");
56
- }
57
-
58
- function isPropertyRejected(
59
- covering: IrPropertySignature,
60
- covered: IrPropertySignature | undefined,
61
- ): boolean {
62
- if (isPresenceRejected(presenceOf(covering), presenceOf(covered))) {
63
- return true;
64
- }
65
- // A `never` is not an object type, so a slot that is empty on either side decides nothing here.
66
- return covered !== undefined && isCoveredPathItemRejected(covered.type, covering.type);
67
- }
68
-
69
- /** Whether the covered type is surely not assignable to the covering signature's type. */
70
- export function isCoveredPathItemRejected(covered: IrType, covering: IrType): boolean {
71
- const coveredProperties = propertiesOf(covered);
72
- const coveringProperties = propertiesOf(covering);
73
- if (coveredProperties === null || coveringProperties === null) {
74
- return false;
75
- }
76
- return [...coveringProperties].some(([name, property]) =>
77
- isPropertyRejected(property, coveredProperties.get(name)),
78
- );
79
- }