openapi-typesafe 0.0.0 → 1.0.0-rc.0

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 (678) 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 +42 -0
  25. package/dist/adapters/redocly-loader/redocly-config-source.cjs.map +1 -0
  26. package/dist/adapters/redocly-loader/redocly-config-source.mjs +35 -0
  27. package/dist/adapters/redocly-loader/redocly-config-source.mjs.map +1 -0
  28. package/dist/adapters/redocly-loader/redocly-schema-loader.cjs +169 -0
  29. package/dist/adapters/redocly-loader/redocly-schema-loader.cjs.map +1 -0
  30. package/dist/adapters/redocly-loader/redocly-schema-loader.mjs +167 -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 +145 -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 +139 -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 +204 -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 +201 -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-enum.cjs +44 -0
  105. package/dist/api/discriminator-enum.cjs.map +1 -0
  106. package/dist/api/discriminator-enum.mjs +42 -0
  107. package/dist/api/discriminator-enum.mjs.map +1 -0
  108. package/dist/api/discriminator-scan.cjs +168 -0
  109. package/dist/api/discriminator-scan.cjs.map +1 -0
  110. package/dist/api/discriminator-scan.mjs +165 -0
  111. package/dist/api/discriminator-scan.mjs.map +1 -0
  112. package/dist/api/document-declarations.cjs +28 -0
  113. package/dist/api/document-declarations.cjs.map +1 -0
  114. package/dist/api/document-declarations.mjs +26 -0
  115. package/dist/api/document-declarations.mjs.map +1 -0
  116. package/dist/api/document-refs.cjs +53 -0
  117. package/dist/api/document-refs.cjs.map +1 -0
  118. package/dist/api/document-refs.mjs +50 -0
  119. package/dist/api/document-refs.mjs.map +1 -0
  120. package/dist/api/document-run.cjs +107 -0
  121. package/dist/api/document-run.cjs.map +1 -0
  122. package/dist/api/document-run.mjs +101 -0
  123. package/dist/api/document-run.mjs.map +1 -0
  124. package/dist/api/footer-entry.cjs +18 -0
  125. package/dist/api/footer-entry.cjs.map +1 -0
  126. package/dist/api/footer-entry.mjs +15 -0
  127. package/dist/api/footer-entry.mjs.map +1 -0
  128. package/dist/api/footer-sink.cjs +53 -0
  129. package/dist/api/footer-sink.cjs.map +1 -0
  130. package/dist/api/footer-sink.mjs +51 -0
  131. package/dist/api/footer-sink.mjs.map +1 -0
  132. package/dist/api/legacy-callback-warning.cjs +25 -0
  133. package/dist/api/legacy-callback-warning.cjs.map +1 -0
  134. package/dist/api/legacy-callback-warning.mjs +22 -0
  135. package/dist/api/legacy-callback-warning.mjs.map +1 -0
  136. package/dist/api/legacy-ts-helpers.cjs +203 -0
  137. package/dist/api/legacy-ts-helpers.cjs.map +1 -0
  138. package/dist/api/legacy-ts-helpers.mjs +187 -0
  139. package/dist/api/legacy-ts-helpers.mjs.map +1 -0
  140. package/dist/api/legacy-utils.cjs +65 -0
  141. package/dist/api/legacy-utils.cjs.map +1 -0
  142. package/dist/api/legacy-utils.mjs +50 -0
  143. package/dist/api/legacy-utils.mjs.map +1 -0
  144. package/dist/api/openapi-ts.cjs +40 -0
  145. package/dist/api/openapi-ts.cjs.map +1 -0
  146. package/dist/api/openapi-ts.mjs +34 -0
  147. package/dist/api/openapi-ts.mjs.map +1 -0
  148. package/dist/api/schema-callbacks.cjs +140 -0
  149. package/dist/api/schema-callbacks.cjs.map +1 -0
  150. package/dist/api/schema-callbacks.mjs +136 -0
  151. package/dist/api/schema-callbacks.mjs.map +1 -0
  152. package/dist/api/string-to-ast.cjs +21 -0
  153. package/dist/api/string-to-ast.cjs.map +1 -0
  154. package/dist/api/string-to-ast.mjs +18 -0
  155. package/dist/api/string-to-ast.mjs.map +1 -0
  156. package/dist/api/transform-context.cjs +82 -0
  157. package/dist/api/transform-context.cjs.map +1 -0
  158. package/dist/api/transform-context.mjs +65 -0
  159. package/dist/api/transform-context.mjs.map +1 -0
  160. package/dist/api/transform-schema.cjs +31 -0
  161. package/dist/api/transform-schema.cjs.map +1 -0
  162. package/dist/api/transform-schema.mjs +26 -0
  163. package/dist/api/transform-schema.mjs.map +1 -0
  164. package/dist/api/type-helpers.cjs +85 -0
  165. package/dist/api/type-helpers.cjs.map +1 -0
  166. package/dist/api/type-helpers.mjs +66 -0
  167. package/dist/api/type-helpers.mjs.map +1 -0
  168. package/dist/api/unsupported-feature-warnings.cjs +17 -0
  169. package/dist/api/unsupported-feature-warnings.cjs.map +1 -0
  170. package/dist/api/unsupported-feature-warnings.mjs +15 -0
  171. package/dist/api/unsupported-feature-warnings.mjs.map +1 -0
  172. package/dist/application/print/comment-writer.cjs +95 -0
  173. package/dist/application/print/comment-writer.cjs.map +1 -0
  174. package/dist/application/print/comment-writer.mjs +93 -0
  175. package/dist/application/print/comment-writer.mjs.map +1 -0
  176. package/dist/application/print/declaration-printer.cjs +83 -0
  177. package/dist/application/print/declaration-printer.cjs.map +1 -0
  178. package/dist/application/print/declaration-printer.mjs +81 -0
  179. package/dist/application/print/declaration-printer.mjs.map +1 -0
  180. package/dist/application/print/literal-text.cjs +52 -0
  181. package/dist/application/print/literal-text.cjs.map +1 -0
  182. package/dist/application/print/literal-text.mjs +48 -0
  183. package/dist/application/print/literal-text.mjs.map +1 -0
  184. package/dist/application/print/print-nodes.cjs +38 -0
  185. package/dist/application/print/print-nodes.cjs.map +1 -0
  186. package/dist/application/print/print-nodes.mjs +36 -0
  187. package/dist/application/print/print-nodes.mjs.map +1 -0
  188. package/dist/application/print/print-options.cjs +6 -0
  189. package/dist/application/print/print-options.cjs.map +1 -0
  190. package/dist/application/print/print-options.mjs +4 -0
  191. package/dist/application/print/print-options.mjs.map +1 -0
  192. package/dist/application/print/text-writer.cjs +63 -0
  193. package/dist/application/print/text-writer.cjs.map +1 -0
  194. package/dist/application/print/text-writer.mjs +60 -0
  195. package/dist/application/print/text-writer.mjs.map +1 -0
  196. package/dist/application/print/type-printer.cjs +214 -0
  197. package/dist/application/print/type-printer.cjs.map +1 -0
  198. package/dist/application/print/type-printer.mjs +210 -0
  199. package/dist/application/print/type-printer.mjs.map +1 -0
  200. package/dist/application/stack-overflow.cjs +36 -0
  201. package/dist/application/stack-overflow.cjs.map +1 -0
  202. package/dist/application/stack-overflow.mjs +31 -0
  203. package/dist/application/stack-overflow.mjs.map +1 -0
  204. package/dist/application/transform/document/components.cjs +104 -0
  205. package/dist/application/transform/document/components.cjs.map +1 -0
  206. package/dist/application/transform/document/components.mjs +102 -0
  207. package/dist/application/transform/document/components.mjs.map +1 -0
  208. package/dist/application/transform/document/defs-root.cjs +18 -0
  209. package/dist/application/transform/document/defs-root.cjs.map +1 -0
  210. package/dist/application/transform/document/defs-root.mjs +16 -0
  211. package/dist/application/transform/document/defs-root.mjs.map +1 -0
  212. package/dist/application/transform/document/document-member.cjs +13 -0
  213. package/dist/application/transform/document/document-member.cjs.map +1 -0
  214. package/dist/application/transform/document/document-member.mjs +11 -0
  215. package/dist/application/transform/document/document-member.mjs.map +1 -0
  216. package/dist/application/transform/document/document.cjs +86 -0
  217. package/dist/application/transform/document/document.cjs.map +1 -0
  218. package/dist/application/transform/document/document.mjs +83 -0
  219. package/dist/application/transform/document/document.mjs.map +1 -0
  220. package/dist/application/transform/document/header.cjs +27 -0
  221. package/dist/application/transform/document/header.cjs.map +1 -0
  222. package/dist/application/transform/document/header.mjs +25 -0
  223. package/dist/application/transform/document/header.mjs.map +1 -0
  224. package/dist/application/transform/document/kept-deprecated.cjs +96 -0
  225. package/dist/application/transform/document/kept-deprecated.cjs.map +1 -0
  226. package/dist/application/transform/document/kept-deprecated.mjs +94 -0
  227. package/dist/application/transform/document/kept-deprecated.mjs.map +1 -0
  228. package/dist/application/transform/document/media-type.cjs +42 -0
  229. package/dist/application/transform/document/media-type.cjs.map +1 -0
  230. package/dist/application/transform/document/media-type.mjs +38 -0
  231. package/dist/application/transform/document/media-type.mjs.map +1 -0
  232. package/dist/application/transform/document/operation.cjs +45 -0
  233. package/dist/application/transform/document/operation.cjs.map +1 -0
  234. package/dist/application/transform/document/operation.mjs +43 -0
  235. package/dist/application/transform/document/operation.mjs.map +1 -0
  236. package/dist/application/transform/document/parameter.cjs +25 -0
  237. package/dist/application/transform/document/parameter.cjs.map +1 -0
  238. package/dist/application/transform/document/parameter.mjs +23 -0
  239. package/dist/application/transform/document/parameter.mjs.map +1 -0
  240. package/dist/application/transform/document/parameters.cjs +114 -0
  241. package/dist/application/transform/document/parameters.cjs.map +1 -0
  242. package/dist/application/transform/document/parameters.mjs +112 -0
  243. package/dist/application/transform/document/parameters.mjs.map +1 -0
  244. package/dist/application/transform/document/path-item-conflicts.cjs +51 -0
  245. package/dist/application/transform/document/path-item-conflicts.cjs.map +1 -0
  246. package/dist/application/transform/document/path-item-conflicts.mjs +49 -0
  247. package/dist/application/transform/document/path-item-conflicts.mjs.map +1 -0
  248. package/dist/application/transform/document/path-item.cjs +82 -0
  249. package/dist/application/transform/document/path-item.cjs.map +1 -0
  250. package/dist/application/transform/document/path-item.mjs +80 -0
  251. package/dist/application/transform/document/path-item.mjs.map +1 -0
  252. package/dist/application/transform/document/path-key-overlaps.cjs +57 -0
  253. package/dist/application/transform/document/path-key-overlaps.cjs.map +1 -0
  254. package/dist/application/transform/document/path-key-overlaps.mjs +55 -0
  255. package/dist/application/transform/document/path-key-overlaps.mjs.map +1 -0
  256. package/dist/application/transform/document/paths-enum.cjs +75 -0
  257. package/dist/application/transform/document/paths-enum.cjs.map +1 -0
  258. package/dist/application/transform/document/paths-enum.mjs +72 -0
  259. package/dist/application/transform/document/paths-enum.mjs.map +1 -0
  260. package/dist/application/transform/document/paths.cjs +127 -0
  261. package/dist/application/transform/document/paths.cjs.map +1 -0
  262. package/dist/application/transform/document/paths.mjs +125 -0
  263. package/dist/application/transform/document/paths.mjs.map +1 -0
  264. package/dist/application/transform/document/request-body.cjs +36 -0
  265. package/dist/application/transform/document/request-body.cjs.map +1 -0
  266. package/dist/application/transform/document/request-body.mjs +34 -0
  267. package/dist/application/transform/document/request-body.mjs.map +1 -0
  268. package/dist/application/transform/document/response.cjs +59 -0
  269. package/dist/application/transform/document/response.cjs.map +1 -0
  270. package/dist/application/transform/document/response.mjs +57 -0
  271. package/dist/application/transform/document/response.mjs.map +1 -0
  272. package/dist/application/transform/document/responses.cjs +23 -0
  273. package/dist/application/transform/document/responses.cjs.map +1 -0
  274. package/dist/application/transform/document/responses.mjs +21 -0
  275. package/dist/application/transform/document/responses.mjs.map +1 -0
  276. package/dist/application/transform/document/root-type-aliases.cjs +69 -0
  277. package/dist/application/transform/document/root-type-aliases.cjs.map +1 -0
  278. package/dist/application/transform/document/root-type-aliases.mjs +65 -0
  279. package/dist/application/transform/document/root-type-aliases.mjs.map +1 -0
  280. package/dist/application/transform/document/webhooks.cjs +19 -0
  281. package/dist/application/transform/document/webhooks.cjs.map +1 -0
  282. package/dist/application/transform/document/webhooks.mjs +17 -0
  283. package/dist/application/transform/document/webhooks.mjs.map +1 -0
  284. package/dist/application/transform/document-entries.cjs +17 -0
  285. package/dist/application/transform/document-entries.cjs.map +1 -0
  286. package/dist/application/transform/document-entries.mjs +14 -0
  287. package/dist/application/transform/document-entries.mjs.map +1 -0
  288. package/dist/application/transform/footer/document-footer.cjs +88 -0
  289. package/dist/application/transform/footer/document-footer.cjs.map +1 -0
  290. package/dist/application/transform/footer/document-footer.mjs +86 -0
  291. package/dist/application/transform/footer/document-footer.mjs.map +1 -0
  292. package/dist/application/transform/footer/enum-naming.cjs +121 -0
  293. package/dist/application/transform/footer/enum-naming.cjs.map +1 -0
  294. package/dist/application/transform/footer/enum-naming.mjs +115 -0
  295. package/dist/application/transform/footer/enum-naming.mjs.map +1 -0
  296. package/dist/application/transform/helper-types.cjs +68 -0
  297. package/dist/application/transform/helper-types.cjs.map +1 -0
  298. package/dist/application/transform/helper-types.mjs +65 -0
  299. package/dist/application/transform/helper-types.mjs.map +1 -0
  300. package/dist/application/transform/literal-type.cjs +36 -0
  301. package/dist/application/transform/literal-type.cjs.map +1 -0
  302. package/dist/application/transform/literal-type.mjs +34 -0
  303. package/dist/application/transform/literal-type.mjs.map +1 -0
  304. package/dist/application/transform/numbered-names.cjs +18 -0
  305. package/dist/application/transform/numbered-names.cjs.map +1 -0
  306. package/dist/application/transform/numbered-names.mjs +16 -0
  307. package/dist/application/transform/numbered-names.mjs.map +1 -0
  308. package/dist/application/transform/ref-type.cjs +57 -0
  309. package/dist/application/transform/ref-type.cjs.map +1 -0
  310. package/dist/application/transform/ref-type.mjs +54 -0
  311. package/dist/application/transform/ref-type.mjs.map +1 -0
  312. package/dist/application/transform/schema/array-type.cjs +105 -0
  313. package/dist/application/transform/schema/array-type.cjs.map +1 -0
  314. package/dist/application/transform/schema/array-type.mjs +103 -0
  315. package/dist/application/transform/schema/array-type.mjs.map +1 -0
  316. package/dist/application/transform/schema/composition-type.cjs +107 -0
  317. package/dist/application/transform/schema/composition-type.cjs.map +1 -0
  318. package/dist/application/transform/schema/composition-type.mjs +105 -0
  319. package/dist/application/transform/schema/composition-type.mjs.map +1 -0
  320. package/dist/application/transform/schema/core-type.cjs +84 -0
  321. package/dist/application/transform/schema/core-type.cjs.map +1 -0
  322. package/dist/application/transform/schema/core-type.mjs +82 -0
  323. package/dist/application/transform/schema/core-type.mjs.map +1 -0
  324. package/dist/application/transform/schema/discriminator-property.cjs +21 -0
  325. package/dist/application/transform/schema/discriminator-property.cjs.map +1 -0
  326. package/dist/application/transform/schema/discriminator-property.mjs +19 -0
  327. package/dist/application/transform/schema/discriminator-property.mjs.map +1 -0
  328. package/dist/application/transform/schema/enum-rule.cjs +107 -0
  329. package/dist/application/transform/schema/enum-rule.cjs.map +1 -0
  330. package/dist/application/transform/schema/enum-rule.mjs +105 -0
  331. package/dist/application/transform/schema/enum-rule.mjs.map +1 -0
  332. package/dist/application/transform/schema/object-type.cjs +173 -0
  333. package/dist/application/transform/schema/object-type.cjs.map +1 -0
  334. package/dist/application/transform/schema/object-type.mjs +170 -0
  335. package/dist/application/transform/schema/object-type.mjs.map +1 -0
  336. package/dist/application/transform/schema/presence-members.cjs +59 -0
  337. package/dist/application/transform/schema/presence-members.cjs.map +1 -0
  338. package/dist/application/transform/schema/presence-members.mjs +57 -0
  339. package/dist/application/transform/schema/presence-members.mjs.map +1 -0
  340. package/dist/application/transform/schema/schema-transform.cjs +72 -0
  341. package/dist/application/transform/schema/schema-transform.cjs.map +1 -0
  342. package/dist/application/transform/schema/schema-transform.mjs +68 -0
  343. package/dist/application/transform/schema/schema-transform.mjs.map +1 -0
  344. package/dist/application/transform/schema/unevaluated-properties.cjs +61 -0
  345. package/dist/application/transform/schema/unevaluated-properties.cjs.map +1 -0
  346. package/dist/application/transform/schema/unevaluated-properties.mjs +59 -0
  347. package/dist/application/transform/schema/unevaluated-properties.mjs.map +1 -0
  348. package/dist/application/transform/schema-comment.cjs +84 -0
  349. package/dist/application/transform/schema-comment.cjs.map +1 -0
  350. package/dist/application/transform/schema-comment.mjs +81 -0
  351. package/dist/application/transform/schema-comment.mjs.map +1 -0
  352. package/dist/application/transform/shared-types.cjs +8 -0
  353. package/dist/application/transform/shared-types.cjs.map +1 -0
  354. package/dist/application/transform/shared-types.mjs +6 -0
  355. package/dist/application/transform/shared-types.mjs.map +1 -0
  356. package/dist/application/transform/type-combinators.cjs +49 -0
  357. package/dist/application/transform/type-combinators.cjs.map +1 -0
  358. package/dist/application/transform/type-combinators.mjs +42 -0
  359. package/dist/application/transform/type-combinators.mjs.map +1 -0
  360. package/dist/cli/cli-arguments.cjs +137 -0
  361. package/dist/cli/cli-arguments.cjs.map +1 -0
  362. package/dist/cli/cli-arguments.mjs +129 -0
  363. package/dist/cli/cli-arguments.mjs.map +1 -0
  364. package/dist/cli/cli-errors.cjs +80 -0
  365. package/dist/cli/cli-errors.cjs.map +1 -0
  366. package/dist/cli/cli-errors.mjs +76 -0
  367. package/dist/cli/cli-errors.mjs.map +1 -0
  368. package/dist/cli/cli-output.cjs +37 -0
  369. package/dist/cli/cli-output.cjs.map +1 -0
  370. package/dist/cli/cli-output.mjs +30 -0
  371. package/dist/cli/cli-output.mjs.map +1 -0
  372. package/dist/cli/docs-links.cjs +6 -0
  373. package/dist/cli/docs-links.cjs.map +1 -0
  374. package/dist/cli/docs-links.mjs +4 -0
  375. package/dist/cli/docs-links.mjs.map +1 -0
  376. package/dist/cli/fix-option.cjs +19 -0
  377. package/dist/cli/fix-option.cjs.map +1 -0
  378. package/dist/cli/fix-option.mjs +16 -0
  379. package/dist/cli/fix-option.mjs.map +1 -0
  380. package/dist/cli/help-text.cjs +44 -0
  381. package/dist/cli/help-text.cjs.map +1 -0
  382. package/dist/cli/help-text.mjs +42 -0
  383. package/dist/cli/help-text.mjs.map +1 -0
  384. package/dist/cli/main.cjs +62 -0
  385. package/dist/cli/main.cjs.map +1 -0
  386. package/dist/cli/main.d.cts +2 -0
  387. package/dist/cli/main.d.mts +2 -0
  388. package/dist/cli/main.d.ts +2 -0
  389. package/dist/cli/main.mjs +54 -0
  390. package/dist/cli/main.mjs.map +1 -0
  391. package/dist/cli/redocly-apis.cjs +65 -0
  392. package/dist/cli/redocly-apis.cjs.map +1 -0
  393. package/dist/cli/redocly-apis.mjs +62 -0
  394. package/dist/cli/redocly-apis.mjs.map +1 -0
  395. package/dist/cli/ref-limits.cjs +14 -0
  396. package/dist/cli/ref-limits.cjs.map +1 -0
  397. package/dist/cli/ref-limits.mjs +12 -0
  398. package/dist/cli/ref-limits.mjs.map +1 -0
  399. package/dist/cli/run-cli.cjs +100 -0
  400. package/dist/cli/run-cli.cjs.map +1 -0
  401. package/dist/cli/run-cli.mjs +98 -0
  402. package/dist/cli/run-cli.mjs.map +1 -0
  403. package/dist/domain/assert-never.cjs +8 -0
  404. package/dist/domain/assert-never.cjs.map +1 -0
  405. package/dist/domain/assert-never.mjs +6 -0
  406. package/dist/domain/assert-never.mjs.map +1 -0
  407. package/dist/domain/errors.cjs +50 -0
  408. package/dist/domain/errors.cjs.map +1 -0
  409. package/dist/domain/errors.mjs +46 -0
  410. package/dist/domain/errors.mjs.map +1 -0
  411. package/dist/domain/ir/constructors.cjs +89 -0
  412. package/dist/domain/ir/constructors.cjs.map +1 -0
  413. package/dist/domain/ir/constructors.mjs +71 -0
  414. package/dist/domain/ir/constructors.mjs.map +1 -0
  415. package/dist/domain/ir/identifier-text.cjs +29 -0
  416. package/dist/domain/ir/identifier-text.cjs.map +1 -0
  417. package/dist/domain/ir/identifier-text.mjs +25 -0
  418. package/dist/domain/ir/identifier-text.mjs.map +1 -0
  419. package/dist/domain/ir/newer-identifier-ranges.cjs +109 -0
  420. package/dist/domain/ir/newer-identifier-ranges.cjs.map +1 -0
  421. package/dist/domain/ir/newer-identifier-ranges.mjs +106 -0
  422. package/dist/domain/ir/newer-identifier-ranges.mjs.map +1 -0
  423. package/dist/domain/ir/normalize.cjs +32 -0
  424. package/dist/domain/ir/normalize.cjs.map +1 -0
  425. package/dist/domain/ir/normalize.mjs +29 -0
  426. package/dist/domain/ir/normalize.mjs.map +1 -0
  427. package/dist/domain/ir/property-name.cjs +19 -0
  428. package/dist/domain/ir/property-name.cjs.map +1 -0
  429. package/dist/domain/ir/property-name.mjs +16 -0
  430. package/dist/domain/ir/property-name.mjs.map +1 -0
  431. package/dist/domain/ir/raw-text-escapes.cjs +25 -0
  432. package/dist/domain/ir/raw-text-escapes.cjs.map +1 -0
  433. package/dist/domain/ir/raw-text-escapes.mjs +22 -0
  434. package/dist/domain/ir/raw-text-escapes.mjs.map +1 -0
  435. package/dist/domain/openapi/alias-expansion.cjs +50 -0
  436. package/dist/domain/openapi/alias-expansion.cjs.map +1 -0
  437. package/dist/domain/openapi/alias-expansion.mjs +45 -0
  438. package/dist/domain/openapi/alias-expansion.mjs.map +1 -0
  439. package/dist/domain/openapi/binary-content.cjs +48 -0
  440. package/dist/domain/openapi/binary-content.cjs.map +1 -0
  441. package/dist/domain/openapi/binary-content.mjs +45 -0
  442. package/dist/domain/openapi/binary-content.mjs.map +1 -0
  443. package/dist/domain/openapi/components-object.cjs +29 -0
  444. package/dist/domain/openapi/components-object.cjs.map +1 -0
  445. package/dist/domain/openapi/components-object.mjs +24 -0
  446. package/dist/domain/openapi/components-object.mjs.map +1 -0
  447. package/dist/domain/openapi/json-pointer.cjs +31 -0
  448. package/dist/domain/openapi/json-pointer.cjs.map +1 -0
  449. package/dist/domain/openapi/json-pointer.mjs +27 -0
  450. package/dist/domain/openapi/json-pointer.mjs.map +1 -0
  451. package/dist/domain/openapi/media-type-object.cjs +14 -0
  452. package/dist/domain/openapi/media-type-object.cjs.map +1 -0
  453. package/dist/domain/openapi/media-type-object.mjs +11 -0
  454. package/dist/domain/openapi/media-type-object.mjs.map +1 -0
  455. package/dist/domain/openapi/parameter-object.cjs +13 -0
  456. package/dist/domain/openapi/parameter-object.cjs.map +1 -0
  457. package/dist/domain/openapi/parameter-object.mjs +10 -0
  458. package/dist/domain/openapi/parameter-object.mjs.map +1 -0
  459. package/dist/domain/openapi/path-item-object.cjs +35 -0
  460. package/dist/domain/openapi/path-item-object.cjs.map +1 -0
  461. package/dist/domain/openapi/path-item-object.mjs +30 -0
  462. package/dist/domain/openapi/path-item-object.mjs.map +1 -0
  463. package/dist/domain/openapi/unsupported-features.cjs +87 -0
  464. package/dist/domain/openapi/unsupported-features.cjs.map +1 -0
  465. package/dist/domain/openapi/unsupported-features.mjs +84 -0
  466. package/dist/domain/openapi/unsupported-features.mjs.map +1 -0
  467. package/dist/domain/output-fixes.cjs +66 -0
  468. package/dist/domain/output-fixes.cjs.map +1 -0
  469. package/dist/domain/output-fixes.mjs +59 -0
  470. package/dist/domain/output-fixes.mjs.map +1 -0
  471. package/dist/index.cjs +98 -0
  472. package/dist/index.cjs.map +1 -0
  473. package/dist/index.d.cts +812 -0
  474. package/dist/index.d.mts +812 -0
  475. package/dist/index.d.ts +812 -0
  476. package/dist/index.mjs +27 -0
  477. package/dist/index.mjs.map +1 -0
  478. package/dist/transform/components-object.cjs +14 -0
  479. package/dist/transform/components-object.cjs.map +1 -0
  480. package/dist/transform/components-object.mjs +10 -0
  481. package/dist/transform/components-object.mjs.map +1 -0
  482. package/dist/transform/header-object.cjs +12 -0
  483. package/dist/transform/header-object.cjs.map +1 -0
  484. package/dist/transform/header-object.mjs +10 -0
  485. package/dist/transform/header-object.mjs.map +1 -0
  486. package/dist/transform/media-type-object.cjs +12 -0
  487. package/dist/transform/media-type-object.cjs.map +1 -0
  488. package/dist/transform/media-type-object.mjs +10 -0
  489. package/dist/transform/media-type-object.mjs.map +1 -0
  490. package/dist/transform/operation-object.cjs +26 -0
  491. package/dist/transform/operation-object.cjs.map +1 -0
  492. package/dist/transform/operation-object.mjs +21 -0
  493. package/dist/transform/operation-object.mjs.map +1 -0
  494. package/dist/transform/parameter-object.cjs +12 -0
  495. package/dist/transform/parameter-object.cjs.map +1 -0
  496. package/dist/transform/parameter-object.mjs +10 -0
  497. package/dist/transform/parameter-object.mjs.map +1 -0
  498. package/dist/transform/path-item-object.cjs +12 -0
  499. package/dist/transform/path-item-object.cjs.map +1 -0
  500. package/dist/transform/path-item-object.mjs +10 -0
  501. package/dist/transform/path-item-object.mjs.map +1 -0
  502. package/dist/transform/paths-object.cjs +11 -0
  503. package/dist/transform/paths-object.cjs.map +1 -0
  504. package/dist/transform/paths-object.mjs +9 -0
  505. package/dist/transform/paths-object.mjs.map +1 -0
  506. package/dist/transform/request-body-object.cjs +12 -0
  507. package/dist/transform/request-body-object.cjs.map +1 -0
  508. package/dist/transform/request-body-object.mjs +10 -0
  509. package/dist/transform/request-body-object.mjs.map +1 -0
  510. package/dist/transform/response-object.cjs +12 -0
  511. package/dist/transform/response-object.cjs.map +1 -0
  512. package/dist/transform/response-object.mjs +10 -0
  513. package/dist/transform/response-object.mjs.map +1 -0
  514. package/dist/transform/responses-object.cjs +12 -0
  515. package/dist/transform/responses-object.cjs.map +1 -0
  516. package/dist/transform/responses-object.mjs +10 -0
  517. package/dist/transform/responses-object.mjs.map +1 -0
  518. package/dist/transform/schema-object.cjs +21 -0
  519. package/dist/transform/schema-object.cjs.map +1 -0
  520. package/dist/transform/schema-object.mjs +16 -0
  521. package/dist/transform/schema-object.mjs.map +1 -0
  522. package/package.json +115 -4
  523. package/src/adapters/node-file-system/node-file-system.ts +44 -0
  524. package/src/adapters/redocly-loader/alias-limit.ts +20 -0
  525. package/src/adapters/redocly-loader/allowed-hosts.ts +62 -0
  526. package/src/adapters/redocly-loader/bundled-ref-repair.ts +65 -0
  527. package/src/adapters/redocly-loader/malformed-refs.ts +61 -0
  528. package/src/adapters/redocly-loader/redocly-config-source.ts +43 -0
  529. package/src/adapters/redocly-loader/redocly-schema-loader.ts +246 -0
  530. package/src/adapters/redocly-loader/ref-access.ts +146 -0
  531. package/src/adapters/redocly-loader/ref-holders.ts +43 -0
  532. package/src/adapters/redocly-loader/remote-fetch.ts +104 -0
  533. package/src/adapters/redocly-loader/schema-load-errors.ts +124 -0
  534. package/src/adapters/redocly-loader/schema-source.ts +151 -0
  535. package/src/adapters/redocly-loader/unsupported-keys.ts +102 -0
  536. package/src/adapters/terminal-logger/terminal-logger.ts +98 -0
  537. package/src/adapters/type-ast-bridge/footer-nodes.ts +38 -0
  538. package/src/adapters/type-ast-bridge/ir-declarations-to-typescript.ts +100 -0
  539. package/src/adapters/type-ast-bridge/ir-to-typescript.ts +220 -0
  540. package/src/adapters/type-ast-bridge/lazy-node.ts +24 -0
  541. package/src/adapters/type-ast-bridge/load-typescript.ts +84 -0
  542. package/src/adapters/type-ast-bridge/print-typescript.ts +33 -0
  543. package/src/adapters/type-ast-bridge/typescript-raw-text.ts +49 -0
  544. package/src/adapters/type-ast-bridge/typescript-to-ir.ts +280 -0
  545. package/src/adapters/type-ast-bridge/typescript-types.ts +8 -0
  546. package/src/api/ast-to-string.ts +59 -0
  547. package/src/api/comment-header.ts +7 -0
  548. package/src/api/default-ports.ts +44 -0
  549. package/src/api/discriminator-enum.ts +76 -0
  550. package/src/api/discriminator-scan.ts +272 -0
  551. package/src/api/document-declarations.ts +41 -0
  552. package/src/api/document-refs.ts +71 -0
  553. package/src/api/document-run.ts +159 -0
  554. package/src/api/footer-entry.ts +23 -0
  555. package/src/api/footer-sink.ts +67 -0
  556. package/src/api/legacy-callback-warning.ts +29 -0
  557. package/src/api/legacy-ts-helpers.ts +311 -0
  558. package/src/api/legacy-utils.ts +118 -0
  559. package/src/api/openapi-ts.ts +62 -0
  560. package/src/api/schema-callbacks.ts +211 -0
  561. package/src/api/string-to-ast.ts +27 -0
  562. package/src/api/transform-context.ts +87 -0
  563. package/src/api/transform-schema.ts +39 -0
  564. package/src/api/type-helpers.ts +130 -0
  565. package/src/api/unsupported-feature-warnings.ts +26 -0
  566. package/src/application/ports/file-system.ts +12 -0
  567. package/src/application/ports/logger.ts +16 -0
  568. package/src/application/ports/redocly-config-source.ts +16 -0
  569. package/src/application/ports/schema-loader.ts +32 -0
  570. package/src/application/print/comment-writer.ts +91 -0
  571. package/src/application/print/declaration-printer.ts +100 -0
  572. package/src/application/print/literal-text.ts +62 -0
  573. package/src/application/print/print-nodes.ts +62 -0
  574. package/src/application/print/print-options.ts +11 -0
  575. package/src/application/print/text-writer.ts +83 -0
  576. package/src/application/print/type-printer.ts +281 -0
  577. package/src/application/stack-overflow.ts +54 -0
  578. package/src/application/transform/document/components.ts +189 -0
  579. package/src/application/transform/document/defs-root.ts +25 -0
  580. package/src/application/transform/document/document-member.ts +20 -0
  581. package/src/application/transform/document/document.ts +157 -0
  582. package/src/application/transform/document/header.ts +34 -0
  583. package/src/application/transform/document/kept-deprecated.ts +135 -0
  584. package/src/application/transform/document/media-type.ts +78 -0
  585. package/src/application/transform/document/operation.ts +64 -0
  586. package/src/application/transform/document/parameter.ts +45 -0
  587. package/src/application/transform/document/parameters.ts +200 -0
  588. package/src/application/transform/document/path-item-conflicts.ts +79 -0
  589. package/src/application/transform/document/path-item.ts +168 -0
  590. package/src/application/transform/document/path-key-overlaps.ts +112 -0
  591. package/src/application/transform/document/paths-enum.ts +127 -0
  592. package/src/application/transform/document/paths.ts +211 -0
  593. package/src/application/transform/document/request-body.ts +50 -0
  594. package/src/application/transform/document/response.ts +109 -0
  595. package/src/application/transform/document/responses.ts +29 -0
  596. package/src/application/transform/document/root-type-aliases.ts +106 -0
  597. package/src/application/transform/document/webhooks.ts +22 -0
  598. package/src/application/transform/document-entries.ts +28 -0
  599. package/src/application/transform/footer/document-footer.ts +127 -0
  600. package/src/application/transform/footer/enum-naming.ts +181 -0
  601. package/src/application/transform/helper-types.ts +92 -0
  602. package/src/application/transform/literal-type.ts +54 -0
  603. package/src/application/transform/numbered-names.ts +20 -0
  604. package/src/application/transform/ref-type.ts +97 -0
  605. package/src/application/transform/schema/array-type.ts +152 -0
  606. package/src/application/transform/schema/composition-type.ts +183 -0
  607. package/src/application/transform/schema/core-type.ts +115 -0
  608. package/src/application/transform/schema/discriminator-property.ts +28 -0
  609. package/src/application/transform/schema/enum-rule.ts +157 -0
  610. package/src/application/transform/schema/object-type.ts +271 -0
  611. package/src/application/transform/schema/presence-members.ts +96 -0
  612. package/src/application/transform/schema/schema-context.ts +110 -0
  613. package/src/application/transform/schema/schema-rule.ts +29 -0
  614. package/src/application/transform/schema/schema-transform.ts +99 -0
  615. package/src/application/transform/schema/unevaluated-properties.ts +105 -0
  616. package/src/application/transform/schema-comment.ts +116 -0
  617. package/src/application/transform/shared-types.ts +9 -0
  618. package/src/application/transform/transform-context.ts +51 -0
  619. package/src/application/transform/type-combinators.ts +57 -0
  620. package/src/cli/cli-arguments.ts +198 -0
  621. package/src/cli/cli-dependencies.ts +42 -0
  622. package/src/cli/cli-errors.ts +125 -0
  623. package/src/cli/cli-output.ts +53 -0
  624. package/src/cli/docs-links.ts +6 -0
  625. package/src/cli/fix-option.ts +29 -0
  626. package/src/cli/help-text.ts +52 -0
  627. package/src/cli/main.ts +67 -0
  628. package/src/cli/redocly-apis.ts +91 -0
  629. package/src/cli/ref-limits.ts +16 -0
  630. package/src/cli/run-cli.ts +114 -0
  631. package/src/domain/assert-never.ts +8 -0
  632. package/src/domain/errors.ts +74 -0
  633. package/src/domain/ir/constructors.ts +137 -0
  634. package/src/domain/ir/identifier-text.ts +49 -0
  635. package/src/domain/ir/newer-identifier-ranges.ts +109 -0
  636. package/src/domain/ir/nodes.ts +224 -0
  637. package/src/domain/ir/normalize.ts +51 -0
  638. package/src/domain/ir/property-name.ts +28 -0
  639. package/src/domain/ir/raw-text-escapes.ts +37 -0
  640. package/src/domain/openapi/alias-expansion.ts +72 -0
  641. package/src/domain/openapi/binary-content.ts +74 -0
  642. package/src/domain/openapi/components-object.ts +52 -0
  643. package/src/domain/openapi/document-object.ts +12 -0
  644. package/src/domain/openapi/header-object.ts +9 -0
  645. package/src/domain/openapi/json-pointer.ts +46 -0
  646. package/src/domain/openapi/media-type-object.ts +26 -0
  647. package/src/domain/openapi/operation-object.ts +13 -0
  648. package/src/domain/openapi/parameter-object.ts +30 -0
  649. package/src/domain/openapi/path-item-object.ts +70 -0
  650. package/src/domain/openapi/request-body-object.ts +7 -0
  651. package/src/domain/openapi/response-object.ts +14 -0
  652. package/src/domain/openapi/schema-object.ts +59 -0
  653. package/src/domain/openapi/unsupported-features.ts +139 -0
  654. package/src/domain/output-fixes.ts +95 -0
  655. package/src/index.ts +67 -0
  656. package/src/transform/components-object.ts +25 -0
  657. package/src/transform/header-object.ts +19 -0
  658. package/src/transform/media-type-object.ts +19 -0
  659. package/src/transform/operation-object.ts +36 -0
  660. package/src/transform/parameter-object.ts +19 -0
  661. package/src/transform/parameters-array.ts +19 -0
  662. package/src/transform/path-item-object.ts +22 -0
  663. package/src/transform/paths-enum.ts +8 -0
  664. package/src/transform/paths-object.ts +15 -0
  665. package/src/transform/request-body-object.ts +19 -0
  666. package/src/transform/response-object.ts +19 -0
  667. package/src/transform/responses-object.ts +19 -0
  668. package/src/transform/schema-object.ts +36 -0
  669. package/src/transform/webhooks-object.ts +15 -0
  670. package/src/types/generator-options.ts +267 -0
  671. package/src/types/openapi-common.ts +100 -0
  672. package/src/types/openapi-document.ts +196 -0
  673. package/src/types/openapi-path-item.ts +130 -0
  674. package/src/types/openapi-request.ts +209 -0
  675. package/src/types/openapi-response.ts +81 -0
  676. package/src/types/openapi-schema.ts +169 -0
  677. package/src/types/openapi-security.ts +116 -0
  678. package/src/types.ts +12 -0
