openapi-typesafe 0.0.0 → 1.0.0-rc.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 (863) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +71 -1
  3. package/bin/cli.js +4 -0
  4. package/dist/adapters/node-file-system/node-file-system.cjs +46 -0
  5. package/dist/adapters/node-file-system/node-file-system.cjs.map +1 -0
  6. package/dist/adapters/node-file-system/node-file-system.mjs +40 -0
  7. package/dist/adapters/node-file-system/node-file-system.mjs.map +1 -0
  8. package/dist/adapters/redocly-loader/alias-limit.cjs +16 -0
  9. package/dist/adapters/redocly-loader/alias-limit.cjs.map +1 -0
  10. package/dist/adapters/redocly-loader/alias-limit.mjs +14 -0
  11. package/dist/adapters/redocly-loader/alias-limit.mjs.map +1 -0
  12. package/dist/adapters/redocly-loader/allowed-hosts.cjs +42 -0
  13. package/dist/adapters/redocly-loader/allowed-hosts.cjs.map +1 -0
  14. package/dist/adapters/redocly-loader/allowed-hosts.mjs +40 -0
  15. package/dist/adapters/redocly-loader/allowed-hosts.mjs.map +1 -0
  16. package/dist/adapters/redocly-loader/bundled-ref-repair.cjs +53 -0
  17. package/dist/adapters/redocly-loader/bundled-ref-repair.cjs.map +1 -0
  18. package/dist/adapters/redocly-loader/bundled-ref-repair.mjs +51 -0
  19. package/dist/adapters/redocly-loader/bundled-ref-repair.mjs.map +1 -0
  20. package/dist/adapters/redocly-loader/malformed-refs.cjs +41 -0
  21. package/dist/adapters/redocly-loader/malformed-refs.cjs.map +1 -0
  22. package/dist/adapters/redocly-loader/malformed-refs.mjs +38 -0
  23. package/dist/adapters/redocly-loader/malformed-refs.mjs.map +1 -0
  24. package/dist/adapters/redocly-loader/redocly-config-source.cjs +61 -0
  25. package/dist/adapters/redocly-loader/redocly-config-source.cjs.map +1 -0
  26. package/dist/adapters/redocly-loader/redocly-config-source.mjs +54 -0
  27. package/dist/adapters/redocly-loader/redocly-config-source.mjs.map +1 -0
  28. package/dist/adapters/redocly-loader/redocly-schema-loader.cjs +179 -0
  29. package/dist/adapters/redocly-loader/redocly-schema-loader.cjs.map +1 -0
  30. package/dist/adapters/redocly-loader/redocly-schema-loader.mjs +177 -0
  31. package/dist/adapters/redocly-loader/redocly-schema-loader.mjs.map +1 -0
  32. package/dist/adapters/redocly-loader/ref-access.cjs +107 -0
  33. package/dist/adapters/redocly-loader/ref-access.cjs.map +1 -0
  34. package/dist/adapters/redocly-loader/ref-access.mjs +99 -0
  35. package/dist/adapters/redocly-loader/ref-access.mjs.map +1 -0
  36. package/dist/adapters/redocly-loader/ref-holders.cjs +31 -0
  37. package/dist/adapters/redocly-loader/ref-holders.cjs.map +1 -0
  38. package/dist/adapters/redocly-loader/ref-holders.mjs +29 -0
  39. package/dist/adapters/redocly-loader/ref-holders.mjs.map +1 -0
  40. package/dist/adapters/redocly-loader/remote-fetch.cjs +60 -0
  41. package/dist/adapters/redocly-loader/remote-fetch.cjs.map +1 -0
  42. package/dist/adapters/redocly-loader/remote-fetch.mjs +56 -0
  43. package/dist/adapters/redocly-loader/remote-fetch.mjs.map +1 -0
  44. package/dist/adapters/redocly-loader/schema-load-errors.cjs +87 -0
  45. package/dist/adapters/redocly-loader/schema-load-errors.cjs.map +1 -0
  46. package/dist/adapters/redocly-loader/schema-load-errors.mjs +77 -0
  47. package/dist/adapters/redocly-loader/schema-load-errors.mjs.map +1 -0
  48. package/dist/adapters/redocly-loader/schema-source.cjs +104 -0
  49. package/dist/adapters/redocly-loader/schema-source.cjs.map +1 -0
  50. package/dist/adapters/redocly-loader/schema-source.mjs +98 -0
  51. package/dist/adapters/redocly-loader/schema-source.mjs.map +1 -0
  52. package/dist/adapters/redocly-loader/unsupported-keys.cjs +62 -0
  53. package/dist/adapters/redocly-loader/unsupported-keys.cjs.map +1 -0
  54. package/dist/adapters/redocly-loader/unsupported-keys.mjs +58 -0
  55. package/dist/adapters/redocly-loader/unsupported-keys.mjs.map +1 -0
  56. package/dist/adapters/terminal-logger/terminal-logger.cjs +67 -0
  57. package/dist/adapters/terminal-logger/terminal-logger.cjs.map +1 -0
  58. package/dist/adapters/terminal-logger/terminal-logger.mjs +59 -0
  59. package/dist/adapters/terminal-logger/terminal-logger.mjs.map +1 -0
  60. package/dist/adapters/type-ast-bridge/footer-nodes.cjs +21 -0
  61. package/dist/adapters/type-ast-bridge/footer-nodes.cjs.map +1 -0
  62. package/dist/adapters/type-ast-bridge/footer-nodes.mjs +17 -0
  63. package/dist/adapters/type-ast-bridge/footer-nodes.mjs.map +1 -0
  64. package/dist/adapters/type-ast-bridge/ir-declarations-to-typescript.cjs +75 -0
  65. package/dist/adapters/type-ast-bridge/ir-declarations-to-typescript.cjs.map +1 -0
  66. package/dist/adapters/type-ast-bridge/ir-declarations-to-typescript.mjs +71 -0
  67. package/dist/adapters/type-ast-bridge/ir-declarations-to-typescript.mjs.map +1 -0
  68. package/dist/adapters/type-ast-bridge/ir-to-typescript.cjs +148 -0
  69. package/dist/adapters/type-ast-bridge/ir-to-typescript.cjs.map +1 -0
  70. package/dist/adapters/type-ast-bridge/ir-to-typescript.mjs +142 -0
  71. package/dist/adapters/type-ast-bridge/ir-to-typescript.mjs.map +1 -0
  72. package/dist/adapters/type-ast-bridge/lazy-node.cjs +23 -0
  73. package/dist/adapters/type-ast-bridge/lazy-node.cjs.map +1 -0
  74. package/dist/adapters/type-ast-bridge/lazy-node.mjs +21 -0
  75. package/dist/adapters/type-ast-bridge/lazy-node.mjs.map +1 -0
  76. package/dist/adapters/type-ast-bridge/load-typescript.cjs +57 -0
  77. package/dist/adapters/type-ast-bridge/load-typescript.cjs.map +1 -0
  78. package/dist/adapters/type-ast-bridge/load-typescript.mjs +51 -0
  79. package/dist/adapters/type-ast-bridge/load-typescript.mjs.map +1 -0
  80. package/dist/adapters/type-ast-bridge/print-typescript.cjs +21 -0
  81. package/dist/adapters/type-ast-bridge/print-typescript.cjs.map +1 -0
  82. package/dist/adapters/type-ast-bridge/print-typescript.mjs +19 -0
  83. package/dist/adapters/type-ast-bridge/print-typescript.mjs.map +1 -0
  84. package/dist/adapters/type-ast-bridge/typescript-raw-text.cjs +33 -0
  85. package/dist/adapters/type-ast-bridge/typescript-raw-text.cjs.map +1 -0
  86. package/dist/adapters/type-ast-bridge/typescript-raw-text.mjs +29 -0
  87. package/dist/adapters/type-ast-bridge/typescript-raw-text.mjs.map +1 -0
  88. package/dist/adapters/type-ast-bridge/typescript-to-ir.cjs +210 -0
  89. package/dist/adapters/type-ast-bridge/typescript-to-ir.cjs.map +1 -0
  90. package/dist/adapters/type-ast-bridge/typescript-to-ir.mjs +207 -0
  91. package/dist/adapters/type-ast-bridge/typescript-to-ir.mjs.map +1 -0
  92. package/dist/api/ast-to-string.cjs +39 -0
  93. package/dist/api/ast-to-string.cjs.map +1 -0
  94. package/dist/api/ast-to-string.mjs +37 -0
  95. package/dist/api/ast-to-string.mjs.map +1 -0
  96. package/dist/api/comment-header.cjs +11 -0
  97. package/dist/api/comment-header.cjs.map +1 -0
  98. package/dist/api/comment-header.mjs +9 -0
  99. package/dist/api/comment-header.mjs.map +1 -0
  100. package/dist/api/default-ports.cjs +38 -0
  101. package/dist/api/default-ports.cjs.map +1 -0
  102. package/dist/api/default-ports.mjs +28 -0
  103. package/dist/api/default-ports.mjs.map +1 -0
  104. package/dist/api/discriminator-conflict-warnings.cjs +25 -0
  105. package/dist/api/discriminator-conflict-warnings.cjs.map +1 -0
  106. package/dist/api/discriminator-conflict-warnings.mjs +23 -0
  107. package/dist/api/discriminator-conflict-warnings.mjs.map +1 -0
  108. package/dist/api/discriminator-enum-names.cjs +19 -0
  109. package/dist/api/discriminator-enum-names.cjs.map +1 -0
  110. package/dist/api/discriminator-enum-names.mjs +17 -0
  111. package/dist/api/discriminator-enum-names.mjs.map +1 -0
  112. package/dist/api/discriminator-enum-parent.cjs +59 -0
  113. package/dist/api/discriminator-enum-parent.cjs.map +1 -0
  114. package/dist/api/discriminator-enum-parent.mjs +57 -0
  115. package/dist/api/discriminator-enum-parent.mjs.map +1 -0
  116. package/dist/api/discriminator-enum.cjs +69 -0
  117. package/dist/api/discriminator-enum.cjs.map +1 -0
  118. package/dist/api/discriminator-enum.mjs +66 -0
  119. package/dist/api/discriminator-enum.mjs.map +1 -0
  120. package/dist/api/discriminator-other-owners.cjs +67 -0
  121. package/dist/api/discriminator-other-owners.cjs.map +1 -0
  122. package/dist/api/discriminator-other-owners.mjs +64 -0
  123. package/dist/api/discriminator-other-owners.mjs.map +1 -0
  124. package/dist/api/discriminator-patch.cjs +88 -0
  125. package/dist/api/discriminator-patch.cjs.map +1 -0
  126. package/dist/api/discriminator-patch.mjs +82 -0
  127. package/dist/api/discriminator-patch.mjs.map +1 -0
  128. package/dist/api/discriminator-scan.cjs +153 -0
  129. package/dist/api/discriminator-scan.cjs.map +1 -0
  130. package/dist/api/discriminator-scan.mjs +150 -0
  131. package/dist/api/discriminator-scan.mjs.map +1 -0
  132. package/dist/api/document-declarations.cjs +28 -0
  133. package/dist/api/document-declarations.cjs.map +1 -0
  134. package/dist/api/document-declarations.mjs +26 -0
  135. package/dist/api/document-declarations.mjs.map +1 -0
  136. package/dist/api/document-refs.cjs +53 -0
  137. package/dist/api/document-refs.cjs.map +1 -0
  138. package/dist/api/document-refs.mjs +50 -0
  139. package/dist/api/document-refs.mjs.map +1 -0
  140. package/dist/api/document-run.cjs +122 -0
  141. package/dist/api/document-run.cjs.map +1 -0
  142. package/dist/api/document-run.mjs +116 -0
  143. package/dist/api/document-run.mjs.map +1 -0
  144. package/dist/api/enum-values-warnings.cjs +16 -0
  145. package/dist/api/enum-values-warnings.cjs.map +1 -0
  146. package/dist/api/enum-values-warnings.mjs +14 -0
  147. package/dist/api/enum-values-warnings.mjs.map +1 -0
  148. package/dist/api/footer-entry.cjs +18 -0
  149. package/dist/api/footer-entry.cjs.map +1 -0
  150. package/dist/api/footer-entry.mjs +15 -0
  151. package/dist/api/footer-entry.mjs.map +1 -0
  152. package/dist/api/footer-sink.cjs +53 -0
  153. package/dist/api/footer-sink.cjs.map +1 -0
  154. package/dist/api/footer-sink.mjs +51 -0
  155. package/dist/api/footer-sink.mjs.map +1 -0
  156. package/dist/api/legacy-callback-warning.cjs +25 -0
  157. package/dist/api/legacy-callback-warning.cjs.map +1 -0
  158. package/dist/api/legacy-callback-warning.mjs +22 -0
  159. package/dist/api/legacy-callback-warning.mjs.map +1 -0
  160. package/dist/api/legacy-ts-helpers.cjs +203 -0
  161. package/dist/api/legacy-ts-helpers.cjs.map +1 -0
  162. package/dist/api/legacy-ts-helpers.mjs +187 -0
  163. package/dist/api/legacy-ts-helpers.mjs.map +1 -0
  164. package/dist/api/legacy-utils.cjs +65 -0
  165. package/dist/api/legacy-utils.cjs.map +1 -0
  166. package/dist/api/legacy-utils.mjs +50 -0
  167. package/dist/api/legacy-utils.mjs.map +1 -0
  168. package/dist/api/openapi-ts.cjs +40 -0
  169. package/dist/api/openapi-ts.cjs.map +1 -0
  170. package/dist/api/openapi-ts.mjs +34 -0
  171. package/dist/api/openapi-ts.mjs.map +1 -0
  172. package/dist/api/path-template-warnings.cjs +21 -0
  173. package/dist/api/path-template-warnings.cjs.map +1 -0
  174. package/dist/api/path-template-warnings.mjs +19 -0
  175. package/dist/api/path-template-warnings.mjs.map +1 -0
  176. package/dist/api/schema-callbacks.cjs +140 -0
  177. package/dist/api/schema-callbacks.cjs.map +1 -0
  178. package/dist/api/schema-callbacks.mjs +136 -0
  179. package/dist/api/schema-callbacks.mjs.map +1 -0
  180. package/dist/api/string-to-ast.cjs +21 -0
  181. package/dist/api/string-to-ast.cjs.map +1 -0
  182. package/dist/api/string-to-ast.mjs +18 -0
  183. package/dist/api/string-to-ast.mjs.map +1 -0
  184. package/dist/api/transform-context.cjs +84 -0
  185. package/dist/api/transform-context.cjs.map +1 -0
  186. package/dist/api/transform-context.mjs +67 -0
  187. package/dist/api/transform-context.mjs.map +1 -0
  188. package/dist/api/transform-schema.cjs +80 -0
  189. package/dist/api/transform-schema.cjs.map +1 -0
  190. package/dist/api/transform-schema.mjs +75 -0
  191. package/dist/api/transform-schema.mjs.map +1 -0
  192. package/dist/api/type-helpers.cjs +85 -0
  193. package/dist/api/type-helpers.cjs.map +1 -0
  194. package/dist/api/type-helpers.mjs +66 -0
  195. package/dist/api/type-helpers.mjs.map +1 -0
  196. package/dist/api/unsupported-feature-warnings.cjs +22 -0
  197. package/dist/api/unsupported-feature-warnings.cjs.map +1 -0
  198. package/dist/api/unsupported-feature-warnings.mjs +20 -0
  199. package/dist/api/unsupported-feature-warnings.mjs.map +1 -0
  200. package/dist/application/print/comment-writer.cjs +95 -0
  201. package/dist/application/print/comment-writer.cjs.map +1 -0
  202. package/dist/application/print/comment-writer.mjs +93 -0
  203. package/dist/application/print/comment-writer.mjs.map +1 -0
  204. package/dist/application/print/declaration-printer.cjs +83 -0
  205. package/dist/application/print/declaration-printer.cjs.map +1 -0
  206. package/dist/application/print/declaration-printer.mjs +81 -0
  207. package/dist/application/print/declaration-printer.mjs.map +1 -0
  208. package/dist/application/print/literal-text.cjs +52 -0
  209. package/dist/application/print/literal-text.cjs.map +1 -0
  210. package/dist/application/print/literal-text.mjs +48 -0
  211. package/dist/application/print/literal-text.mjs.map +1 -0
  212. package/dist/application/print/print-nodes.cjs +38 -0
  213. package/dist/application/print/print-nodes.cjs.map +1 -0
  214. package/dist/application/print/print-nodes.mjs +36 -0
  215. package/dist/application/print/print-nodes.mjs.map +1 -0
  216. package/dist/application/print/print-options.cjs +6 -0
  217. package/dist/application/print/print-options.cjs.map +1 -0
  218. package/dist/application/print/print-options.mjs +4 -0
  219. package/dist/application/print/print-options.mjs.map +1 -0
  220. package/dist/application/print/text-writer.cjs +63 -0
  221. package/dist/application/print/text-writer.cjs.map +1 -0
  222. package/dist/application/print/text-writer.mjs +60 -0
  223. package/dist/application/print/text-writer.mjs.map +1 -0
  224. package/dist/application/print/type-printer.cjs +219 -0
  225. package/dist/application/print/type-printer.cjs.map +1 -0
  226. package/dist/application/print/type-printer.mjs +215 -0
  227. package/dist/application/print/type-printer.mjs.map +1 -0
  228. package/dist/application/stack-overflow.cjs +36 -0
  229. package/dist/application/stack-overflow.cjs.map +1 -0
  230. package/dist/application/stack-overflow.mjs +31 -0
  231. package/dist/application/stack-overflow.mjs.map +1 -0
  232. package/dist/application/transform/document/assignability.cjs +144 -0
  233. package/dist/application/transform/document/assignability.cjs.map +1 -0
  234. package/dist/application/transform/document/assignability.mjs +138 -0
  235. package/dist/application/transform/document/assignability.mjs.map +1 -0
  236. package/dist/application/transform/document/components.cjs +104 -0
  237. package/dist/application/transform/document/components.cjs.map +1 -0
  238. package/dist/application/transform/document/components.mjs +102 -0
  239. package/dist/application/transform/document/components.mjs.map +1 -0
  240. package/dist/application/transform/document/declared-types.cjs +66 -0
  241. package/dist/application/transform/document/declared-types.cjs.map +1 -0
  242. package/dist/application/transform/document/declared-types.mjs +63 -0
  243. package/dist/application/transform/document/declared-types.mjs.map +1 -0
  244. package/dist/application/transform/document/defs-root.cjs +18 -0
  245. package/dist/application/transform/document/defs-root.cjs.map +1 -0
  246. package/dist/application/transform/document/defs-root.mjs +16 -0
  247. package/dist/application/transform/document/defs-root.mjs.map +1 -0
  248. package/dist/application/transform/document/document-member.cjs +13 -0
  249. package/dist/application/transform/document/document-member.cjs.map +1 -0
  250. package/dist/application/transform/document/document-member.mjs +11 -0
  251. package/dist/application/transform/document/document-member.mjs.map +1 -0
  252. package/dist/application/transform/document/document.cjs +109 -0
  253. package/dist/application/transform/document/document.cjs.map +1 -0
  254. package/dist/application/transform/document/document.mjs +106 -0
  255. package/dist/application/transform/document/document.mjs.map +1 -0
  256. package/dist/application/transform/document/exploded-query.cjs +46 -0
  257. package/dist/application/transform/document/exploded-query.cjs.map +1 -0
  258. package/dist/application/transform/document/exploded-query.mjs +43 -0
  259. package/dist/application/transform/document/exploded-query.mjs.map +1 -0
  260. package/dist/application/transform/document/global-type-references.cjs +63 -0
  261. package/dist/application/transform/document/global-type-references.cjs.map +1 -0
  262. package/dist/application/transform/document/global-type-references.mjs +61 -0
  263. package/dist/application/transform/document/global-type-references.mjs.map +1 -0
  264. package/dist/application/transform/document/header.cjs +27 -0
  265. package/dist/application/transform/document/header.cjs.map +1 -0
  266. package/dist/application/transform/document/header.mjs +25 -0
  267. package/dist/application/transform/document/header.mjs.map +1 -0
  268. package/dist/application/transform/document/kept-deprecated.cjs +96 -0
  269. package/dist/application/transform/document/kept-deprecated.cjs.map +1 -0
  270. package/dist/application/transform/document/kept-deprecated.mjs +94 -0
  271. package/dist/application/transform/document/kept-deprecated.mjs.map +1 -0
  272. package/dist/application/transform/document/list-assignability.cjs +54 -0
  273. package/dist/application/transform/document/list-assignability.cjs.map +1 -0
  274. package/dist/application/transform/document/list-assignability.mjs +52 -0
  275. package/dist/application/transform/document/list-assignability.mjs.map +1 -0
  276. package/dist/application/transform/document/media-type.cjs +42 -0
  277. package/dist/application/transform/document/media-type.cjs.map +1 -0
  278. package/dist/application/transform/document/media-type.mjs +38 -0
  279. package/dist/application/transform/document/media-type.mjs.map +1 -0
  280. package/dist/application/transform/document/operation.cjs +45 -0
  281. package/dist/application/transform/document/operation.cjs.map +1 -0
  282. package/dist/application/transform/document/operation.mjs +43 -0
  283. package/dist/application/transform/document/operation.mjs.map +1 -0
  284. package/dist/application/transform/document/parameter.cjs +25 -0
  285. package/dist/application/transform/document/parameter.cjs.map +1 -0
  286. package/dist/application/transform/document/parameter.mjs +23 -0
  287. package/dist/application/transform/document/parameter.mjs.map +1 -0
  288. package/dist/application/transform/document/parameters.cjs +146 -0
  289. package/dist/application/transform/document/parameters.cjs.map +1 -0
  290. package/dist/application/transform/document/parameters.mjs +144 -0
  291. package/dist/application/transform/document/parameters.mjs.map +1 -0
  292. package/dist/application/transform/document/path-item.cjs +82 -0
  293. package/dist/application/transform/document/path-item.cjs.map +1 -0
  294. package/dist/application/transform/document/path-item.mjs +80 -0
  295. package/dist/application/transform/document/path-item.mjs.map +1 -0
  296. package/dist/application/transform/document/path-key-overlaps.cjs +107 -0
  297. package/dist/application/transform/document/path-key-overlaps.cjs.map +1 -0
  298. package/dist/application/transform/document/path-key-overlaps.mjs +105 -0
  299. package/dist/application/transform/document/path-key-overlaps.mjs.map +1 -0
  300. package/dist/application/transform/document/path-template-replace.cjs +48 -0
  301. package/dist/application/transform/document/path-template-replace.cjs.map +1 -0
  302. package/dist/application/transform/document/path-template-replace.mjs +45 -0
  303. package/dist/application/transform/document/path-template-replace.mjs.map +1 -0
  304. package/dist/application/transform/document/paths-enum.cjs +75 -0
  305. package/dist/application/transform/document/paths-enum.cjs.map +1 -0
  306. package/dist/application/transform/document/paths-enum.mjs +72 -0
  307. package/dist/application/transform/document/paths-enum.mjs.map +1 -0
  308. package/dist/application/transform/document/paths.cjs +153 -0
  309. package/dist/application/transform/document/paths.cjs.map +1 -0
  310. package/dist/application/transform/document/paths.mjs +149 -0
  311. package/dist/application/transform/document/paths.mjs.map +1 -0
  312. package/dist/application/transform/document/request-body.cjs +36 -0
  313. package/dist/application/transform/document/request-body.cjs.map +1 -0
  314. package/dist/application/transform/document/request-body.mjs +34 -0
  315. package/dist/application/transform/document/request-body.mjs.map +1 -0
  316. package/dist/application/transform/document/response.cjs +59 -0
  317. package/dist/application/transform/document/response.cjs.map +1 -0
  318. package/dist/application/transform/document/response.mjs +57 -0
  319. package/dist/application/transform/document/response.mjs.map +1 -0
  320. package/dist/application/transform/document/responses.cjs +23 -0
  321. package/dist/application/transform/document/responses.cjs.map +1 -0
  322. package/dist/application/transform/document/responses.mjs +21 -0
  323. package/dist/application/transform/document/responses.mjs.map +1 -0
  324. package/dist/application/transform/document/root-type-aliases.cjs +70 -0
  325. package/dist/application/transform/document/root-type-aliases.cjs.map +1 -0
  326. package/dist/application/transform/document/root-type-aliases.mjs +67 -0
  327. package/dist/application/transform/document/root-type-aliases.mjs.map +1 -0
  328. package/dist/application/transform/document/template-key-match.cjs +128 -0
  329. package/dist/application/transform/document/template-key-match.cjs.map +1 -0
  330. package/dist/application/transform/document/template-key-match.mjs +125 -0
  331. package/dist/application/transform/document/template-key-match.mjs.map +1 -0
  332. package/dist/application/transform/document/type-assignability.cjs +192 -0
  333. package/dist/application/transform/document/type-assignability.cjs.map +1 -0
  334. package/dist/application/transform/document/type-assignability.mjs +190 -0
  335. package/dist/application/transform/document/type-assignability.mjs.map +1 -0
  336. package/dist/application/transform/document/type-key.cjs +70 -0
  337. package/dist/application/transform/document/type-key.cjs.map +1 -0
  338. package/dist/application/transform/document/type-key.mjs +68 -0
  339. package/dist/application/transform/document/type-key.mjs.map +1 -0
  340. package/dist/application/transform/document/type-resolution.cjs +131 -0
  341. package/dist/application/transform/document/type-resolution.cjs.map +1 -0
  342. package/dist/application/transform/document/type-resolution.mjs +125 -0
  343. package/dist/application/transform/document/type-resolution.mjs.map +1 -0
  344. package/dist/application/transform/document/webhooks.cjs +19 -0
  345. package/dist/application/transform/document/webhooks.cjs.map +1 -0
  346. package/dist/application/transform/document/webhooks.mjs +17 -0
  347. package/dist/application/transform/document/webhooks.mjs.map +1 -0
  348. package/dist/application/transform/document-entries.cjs +17 -0
  349. package/dist/application/transform/document-entries.cjs.map +1 -0
  350. package/dist/application/transform/document-entries.mjs +14 -0
  351. package/dist/application/transform/document-entries.mjs.map +1 -0
  352. package/dist/application/transform/footer/document-footer.cjs +150 -0
  353. package/dist/application/transform/footer/document-footer.cjs.map +1 -0
  354. package/dist/application/transform/footer/document-footer.mjs +148 -0
  355. package/dist/application/transform/footer/document-footer.mjs.map +1 -0
  356. package/dist/application/transform/footer/enum-naming.cjs +138 -0
  357. package/dist/application/transform/footer/enum-naming.cjs.map +1 -0
  358. package/dist/application/transform/footer/enum-naming.mjs +131 -0
  359. package/dist/application/transform/footer/enum-naming.mjs.map +1 -0
  360. package/dist/application/transform/footer/enum-values-check.cjs +129 -0
  361. package/dist/application/transform/footer/enum-values-check.cjs.map +1 -0
  362. package/dist/application/transform/footer/enum-values-check.mjs +127 -0
  363. package/dist/application/transform/footer/enum-values-check.mjs.map +1 -0
  364. package/dist/application/transform/footer/evaluation.cjs +33 -0
  365. package/dist/application/transform/footer/evaluation.cjs.map +1 -0
  366. package/dist/application/transform/footer/evaluation.mjs +26 -0
  367. package/dist/application/transform/footer/evaluation.mjs.map +1 -0
  368. package/dist/application/transform/footer/shared-enum-names.cjs +60 -0
  369. package/dist/application/transform/footer/shared-enum-names.cjs.map +1 -0
  370. package/dist/application/transform/footer/shared-enum-names.mjs +57 -0
  371. package/dist/application/transform/footer/shared-enum-names.mjs.map +1 -0
  372. package/dist/application/transform/footer/type-evaluation.cjs +246 -0
  373. package/dist/application/transform/footer/type-evaluation.cjs.map +1 -0
  374. package/dist/application/transform/footer/type-evaluation.mjs +244 -0
  375. package/dist/application/transform/footer/type-evaluation.mjs.map +1 -0
  376. package/dist/application/transform/footer/type-rules.cjs +172 -0
  377. package/dist/application/transform/footer/type-rules.cjs.map +1 -0
  378. package/dist/application/transform/footer/type-rules.mjs +166 -0
  379. package/dist/application/transform/footer/type-rules.mjs.map +1 -0
  380. package/dist/application/transform/helper-types.cjs +68 -0
  381. package/dist/application/transform/helper-types.cjs.map +1 -0
  382. package/dist/application/transform/helper-types.mjs +65 -0
  383. package/dist/application/transform/helper-types.mjs.map +1 -0
  384. package/dist/application/transform/literal-type.cjs +36 -0
  385. package/dist/application/transform/literal-type.cjs.map +1 -0
  386. package/dist/application/transform/literal-type.mjs +34 -0
  387. package/dist/application/transform/literal-type.mjs.map +1 -0
  388. package/dist/application/transform/numbered-names.cjs +18 -0
  389. package/dist/application/transform/numbered-names.cjs.map +1 -0
  390. package/dist/application/transform/numbered-names.mjs +16 -0
  391. package/dist/application/transform/numbered-names.mjs.map +1 -0
  392. package/dist/application/transform/ref-pointer/generated-location.cjs +138 -0
  393. package/dist/application/transform/ref-pointer/generated-location.cjs.map +1 -0
  394. package/dist/application/transform/ref-pointer/generated-location.mjs +136 -0
  395. package/dist/application/transform/ref-pointer/generated-location.mjs.map +1 -0
  396. package/dist/application/transform/ref-pointer/generated-shape.cjs +171 -0
  397. package/dist/application/transform/ref-pointer/generated-shape.cjs.map +1 -0
  398. package/dist/application/transform/ref-pointer/generated-shape.mjs +162 -0
  399. package/dist/application/transform/ref-pointer/generated-shape.mjs.map +1 -0
  400. package/dist/application/transform/ref-pointer/inline-cycles.cjs +44 -0
  401. package/dist/application/transform/ref-pointer/inline-cycles.cjs.map +1 -0
  402. package/dist/application/transform/ref-pointer/inline-cycles.mjs +42 -0
  403. package/dist/application/transform/ref-pointer/inline-cycles.mjs.map +1 -0
  404. package/dist/application/transform/ref-pointer/original-index.cjs +62 -0
  405. package/dist/application/transform/ref-pointer/original-index.cjs.map +1 -0
  406. package/dist/application/transform/ref-pointer/original-index.mjs +60 -0
  407. package/dist/application/transform/ref-pointer/original-index.mjs.map +1 -0
  408. package/dist/application/transform/ref-pointer/pointer-type.cjs +60 -0
  409. package/dist/application/transform/ref-pointer/pointer-type.cjs.map +1 -0
  410. package/dist/application/transform/ref-pointer/pointer-type.mjs +57 -0
  411. package/dist/application/transform/ref-pointer/pointer-type.mjs.map +1 -0
  412. package/dist/application/transform/ref-pointer/pointer-walk.cjs +66 -0
  413. package/dist/application/transform/ref-pointer/pointer-walk.cjs.map +1 -0
  414. package/dist/application/transform/ref-pointer/pointer-walk.mjs +56 -0
  415. package/dist/application/transform/ref-pointer/pointer-walk.mjs.map +1 -0
  416. package/dist/application/transform/ref-pointer/typed-walk.cjs +124 -0
  417. package/dist/application/transform/ref-pointer/typed-walk.cjs.map +1 -0
  418. package/dist/application/transform/ref-pointer/typed-walk.mjs +122 -0
  419. package/dist/application/transform/ref-pointer/typed-walk.mjs.map +1 -0
  420. package/dist/application/transform/ref-type.cjs +62 -0
  421. package/dist/application/transform/ref-type.cjs.map +1 -0
  422. package/dist/application/transform/ref-type.mjs +55 -0
  423. package/dist/application/transform/ref-type.mjs.map +1 -0
  424. package/dist/application/transform/schema/access-flags.cjs +38 -0
  425. package/dist/application/transform/schema/access-flags.cjs.map +1 -0
  426. package/dist/application/transform/schema/access-flags.mjs +36 -0
  427. package/dist/application/transform/schema/access-flags.mjs.map +1 -0
  428. package/dist/application/transform/schema/array-type.cjs +136 -0
  429. package/dist/application/transform/schema/array-type.cjs.map +1 -0
  430. package/dist/application/transform/schema/array-type.mjs +134 -0
  431. package/dist/application/transform/schema/array-type.mjs.map +1 -0
  432. package/dist/application/transform/schema/composition-type.cjs +142 -0
  433. package/dist/application/transform/schema/composition-type.cjs.map +1 -0
  434. package/dist/application/transform/schema/composition-type.mjs +140 -0
  435. package/dist/application/transform/schema/composition-type.mjs.map +1 -0
  436. package/dist/application/transform/schema/core-type.cjs +86 -0
  437. package/dist/application/transform/schema/core-type.cjs.map +1 -0
  438. package/dist/application/transform/schema/core-type.mjs +84 -0
  439. package/dist/application/transform/schema/core-type.mjs.map +1 -0
  440. package/dist/application/transform/schema/discriminated-union.cjs +30 -0
  441. package/dist/application/transform/schema/discriminated-union.cjs.map +1 -0
  442. package/dist/application/transform/schema/discriminated-union.mjs +27 -0
  443. package/dist/application/transform/schema/discriminated-union.mjs.map +1 -0
  444. package/dist/application/transform/schema/discriminator-property.cjs +22 -0
  445. package/dist/application/transform/schema/discriminator-property.cjs.map +1 -0
  446. package/dist/application/transform/schema/discriminator-property.mjs +20 -0
  447. package/dist/application/transform/schema/discriminator-property.mjs.map +1 -0
  448. package/dist/application/transform/schema/enum-rule.cjs +163 -0
  449. package/dist/application/transform/schema/enum-rule.cjs.map +1 -0
  450. package/dist/application/transform/schema/enum-rule.mjs +160 -0
  451. package/dist/application/transform/schema/enum-rule.mjs.map +1 -0
  452. package/dist/application/transform/schema/inherited-discriminator.cjs +29 -0
  453. package/dist/application/transform/schema/inherited-discriminator.cjs.map +1 -0
  454. package/dist/application/transform/schema/inherited-discriminator.mjs +26 -0
  455. package/dist/application/transform/schema/inherited-discriminator.mjs.map +1 -0
  456. package/dist/application/transform/schema/object-type.cjs +186 -0
  457. package/dist/application/transform/schema/object-type.cjs.map +1 -0
  458. package/dist/application/transform/schema/object-type.mjs +182 -0
  459. package/dist/application/transform/schema/object-type.mjs.map +1 -0
  460. package/dist/application/transform/schema/presence-members.cjs +59 -0
  461. package/dist/application/transform/schema/presence-members.cjs.map +1 -0
  462. package/dist/application/transform/schema/presence-members.mjs +57 -0
  463. package/dist/application/transform/schema/presence-members.mjs.map +1 -0
  464. package/dist/application/transform/schema/required-variants.cjs +45 -0
  465. package/dist/application/transform/schema/required-variants.cjs.map +1 -0
  466. package/dist/application/transform/schema/required-variants.mjs +42 -0
  467. package/dist/application/transform/schema/required-variants.mjs.map +1 -0
  468. package/dist/application/transform/schema/schema-transform.cjs +72 -0
  469. package/dist/application/transform/schema/schema-transform.cjs.map +1 -0
  470. package/dist/application/transform/schema/schema-transform.mjs +68 -0
  471. package/dist/application/transform/schema/schema-transform.mjs.map +1 -0
  472. package/dist/application/transform/schema/unevaluated-properties.cjs +61 -0
  473. package/dist/application/transform/schema/unevaluated-properties.cjs.map +1 -0
  474. package/dist/application/transform/schema/unevaluated-properties.mjs +59 -0
  475. package/dist/application/transform/schema/unevaluated-properties.mjs.map +1 -0
  476. package/dist/application/transform/schema-comment.cjs +130 -0
  477. package/dist/application/transform/schema-comment.cjs.map +1 -0
  478. package/dist/application/transform/schema-comment.mjs +125 -0
  479. package/dist/application/transform/schema-comment.mjs.map +1 -0
  480. package/dist/application/transform/shared-types.cjs +8 -0
  481. package/dist/application/transform/shared-types.cjs.map +1 -0
  482. package/dist/application/transform/shared-types.mjs +6 -0
  483. package/dist/application/transform/shared-types.mjs.map +1 -0
  484. package/dist/application/transform/type-combinators.cjs +49 -0
  485. package/dist/application/transform/type-combinators.cjs.map +1 -0
  486. package/dist/application/transform/type-combinators.mjs +42 -0
  487. package/dist/application/transform/type-combinators.mjs.map +1 -0
  488. package/dist/cli/cli-arguments.cjs +145 -0
  489. package/dist/cli/cli-arguments.cjs.map +1 -0
  490. package/dist/cli/cli-arguments.mjs +137 -0
  491. package/dist/cli/cli-arguments.mjs.map +1 -0
  492. package/dist/cli/cli-errors.cjs +81 -0
  493. package/dist/cli/cli-errors.cjs.map +1 -0
  494. package/dist/cli/cli-errors.mjs +77 -0
  495. package/dist/cli/cli-errors.mjs.map +1 -0
  496. package/dist/cli/cli-output.cjs +42 -0
  497. package/dist/cli/cli-output.cjs.map +1 -0
  498. package/dist/cli/cli-output.mjs +35 -0
  499. package/dist/cli/cli-output.mjs.map +1 -0
  500. package/dist/cli/docs-links.cjs +6 -0
  501. package/dist/cli/docs-links.cjs.map +1 -0
  502. package/dist/cli/docs-links.mjs +4 -0
  503. package/dist/cli/docs-links.mjs.map +1 -0
  504. package/dist/cli/fix-option.cjs +19 -0
  505. package/dist/cli/fix-option.cjs.map +1 -0
  506. package/dist/cli/fix-option.mjs +16 -0
  507. package/dist/cli/fix-option.mjs.map +1 -0
  508. package/dist/cli/help-text.cjs +44 -0
  509. package/dist/cli/help-text.cjs.map +1 -0
  510. package/dist/cli/help-text.mjs +42 -0
  511. package/dist/cli/help-text.mjs.map +1 -0
  512. package/dist/cli/main.cjs +67 -0
  513. package/dist/cli/main.cjs.map +1 -0
  514. package/dist/cli/main.d.cts +2 -0
  515. package/dist/cli/main.d.mts +2 -0
  516. package/dist/cli/main.d.ts +2 -0
  517. package/dist/cli/main.mjs +59 -0
  518. package/dist/cli/main.mjs.map +1 -0
  519. package/dist/cli/redocly-apis.cjs +69 -0
  520. package/dist/cli/redocly-apis.cjs.map +1 -0
  521. package/dist/cli/redocly-apis.mjs +66 -0
  522. package/dist/cli/redocly-apis.mjs.map +1 -0
  523. package/dist/cli/ref-limits.cjs +14 -0
  524. package/dist/cli/ref-limits.cjs.map +1 -0
  525. package/dist/cli/ref-limits.mjs +12 -0
  526. package/dist/cli/ref-limits.mjs.map +1 -0
  527. package/dist/cli/run-cli.cjs +113 -0
  528. package/dist/cli/run-cli.cjs.map +1 -0
  529. package/dist/cli/run-cli.mjs +111 -0
  530. package/dist/cli/run-cli.mjs.map +1 -0
  531. package/dist/domain/assert-never.cjs +8 -0
  532. package/dist/domain/assert-never.cjs.map +1 -0
  533. package/dist/domain/assert-never.mjs +6 -0
  534. package/dist/domain/assert-never.mjs.map +1 -0
  535. package/dist/domain/errors.cjs +52 -0
  536. package/dist/domain/errors.cjs.map +1 -0
  537. package/dist/domain/errors.mjs +48 -0
  538. package/dist/domain/errors.mjs.map +1 -0
  539. package/dist/domain/ir/constructors.cjs +93 -0
  540. package/dist/domain/ir/constructors.cjs.map +1 -0
  541. package/dist/domain/ir/constructors.mjs +74 -0
  542. package/dist/domain/ir/constructors.mjs.map +1 -0
  543. package/dist/domain/ir/identifier-text.cjs +29 -0
  544. package/dist/domain/ir/identifier-text.cjs.map +1 -0
  545. package/dist/domain/ir/identifier-text.mjs +25 -0
  546. package/dist/domain/ir/identifier-text.mjs.map +1 -0
  547. package/dist/domain/ir/newer-identifier-ranges.cjs +109 -0
  548. package/dist/domain/ir/newer-identifier-ranges.cjs.map +1 -0
  549. package/dist/domain/ir/newer-identifier-ranges.mjs +106 -0
  550. package/dist/domain/ir/newer-identifier-ranges.mjs.map +1 -0
  551. package/dist/domain/ir/normalize.cjs +32 -0
  552. package/dist/domain/ir/normalize.cjs.map +1 -0
  553. package/dist/domain/ir/normalize.mjs +29 -0
  554. package/dist/domain/ir/normalize.mjs.map +1 -0
  555. package/dist/domain/ir/property-name.cjs +19 -0
  556. package/dist/domain/ir/property-name.cjs.map +1 -0
  557. package/dist/domain/ir/property-name.mjs +16 -0
  558. package/dist/domain/ir/property-name.mjs.map +1 -0
  559. package/dist/domain/ir/raw-text-escapes.cjs +25 -0
  560. package/dist/domain/ir/raw-text-escapes.cjs.map +1 -0
  561. package/dist/domain/ir/raw-text-escapes.mjs +22 -0
  562. package/dist/domain/ir/raw-text-escapes.mjs.map +1 -0
  563. package/dist/domain/openapi/admitted-values.cjs +75 -0
  564. package/dist/domain/openapi/admitted-values.cjs.map +1 -0
  565. package/dist/domain/openapi/admitted-values.mjs +72 -0
  566. package/dist/domain/openapi/admitted-values.mjs.map +1 -0
  567. package/dist/domain/openapi/alias-expansion.cjs +50 -0
  568. package/dist/domain/openapi/alias-expansion.cjs.map +1 -0
  569. package/dist/domain/openapi/alias-expansion.mjs +45 -0
  570. package/dist/domain/openapi/alias-expansion.mjs.map +1 -0
  571. package/dist/domain/openapi/binary-content.cjs +48 -0
  572. package/dist/domain/openapi/binary-content.cjs.map +1 -0
  573. package/dist/domain/openapi/binary-content.mjs +45 -0
  574. package/dist/domain/openapi/binary-content.mjs.map +1 -0
  575. package/dist/domain/openapi/components-object.cjs +29 -0
  576. package/dist/domain/openapi/components-object.cjs.map +1 -0
  577. package/dist/domain/openapi/components-object.mjs +24 -0
  578. package/dist/domain/openapi/components-object.mjs.map +1 -0
  579. package/dist/domain/openapi/discriminated-union.cjs +68 -0
  580. package/dist/domain/openapi/discriminated-union.cjs.map +1 -0
  581. package/dist/domain/openapi/discriminated-union.mjs +62 -0
  582. package/dist/domain/openapi/discriminated-union.mjs.map +1 -0
  583. package/dist/domain/openapi/discriminator-conflicts.cjs +143 -0
  584. package/dist/domain/openapi/discriminator-conflicts.cjs.map +1 -0
  585. package/dist/domain/openapi/discriminator-conflicts.mjs +141 -0
  586. package/dist/domain/openapi/discriminator-conflicts.mjs.map +1 -0
  587. package/dist/domain/openapi/json-pointer.cjs +31 -0
  588. package/dist/domain/openapi/json-pointer.cjs.map +1 -0
  589. package/dist/domain/openapi/json-pointer.mjs +27 -0
  590. package/dist/domain/openapi/json-pointer.mjs.map +1 -0
  591. package/dist/domain/openapi/media-type-object.cjs +14 -0
  592. package/dist/domain/openapi/media-type-object.cjs.map +1 -0
  593. package/dist/domain/openapi/media-type-object.mjs +11 -0
  594. package/dist/domain/openapi/media-type-object.mjs.map +1 -0
  595. package/dist/domain/openapi/parameter-object.cjs +13 -0
  596. package/dist/domain/openapi/parameter-object.cjs.map +1 -0
  597. package/dist/domain/openapi/parameter-object.mjs +10 -0
  598. package/dist/domain/openapi/parameter-object.mjs.map +1 -0
  599. package/dist/domain/openapi/path-item-object.cjs +35 -0
  600. package/dist/domain/openapi/path-item-object.cjs.map +1 -0
  601. package/dist/domain/openapi/path-item-object.mjs +30 -0
  602. package/dist/domain/openapi/path-item-object.mjs.map +1 -0
  603. package/dist/domain/openapi/path-templates.cjs +23 -0
  604. package/dist/domain/openapi/path-templates.cjs.map +1 -0
  605. package/dist/domain/openapi/path-templates.mjs +21 -0
  606. package/dist/domain/openapi/path-templates.mjs.map +1 -0
  607. package/dist/domain/openapi/unsupported-features.cjs +87 -0
  608. package/dist/domain/openapi/unsupported-features.cjs.map +1 -0
  609. package/dist/domain/openapi/unsupported-features.mjs +84 -0
  610. package/dist/domain/openapi/unsupported-features.mjs.map +1 -0
  611. package/dist/domain/output-fixes.cjs +101 -0
  612. package/dist/domain/output-fixes.cjs.map +1 -0
  613. package/dist/domain/output-fixes.mjs +94 -0
  614. package/dist/domain/output-fixes.mjs.map +1 -0
  615. package/dist/domain/warnings.cjs +15 -0
  616. package/dist/domain/warnings.cjs.map +1 -0
  617. package/dist/domain/warnings.mjs +12 -0
  618. package/dist/domain/warnings.mjs.map +1 -0
  619. package/dist/index.cjs +98 -0
  620. package/dist/index.cjs.map +1 -0
  621. package/dist/index.d.cts +841 -0
  622. package/dist/index.d.mts +841 -0
  623. package/dist/index.d.ts +841 -0
  624. package/dist/index.mjs +27 -0
  625. package/dist/index.mjs.map +1 -0
  626. package/dist/transform/components-object.cjs +15 -0
  627. package/dist/transform/components-object.cjs.map +1 -0
  628. package/dist/transform/components-object.mjs +11 -0
  629. package/dist/transform/components-object.mjs.map +1 -0
  630. package/dist/transform/header-object.cjs +12 -0
  631. package/dist/transform/header-object.cjs.map +1 -0
  632. package/dist/transform/header-object.mjs +10 -0
  633. package/dist/transform/header-object.mjs.map +1 -0
  634. package/dist/transform/media-type-object.cjs +12 -0
  635. package/dist/transform/media-type-object.cjs.map +1 -0
  636. package/dist/transform/media-type-object.mjs +10 -0
  637. package/dist/transform/media-type-object.mjs.map +1 -0
  638. package/dist/transform/operation-object.cjs +26 -0
  639. package/dist/transform/operation-object.cjs.map +1 -0
  640. package/dist/transform/operation-object.mjs +21 -0
  641. package/dist/transform/operation-object.mjs.map +1 -0
  642. package/dist/transform/parameter-object.cjs +12 -0
  643. package/dist/transform/parameter-object.cjs.map +1 -0
  644. package/dist/transform/parameter-object.mjs +10 -0
  645. package/dist/transform/parameter-object.mjs.map +1 -0
  646. package/dist/transform/path-item-object.cjs +12 -0
  647. package/dist/transform/path-item-object.cjs.map +1 -0
  648. package/dist/transform/path-item-object.mjs +10 -0
  649. package/dist/transform/path-item-object.mjs.map +1 -0
  650. package/dist/transform/paths-object.cjs +11 -0
  651. package/dist/transform/paths-object.cjs.map +1 -0
  652. package/dist/transform/paths-object.mjs +9 -0
  653. package/dist/transform/paths-object.mjs.map +1 -0
  654. package/dist/transform/request-body-object.cjs +12 -0
  655. package/dist/transform/request-body-object.cjs.map +1 -0
  656. package/dist/transform/request-body-object.mjs +10 -0
  657. package/dist/transform/request-body-object.mjs.map +1 -0
  658. package/dist/transform/response-object.cjs +12 -0
  659. package/dist/transform/response-object.cjs.map +1 -0
  660. package/dist/transform/response-object.mjs +10 -0
  661. package/dist/transform/response-object.mjs.map +1 -0
  662. package/dist/transform/responses-object.cjs +12 -0
  663. package/dist/transform/responses-object.cjs.map +1 -0
  664. package/dist/transform/responses-object.mjs +10 -0
  665. package/dist/transform/responses-object.mjs.map +1 -0
  666. package/dist/transform/schema-object.cjs +21 -0
  667. package/dist/transform/schema-object.cjs.map +1 -0
  668. package/dist/transform/schema-object.mjs +16 -0
  669. package/dist/transform/schema-object.mjs.map +1 -0
  670. package/package.json +115 -4
  671. package/src/adapters/node-file-system/node-file-system.ts +44 -0
  672. package/src/adapters/redocly-loader/alias-limit.ts +20 -0
  673. package/src/adapters/redocly-loader/allowed-hosts.ts +62 -0
  674. package/src/adapters/redocly-loader/bundled-ref-repair.ts +65 -0
  675. package/src/adapters/redocly-loader/malformed-refs.ts +61 -0
  676. package/src/adapters/redocly-loader/redocly-config-source.ts +78 -0
  677. package/src/adapters/redocly-loader/redocly-schema-loader.ts +262 -0
  678. package/src/adapters/redocly-loader/ref-access.ts +146 -0
  679. package/src/adapters/redocly-loader/ref-holders.ts +43 -0
  680. package/src/adapters/redocly-loader/remote-fetch.ts +104 -0
  681. package/src/adapters/redocly-loader/schema-load-errors.ts +124 -0
  682. package/src/adapters/redocly-loader/schema-source.ts +151 -0
  683. package/src/adapters/redocly-loader/unsupported-keys.ts +102 -0
  684. package/src/adapters/terminal-logger/terminal-logger.ts +98 -0
  685. package/src/adapters/type-ast-bridge/footer-nodes.ts +38 -0
  686. package/src/adapters/type-ast-bridge/ir-declarations-to-typescript.ts +100 -0
  687. package/src/adapters/type-ast-bridge/ir-to-typescript.ts +223 -0
  688. package/src/adapters/type-ast-bridge/lazy-node.ts +24 -0
  689. package/src/adapters/type-ast-bridge/load-typescript.ts +84 -0
  690. package/src/adapters/type-ast-bridge/print-typescript.ts +33 -0
  691. package/src/adapters/type-ast-bridge/typescript-raw-text.ts +49 -0
  692. package/src/adapters/type-ast-bridge/typescript-to-ir.ts +294 -0
  693. package/src/adapters/type-ast-bridge/typescript-types.ts +8 -0
  694. package/src/api/ast-to-string.ts +59 -0
  695. package/src/api/comment-header.ts +7 -0
  696. package/src/api/default-ports.ts +44 -0
  697. package/src/api/discriminator-conflict-warnings.ts +43 -0
  698. package/src/api/discriminator-enum-names.ts +26 -0
  699. package/src/api/discriminator-enum-parent.ts +129 -0
  700. package/src/api/discriminator-enum.ts +115 -0
  701. package/src/api/discriminator-other-owners.ts +97 -0
  702. package/src/api/discriminator-patch.ts +147 -0
  703. package/src/api/discriminator-scan.ts +260 -0
  704. package/src/api/document-declarations.ts +41 -0
  705. package/src/api/document-refs.ts +71 -0
  706. package/src/api/document-run.ts +177 -0
  707. package/src/api/enum-values-warnings.ts +21 -0
  708. package/src/api/footer-entry.ts +23 -0
  709. package/src/api/footer-sink.ts +67 -0
  710. package/src/api/legacy-callback-warning.ts +29 -0
  711. package/src/api/legacy-ts-helpers.ts +311 -0
  712. package/src/api/legacy-utils.ts +118 -0
  713. package/src/api/openapi-ts.ts +62 -0
  714. package/src/api/path-template-warnings.ts +27 -0
  715. package/src/api/schema-callbacks.ts +211 -0
  716. package/src/api/string-to-ast.ts +27 -0
  717. package/src/api/transform-context.ts +93 -0
  718. package/src/api/transform-schema.ts +123 -0
  719. package/src/api/type-helpers.ts +130 -0
  720. package/src/api/unsupported-feature-warnings.ts +33 -0
  721. package/src/application/ports/file-system.ts +12 -0
  722. package/src/application/ports/logger.ts +16 -0
  723. package/src/application/ports/redocly-config-source.ts +20 -0
  724. package/src/application/ports/schema-loader.ts +32 -0
  725. package/src/application/print/comment-writer.ts +91 -0
  726. package/src/application/print/declaration-printer.ts +100 -0
  727. package/src/application/print/literal-text.ts +62 -0
  728. package/src/application/print/print-nodes.ts +62 -0
  729. package/src/application/print/print-options.ts +11 -0
  730. package/src/application/print/text-writer.ts +83 -0
  731. package/src/application/print/type-printer.ts +287 -0
  732. package/src/application/stack-overflow.ts +54 -0
  733. package/src/application/transform/document/assignability.ts +203 -0
  734. package/src/application/transform/document/components.ts +189 -0
  735. package/src/application/transform/document/declared-types.ts +93 -0
  736. package/src/application/transform/document/defs-root.ts +25 -0
  737. package/src/application/transform/document/document-member.ts +20 -0
  738. package/src/application/transform/document/document.ts +215 -0
  739. package/src/application/transform/document/exploded-query.ts +91 -0
  740. package/src/application/transform/document/global-type-references.ts +78 -0
  741. package/src/application/transform/document/header.ts +34 -0
  742. package/src/application/transform/document/kept-deprecated.ts +135 -0
  743. package/src/application/transform/document/list-assignability.ts +87 -0
  744. package/src/application/transform/document/media-type.ts +78 -0
  745. package/src/application/transform/document/operation.ts +64 -0
  746. package/src/application/transform/document/parameter.ts +45 -0
  747. package/src/application/transform/document/parameters.ts +265 -0
  748. package/src/application/transform/document/path-item.ts +168 -0
  749. package/src/application/transform/document/path-key-overlaps.ts +201 -0
  750. package/src/application/transform/document/path-template-replace.ts +90 -0
  751. package/src/application/transform/document/paths-enum.ts +127 -0
  752. package/src/application/transform/document/paths.ts +273 -0
  753. package/src/application/transform/document/request-body.ts +50 -0
  754. package/src/application/transform/document/response.ts +109 -0
  755. package/src/application/transform/document/responses.ts +29 -0
  756. package/src/application/transform/document/root-type-aliases.ts +107 -0
  757. package/src/application/transform/document/template-key-match.ts +183 -0
  758. package/src/application/transform/document/type-assignability.ts +268 -0
  759. package/src/application/transform/document/type-key.ts +80 -0
  760. package/src/application/transform/document/type-resolution.ts +163 -0
  761. package/src/application/transform/document/webhooks.ts +22 -0
  762. package/src/application/transform/document-entries.ts +28 -0
  763. package/src/application/transform/footer/document-footer.ts +212 -0
  764. package/src/application/transform/footer/enum-naming.ts +210 -0
  765. package/src/application/transform/footer/enum-values-check.ts +171 -0
  766. package/src/application/transform/footer/evaluation.ts +47 -0
  767. package/src/application/transform/footer/shared-enum-names.ts +86 -0
  768. package/src/application/transform/footer/type-evaluation.ts +294 -0
  769. package/src/application/transform/footer/type-rules.ts +269 -0
  770. package/src/application/transform/helper-types.ts +92 -0
  771. package/src/application/transform/literal-type.ts +54 -0
  772. package/src/application/transform/numbered-names.ts +20 -0
  773. package/src/application/transform/ref-pointer/generated-location.ts +211 -0
  774. package/src/application/transform/ref-pointer/generated-shape.ts +275 -0
  775. package/src/application/transform/ref-pointer/inline-cycles.ts +56 -0
  776. package/src/application/transform/ref-pointer/original-index.ts +95 -0
  777. package/src/application/transform/ref-pointer/pointer-type.ts +92 -0
  778. package/src/application/transform/ref-pointer/pointer-walk.ts +96 -0
  779. package/src/application/transform/ref-pointer/typed-walk.ts +192 -0
  780. package/src/application/transform/ref-type.ts +102 -0
  781. package/src/application/transform/schema/access-flags.ts +63 -0
  782. package/src/application/transform/schema/array-type.ts +213 -0
  783. package/src/application/transform/schema/composition-type.ts +255 -0
  784. package/src/application/transform/schema/core-type.ts +119 -0
  785. package/src/application/transform/schema/discriminated-union.ts +58 -0
  786. package/src/application/transform/schema/discriminator-property.ts +33 -0
  787. package/src/application/transform/schema/enum-rule.ts +280 -0
  788. package/src/application/transform/schema/inherited-discriminator.ts +54 -0
  789. package/src/application/transform/schema/object-type.ts +289 -0
  790. package/src/application/transform/schema/presence-members.ts +96 -0
  791. package/src/application/transform/schema/required-variants.ts +88 -0
  792. package/src/application/transform/schema/schema-context.ts +136 -0
  793. package/src/application/transform/schema/schema-rule.ts +29 -0
  794. package/src/application/transform/schema/schema-transform.ts +99 -0
  795. package/src/application/transform/schema/unevaluated-properties.ts +105 -0
  796. package/src/application/transform/schema-comment.ts +196 -0
  797. package/src/application/transform/shared-types.ts +9 -0
  798. package/src/application/transform/transform-context.ts +51 -0
  799. package/src/application/transform/type-combinators.ts +57 -0
  800. package/src/cli/cli-arguments.ts +208 -0
  801. package/src/cli/cli-dependencies.ts +47 -0
  802. package/src/cli/cli-errors.ts +127 -0
  803. package/src/cli/cli-output.ts +67 -0
  804. package/src/cli/docs-links.ts +6 -0
  805. package/src/cli/fix-option.ts +29 -0
  806. package/src/cli/help-text.ts +52 -0
  807. package/src/cli/main.ts +73 -0
  808. package/src/cli/redocly-apis.ts +95 -0
  809. package/src/cli/ref-limits.ts +16 -0
  810. package/src/cli/run-cli.ts +131 -0
  811. package/src/domain/assert-never.ts +8 -0
  812. package/src/domain/errors.ts +76 -0
  813. package/src/domain/ir/constructors.ts +142 -0
  814. package/src/domain/ir/identifier-text.ts +49 -0
  815. package/src/domain/ir/newer-identifier-ranges.ts +109 -0
  816. package/src/domain/ir/nodes.ts +225 -0
  817. package/src/domain/ir/normalize.ts +51 -0
  818. package/src/domain/ir/property-name.ts +28 -0
  819. package/src/domain/ir/raw-text-escapes.ts +37 -0
  820. package/src/domain/openapi/admitted-values.ts +113 -0
  821. package/src/domain/openapi/alias-expansion.ts +72 -0
  822. package/src/domain/openapi/binary-content.ts +74 -0
  823. package/src/domain/openapi/components-object.ts +52 -0
  824. package/src/domain/openapi/discriminated-union.ts +109 -0
  825. package/src/domain/openapi/discriminator-conflicts.ts +251 -0
  826. package/src/domain/openapi/document-object.ts +12 -0
  827. package/src/domain/openapi/header-object.ts +9 -0
  828. package/src/domain/openapi/json-pointer.ts +46 -0
  829. package/src/domain/openapi/media-type-object.ts +26 -0
  830. package/src/domain/openapi/operation-object.ts +13 -0
  831. package/src/domain/openapi/parameter-object.ts +34 -0
  832. package/src/domain/openapi/path-item-object.ts +70 -0
  833. package/src/domain/openapi/path-templates.ts +31 -0
  834. package/src/domain/openapi/request-body-object.ts +7 -0
  835. package/src/domain/openapi/response-object.ts +14 -0
  836. package/src/domain/openapi/schema-object.ts +61 -0
  837. package/src/domain/openapi/unsupported-features.ts +139 -0
  838. package/src/domain/output-fixes.ts +136 -0
  839. package/src/domain/warnings.ts +20 -0
  840. package/src/index.ts +67 -0
  841. package/src/transform/components-object.ts +27 -0
  842. package/src/transform/header-object.ts +19 -0
  843. package/src/transform/media-type-object.ts +19 -0
  844. package/src/transform/operation-object.ts +36 -0
  845. package/src/transform/parameter-object.ts +19 -0
  846. package/src/transform/parameters-array.ts +19 -0
  847. package/src/transform/path-item-object.ts +22 -0
  848. package/src/transform/paths-enum.ts +8 -0
  849. package/src/transform/paths-object.ts +15 -0
  850. package/src/transform/request-body-object.ts +19 -0
  851. package/src/transform/response-object.ts +19 -0
  852. package/src/transform/responses-object.ts +19 -0
  853. package/src/transform/schema-object.ts +36 -0
  854. package/src/transform/webhooks-object.ts +15 -0
  855. package/src/types/generator-options.ts +278 -0
  856. package/src/types/openapi-common.ts +100 -0
  857. package/src/types/openapi-document.ts +196 -0
  858. package/src/types/openapi-path-item.ts +130 -0
  859. package/src/types/openapi-request.ts +209 -0
  860. package/src/types/openapi-response.ts +81 -0
  861. package/src/types/openapi-schema.ts +169 -0
  862. package/src/types/openapi-security.ts +116 -0
  863. package/src/types.ts +12 -0