@@ -0,0 +1,105 @@
1
+ import {
2
+ irKeyword,
3
+ irObject,
4
+ irReference,
5
+ irStringIndexSignature,
6
+ } from "../../../domain/ir/constructors.js";
7
+ import type { IrMember, IrType } from "../../../domain/ir/nodes.js";
8
+ import type { Schema, SchemaObject } from "../../../domain/openapi/schema-object.js";
9
+ import { OutputFix } from "../../../domain/output-fixes.js";
10
+ import { HELPER_TYPES } from "../helper-types.js";
11
+ import { UNKNOWN_TYPE } from "../shared-types.js";
12
+ import { unionOf } from "../type-combinators.js";
13
+ import type { SchemaRequest } from "./schema-rule.js";
14
+
15
+ /**
16
+ * The `unevaluated-properties` fix (ADR-021, roadmap R11; upstream #2839, #2880). Without it
17
+ * `unevaluatedProperties` is ignored, so its value type is lost and an object with only that
18
+ * keyword is `Record<string, never>`. With it the composed type is intersected with an index
19
+ * signature, as `additionalProperties` gives: every key that no other keyword declares has the
20
+ * `unevaluatedProperties` type. TypeScript checks that index signature against every key of a
21
+ * value, declared ones included, so its type also holds the types of the declared properties
22
+ * (of this schema and of its `allOf`, `anyOf` and `oneOf` members); otherwise a valid value would
23
+ * not be assignable. `false` adds nothing, like `additionalProperties: false`: TypeScript has no
24
+ * closed object type.
25
+ */
26
+
27
+ /**
28
+ * Whether `unevaluatedProperties` applies. It types the keys left over at this level, so it
29
+ * does nothing next to `additionalProperties` (which already types them all), and only an object
30
+ * schema has keys. A `type` list is typed one listed type at a time, so its object gets it.
31
+ */
32
+ function unevaluatedSchemaOf(schema: SchemaObject, request: SchemaRequest): Schema | null {
33
+ const { unevaluatedProperties } = schema;
34
+ if (
35
+ !request.context.options.fixes.has(OutputFix.UNEVALUATED_PROPERTIES) ||
36
+ unevaluatedProperties === undefined ||
37
+ unevaluatedProperties === false ||
38
+ schema.additionalProperties !== undefined
39
+ ) {
40
+ return null;
41
+ }
42
+ return schema.type === undefined || schema.type === "object" ? unevaluatedProperties : null;
43
+ }
44
+
45
+ function isAnySchema(schema: Schema): boolean {
46
+ return schema === true || (typeof schema === "object" && Object.keys(schema).length === 0);
47
+ }
48
+
49
+ function memberValueTypes(member: IrMember): IrType[] {
50
+ if (member.kind === "indexSignature") {
51
+ return [member.type];
52
+ }
53
+ return member.isOptional ? [member.type, irKeyword("undefined")] : [member.type];
54
+ }
55
+
56
+ /**
57
+ * The value types a key of the composed type can have, read from its IR: the members of object
58
+ * types, through unions and intersections. A reference (a `$ref`, `Omit`, `WithRequired`) or a raw
59
+ * type is read with `PropertyValues`. Primitives, literals and arrays declare no keys.
60
+ */
61
+ function declaredValueTypes(type: IrType, request: SchemaRequest): IrType[] {
62
+ switch (type.kind) {
63
+ case "object":
64
+ return type.members.flatMap(memberValueTypes);
65
+ case "union":
66
+ case "intersection":
67
+ return type.types.flatMap((member) => declaredValueTypes(member, request));
68
+ case "reference":
69
+ case "indexedAccess":
70
+ case "raw":
71
+ request.context.footer.requirePropertyValues();
72
+ return [irReference(HELPER_TYPES.propertyValues.name, [type])];
73
+ case "keyword":
74
+ case "stringLiteral":
75
+ case "numberLiteral":
76
+ case "booleanLiteral":
77
+ case "array":
78
+ case "tuple":
79
+ case "readonly":
80
+ return [];
81
+ }
82
+ }
83
+
84
+ /**
85
+ * The index signature object for `unevaluatedProperties`, given the composed type of the other
86
+ * keywords (null when there is none). Null when the fix is off or the keyword does not apply.
87
+ */
88
+ export function unevaluatedPropertiesType(
89
+ schema: SchemaObject,
90
+ composed: IrType | null,
91
+ request: SchemaRequest,
92
+ ): IrType | null {
93
+ const unevaluated = unevaluatedSchemaOf(schema, request);
94
+ if (unevaluated === null) {
95
+ return null;
96
+ }
97
+ const valueTypes = isAnySchema(unevaluated)
98
+ ? [UNKNOWN_TYPE]
99
+ : [
100
+ request.transformNested(unevaluated, request.location, true),
101
+ ...(composed === null ? [] : declaredValueTypes(composed, request)),
102
+ ];
103
+ const { immutable } = request.context.options;
104
+ return irObject([irStringIndexSignature("key", unionOf(valueTypes), immutable)]);
105
+ }
@@ -0,0 +1,116 @@
1
+ import type { IrComment, IrPropertySignature } from "../../domain/ir/nodes.js";
2
+
3
+ /** Schema fields that produce JSDoc lines (the original `AnnotatedSchemaObject`). */
4
+ export interface AnnotatedSchema {
5
+ readonly const?: unknown;
6
+ readonly default?: unknown;
7
+ readonly deprecated?: boolean;
8
+ readonly description?: string;
9
+ readonly enum?: unknown[];
10
+ readonly example?: unknown;
11
+ readonly examples?: unknown;
12
+ readonly format?: string;
13
+ readonly nullable?: boolean;
14
+ readonly summary?: string;
15
+ readonly title?: string;
16
+ readonly type?: string | string[];
17
+ }
18
+
19
+ const LINE_BREAK_RE = /\r?\n/g;
20
+ /** Continuation lines of a multi-line value are indented under the tag. */
21
+ const CONTINUATION = "\n * ";
22
+ const COMMENT_END_RE = /\*\//g;
23
+ /** Tags written as `@tag value`; an empty string is kept only where it is a meaningful value. */
24
+ const VALUE_TAGS = ["description", "default", "example"] as const;
25
+ const TAGS_KEEPING_EMPTY_STRING: ReadonlySet<string> = new Set(["default", "example"]);
26
+ const JSON_INDENT = 2;
27
+
28
+ function formatValue(value: unknown): string {
29
+ const text = typeof value === "object" ? JSON.stringify(value, null, JSON_INDENT) : value;
30
+ return String(text).trim().replace(LINE_BREAK_RE, CONTINUATION);
31
+ }
32
+
33
+ function plainLines(schema: AnnotatedSchema): string[] {
34
+ const lines: string[] = [];
35
+ for (const text of [schema.title, schema.summary]) {
36
+ // The document is not validated against the schema dialect: a property named `summary`
37
+ // written without `properties:` makes `summary` an object (upstream #2349).
38
+ if (typeof text === "string" && text) {
39
+ lines.push(text.trim().replace(LINE_BREAK_RE, CONTINUATION));
40
+ }
41
+ }
42
+ if (schema.format) {
43
+ lines.push(`Format: ${schema.format}`);
44
+ }
45
+ if (schema.deprecated) {
46
+ lines.push("@deprecated");
47
+ }
48
+ return lines;
49
+ }
50
+
51
+ function valueTagLines(schema: AnnotatedSchema): string[] {
52
+ const lines: string[] = [];
53
+ for (const tag of VALUE_TAGS) {
54
+ const value = schema[tag];
55
+ if (value === undefined || (value === "" && !TAGS_KEEPING_EMPTY_STRING.has(tag))) {
56
+ continue;
57
+ }
58
+ lines.push(`@${tag} ${formatValue(value)}`);
59
+ }
60
+ if (Array.isArray(schema.examples)) {
61
+ lines.push(...schema.examples.map((example: unknown) => `@example ${formatValue(example)}`));
62
+ }
63
+ return lines;
64
+ }
65
+
66
+ function enumTypeName(schema: AnnotatedSchema): string {
67
+ if (Array.isArray(schema.type)) {
68
+ return schema.type.join("|");
69
+ }
70
+ return typeof schema.type === "string" ? schema.type : "unknown";
71
+ }
72
+
73
+ function constantAndEnumLines(schema: AnnotatedSchema): string[] {
74
+ const lines: string[] = [];
75
+ if ("const" in schema) {
76
+ lines.push("@constant");
77
+ }
78
+ if (schema.enum) {
79
+ lines.push(`@enum {${enumTypeName(schema)}${schema.nullable ? "|null" : ""}}`);
80
+ }
81
+ return lines;
82
+ }
83
+
84
+ /**
85
+ * The JSDoc comment the original writes for a schema (`addJSDocComment`): title, summary and
86
+ * format, then `@deprecated`, `@description`, `@default`, `@example`, `@constant` and `@enum`
87
+ * tags. One short line stays on the `/**` line; anything else is a block. Returns null when there
88
+ * is nothing to say, or when the value is not a schema object.
89
+ */
90
+ export function schemaComment(schema: unknown): IrComment | null {
91
+ if (!schema || typeof schema !== "object" || Array.isArray(schema)) {
92
+ return null;
93
+ }
94
+ const annotated = schema as AnnotatedSchema;
95
+ const lines = [
96
+ ...plainLines(annotated),
97
+ ...valueTagLines(annotated),
98
+ ...constantAndEnumLines(annotated),
99
+ ];
100
+ if (lines.length === 0) {
101
+ return null;
102
+ }
103
+ const isSingleLine = lines.length === 1 && !lines.some((line) => line.includes("\n"));
104
+ const text = isSingleLine ? `* ${lines.join("\n")} ` : `*\n * ${lines.join("\n * ")}\n `;
105
+ // A `*/` inside a value would end the comment early.
106
+ return { kind: "block", text: text.replace(COMMENT_END_RE, "*\\/") };
107
+ }
108
+
109
+ /** The property with the schema's JSDoc added after the comments it already has. */
110
+ export function withSchemaComment(
111
+ property: IrPropertySignature,
112
+ schema: unknown,
113
+ ): IrPropertySignature {
114
+ const comment = schemaComment(schema);
115
+ return comment === null ? property : { ...property, comments: [...property.comments, comment] };
116
+ }
@@ -0,0 +1,9 @@
1
+ import { irKeyword } from "../../domain/ir/constructors.js";
2
+ import type { IrKeywordType } from "../../domain/ir/nodes.js";
3
+
4
+ /**
5
+ * The shared `unknown` node. The original compares types with its shared `UNKNOWN` node by
6
+ * identity (a nullable schema whose type *is* that node stays `unknown`), so the transformers use
7
+ * one frozen node for the same cases, and the legacy adapter maps the original constant to it.
8
+ */
9
+ export const UNKNOWN_TYPE: IrKeywordType = Object.freeze(irKeyword("unknown"));
@@ -0,0 +1,51 @@
1
+ import type { IrPropertySignature } from "../../domain/ir/nodes.js";
2
+ import type { FooterDeclarations, SchemaContext, SchemaOptions } from "./schema/schema-context.js";
3
+
4
+ /** Options of the transformers above schemas. They grow as parents are ported (Phase 5). */
5
+ export interface TransformOptions extends SchemaOptions {
6
+ /** `--generate-path-params`: add path template parameters that the document does not define. */
7
+ readonly generatePathParams: boolean;
8
+ /** `--path-params-as-types`: key templated paths by a template literal type. */
9
+ readonly pathParamsAsTypes: boolean;
10
+ /** `--root-types`: export an alias per component, like `SchemaPet`. */
11
+ readonly rootTypes: boolean;
12
+ /** `--root-types-no-schema-prefix`: `Pet` instead of `SchemaPet` for schemas. */
13
+ readonly rootTypesNoSchemaPrefix: boolean;
14
+ /** `--root-types-keep-casing`: keep schema names as written instead of PascalCase. */
15
+ readonly rootTypesKeepCasing: boolean;
16
+ /** `--export-type`: root types are type aliases instead of interfaces. */
17
+ readonly exportType: boolean;
18
+ /** Code added as is after the helper types (Node API `inject`). */
19
+ readonly inject: string | undefined;
20
+ /** `--make-paths-enum`: add the `ApiPaths` enum of all operation URLs. */
21
+ readonly makePathsEnum: boolean;
22
+ }
23
+
24
+ /** Name casing for generated identifiers (the original uses the `change-case` package). */
25
+ export interface NameCasing {
26
+ pascalCase(text: string): string;
27
+ }
28
+
29
+ /** Declarations after the main types, including the top-level `operations` interface. */
30
+ export interface DocumentFooter extends FooterDeclarations {
31
+ /**
32
+ * Add a member to the `operations` interface. The interface is declared before `build` runs, so
33
+ * it comes before any declaration the operation adds, as in the original.
34
+ */
35
+ addOperation(build: () => IrPropertySignature): void;
36
+ }
37
+
38
+ /** Debug output for slow parts of a run (`DEBUG=openapi-ts:*`). */
39
+ export interface TransformDiagnostics {
40
+ /** A monotonic time in milliseconds, used only to measure durations. */
41
+ now(): number;
42
+ debug(message: string, durationMs: number): void;
43
+ }
44
+
45
+ /** The context of the document transformers: the schema context with their options and ports. */
46
+ export interface TransformContext extends SchemaContext {
47
+ readonly options: TransformOptions;
48
+ readonly footer: DocumentFooter;
49
+ readonly diagnostics: TransformDiagnostics;
50
+ readonly casing: NameCasing;
51
+ }
@@ -0,0 +1,57 @@
1
+ import { irIntersection, irKeyword, irReference, irUnion } from "../../domain/ir/constructors.js";
2
+ import type { IrType } from "../../domain/ir/nodes.js";
3
+ import { dedupeTypes } from "../../domain/ir/normalize.js";
4
+ import { literalType } from "./literal-type.js";
5
+
6
+ /**
7
+ * Type combinators with the original helper semantics (`tsUnion`, `tsIntersection`, `tsOmit`, …).
8
+ * They are the only places where the transformers normalize types.
9
+ */
10
+
11
+ /** `never` for no types, the type itself for one, else a de-duplicated union (`tsUnion`). */
12
+ export function unionOf(types: readonly IrType[]): IrType {
13
+ if (types.length <= 1) {
14
+ return types[0] ?? irKeyword("never");
15
+ }
16
+ return irUnion(dedupeTypes(types));
17
+ }
18
+
19
+ /** Like `unionOf`, for intersections (`tsIntersection`). */
20
+ export function intersectionOf(types: readonly IrType[]): IrType {
21
+ if (types.length <= 1) {
22
+ return types[0] ?? irKeyword("never");
23
+ }
24
+ return irIntersection(dedupeTypes(types));
25
+ }
26
+
27
+ /** `T | null` without de-duplication (`tsNullable`). */
28
+ export function nullableOf(types: readonly IrType[]): IrType {
29
+ return irUnion([...types, irKeyword("null")]);
30
+ }
31
+
32
+ /** `Omit<T, "a" | "b">`; the key union is never collapsed or de-duplicated (`tsOmit`). */
33
+ export function omitKeys(type: IrType, keys: readonly string[]): IrType {
34
+ return irReference("Omit", [type, irUnion(keys.map(literalType))]);
35
+ }
36
+
37
+ /** `WithRequired<T, "a" | "b">`, or the type itself for no keys (`tsWithRequired`). */
38
+ export function withRequiredKeys(type: IrType, keys: readonly string[]): IrType {
39
+ if (keys.length === 0) {
40
+ return type;
41
+ }
42
+ return irReference("WithRequired", [type, unionOf(keys.map(literalType))]);
43
+ }
44
+
45
+ /** Primitive keywords, as the original `tsIsPrimitive` defines them (the null literal included). */
46
+ const PRIMITIVE_KEYWORDS: ReadonlySet<string> = new Set([
47
+ "boolean",
48
+ "never",
49
+ "null",
50
+ "number",
51
+ "string",
52
+ "undefined",
53
+ ]);
54
+
55
+ export function isPrimitiveType(type: IrType): boolean {
56
+ return type.kind === "keyword" && PRIMITIVE_KEYWORDS.has(type.keyword);
57
+ }
@@ -0,0 +1,198 @@
1
+ import { kebabCase } from "scule";
2
+ import parser from "yargs-parser";
3
+ import type { OutputFixName } from "../domain/output-fixes.js";
4
+ import { cliError } from "./cli-errors.js";
5
+ import { fixNamesOf } from "./fix-option.js";
6
+
7
+ /** The CLI's arguments, parsed as the original CLI parsed them (yargs-parser). */
8
+
9
+ /** Boolean flags that become generator options (camelCase; yargs also accepts kebab-case). */
10
+ export const GENERATOR_FLAGS = [
11
+ "additionalProperties",
12
+ "alphabetize",
13
+ "arrayLength",
14
+ "binaryAsBlob",
15
+ "conditionalEnums",
16
+ "dedupeEnums",
17
+ "defaultNonNullable",
18
+ "emptyObjectsUnknown",
19
+ "enum",
20
+ "enumValues",
21
+ "excludeDeprecated",
22
+ "exportType",
23
+ "generatePathParams",
24
+ "immutable",
25
+ "lint",
26
+ "makePathsEnum",
27
+ "pathParamsAsTypes",
28
+ "propertiesRequiredByDefault",
29
+ "readWriteMarkers",
30
+ "rootTypes",
31
+ "rootTypesKeepCasing",
32
+ "rootTypesNoSchemaPrefix",
33
+ ] as const;
34
+
35
+ export type GeneratorFlag = (typeof GENERATOR_FLAGS)[number];
36
+
37
+ export type GeneratorFlags = Readonly<Partial<Record<GeneratorFlag, boolean>>>;
38
+
39
+ // `contentNever` was a boolean flag of the original CLI that no code reads; it stays in the list
40
+ // so that `--content-never <input>` keeps parsing as a flag and an input.
41
+ const CAMEL_CASE_BOOLEAN_FLAGS = [...GENERATOR_FLAGS, "check", "contentNever", "help"];
42
+
43
+ // yargs-parser matches the `boolean` list by the exact spelling of the flag: with camelCase names
44
+ // only, `--root-types schema.yaml` took the path as the flag's value (upstream #2523). Both
45
+ // spellings are listed.
46
+ const BOOLEAN_FLAGS = [
47
+ ...CAMEL_CASE_BOOLEAN_FLAGS,
48
+ ...CAMEL_CASE_BOOLEAN_FLAGS.map((flag) => kebabCase(flag)),
49
+ ];
50
+
51
+ /** The `$ref` limits as the user wrote them; unset flags are absent. */
52
+ export interface CliRefLimits {
53
+ readonly localRefRoot?: string;
54
+ readonly remoteRefHosts?: readonly string[];
55
+ }
56
+
57
+ export interface CliArguments {
58
+ /** The schema path or URL; none means stdin, or the APIs of the Redocly config. */
59
+ readonly input: string | undefined;
60
+ readonly output: string | undefined;
61
+ readonly redocly: string | undefined;
62
+ readonly isCheck: boolean;
63
+ readonly isHelp: boolean;
64
+ readonly isVersion: boolean;
65
+ readonly generatorFlags: GeneratorFlags;
66
+ readonly refLimits: CliRefLimits;
67
+ /** `--fix`, comma-separated and repeatable (ADR-021); unset when the flag is not given. */
68
+ readonly fix: readonly OutputFixName[] | undefined;
69
+ /** Flags the CLI does not know, as written on the command line (`--bogus`, `-x`). */
70
+ readonly unknownFlags: readonly string[];
71
+ }
72
+
73
+ /** Flags of older versions that were removed or renamed, with the message for each. */
74
+ const REMOVED_FLAGS: readonly (readonly [string, string])[] = [
75
+ ["-ap", `The -ap alias has been deprecated. Use "--additional-properties" instead.`],
76
+ ["--immutable-types", `The --immutable-types flag has been renamed to "--immutable".`],
77
+ [
78
+ "--support-array-length",
79
+ `The --support-array-length flag has been renamed to "--array-length".`,
80
+ ],
81
+ ["-it", `The -it alias has been deprecated. Use "--immutable" instead.`],
82
+ ["--redoc", `The --redoc config flag has been renamed to "--redocly" (or -c as shorthand).`],
83
+ ];
84
+
85
+ /** Flags that only work together with `--root-types`. */
86
+ const ROOT_TYPES_FLAGS = ["--root-types-no-schema-prefix", "--root-types-keep-casing"] as const;
87
+
88
+ function rejectRemovedFlags(argv: readonly string[]): void {
89
+ for (const [flag, message] of REMOVED_FLAGS) {
90
+ if (argv.includes(flag)) {
91
+ throw cliError("CLI_FLAG_REMOVED", message);
92
+ }
93
+ }
94
+ }
95
+
96
+ /** Notices for flags that have no effect in this combination, printed before the run. */
97
+ export function ineffectiveFlagNotices(argv: readonly string[]): string[] {
98
+ if (argv.includes("--root-types")) {
99
+ return [];
100
+ }
101
+ return ROOT_TYPES_FLAGS.filter((flag) => argv.includes(flag)).map(
102
+ (flag) => `${flag} has no effect without --root-types flag`,
103
+ );
104
+ }
105
+
106
+ function generatorFlagsOf(parsed: parser.Arguments): GeneratorFlags {
107
+ const flags: Partial<Record<GeneratorFlag, boolean>> = {};
108
+ for (const name of GENERATOR_FLAGS) {
109
+ if (typeof parsed[name] === "boolean") {
110
+ flags[name] = parsed[name];
111
+ }
112
+ }
113
+ return flags;
114
+ }
115
+
116
+ function optionalString(value: unknown): string | undefined {
117
+ return value === undefined ? undefined : String(value);
118
+ }
119
+
120
+ /** The last value of a flag that may be given more than once. */
121
+ function lastString(value: unknown): string | undefined {
122
+ return optionalString(Array.isArray(value) ? value.at(-1) : value);
123
+ }
124
+
125
+ /** `--remote-ref-hosts a.example,b.example`, repeatable; an empty value allows no host. */
126
+ function hostList(value: unknown): string[] | undefined {
127
+ if (value === undefined) {
128
+ return undefined;
129
+ }
130
+ return [value]
131
+ .flat()
132
+ .flatMap((entry) => String(entry).split(","))
133
+ .map((host) => host.trim())
134
+ .filter((host) => host !== "");
135
+ }
136
+
137
+ function refLimitsOf(parsed: parser.Arguments): CliRefLimits {
138
+ const localRefRoot = lastString(parsed.localRefRoot);
139
+ const remoteRefHosts = hostList(parsed.remoteRefHosts);
140
+ return {
141
+ ...(localRefRoot === undefined ? {} : { localRefRoot }),
142
+ ...(remoteRefHosts === undefined ? {} : { remoteRefHosts }),
143
+ };
144
+ }
145
+
146
+ /** String flags, in both spellings, so that a value such as `8080` is not read as a number. */
147
+ const STRING_FLAGS = [
148
+ "output",
149
+ "redocly",
150
+ "fix",
151
+ ...["localRefRoot", "remoteRefHosts"].flatMap((flag) => [flag, kebabCase(flag)]),
152
+ ];
153
+
154
+ const ALIASES = { redocly: ["c"], exportType: ["t"], output: ["o"] };
155
+
156
+ /** Every name yargs-parser can return for a flag this CLI reads. */
157
+ const KNOWN_FLAGS = new Set<string>([
158
+ ...BOOLEAN_FLAGS,
159
+ ...STRING_FLAGS,
160
+ ...Object.values(ALIASES).flat(),
161
+ "version",
162
+ ]);
163
+
164
+ /**
165
+ * Flags that no code reads. The original CLI ignored them silently, so a typo such as
166
+ * `--alphabetise` gave other output with no hint; they still do not fail the run.
167
+ */
168
+ function unknownFlagsOf(parsed: parser.Arguments): string[] {
169
+ const names = Object.keys(parsed)
170
+ .filter((key) => key !== "_" && key !== "--" && !KNOWN_FLAGS.has(key))
171
+ .map((key) => (key.length === 1 ? `-${key}` : `--${kebabCase(key)}`));
172
+ return [...new Set(names)];
173
+ }
174
+
175
+ /**
176
+ * Parse the arguments after `node cli.js`. Fails with `CLI_FLAG_REMOVED` for an old flag and with
177
+ * `OPTION_FIX_UNKNOWN` for an unknown `--fix` name.
178
+ */
179
+ export function parseCliArguments(argv: readonly string[]): CliArguments {
180
+ rejectRemovedFlags(argv);
181
+ const parsed = parser([...argv], {
182
+ boolean: BOOLEAN_FLAGS,
183
+ string: STRING_FLAGS,
184
+ alias: ALIASES,
185
+ });
186
+ return {
187
+ input: optionalString(parsed._[0]),
188
+ output: optionalString(parsed.output),
189
+ redocly: optionalString(parsed.redocly),
190
+ isCheck: parsed.check === true,
191
+ isHelp: "help" in parsed,
192
+ isVersion: "version" in parsed,
193
+ generatorFlags: generatorFlagsOf(parsed),
194
+ refLimits: refLimitsOf(parsed),
195
+ fix: fixNamesOf(parsed.fix),
196
+ unknownFlags: unknownFlagsOf(parsed),
197
+ };
198
+ }
@@ -0,0 +1,42 @@
1
+ import type { Readable } from "node:stream";
2
+ import type { FileReader, FileWriter } from "../application/ports/file-system.js";
3
+ import type { Logger } from "../application/ports/logger.js";
4
+ import type { RedoclyConfigSource } from "../application/ports/redocly-config-source.js";
5
+ import type { GeneratorOptions, SchemaSource } from "../types.js";
6
+
7
+ /** What the CLI needs from the outside world; `main.ts` wires the real adapters (ADR-012). */
8
+
9
+ /** Plain output lines: `info` goes to stdout, `notice` to stderr, both without a prefix. */
10
+ export interface CliConsole {
11
+ info(text: string): void;
12
+ notice(text: string): void;
13
+ }
14
+
15
+ /** The terminal styles of the CLI's own lines; they return the text unchanged without colors. */
16
+ export interface TextStyle {
17
+ bold(text: string): string;
18
+ green(text: string): string;
19
+ dim(text: string): string;
20
+ }
21
+
22
+ /** Generate the printed declarations, with the comment header, for one schema. */
23
+ export type GenerateTypes = (source: SchemaSource, options: GeneratorOptions) => Promise<string>;
24
+
25
+ export interface CliDependencies {
26
+ /** The working directory, as a directory URL (with a trailing slash). */
27
+ readonly cwd: URL;
28
+ readonly version: string;
29
+ /** Warnings and the final error line; never silent. */
30
+ readonly logger: Logger;
31
+ readonly console: CliConsole;
32
+ /** The generated types when there is no `--output`. */
33
+ readonly writeStdout: (text: string) => void;
34
+ /** Read only when the schema comes from stdin: opening it early can keep the process alive. */
35
+ readonly stdin: () => Readable;
36
+ readonly files: FileReader & FileWriter;
37
+ readonly redoclyConfigs: RedoclyConfigSource;
38
+ readonly generate: GenerateTypes;
39
+ /** A monotonic time in milliseconds, for the time printed after each output. */
40
+ readonly now: () => number;
41
+ readonly style: TextStyle;
42
+ }