@@ -0,0 +1,139 @@
1
+ import { createRef, parseRefPointer } from "./json-pointer.js";
2
+ import { QUERYSTRING_LOCATION } from "./parameter-object.js";
3
+ import { type PathItemObject, pathItemOperations } from "./path-item-object.js";
4
+
5
+ /**
6
+ * OpenAPI 3.2 uses that the generated types leave out, so each one gets a warning. The 3.2
7
+ * features are typed (ADR-020); what is left is an `in: querystring` parameter next to
8
+ * `in: query` parameters of the same operation, which 3.2 does not allow: the `query`
9
+ * parameters keep their types and the `querystring` parameter is not in the output.
10
+ */
11
+ export const UnsupportedFeature = {
12
+ QUERYSTRING_NEXT_TO_QUERY: "querystring",
13
+ } as const;
14
+ export type UnsupportedFeature = (typeof UnsupportedFeature)[keyof typeof UnsupportedFeature];
15
+
16
+ /** One place in the document that uses a feature the output leaves out. */
17
+ export interface UnsupportedFeatureUse {
18
+ readonly feature: UnsupportedFeature;
19
+ /** A JSON Pointer to the object that has the feature's key, such as `#/paths/~1items`. */
20
+ readonly pointer: string;
21
+ }
22
+
23
+ const QUERY_LOCATION = "query";
24
+ const LOCAL_REF_PREFIX = "#/";
25
+
26
+ type JsonObject = Readonly<Record<string, unknown>>;
27
+
28
+ function isObject(value: unknown): value is JsonObject {
29
+ return typeof value === "object" && value !== null && !Array.isArray(value);
30
+ }
31
+
32
+ /** The value at a local `$ref` (`#/...`) of the document; null for other or broken `$ref`s. */
33
+ function resolveLocal(document: JsonObject, value: unknown): unknown {
34
+ if (!isObject(value) || typeof value.$ref !== "string") {
35
+ return value;
36
+ }
37
+ if (!value.$ref.startsWith(LOCAL_REF_PREFIX)) {
38
+ return null;
39
+ }
40
+ let node: unknown = document;
41
+ for (const segment of parseRefPointer(value.$ref)) {
42
+ node = isObject(node) || Array.isArray(node) ? (node as JsonObject)[segment] : undefined;
43
+ }
44
+ return node ?? null;
45
+ }
46
+
47
+ /** A parameter where it is written, with the object its `$ref` points to. */
48
+ interface LocatedParameter {
49
+ readonly pointer: string;
50
+ readonly parameter: JsonObject;
51
+ }
52
+
53
+ function locatedParameters(
54
+ document: JsonObject,
55
+ parameters: unknown,
56
+ segments: readonly string[],
57
+ ): LocatedParameter[] {
58
+ if (!Array.isArray(parameters)) {
59
+ return [];
60
+ }
61
+ return parameters.flatMap((entry, index) => {
62
+ const parameter = resolveLocal(document, entry);
63
+ const pointer = createRef([...segments, String(index)]);
64
+ return isObject(parameter) ? [{ pointer, parameter }] : [];
65
+ });
66
+ }
67
+
68
+ /** Path item parameters, then the operation's, which replace those of the same `in` and name. */
69
+ function mergedParameters(
70
+ shared: readonly LocatedParameter[],
71
+ own: readonly LocatedParameter[],
72
+ ): LocatedParameter[] {
73
+ const byKey = new Map<string, LocatedParameter>();
74
+ for (const located of [...shared, ...own]) {
75
+ byKey.set(`${String(located.parameter.in)}-${String(located.parameter.name)}`, located);
76
+ }
77
+ return [...byKey.values()];
78
+ }
79
+
80
+ /** The `querystring` parameters of one operation that has `in: query` parameters as well. */
81
+ function querystringPointers(parameters: readonly LocatedParameter[]): string[] {
82
+ const hasQuery = parameters.some(({ parameter }) => parameter.in === QUERY_LOCATION);
83
+ return hasQuery
84
+ ? parameters
85
+ .filter(({ parameter }) => parameter.in === QUERYSTRING_LOCATION)
86
+ .map(({ pointer }) => pointer)
87
+ : [];
88
+ }
89
+
90
+ /** Pointers of `querystring` parameters next to `query` ones in the operations of a path item. */
91
+ function pathItemPointers(
92
+ document: JsonObject,
93
+ pathItem: JsonObject,
94
+ segments: readonly string[],
95
+ ): string[] {
96
+ const shared = locatedParameters(document, pathItem.parameters, [...segments, "parameters"]);
97
+ return pathItemOperations(pathItem as PathItemObject).flatMap((entry) => {
98
+ const operation = resolveLocal(document, entry.operation);
99
+ if (!isObject(operation)) {
100
+ return [];
101
+ }
102
+ const operationSegments = [...segments, ...entry.segments, "parameters"];
103
+ const own = locatedParameters(document, operation.parameters, operationSegments);
104
+ return querystringPointers(mergedParameters(shared, own));
105
+ });
106
+ }
107
+
108
+ function pathItemsPointers(
109
+ document: JsonObject,
110
+ pathItems: unknown,
111
+ root: readonly string[],
112
+ ): string[] {
113
+ if (!isObject(pathItems)) {
114
+ return [];
115
+ }
116
+ return Object.entries(pathItems).flatMap(([key, pathItem]) =>
117
+ isObject(pathItem) ? pathItemPointers(document, pathItem, [...root, key]) : [],
118
+ );
119
+ }
120
+
121
+ /**
122
+ * Every use of a feature in `UnsupportedFeature`, once per pointer, in document order: `paths`,
123
+ * then `webhooks`, then `components.pathItems`.
124
+ */
125
+ export function findUnsupportedFeatures(document: unknown): UnsupportedFeatureUse[] {
126
+ if (!isObject(document)) {
127
+ return [];
128
+ }
129
+ const components = isObject(document.components) ? document.components : {};
130
+ const pointers = [
131
+ ...pathItemsPointers(document, document.paths, ["paths"]),
132
+ ...pathItemsPointers(document, document.webhooks, ["webhooks"]),
133
+ ...pathItemsPointers(document, components.pathItems, ["components", "pathItems"]),
134
+ ];
135
+ return [...new Set(pointers)].map((pointer) => ({
136
+ feature: UnsupportedFeature.QUERYSTRING_NEXT_TO_QUERY,
137
+ pointer,
138
+ }));
139
+ }
@@ -0,0 +1,136 @@
1
+ import { ERROR_CODES, OpenAPITypesafeError } from "./errors.js";
2
+
3
+ /**
4
+ * Opt-in fixes of the output of valid schemas (ADR-021). Each one changes only the cases it names;
5
+ * without any, the output is the same as openapi-typescript 7.13 gives. In 2.0 they become the
6
+ * default.
7
+ */
8
+ export const OutputFix = {
9
+ /** An `allOf` `$ref` to a discriminated union is the union, without `Omit` or a schema name. */
10
+ ALLOF_DISCRIMINATED_UNION: "allof-discriminated-union",
11
+ /** An `allOf` member with only `required` makes those properties of the others required. */
12
+ ALLOF_REQUIRED: "allof-required",
13
+ /** The JSDoc of a schema lists the descriptions of its `anyOf` and `oneOf` members. */
14
+ ANYOF_ONEOF_DESCRIPTIONS: "anyof-oneof-descriptions",
15
+ /** `anyOf` / `oneOf` variants with only `required` make those keys of the parent required. */
16
+ ANYOF_ONEOF_REQUIRED: "anyof-oneof-required",
17
+ /** `anyOf` next to object keywords or `allOf` is intersected with them, not added to a union. */
18
+ ANYOF_PROPERTIES: "anyof-properties",
19
+ /** `--array-length` tuples have `min` to `max` items, nest right and follow `--immutable`. */
20
+ ARRAY_LENGTH_TUPLES: "array-length-tuples",
21
+ /** `--dedupe-enums` names a shared enum by all of its schemas, not by the first one. */
22
+ DEDUPE_ENUM_NAMES: "dedupe-enum-names",
23
+ /** `required` next to an `allOf` `$ref` to a discriminator member still gives `WithRequired`. */
24
+ DISCRIMINATOR_MEMBER_REQUIRED: "discriminator-member-required",
25
+ /**
26
+ * The value a discriminator member gets: one enum of every discriminator's values, a mapping
27
+ * before the schema name, a schema's own mapping before an inherited one, none where the member
28
+ * declares it, and with `--enum` a member of the owner's enum.
29
+ */
30
+ DISCRIMINATOR_VALUES: "discriminator-values",
31
+ /** An exploded object query parameter's properties are keys of `query`, as they are sent. */
32
+ EXPLODED_QUERY_OBJECTS: "exploded-query-objects",
33
+ /** `--enum` declares an enum that lists `null` without it, and the type adds `| null`. */
34
+ NULLABLE_ENUMS: "nullable-enums",
35
+ /** `--path-params-as-types` gives each `{name}` its placeholder, `{number}` included. */
36
+ PATH_PARAM_TYPE_NAMES: "path-param-type-names",
37
+ /** A `prefixItems` tuple is open unless `items` or `unevaluatedItems` closes it (2020-12). */
38
+ PREFIX_ITEMS: "prefix-items",
39
+ /** `readOnly` and `writeOnly` of the schema a `$ref` names, or of `allOf` members, count. */
40
+ READ_WRITE_REFS: "read-write-refs",
41
+ /**
42
+ * A `$ref` into schema keywords (`content/<type>/schema`, `items`, `allOf/0`) gets the type it
43
+ * points at, also where the original type compiles through an index signature.
44
+ */
45
+ REF_POINTERS: "ref-pointers",
46
+ /** Schemas of one root type name without the prefix each get an alias, the earlier numbered. */
47
+ ROOT_TYPE_NUMBERING: "root-type-numbering",
48
+ /** `unevaluatedProperties` types the keys no other keyword declares (an index signature). */
49
+ UNEVALUATED_PROPERTIES: "unevaluated-properties",
50
+ } as const;
51
+ export type OutputFix = (typeof OutputFix)[keyof typeof OutputFix];
52
+
53
+ /** Every fix of this version, in the order the docs list them. */
54
+ export const OUTPUT_FIXES: readonly OutputFix[] = Object.values(OutputFix);
55
+
56
+ /** The name that turns on every fix of the installed version. */
57
+ export const ALL_OUTPUT_FIXES = "all";
58
+
59
+ /** A name the `fix` option accepts: one fix, or `all`. */
60
+ export type OutputFixName = OutputFix | typeof ALL_OUTPUT_FIXES;
61
+
62
+ const KNOWN_NAMES: ReadonlySet<string> = new Set<string>([...OUTPUT_FIXES, ALL_OUTPUT_FIXES]);
63
+
64
+ function isOutputFixName(value: unknown): value is OutputFixName {
65
+ return typeof value === "string" && KNOWN_NAMES.has(value);
66
+ }
67
+
68
+ /** The fix names as given; fails with `OPTION_FIX_UNKNOWN` for any other value. */
69
+ export function outputFixNamesOf(values: readonly unknown[]): readonly OutputFixName[] {
70
+ const unknown = values.filter((value) => !isOutputFixName(value));
71
+ if (unknown.length > 0) {
72
+ const names = unknown.map((value) => JSON.stringify(value)).join(", ");
73
+ const known = [...KNOWN_NAMES].join(", ");
74
+ throw new OpenAPITypesafeError({
75
+ code: ERROR_CODES.OPTION_FIX_UNKNOWN,
76
+ message: `Unknown fix ${names}. Known fixes: ${known}.`,
77
+ details: { unknown, known: [...KNOWN_NAMES] },
78
+ });
79
+ }
80
+ return values as readonly OutputFixName[];
81
+ }
82
+
83
+ /** The fixes the names turn on; `all` stands for every fix of this version. */
84
+ export function resolveOutputFixes(names: readonly OutputFixName[]): ReadonlySet<OutputFix> {
85
+ return new Set(names.flatMap((name) => (name === ALL_OUTPUT_FIXES ? OUTPUT_FIXES : [name])));
86
+ }
87
+
88
+ /** A generator option that a fix works with; without it, the fix changes nothing (ADR-021). */
89
+ export interface OutputFixRequirement {
90
+ readonly option:
91
+ | "arrayLength"
92
+ | "dedupeEnums"
93
+ | "enum"
94
+ | "pathParamsAsTypes"
95
+ | "rootTypes"
96
+ | "rootTypesNoSchemaPrefix";
97
+ readonly flag: string;
98
+ }
99
+
100
+ const ROOT_TYPES = { option: "rootTypes", flag: "--root-types" } as const;
101
+ const ENUM = { option: "enum", flag: "--enum" } as const;
102
+ const NO_SCHEMA_PREFIX = {
103
+ option: "rootTypesNoSchemaPrefix",
104
+ flag: "--root-types-no-schema-prefix",
105
+ } as const;
106
+
107
+ /** The options each fix needs, by fix name; `all` has none. */
108
+ const REQUIREMENTS: Readonly<Partial<Record<OutputFixName, readonly OutputFixRequirement[]>>> = {
109
+ [OutputFix.ARRAY_LENGTH_TUPLES]: [{ option: "arrayLength", flag: "--array-length" }],
110
+ [OutputFix.DEDUPE_ENUM_NAMES]: [ENUM, { option: "dedupeEnums", flag: "--dedupe-enums" }],
111
+ [OutputFix.NULLABLE_ENUMS]: [ENUM],
112
+ [OutputFix.PATH_PARAM_TYPE_NAMES]: [
113
+ { option: "pathParamsAsTypes", flag: "--path-params-as-types" },
114
+ ],
115
+ [OutputFix.ROOT_TYPE_NUMBERING]: [ROOT_TYPES, NO_SCHEMA_PREFIX],
116
+ };
117
+
118
+ function describeRequirement(requirement: OutputFixRequirement): string {
119
+ return `${requirement.option} (${requirement.flag})`;
120
+ }
121
+
122
+ /**
123
+ * A notice for each fix given by name with an option it needs off; it names the options that are
124
+ * off. `all` adds none: it means every fix that applies, so one that does not apply is expected.
125
+ */
126
+ export function ineffectiveFixNotices(
127
+ names: readonly OutputFixName[],
128
+ isOptionOn: (option: OutputFixRequirement["option"]) => boolean,
129
+ ): string[] {
130
+ return [...new Set(names)].flatMap((name) => {
131
+ const missing = (REQUIREMENTS[name] ?? []).filter(({ option }) => !isOptionOn(option));
132
+ return missing.length === 0
133
+ ? []
134
+ : [`Fix "${name}" has no effect without ${missing.map(describeRequirement).join(" and ")}`];
135
+ });
136
+ }
@@ -0,0 +1,20 @@
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
+ DISCRIMINATOR_VALUE_NOT_ALLOWED: "DISCRIMINATOR_VALUE_NOT_ALLOWED",
10
+ ENUM_VALUES_EXCLUDED: "ENUM_VALUES_EXCLUDED",
11
+ PATH_TEMPLATES_IDENTICAL: "PATH_TEMPLATES_IDENTICAL",
12
+ QUERYSTRING_NEXT_TO_QUERY: "QUERYSTRING_NEXT_TO_QUERY",
13
+ } as const;
14
+
15
+ export type WarningCode = (typeof WARNING_CODES)[keyof typeof WARNING_CODES];
16
+
17
+ /** The warning line for people, with its code at the end. */
18
+ export function warningText(message: string, code: WarningCode): string {
19
+ return `${message} (${code})`;
20
+ }
package/src/index.ts ADDED
@@ -0,0 +1,67 @@
1
+ import openapiTS from "./api/openapi-ts.js";
2
+
3
+ /**
4
+ * The package entry: the public Node API (ENGINEERING_PLAN 4.1, `api/`). `openapiTS` is the default
5
+ * export, as in the original.
6
+ */
7
+
8
+ export * from "./api/ast-to-string.js";
9
+ export { COMMENT_HEADER } from "./api/comment-header.js";
10
+ export { scanDiscriminators } from "./api/discriminator-scan.js";
11
+ export type { FooterEntry } from "./api/footer-entry.js";
12
+ export * from "./api/legacy-ts-helpers.js";
13
+ export * from "./api/legacy-utils.js";
14
+ export * from "./api/string-to-ast.js";
15
+ export { default as transformSchema } from "./api/transform-schema.js";
16
+ export {
17
+ BOOLEAN,
18
+ FALSE,
19
+ NEVER,
20
+ NULL,
21
+ NUMBER,
22
+ type OapiRefOptions,
23
+ oapiRef,
24
+ STRING,
25
+ TRUE,
26
+ type TypeInput,
27
+ tsIntersection,
28
+ tsLiteral,
29
+ tsNullable,
30
+ tsOmit,
31
+ tsRecord,
32
+ tsUnion,
33
+ tsWithRequired,
34
+ UNDEFINED,
35
+ UNKNOWN,
36
+ } from "./api/type-helpers.js";
37
+ export {
38
+ ERROR_CODES,
39
+ type ErrorCode,
40
+ type ErrorDetails,
41
+ isOpenAPITypesafeError,
42
+ OpenAPITypesafeError,
43
+ } from "./domain/errors.js";
44
+ export type * from "./domain/ir/nodes.js";
45
+ export {
46
+ ALL_OUTPUT_FIXES,
47
+ OUTPUT_FIXES,
48
+ OutputFix,
49
+ type OutputFixName,
50
+ } from "./domain/output-fixes.js";
51
+ export { default as transformComponentsObject } from "./transform/components-object.js";
52
+ export { default as transformHeaderObject } from "./transform/header-object.js";
53
+ export { default as transformMediaTypeObject } from "./transform/media-type-object.js";
54
+ export * from "./transform/operation-object.js";
55
+ export { default as transformOperationObject } from "./transform/operation-object.js";
56
+ export { default as transformParameterObject } from "./transform/parameter-object.js";
57
+ export * from "./transform/path-item-object.js";
58
+ export { default as transformPathItemObject } from "./transform/path-item-object.js";
59
+ export { default as transformPathsObject } from "./transform/paths-object.js";
60
+ export { default as transformRequestBodyObject } from "./transform/request-body-object.js";
61
+ export { default as transformResponseObject } from "./transform/response-object.js";
62
+ export { default as transformResponsesObject } from "./transform/responses-object.js";
63
+ export * from "./transform/schema-object.js";
64
+ export { default as transformSchemaObject } from "./transform/schema-object.js";
65
+ export * from "./types.js";
66
+
67
+ export default openapiTS;
@@ -0,0 +1,27 @@
1
+ import { createTransformContext } from "../api/transform-context.js";
2
+ import { componentsType } from "../application/transform/document/components.js";
3
+ import { renameTakenAliases } from "../application/transform/document/root-type-aliases.js";
4
+ import type { IrType, IrTypeAliasDeclaration } from "../domain/ir/nodes.js";
5
+ import { isEnumSchema, singularizeComponentKind } from "../domain/openapi/components-object.js";
6
+ import type { ComponentsObject, GlobalContext } from "../types.js";
7
+
8
+ export { isEnumSchema };
9
+
10
+ /** `requestBodies` → `requestBody`; other keys drop the final `s`. */
11
+ export const singularizeComponentKey = singularizeComponentKind;
12
+
13
+ /**
14
+ * Transform the ComponentsObject (4.8.7)
15
+ * @see https://spec.openapis.org/oas/latest.html#components-object
16
+ *
17
+ * Ported to IR (ENGINEERING_PLAN Phase 5, step 6). Same name and parameters as the original;
18
+ * returns IR (task 6.2). For the public API: the `components` type, then the root type aliases.
19
+ */
20
+ export default function transformComponentsObject(
21
+ componentsObject: ComponentsObject,
22
+ ctx: GlobalContext,
23
+ ): (IrType | IrTypeAliasDeclaration)[] {
24
+ const { type, rootTypes } = componentsType(componentsObject, createTransformContext(ctx));
25
+ // No footer here: only the aliases the `root-type-numbering` fix keeps get numbers.
26
+ return [type, ...renameTakenAliases(rootTypes, [])];
27
+ }
@@ -0,0 +1,19 @@
1
+ import { createTransformContext, schemaLocation } from "../api/transform-context.js";
2
+ import { headerType } from "../application/transform/document/header.js";
3
+ import type { IrType } from "../domain/ir/nodes.js";
4
+ import type { HeaderObject, TransformNodeOptions } from "../types.js";
5
+
6
+ /**
7
+ * Transform HeaderObject nodes (4.8.21)
8
+ * @see https://spec.openapis.org/oas/v3.1.0#header-object
9
+ *
10
+ * Ported to IR (ENGINEERING_PLAN Phase 5, step 3). Same name and parameters as the original;
11
+ * returns IR (task 6.2). For the public API and for users who call it from callbacks.
12
+ */
13
+ export default function transformHeaderObject(
14
+ headerObject: HeaderObject,
15
+ options: TransformNodeOptions,
16
+ ): IrType {
17
+ const context = createTransformContext(options.ctx);
18
+ return headerType(headerObject, schemaLocation(options), context);
19
+ }
@@ -0,0 +1,19 @@
1
+ import { createTransformContext, schemaLocation } from "../api/transform-context.js";
2
+ import { mediaTypeType } from "../application/transform/document/media-type.js";
3
+ import type { IrType } from "../domain/ir/nodes.js";
4
+ import type { MediaTypeObject, TransformNodeOptions } from "../types.js";
5
+
6
+ /**
7
+ * Transform MediaTypeObject nodes (4.8.14)
8
+ * @see https://spec.openapis.org/oas/v3.1.0#media-type-object
9
+ *
10
+ * Ported to IR (ENGINEERING_PLAN Phase 5, step 3). Same name and parameters as the original;
11
+ * returns IR (task 6.2). For the public API and for users who call it from callbacks.
12
+ */
13
+ export default function transformMediaTypeObject(
14
+ mediaTypeObject: MediaTypeObject,
15
+ options: TransformNodeOptions,
16
+ ): IrType {
17
+ const context = createTransformContext(options.ctx);
18
+ return mediaTypeType(mediaTypeObject, schemaLocation(options), context);
19
+ }
@@ -0,0 +1,36 @@
1
+ import { createTransformContext, schemaLocation } from "../api/transform-context.js";
2
+ import { operationMembers } from "../application/transform/document/operation.js";
3
+ import { irObject, irProperty } from "../domain/ir/constructors.js";
4
+ import type { IrMember } from "../domain/ir/nodes.js";
5
+ import { toPropertyName } from "../domain/ir/property-name.js";
6
+ import type { OperationObject, TransformNodeOptions } from "../types.js";
7
+
8
+ /**
9
+ * Transform OperationObject nodes (4.8.10)
10
+ * @see https://spec.openapis.org/oas/v3.1.0#operation-object
11
+ *
12
+ * Ported to IR (ENGINEERING_PLAN Phase 5, step 5). Same name and parameters as the original;
13
+ * returns IR (task 6.2). For the public API and for users who call it from callbacks.
14
+ */
15
+ export default function transformOperationObject(
16
+ operationObject: OperationObject,
17
+ options: TransformNodeOptions,
18
+ ): IrMember[] {
19
+ const context = createTransformContext(options.ctx);
20
+ return operationMembers(operationObject, schemaLocation(options), context);
21
+ }
22
+
23
+ /** inject an operation at the top level */
24
+ export function injectOperationObject(
25
+ operationId: string,
26
+ operationObject: OperationObject,
27
+ options: TransformNodeOptions,
28
+ ): void {
29
+ const context = createTransformContext(options.ctx);
30
+ context.footer.addOperation(() => {
31
+ const members = operationMembers(operationObject, schemaLocation(options), context);
32
+ return irProperty(toPropertyName(operationId), irObject(members), {
33
+ isReadonly: options.ctx.immutable,
34
+ });
35
+ });
36
+ }
@@ -0,0 +1,19 @@
1
+ import { createTransformContext, schemaLocation } from "../api/transform-context.js";
2
+ import { parameterType } from "../application/transform/document/parameter.js";
3
+ import type { IrType } from "../domain/ir/nodes.js";
4
+ import type { ParameterObject, TransformNodeOptions } from "../types.js";
5
+
6
+ /**
7
+ * Transform ParameterObject nodes (4.8.12)
8
+ * @see https://spec.openapis.org/oas/v3.1.0#parameter-object
9
+ *
10
+ * Ported to IR (ENGINEERING_PLAN Phase 5, step 3). Same name and parameters as the original;
11
+ * returns IR (task 6.2). For the public API and for users who call it from callbacks.
12
+ */
13
+ export default function transformParameterObject(
14
+ parameterObject: ParameterObject,
15
+ options: TransformNodeOptions,
16
+ ): IrType {
17
+ const context = createTransformContext(options.ctx);
18
+ return parameterType(parameterObject, schemaLocation(options), context);
19
+ }
@@ -0,0 +1,19 @@
1
+ import { createTransformContext, schemaLocation } from "../api/transform-context.js";
2
+ import { parametersMember } from "../application/transform/document/parameters.js";
3
+ import type { IrMember } from "../domain/ir/nodes.js";
4
+ import type { ParameterObject, ReferenceObject, TransformNodeOptions } from "../types.js";
5
+
6
+ /**
7
+ * Synthetic type. Array of (ParameterObject | ReferenceObject)s found in OperationObject and
8
+ * PathItemObject.
9
+ *
10
+ * Ported to IR (ENGINEERING_PLAN Phase 5, step 3). Same name and parameters as the original;
11
+ * returns IR (task 6.2). For the deep imports of this module.
12
+ */
13
+ export function transformParametersArray(
14
+ parametersArray: (ParameterObject | ReferenceObject)[],
15
+ options: TransformNodeOptions,
16
+ ): IrMember[] {
17
+ const context = createTransformContext(options.ctx);
18
+ return [parametersMember(parametersArray, schemaLocation(options), context)];
19
+ }
@@ -0,0 +1,22 @@
1
+ import { createTransformContext, schemaLocation } from "../api/transform-context.js";
2
+ import { pathItemType } from "../application/transform/document/path-item.js";
3
+ import type { IrType } from "../domain/ir/nodes.js";
4
+ import type { HttpMethod } from "../domain/openapi/path-item-object.js";
5
+ import type { PathItemObject, TransformNodeOptions } from "../types.js";
6
+
7
+ export type Method = HttpMethod;
8
+
9
+ /**
10
+ * Transform PathItem nodes (4.8.9)
11
+ * @see https://spec.openapis.org/oas/v3.1.0#path-item-object
12
+ *
13
+ * Ported to IR (ENGINEERING_PLAN Phase 5, step 5). Same name and parameters as the original;
14
+ * returns IR (task 6.2). For the public API and for users who call it from callbacks.
15
+ */
16
+ export default function transformPathItemObject(
17
+ pathItem: PathItemObject,
18
+ options: TransformNodeOptions,
19
+ ): IrType {
20
+ const context = createTransformContext(options.ctx);
21
+ return pathItemType(pathItem, schemaLocation(options), context);
22
+ }
@@ -0,0 +1,8 @@
1
+ import { apiPathsEnumDeclaration } from "../application/transform/document/paths-enum.js";
2
+ import type { IrEnumDeclaration } from "../domain/ir/nodes.js";
3
+ import type { PathsObject } from "../types.js";
4
+
5
+ /** The `ApiPaths` enum (`--make-paths-enum`), built in IR (ENGINEERING_PLAN Phase 5, step 6). */
6
+ export default function makeApiPathsEnum(pathsObject: PathsObject): IrEnumDeclaration {
7
+ return apiPathsEnumDeclaration(pathsObject);
8
+ }
@@ -0,0 +1,15 @@
1
+ import { createTransformContext } from "../api/transform-context.js";
2
+ import { pathsType } from "../application/transform/document/paths.js";
3
+ import type { IrType } from "../domain/ir/nodes.js";
4
+ import type { GlobalContext, PathsObject } from "../types.js";
5
+
6
+ /**
7
+ * Transform the PathsObject node (4.8.8)
8
+ * @see https://spec.openapis.org/oas/v3.1.0#operation-object
9
+ *
10
+ * Ported to IR (ENGINEERING_PLAN Phase 5, step 5). Same name and parameters as the original;
11
+ * returns IR (task 6.2). For the public API and for users who call it from callbacks.
12
+ */
13
+ export default function transformPathsObject(pathsObject: PathsObject, ctx: GlobalContext): IrType {
14
+ return pathsType(pathsObject, createTransformContext(ctx));
15
+ }
@@ -0,0 +1,19 @@
1
+ import { createTransformContext, schemaLocation } from "../api/transform-context.js";
2
+ import { requestBodyType } from "../application/transform/document/request-body.js";
3
+ import type { IrType } from "../domain/ir/nodes.js";
4
+ import type { RequestBodyObject, TransformNodeOptions } from "../types.js";
5
+
6
+ /**
7
+ * Transform RequestBodyObject nodes (4.8.13)
8
+ * @see https://spec.openapis.org/oas/v3.1.0#request-body-object
9
+ *
10
+ * Ported to IR (ENGINEERING_PLAN Phase 5, step 4). Same name and parameters as the original;
11
+ * returns IR (task 6.2). For the public API and for users who call it from callbacks.
12
+ */
13
+ export default function transformRequestBodyObject(
14
+ requestBodyObject: RequestBodyObject,
15
+ options: TransformNodeOptions,
16
+ ): IrType {
17
+ const context = createTransformContext(options.ctx);
18
+ return requestBodyType(requestBodyObject, schemaLocation(options), context);
19
+ }
@@ -0,0 +1,19 @@
1
+ import { createTransformContext, schemaLocation } from "../api/transform-context.js";
2
+ import { responseType } from "../application/transform/document/response.js";
3
+ import type { IrType } from "../domain/ir/nodes.js";
4
+ import type { ResponseObject, TransformNodeOptions } from "../types.js";
5
+
6
+ /**
7
+ * Transform ResponseObject nodes (4.8.17)
8
+ * @see https://spec.openapis.org/oas/v3.1.0#response-object
9
+ *
10
+ * Ported to IR (ENGINEERING_PLAN Phase 5, step 4). Same name and parameters as the original;
11
+ * returns IR (task 6.2). For the public API and for users who call it from callbacks.
12
+ */
13
+ export default function transformResponseObject(
14
+ responseObject: ResponseObject,
15
+ options: TransformNodeOptions,
16
+ ): IrType {
17
+ const context = createTransformContext(options.ctx);
18
+ return responseType(responseObject, schemaLocation(options), context);
19
+ }
@@ -0,0 +1,19 @@
1
+ import { createTransformContext, schemaLocation } from "../api/transform-context.js";
2
+ import { responsesType } from "../application/transform/document/responses.js";
3
+ import type { IrType } from "../domain/ir/nodes.js";
4
+ import type { ResponsesObject, TransformNodeOptions } from "../types.js";
5
+
6
+ /**
7
+ * Transform ResponsesObject nodes (4.8.16)
8
+ * @see https://spec.openapis.org/oas/v3.1.0#responses-object
9
+ *
10
+ * Ported to IR (ENGINEERING_PLAN Phase 5, step 4). Same name and parameters as the original;
11
+ * returns IR (task 6.2). For the public API and for users who call it from callbacks.
12
+ */
13
+ export default function transformResponsesObject(
14
+ responsesObject: ResponsesObject,
15
+ options: TransformNodeOptions,
16
+ ): IrType {
17
+ const context = createTransformContext(options.ctx);
18
+ return responsesType(responsesObject, schemaLocation(options), context);
19
+ }
@@ -0,0 +1,36 @@
1
+ import { createTransformContext, schemaLocation } from "../api/transform-context.js";
2
+ import {
3
+ transformSchema,
4
+ transformSchemaShape,
5
+ } from "../application/transform/schema/schema-transform.js";
6
+ import type { IrType } from "../domain/ir/nodes.js";
7
+ import type { ReferenceObject, SchemaObject, TransformNodeOptions } from "../types.js";
8
+
9
+ /**
10
+ * Transform SchemaObject nodes (4.8.24)
11
+ * @see https://spec.openapis.org/oas/v3.1.0#schema-object
12
+ *
13
+ * Ported to IR (ENGINEERING_PLAN Phase 5, step 2): the work happens in
14
+ * `application/transform/schema`; this keeps the original name and parameters, returning IR
15
+ * (task 6.2), for the public API and for users who call it from callbacks.
16
+ */
17
+ export default function transformSchemaObject(
18
+ schemaObject: SchemaObject | ReferenceObject,
19
+ options: TransformNodeOptions,
20
+ fromAdditionalProperties = false,
21
+ ): IrType {
22
+ const context = createTransformContext(options.ctx);
23
+ const location = schemaLocation(options);
24
+ return transformSchema(schemaObject, location, context, fromAdditionalProperties);
25
+ }
26
+
27
+ /** Transform SchemaObjects without the `postTransform` callback at the top level. */
28
+ export function transformSchemaObjectWithComposition(
29
+ schemaObject: SchemaObject | ReferenceObject,
30
+ options: TransformNodeOptions,
31
+ fromAdditionalProperties = false,
32
+ ): IrType {
33
+ const context = createTransformContext(options.ctx);
34
+ const location = schemaLocation(options);
35
+ return transformSchemaShape(schemaObject, location, context, fromAdditionalProperties);
36
+ }