openapi-typesafe 1.0.0-rc.4 → 1.0.0-rc.5

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 (320) hide show
  1. package/CHANGELOG.md +141 -0
  2. package/dist/adapters/node-file-system/node-file-system.cjs +7 -0
  3. package/dist/adapters/node-file-system/node-file-system.cjs.map +1 -1
  4. package/dist/adapters/node-file-system/node-file-system.mjs +7 -0
  5. package/dist/adapters/node-file-system/node-file-system.mjs.map +1 -1
  6. package/dist/adapters/pipe-safe-writer/pipe-safe-writer.cjs +19 -0
  7. package/dist/adapters/pipe-safe-writer/pipe-safe-writer.cjs.map +1 -0
  8. package/dist/adapters/pipe-safe-writer/pipe-safe-writer.mjs +17 -0
  9. package/dist/adapters/pipe-safe-writer/pipe-safe-writer.mjs.map +1 -0
  10. package/dist/adapters/redocly-loader/bundled-mapping-copies.cjs +5 -32
  11. package/dist/adapters/redocly-loader/bundled-mapping-copies.cjs.map +1 -1
  12. package/dist/adapters/redocly-loader/bundled-mapping-copies.mjs +6 -33
  13. package/dist/adapters/redocly-loader/bundled-mapping-copies.mjs.map +1 -1
  14. package/dist/adapters/redocly-loader/component-schemas.cjs +17 -0
  15. package/dist/adapters/redocly-loader/component-schemas.cjs.map +1 -0
  16. package/dist/adapters/redocly-loader/component-schemas.mjs +14 -0
  17. package/dist/adapters/redocly-loader/component-schemas.mjs.map +1 -0
  18. package/dist/adapters/redocly-loader/mapping-schema-names.cjs +22 -0
  19. package/dist/adapters/redocly-loader/mapping-schema-names.cjs.map +1 -0
  20. package/dist/adapters/redocly-loader/mapping-schema-names.mjs +20 -0
  21. package/dist/adapters/redocly-loader/mapping-schema-names.mjs.map +1 -0
  22. package/dist/adapters/redocly-loader/query-named-components.cjs +137 -0
  23. package/dist/adapters/redocly-loader/query-named-components.cjs.map +1 -0
  24. package/dist/adapters/redocly-loader/query-named-components.mjs +134 -0
  25. package/dist/adapters/redocly-loader/query-named-components.mjs.map +1 -0
  26. package/dist/adapters/redocly-loader/redocly-schema-loader.cjs +26 -14
  27. package/dist/adapters/redocly-loader/redocly-schema-loader.cjs.map +1 -1
  28. package/dist/adapters/redocly-loader/redocly-schema-loader.mjs +26 -14
  29. package/dist/adapters/redocly-loader/redocly-schema-loader.mjs.map +1 -1
  30. package/dist/adapters/redocly-loader/ref-access.cjs +16 -3
  31. package/dist/adapters/redocly-loader/ref-access.cjs.map +1 -1
  32. package/dist/adapters/redocly-loader/ref-access.mjs +16 -3
  33. package/dist/adapters/redocly-loader/ref-access.mjs.map +1 -1
  34. package/dist/adapters/redocly-loader/ref-holders.cjs +52 -10
  35. package/dist/adapters/redocly-loader/ref-holders.cjs.map +1 -1
  36. package/dist/adapters/redocly-loader/ref-holders.mjs +52 -11
  37. package/dist/adapters/redocly-loader/ref-holders.mjs.map +1 -1
  38. package/dist/adapters/redocly-loader/remote-fetch.cjs +5 -3
  39. package/dist/adapters/redocly-loader/remote-fetch.cjs.map +1 -1
  40. package/dist/adapters/redocly-loader/remote-fetch.mjs +5 -3
  41. package/dist/adapters/redocly-loader/remote-fetch.mjs.map +1 -1
  42. package/dist/adapters/redocly-loader/remote-node-limit.cjs +17 -3
  43. package/dist/adapters/redocly-loader/remote-node-limit.cjs.map +1 -1
  44. package/dist/adapters/redocly-loader/remote-node-limit.mjs +17 -3
  45. package/dist/adapters/redocly-loader/remote-node-limit.mjs.map +1 -1
  46. package/dist/adapters/redocly-loader/schema-source.cjs +7 -2
  47. package/dist/adapters/redocly-loader/schema-source.cjs.map +1 -1
  48. package/dist/adapters/redocly-loader/schema-source.mjs +8 -3
  49. package/dist/adapters/redocly-loader/schema-source.mjs.map +1 -1
  50. package/dist/adapters/terminal-logger/terminal-logger.cjs +7 -3
  51. package/dist/adapters/terminal-logger/terminal-logger.cjs.map +1 -1
  52. package/dist/adapters/terminal-logger/terminal-logger.mjs +7 -3
  53. package/dist/adapters/terminal-logger/terminal-logger.mjs.map +1 -1
  54. package/dist/api/document-refs.cjs +16 -1
  55. package/dist/api/document-refs.cjs.map +1 -1
  56. package/dist/api/document-refs.mjs +16 -1
  57. package/dist/api/document-refs.mjs.map +1 -1
  58. package/dist/api/document-run.cjs +4 -10
  59. package/dist/api/document-run.cjs.map +1 -1
  60. package/dist/api/document-run.mjs +4 -10
  61. package/dist/api/document-run.mjs.map +1 -1
  62. package/dist/api/openapi-ts.cjs +1 -2
  63. package/dist/api/openapi-ts.cjs.map +1 -1
  64. package/dist/api/openapi-ts.mjs +2 -3
  65. package/dist/api/openapi-ts.mjs.map +1 -1
  66. package/dist/api/ref-limit-options.cjs +63 -0
  67. package/dist/api/ref-limit-options.cjs.map +1 -0
  68. package/dist/api/ref-limit-options.mjs +57 -0
  69. package/dist/api/ref-limit-options.mjs.map +1 -0
  70. package/dist/api/transform-schema.cjs +12 -5
  71. package/dist/api/transform-schema.cjs.map +1 -1
  72. package/dist/api/transform-schema.mjs +12 -5
  73. package/dist/api/transform-schema.mjs.map +1 -1
  74. package/dist/application/transform/declared-value-types.cjs +36 -0
  75. package/dist/application/transform/declared-value-types.cjs.map +1 -0
  76. package/dist/application/transform/declared-value-types.mjs +34 -0
  77. package/dist/application/transform/declared-value-types.mjs.map +1 -0
  78. package/dist/application/transform/document/document.cjs +3 -1
  79. package/dist/application/transform/document/document.cjs.map +1 -1
  80. package/dist/application/transform/document/document.mjs +3 -1
  81. package/dist/application/transform/document/document.mjs.map +1 -1
  82. package/dist/application/transform/document/exploded-query-values.cjs +63 -0
  83. package/dist/application/transform/document/exploded-query-values.cjs.map +1 -0
  84. package/dist/application/transform/document/exploded-query-values.mjs +59 -0
  85. package/dist/application/transform/document/exploded-query-values.mjs.map +1 -0
  86. package/dist/application/transform/document/header.cjs +11 -3
  87. package/dist/application/transform/document/header.cjs.map +1 -1
  88. package/dist/application/transform/document/header.mjs +10 -2
  89. package/dist/application/transform/document/header.mjs.map +1 -1
  90. package/dist/application/transform/document/parameter.cjs +1 -1
  91. package/dist/application/transform/document/parameter.cjs.map +1 -1
  92. package/dist/application/transform/document/parameter.mjs +1 -1
  93. package/dist/application/transform/document/parameter.mjs.map +1 -1
  94. package/dist/application/transform/document/parameters.cjs +23 -5
  95. package/dist/application/transform/document/parameters.cjs.map +1 -1
  96. package/dist/application/transform/document/parameters.mjs +23 -5
  97. package/dist/application/transform/document/parameters.mjs.map +1 -1
  98. package/dist/application/transform/document/path-item.cjs +4 -3
  99. package/dist/application/transform/document/path-item.cjs.map +1 -1
  100. package/dist/application/transform/document/path-item.mjs +4 -4
  101. package/dist/application/transform/document/path-item.mjs.map +1 -1
  102. package/dist/application/transform/document/path-template-key.cjs +84 -0
  103. package/dist/application/transform/document/path-template-key.cjs.map +1 -0
  104. package/dist/application/transform/document/path-template-key.mjs +79 -0
  105. package/dist/application/transform/document/path-template-key.mjs.map +1 -0
  106. package/dist/application/transform/document/path-template-refs.cjs +70 -0
  107. package/dist/application/transform/document/path-template-refs.cjs.map +1 -0
  108. package/dist/application/transform/document/path-template-refs.mjs +67 -0
  109. package/dist/application/transform/document/path-template-refs.mjs.map +1 -0
  110. package/dist/application/transform/document/paths-enum.cjs +7 -6
  111. package/dist/application/transform/document/paths-enum.cjs.map +1 -1
  112. package/dist/application/transform/document/paths-enum.mjs +7 -6
  113. package/dist/application/transform/document/paths-enum.mjs.map +1 -1
  114. package/dist/application/transform/document/paths.cjs +38 -66
  115. package/dist/application/transform/document/paths.cjs.map +1 -1
  116. package/dist/application/transform/document/paths.mjs +36 -66
  117. package/dist/application/transform/document/paths.mjs.map +1 -1
  118. package/dist/application/transform/document/webhooks.cjs +10 -3
  119. package/dist/application/transform/document/webhooks.cjs.map +1 -1
  120. package/dist/application/transform/document/webhooks.mjs +9 -2
  121. package/dist/application/transform/document/webhooks.mjs.map +1 -1
  122. package/dist/application/transform/footer/document-footer.cjs +6 -3
  123. package/dist/application/transform/footer/document-footer.cjs.map +1 -1
  124. package/dist/application/transform/footer/document-footer.mjs +6 -3
  125. package/dist/application/transform/footer/document-footer.mjs.map +1 -1
  126. package/dist/application/transform/helper-types.cjs +3 -3
  127. package/dist/application/transform/helper-types.cjs.map +1 -1
  128. package/dist/application/transform/helper-types.mjs +3 -3
  129. package/dist/application/transform/helper-types.mjs.map +1 -1
  130. package/dist/application/transform/ref-pointer/generated-location.cjs +4 -4
  131. package/dist/application/transform/ref-pointer/generated-location.cjs.map +1 -1
  132. package/dist/application/transform/ref-pointer/generated-location.mjs +1 -1
  133. package/dist/application/transform/ref-pointer/generated-location.mjs.map +1 -1
  134. package/dist/application/transform/ref-pointer/generated-shape.cjs +47 -66
  135. package/dist/application/transform/ref-pointer/generated-shape.cjs.map +1 -1
  136. package/dist/application/transform/ref-pointer/generated-shape.mjs +36 -50
  137. package/dist/application/transform/ref-pointer/generated-shape.mjs.map +1 -1
  138. package/dist/application/transform/ref-pointer/inline-cycles.cjs +2 -2
  139. package/dist/application/transform/ref-pointer/inline-cycles.cjs.map +1 -1
  140. package/dist/application/transform/ref-pointer/inline-cycles.mjs +1 -1
  141. package/dist/application/transform/ref-pointer/inline-cycles.mjs.map +1 -1
  142. package/dist/application/transform/ref-pointer/located-node.cjs +23 -0
  143. package/dist/application/transform/ref-pointer/located-node.cjs.map +1 -0
  144. package/dist/application/transform/ref-pointer/located-node.mjs +18 -0
  145. package/dist/application/transform/ref-pointer/located-node.mjs.map +1 -0
  146. package/dist/application/transform/ref-pointer/original-index.cjs +68 -13
  147. package/dist/application/transform/ref-pointer/original-index.cjs.map +1 -1
  148. package/dist/application/transform/ref-pointer/original-index.mjs +70 -15
  149. package/dist/application/transform/ref-pointer/original-index.mjs.map +1 -1
  150. package/dist/application/transform/ref-pointer/pointer-type.cjs +2 -2
  151. package/dist/application/transform/ref-pointer/pointer-type.cjs.map +1 -1
  152. package/dist/application/transform/ref-pointer/pointer-type.mjs +1 -1
  153. package/dist/application/transform/ref-pointer/pointer-type.mjs.map +1 -1
  154. package/dist/application/transform/ref-pointer/pointer-walk.cjs +54 -13
  155. package/dist/application/transform/ref-pointer/pointer-walk.cjs.map +1 -1
  156. package/dist/application/transform/ref-pointer/pointer-walk.mjs +46 -7
  157. package/dist/application/transform/ref-pointer/pointer-walk.mjs.map +1 -1
  158. package/dist/application/transform/ref-pointer/property-shape.cjs +52 -0
  159. package/dist/application/transform/ref-pointer/property-shape.cjs.map +1 -0
  160. package/dist/application/transform/ref-pointer/property-shape.mjs +45 -0
  161. package/dist/application/transform/ref-pointer/property-shape.mjs.map +1 -0
  162. package/dist/application/transform/ref-pointer/typed-walk.cjs +79 -21
  163. package/dist/application/transform/ref-pointer/typed-walk.cjs.map +1 -1
  164. package/dist/application/transform/ref-pointer/typed-walk.mjs +76 -18
  165. package/dist/application/transform/ref-pointer/typed-walk.mjs.map +1 -1
  166. package/dist/application/transform/schema/access-flags.cjs.map +1 -1
  167. package/dist/application/transform/schema/access-flags.mjs.map +1 -1
  168. package/dist/application/transform/schema/index-signature-type.cjs +21 -0
  169. package/dist/application/transform/schema/index-signature-type.cjs.map +1 -0
  170. package/dist/application/transform/schema/index-signature-type.mjs +19 -0
  171. package/dist/application/transform/schema/index-signature-type.mjs.map +1 -0
  172. package/dist/application/transform/schema/input-location.cjs +23 -0
  173. package/dist/application/transform/schema/input-location.cjs.map +1 -0
  174. package/dist/application/transform/schema/input-location.mjs +21 -0
  175. package/dist/application/transform/schema/input-location.mjs.map +1 -0
  176. package/dist/application/transform/schema/object-type.cjs +15 -5
  177. package/dist/application/transform/schema/object-type.cjs.map +1 -1
  178. package/dist/application/transform/schema/object-type.mjs +15 -5
  179. package/dist/application/transform/schema/object-type.mjs.map +1 -1
  180. package/dist/application/transform/schema/schema-transform.cjs +2 -1
  181. package/dist/application/transform/schema/schema-transform.cjs.map +1 -1
  182. package/dist/application/transform/schema/schema-transform.mjs +2 -1
  183. package/dist/application/transform/schema/schema-transform.mjs.map +1 -1
  184. package/dist/application/transform/schema/unevaluated-properties.cjs +2 -30
  185. package/dist/application/transform/schema/unevaluated-properties.cjs.map +1 -1
  186. package/dist/application/transform/schema/unevaluated-properties.mjs +3 -31
  187. package/dist/application/transform/schema/unevaluated-properties.mjs.map +1 -1
  188. package/dist/cli/api-logger.cjs +13 -0
  189. package/dist/cli/api-logger.cjs.map +1 -0
  190. package/dist/cli/api-logger.mjs +11 -0
  191. package/dist/cli/api-logger.mjs.map +1 -0
  192. package/dist/cli/api-settings.cjs +7 -15
  193. package/dist/cli/api-settings.cjs.map +1 -1
  194. package/dist/cli/api-settings.mjs +8 -16
  195. package/dist/cli/api-settings.mjs.map +1 -1
  196. package/dist/cli/cli-arguments.cjs +51 -11
  197. package/dist/cli/cli-arguments.cjs.map +1 -1
  198. package/dist/cli/cli-arguments.mjs +51 -11
  199. package/dist/cli/cli-arguments.mjs.map +1 -1
  200. package/dist/cli/cli-errors.cjs +17 -0
  201. package/dist/cli/cli-errors.cjs.map +1 -1
  202. package/dist/cli/cli-errors.mjs +17 -1
  203. package/dist/cli/cli-errors.mjs.map +1 -1
  204. package/dist/cli/cli-output.cjs +6 -4
  205. package/dist/cli/cli-output.cjs.map +1 -1
  206. package/dist/cli/cli-output.mjs +7 -5
  207. package/dist/cli/cli-output.mjs.map +1 -1
  208. package/dist/cli/main.cjs +10 -4
  209. package/dist/cli/main.cjs.map +1 -1
  210. package/dist/cli/main.mjs +10 -4
  211. package/dist/cli/main.mjs.map +1 -1
  212. package/dist/cli/redocly-apis.cjs +20 -9
  213. package/dist/cli/redocly-apis.cjs.map +1 -1
  214. package/dist/cli/redocly-apis.mjs +22 -11
  215. package/dist/cli/redocly-apis.mjs.map +1 -1
  216. package/dist/cli/ref-limits.cjs +15 -1
  217. package/dist/cli/ref-limits.cjs.map +1 -1
  218. package/dist/cli/ref-limits.mjs +15 -2
  219. package/dist/cli/ref-limits.mjs.map +1 -1
  220. package/dist/cli/run-cli.cjs +24 -7
  221. package/dist/cli/run-cli.cjs.map +1 -1
  222. package/dist/cli/run-cli.mjs +25 -8
  223. package/dist/cli/run-cli.mjs.map +1 -1
  224. package/dist/domain/cause-secrets.cjs +31 -16
  225. package/dist/domain/cause-secrets.cjs.map +1 -1
  226. package/dist/domain/cause-secrets.mjs +31 -16
  227. package/dist/domain/cause-secrets.mjs.map +1 -1
  228. package/dist/domain/errors.cjs +2 -0
  229. package/dist/domain/errors.cjs.map +1 -1
  230. package/dist/domain/errors.mjs +2 -0
  231. package/dist/domain/errors.mjs.map +1 -1
  232. package/dist/domain/location-text.cjs +9 -0
  233. package/dist/domain/location-text.cjs.map +1 -0
  234. package/dist/domain/location-text.mjs +7 -0
  235. package/dist/domain/location-text.mjs.map +1 -0
  236. package/dist/domain/openapi/document-places.cjs +55 -0
  237. package/dist/domain/openapi/document-places.cjs.map +1 -0
  238. package/dist/domain/openapi/document-places.mjs +53 -0
  239. package/dist/domain/openapi/document-places.mjs.map +1 -0
  240. package/dist/domain/output-fixes.cjs +8 -2
  241. package/dist/domain/output-fixes.cjs.map +1 -1
  242. package/dist/domain/output-fixes.mjs +8 -2
  243. package/dist/domain/output-fixes.mjs.map +1 -1
  244. package/dist/domain/terminal-text.cjs +31 -0
  245. package/dist/domain/terminal-text.cjs.map +1 -0
  246. package/dist/domain/terminal-text.mjs +29 -0
  247. package/dist/domain/terminal-text.mjs.map +1 -0
  248. package/dist/domain/warnings.cjs +1 -0
  249. package/dist/domain/warnings.cjs.map +1 -1
  250. package/dist/domain/warnings.mjs +1 -0
  251. package/dist/domain/warnings.mjs.map +1 -1
  252. package/dist/index.d.cts +26 -18
  253. package/dist/index.d.mts +26 -18
  254. package/dist/index.d.ts +26 -18
  255. package/package.json +1 -1
  256. package/src/adapters/node-file-system/node-file-system.ts +14 -1
  257. package/src/adapters/pipe-safe-writer/pipe-safe-writer.ts +29 -0
  258. package/src/adapters/redocly-loader/bundled-mapping-copies.ts +7 -42
  259. package/src/adapters/redocly-loader/component-schemas.ts +19 -0
  260. package/src/adapters/redocly-loader/mapping-schema-names.ts +25 -0
  261. package/src/adapters/redocly-loader/query-named-components.ts +201 -0
  262. package/src/adapters/redocly-loader/redocly-schema-loader.ts +46 -14
  263. package/src/adapters/redocly-loader/ref-access.ts +16 -3
  264. package/src/adapters/redocly-loader/ref-holders.ts +75 -14
  265. package/src/adapters/redocly-loader/remote-fetch.ts +11 -2
  266. package/src/adapters/redocly-loader/remote-node-limit.ts +44 -4
  267. package/src/adapters/redocly-loader/schema-source.ts +15 -3
  268. package/src/adapters/terminal-logger/terminal-logger.ts +10 -4
  269. package/src/api/document-refs.ts +29 -1
  270. package/src/api/document-run.ts +6 -16
  271. package/src/api/openapi-ts.ts +6 -3
  272. package/src/api/ref-limit-options.ts +76 -0
  273. package/src/api/transform-schema.ts +20 -5
  274. package/src/application/ports/file-system.ts +8 -0
  275. package/src/application/transform/declared-value-types.ts +42 -0
  276. package/src/application/transform/document/document.ts +4 -2
  277. package/src/application/transform/document/exploded-query-values.ts +88 -0
  278. package/src/application/transform/document/header.ts +25 -5
  279. package/src/application/transform/document/parameter.ts +4 -4
  280. package/src/application/transform/document/parameters.ts +45 -10
  281. package/src/application/transform/document/path-item.ts +3 -3
  282. package/src/application/transform/document/path-template-key.ts +152 -0
  283. package/src/application/transform/document/path-template-refs.ts +106 -0
  284. package/src/application/transform/document/paths-enum.ts +23 -9
  285. package/src/application/transform/document/paths.ts +53 -123
  286. package/src/application/transform/document/webhooks.ts +18 -5
  287. package/src/application/transform/footer/document-footer.ts +18 -8
  288. package/src/application/transform/helper-types.ts +4 -4
  289. package/src/application/transform/ref-pointer/generated-location.ts +1 -1
  290. package/src/application/transform/ref-pointer/generated-shape.ts +67 -78
  291. package/src/application/transform/ref-pointer/inline-cycles.ts +1 -1
  292. package/src/application/transform/ref-pointer/located-node.ts +38 -0
  293. package/src/application/transform/ref-pointer/original-index.ts +100 -17
  294. package/src/application/transform/ref-pointer/pointer-type.ts +1 -1
  295. package/src/application/transform/ref-pointer/pointer-walk.ts +82 -8
  296. package/src/application/transform/ref-pointer/property-shape.ts +97 -0
  297. package/src/application/transform/ref-pointer/typed-walk.ts +117 -25
  298. package/src/application/transform/schema/access-flags.ts +5 -2
  299. package/src/application/transform/schema/index-signature-type.ts +31 -0
  300. package/src/application/transform/schema/input-location.ts +35 -0
  301. package/src/application/transform/schema/object-type.ts +18 -8
  302. package/src/application/transform/schema/schema-transform.ts +2 -1
  303. package/src/application/transform/schema/unevaluated-properties.ts +4 -44
  304. package/src/cli/api-logger.ts +17 -0
  305. package/src/cli/api-settings.ts +12 -20
  306. package/src/cli/cli-arguments.ts +90 -14
  307. package/src/cli/cli-dependencies.ts +7 -2
  308. package/src/cli/cli-errors.ts +22 -0
  309. package/src/cli/cli-output.ts +11 -10
  310. package/src/cli/main.ts +10 -4
  311. package/src/cli/redocly-apis.ts +37 -17
  312. package/src/cli/ref-limits.ts +21 -2
  313. package/src/cli/run-cli.ts +39 -7
  314. package/src/domain/cause-secrets.ts +59 -25
  315. package/src/domain/errors.ts +2 -0
  316. package/src/domain/location-text.ts +12 -0
  317. package/src/domain/openapi/document-places.ts +78 -0
  318. package/src/domain/output-fixes.ts +9 -2
  319. package/src/domain/terminal-text.ts +44 -0
  320. package/src/domain/warnings.ts +1 -0
@@ -2,6 +2,7 @@
2
2
 
3
3
  const WARNING_CODES = {
4
4
  CLI_INPUT_IGNORED: "CLI_INPUT_IGNORED",
5
+ CLI_OUTPUT_IGNORED: "CLI_OUTPUT_IGNORED",
5
6
  CONFIG_SETTING_UNKNOWN: "CONFIG_SETTING_UNKNOWN",
6
7
  DISCRIMINATOR_MAPPING_INVALID: "DISCRIMINATOR_MAPPING_INVALID",
7
8
  DISCRIMINATOR_VALUE_NOT_ALLOWED: "DISCRIMINATOR_VALUE_NOT_ALLOWED",
@@ -1 +1 @@
1
- {"version":3,"file":"warnings.cjs","sources":["../../src/domain/warnings.ts"],"sourcesContent":["/**\n * Typed warnings. A warning does not stop the run: the output is written and the CLI exits with 0.\n * Each one ends with a stable machine-readable code in parentheses, as the CLI prints errors\n * (`message (CODE)`), so a script or a person can search for it.\n */\n\n/** Every warning code. */\nexport const WARNING_CODES = {\n CLI_INPUT_IGNORED: \"CLI_INPUT_IGNORED\",\n CONFIG_SETTING_UNKNOWN: \"CONFIG_SETTING_UNKNOWN\",\n DISCRIMINATOR_MAPPING_INVALID: \"DISCRIMINATOR_MAPPING_INVALID\",\n DISCRIMINATOR_VALUE_NOT_ALLOWED: \"DISCRIMINATOR_VALUE_NOT_ALLOWED\",\n ENUM_VALUES_EXCLUDED: \"ENUM_VALUES_EXCLUDED\",\n FIX_NEEDS_OPTION: \"FIX_NEEDS_OPTION\",\n LINT_PROBLEM: \"LINT_PROBLEM\",\n PATH_TEMPLATES_IDENTICAL: \"PATH_TEMPLATES_IDENTICAL\",\n QUERYSTRING_NEXT_TO_QUERY: \"QUERYSTRING_NEXT_TO_QUERY\",\n REF_CIRCULAR: \"REF_CIRCULAR\",\n REF_NOT_FOUND: \"REF_NOT_FOUND\",\n} as const;\n\nexport type WarningCode = (typeof WARNING_CODES)[keyof typeof WARNING_CODES];\n\n/** The warning line for people, with its code at the end. */\nexport function warningText(message: string, code: WarningCode): string {\n return `${message} (${code})`;\n}\n"],"names":[],"mappings":";;AAOO,MAAM,aAAA,GAAgB;AAAA,EAC3B,iBAAA,EAAmB,mBAAA;AAAA,EACnB,sBAAA,EAAwB,wBAAA;AAAA,EACxB,6BAAA,EAA+B,+BAAA;AAAA,EAC/B,+BAAA,EAAiC,iCAAA;AAAA,EACjC,oBAAA,EAAsB,sBAAA;AAAA,EACtB,gBAAA,EAAkB,kBAAA;AAAA,EAClB,YAAA,EAAc,cAAA;AAAA,EACd,wBAAA,EAA0B,0BAAA;AAAA,EAC1B,yBAAA,EAA2B,2BAAA;AAAA,EAC3B,YAAA,EAAc,cAAA;AAAA,EACd,aAAA,EAAe;AACjB;AAKO,SAAS,WAAA,CAAY,SAAiB,IAAA,EAA2B;AACtE,EAAA,OAAO,CAAA,EAAG,OAAO,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,CAAA;AAC5B;;;"}
1
+ {"version":3,"file":"warnings.cjs","sources":["../../src/domain/warnings.ts"],"sourcesContent":["/**\n * Typed warnings. A warning does not stop the run: the output is written and the CLI exits with 0.\n * Each one ends with a stable machine-readable code in parentheses, as the CLI prints errors\n * (`message (CODE)`), so a script or a person can search for it.\n */\n\n/** Every warning code. */\nexport const WARNING_CODES = {\n CLI_INPUT_IGNORED: \"CLI_INPUT_IGNORED\",\n CLI_OUTPUT_IGNORED: \"CLI_OUTPUT_IGNORED\",\n CONFIG_SETTING_UNKNOWN: \"CONFIG_SETTING_UNKNOWN\",\n DISCRIMINATOR_MAPPING_INVALID: \"DISCRIMINATOR_MAPPING_INVALID\",\n DISCRIMINATOR_VALUE_NOT_ALLOWED: \"DISCRIMINATOR_VALUE_NOT_ALLOWED\",\n ENUM_VALUES_EXCLUDED: \"ENUM_VALUES_EXCLUDED\",\n FIX_NEEDS_OPTION: \"FIX_NEEDS_OPTION\",\n LINT_PROBLEM: \"LINT_PROBLEM\",\n PATH_TEMPLATES_IDENTICAL: \"PATH_TEMPLATES_IDENTICAL\",\n QUERYSTRING_NEXT_TO_QUERY: \"QUERYSTRING_NEXT_TO_QUERY\",\n REF_CIRCULAR: \"REF_CIRCULAR\",\n REF_NOT_FOUND: \"REF_NOT_FOUND\",\n} as const;\n\nexport type WarningCode = (typeof WARNING_CODES)[keyof typeof WARNING_CODES];\n\n/** The warning line for people, with its code at the end. */\nexport function warningText(message: string, code: WarningCode): string {\n return `${message} (${code})`;\n}\n"],"names":[],"mappings":";;AAOO,MAAM,aAAA,GAAgB;AAAA,EAC3B,iBAAA,EAAmB,mBAAA;AAAA,EACnB,kBAAA,EAAoB,oBAAA;AAAA,EACpB,sBAAA,EAAwB,wBAAA;AAAA,EACxB,6BAAA,EAA+B,+BAAA;AAAA,EAC/B,+BAAA,EAAiC,iCAAA;AAAA,EACjC,oBAAA,EAAsB,sBAAA;AAAA,EACtB,gBAAA,EAAkB,kBAAA;AAAA,EAClB,YAAA,EAAc,cAAA;AAAA,EACd,wBAAA,EAA0B,0BAAA;AAAA,EAC1B,yBAAA,EAA2B,2BAAA;AAAA,EAC3B,YAAA,EAAc,cAAA;AAAA,EACd,aAAA,EAAe;AACjB;AAKO,SAAS,WAAA,CAAY,SAAiB,IAAA,EAA2B;AACtE,EAAA,OAAO,CAAA,EAAG,OAAO,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,CAAA;AAC5B;;;"}
@@ -1,5 +1,6 @@
1
1
  const WARNING_CODES = {
2
2
  CLI_INPUT_IGNORED: "CLI_INPUT_IGNORED",
3
+ CLI_OUTPUT_IGNORED: "CLI_OUTPUT_IGNORED",
3
4
  CONFIG_SETTING_UNKNOWN: "CONFIG_SETTING_UNKNOWN",
4
5
  DISCRIMINATOR_MAPPING_INVALID: "DISCRIMINATOR_MAPPING_INVALID",
5
6
  DISCRIMINATOR_VALUE_NOT_ALLOWED: "DISCRIMINATOR_VALUE_NOT_ALLOWED",
@@ -1 +1 @@
1
- {"version":3,"file":"warnings.mjs","sources":["../../src/domain/warnings.ts"],"sourcesContent":["/**\n * Typed warnings. A warning does not stop the run: the output is written and the CLI exits with 0.\n * Each one ends with a stable machine-readable code in parentheses, as the CLI prints errors\n * (`message (CODE)`), so a script or a person can search for it.\n */\n\n/** Every warning code. */\nexport const WARNING_CODES = {\n CLI_INPUT_IGNORED: \"CLI_INPUT_IGNORED\",\n CONFIG_SETTING_UNKNOWN: \"CONFIG_SETTING_UNKNOWN\",\n DISCRIMINATOR_MAPPING_INVALID: \"DISCRIMINATOR_MAPPING_INVALID\",\n DISCRIMINATOR_VALUE_NOT_ALLOWED: \"DISCRIMINATOR_VALUE_NOT_ALLOWED\",\n ENUM_VALUES_EXCLUDED: \"ENUM_VALUES_EXCLUDED\",\n FIX_NEEDS_OPTION: \"FIX_NEEDS_OPTION\",\n LINT_PROBLEM: \"LINT_PROBLEM\",\n PATH_TEMPLATES_IDENTICAL: \"PATH_TEMPLATES_IDENTICAL\",\n QUERYSTRING_NEXT_TO_QUERY: \"QUERYSTRING_NEXT_TO_QUERY\",\n REF_CIRCULAR: \"REF_CIRCULAR\",\n REF_NOT_FOUND: \"REF_NOT_FOUND\",\n} as const;\n\nexport type WarningCode = (typeof WARNING_CODES)[keyof typeof WARNING_CODES];\n\n/** The warning line for people, with its code at the end. */\nexport function warningText(message: string, code: WarningCode): string {\n return `${message} (${code})`;\n}\n"],"names":[],"mappings":"AAOO,MAAM,aAAA,GAAgB;AAAA,EAC3B,iBAAA,EAAmB,mBAAA;AAAA,EACnB,sBAAA,EAAwB,wBAAA;AAAA,EACxB,6BAAA,EAA+B,+BAAA;AAAA,EAC/B,+BAAA,EAAiC,iCAAA;AAAA,EACjC,oBAAA,EAAsB,sBAAA;AAAA,EACtB,gBAAA,EAAkB,kBAAA;AAAA,EAClB,YAAA,EAAc,cAAA;AAAA,EACd,wBAAA,EAA0B,0BAAA;AAAA,EAC1B,yBAAA,EAA2B,2BAAA;AAAA,EAC3B,YAAA,EAAc,cAAA;AAAA,EACd,aAAA,EAAe;AACjB;AAKO,SAAS,WAAA,CAAY,SAAiB,IAAA,EAA2B;AACtE,EAAA,OAAO,CAAA,EAAG,OAAO,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,CAAA;AAC5B;;"}
1
+ {"version":3,"file":"warnings.mjs","sources":["../../src/domain/warnings.ts"],"sourcesContent":["/**\n * Typed warnings. A warning does not stop the run: the output is written and the CLI exits with 0.\n * Each one ends with a stable machine-readable code in parentheses, as the CLI prints errors\n * (`message (CODE)`), so a script or a person can search for it.\n */\n\n/** Every warning code. */\nexport const WARNING_CODES = {\n CLI_INPUT_IGNORED: \"CLI_INPUT_IGNORED\",\n CLI_OUTPUT_IGNORED: \"CLI_OUTPUT_IGNORED\",\n CONFIG_SETTING_UNKNOWN: \"CONFIG_SETTING_UNKNOWN\",\n DISCRIMINATOR_MAPPING_INVALID: \"DISCRIMINATOR_MAPPING_INVALID\",\n DISCRIMINATOR_VALUE_NOT_ALLOWED: \"DISCRIMINATOR_VALUE_NOT_ALLOWED\",\n ENUM_VALUES_EXCLUDED: \"ENUM_VALUES_EXCLUDED\",\n FIX_NEEDS_OPTION: \"FIX_NEEDS_OPTION\",\n LINT_PROBLEM: \"LINT_PROBLEM\",\n PATH_TEMPLATES_IDENTICAL: \"PATH_TEMPLATES_IDENTICAL\",\n QUERYSTRING_NEXT_TO_QUERY: \"QUERYSTRING_NEXT_TO_QUERY\",\n REF_CIRCULAR: \"REF_CIRCULAR\",\n REF_NOT_FOUND: \"REF_NOT_FOUND\",\n} as const;\n\nexport type WarningCode = (typeof WARNING_CODES)[keyof typeof WARNING_CODES];\n\n/** The warning line for people, with its code at the end. */\nexport function warningText(message: string, code: WarningCode): string {\n return `${message} (${code})`;\n}\n"],"names":[],"mappings":"AAOO,MAAM,aAAA,GAAgB;AAAA,EAC3B,iBAAA,EAAmB,mBAAA;AAAA,EACnB,kBAAA,EAAoB,oBAAA;AAAA,EACpB,sBAAA,EAAwB,wBAAA;AAAA,EACxB,6BAAA,EAA+B,+BAAA;AAAA,EAC/B,+BAAA,EAAiC,iCAAA;AAAA,EACjC,oBAAA,EAAsB,sBAAA;AAAA,EACtB,gBAAA,EAAkB,kBAAA;AAAA,EAClB,YAAA,EAAc,cAAA;AAAA,EACd,wBAAA,EAA0B,0BAAA;AAAA,EAC1B,yBAAA,EAA2B,2BAAA;AAAA,EAC3B,YAAA,EAAc,cAAA;AAAA,EACd,aAAA,EAAe;AACjB;AAKO,SAAS,WAAA,CAAY,SAAiB,IAAA,EAA2B;AACtE,EAAA,OAAO,CAAA,EAAG,OAAO,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,CAAA;AAC5B;;"}
package/dist/index.d.cts CHANGED
@@ -4,6 +4,22 @@ import { Config } from '@redocly/openapi-core';
4
4
  import * as TypeScript from 'typescript';
5
5
  import colors from 'ansi-colors';
6
6
 
7
+ /** The debug groups of the original `DEBUG=openapi-ts:<group>` output. */
8
+ type DebugGroup = "redoc" | "lint" | "bundle" | "ts";
9
+ /**
10
+ * Where the generator reports progress and problems (ENGINEERING_PLAN 4.5). Whether warnings are
11
+ * printed (`silent`) and debug output (`DEBUG`) is decided by the adapter, when it is created.
12
+ */
13
+ interface Logger {
14
+ /**
15
+ * A debug line, with how long the step took when it was measured. A line without a group is
16
+ * written whenever debug output is on.
17
+ */
18
+ debug(message: string, group?: DebugGroup, durationMs?: number): void;
19
+ warn(message: string): void;
20
+ error(message: string): void;
21
+ }
22
+
7
23
  /**
8
24
  * Type IR: the closed set of immutable nodes that describes the TypeScript types and declarations
9
25
  * the generator emits (ENGINEERING_PLAN §4.2, ADR-002). Nodes are plain readonly data with a `kind`
@@ -268,6 +284,11 @@ declare const FIX: {
268
284
  readonly ARRAY_LENGTH_TUPLES: "array-length-tuples";
269
285
  /** `--dedupe-enums` names a shared enum by all of its schemas, not by the first one. */
270
286
  readonly DEDUPE_ENUM_NAMES: "dedupe-enum-names";
287
+ /**
288
+ * `--default-non-nullable` finds parameters and request bodies by the document's structure, not
289
+ * by the words `parameters` and `requestBody` anywhere in a schema's location.
290
+ */
291
+ readonly DEFAULT_INPUT_LOCATIONS: "default-input-locations";
271
292
  /** `required` next to an `allOf` `$ref` to a discriminator member still gives `WithRequired`. */
272
293
  readonly DISCRIMINATOR_MEMBER_REQUIRED: "discriminator-member-required";
273
294
  /**
@@ -280,8 +301,8 @@ declare const FIX: {
280
301
  readonly EXPLODED_QUERY_OBJECTS: "exploded-query-objects";
281
302
  /** `--enum` declares an enum that lists `null` without it, and the type adds `| null`. */
282
303
  readonly NULLABLE_ENUMS: "nullable-enums";
283
- /** A parameter with `content` instead of `schema` is typed by the schema of its media type. */
284
- readonly PARAMETER_CONTENT: "parameter-content";
304
+ /** A parameter or header with `content`, not `schema`, is typed by its media type's schema. */
305
+ readonly PARAMETER_HEADER_CONTENT: "parameter-header-content";
285
306
  /** `--path-params-as-types` gives each `{name}` its placeholder, `{number}` included. */
286
307
  readonly PATH_PARAM_TYPE_NAMES: "path-param-type-names";
287
308
  /** A `prefixItems` tuple is open unless `items` or `unevaluatedItems` closes it (2020-12). */
@@ -1474,22 +1495,6 @@ declare const DEPRECATION_CODES: {
1474
1495
  };
1475
1496
  type DeprecationCode = (typeof DEPRECATION_CODES)[keyof typeof DEPRECATION_CODES];
1476
1497
 
1477
- /** The debug groups of the original `DEBUG=openapi-ts:<group>` output. */
1478
- type DebugGroup = "redoc" | "lint" | "bundle" | "ts";
1479
- /**
1480
- * Where the generator reports progress and problems (ENGINEERING_PLAN 4.5). Whether warnings are
1481
- * printed (`silent`) and debug output (`DEBUG`) is decided by the adapter, when it is created.
1482
- */
1483
- interface Logger {
1484
- /**
1485
- * A debug line, with how long the step took when it was measured. A line without a group is
1486
- * written whenever debug output is on.
1487
- */
1488
- debug(message: string, group?: DebugGroup, durationMs?: number): void;
1489
- warn(message: string): void;
1490
- error(message: string): void;
1491
- }
1492
-
1493
1498
  /**
1494
1499
  * Convert an OpenAPI schema to TypeScript declarations (IR nodes; print them with `astToString`)
1495
1500
  * @param {string|URL|object|Readable} source OpenAPI schema source:
@@ -1526,8 +1531,10 @@ declare const ERROR_CODES: {
1526
1531
  readonly ENUM_NAME_EMPTY: "ENUM_NAME_EMPTY";
1527
1532
  readonly CALLBACK_RESULT_UNREADABLE: "CALLBACK_RESULT_UNREADABLE";
1528
1533
  readonly OPTION_FIX_UNKNOWN: "OPTION_FIX_UNKNOWN";
1534
+ readonly OPTION_INVALID: "OPTION_INVALID";
1529
1535
  readonly TYPESCRIPT_NOT_FOUND: "TYPESCRIPT_NOT_FOUND";
1530
1536
  readonly CLI_FLAG_REMOVED: "CLI_FLAG_REMOVED";
1537
+ readonly CLI_FLAG_INVALID: "CLI_FLAG_INVALID";
1531
1538
  readonly CLI_GLOB_UNSUPPORTED: "CLI_GLOB_UNSUPPORTED";
1532
1539
  readonly CLI_CONFIG_NOT_FOUND: "CLI_CONFIG_NOT_FOUND";
1533
1540
  readonly CLI_CONFIG_INVALID: "CLI_CONFIG_INVALID";
@@ -1849,6 +1856,7 @@ declare function transformSchema(schema: OpenAPI3, ctx: GlobalContext): IrDeclar
1849
1856
  /** Every warning code. */
1850
1857
  declare const WARNING_CODES: {
1851
1858
  readonly CLI_INPUT_IGNORED: "CLI_INPUT_IGNORED";
1859
+ readonly CLI_OUTPUT_IGNORED: "CLI_OUTPUT_IGNORED";
1852
1860
  readonly CONFIG_SETTING_UNKNOWN: "CONFIG_SETTING_UNKNOWN";
1853
1861
  readonly DISCRIMINATOR_MAPPING_INVALID: "DISCRIMINATOR_MAPPING_INVALID";
1854
1862
  readonly DISCRIMINATOR_VALUE_NOT_ALLOWED: "DISCRIMINATOR_VALUE_NOT_ALLOWED";
package/dist/index.d.mts CHANGED
@@ -4,6 +4,22 @@ import { Config } from '@redocly/openapi-core';
4
4
  import * as TypeScript from 'typescript';
5
5
  import colors from 'ansi-colors';
6
6
 
7
+ /** The debug groups of the original `DEBUG=openapi-ts:<group>` output. */
8
+ type DebugGroup = "redoc" | "lint" | "bundle" | "ts";
9
+ /**
10
+ * Where the generator reports progress and problems (ENGINEERING_PLAN 4.5). Whether warnings are
11
+ * printed (`silent`) and debug output (`DEBUG`) is decided by the adapter, when it is created.
12
+ */
13
+ interface Logger {
14
+ /**
15
+ * A debug line, with how long the step took when it was measured. A line without a group is
16
+ * written whenever debug output is on.
17
+ */
18
+ debug(message: string, group?: DebugGroup, durationMs?: number): void;
19
+ warn(message: string): void;
20
+ error(message: string): void;
21
+ }
22
+
7
23
  /**
8
24
  * Type IR: the closed set of immutable nodes that describes the TypeScript types and declarations
9
25
  * the generator emits (ENGINEERING_PLAN §4.2, ADR-002). Nodes are plain readonly data with a `kind`
@@ -268,6 +284,11 @@ declare const FIX: {
268
284
  readonly ARRAY_LENGTH_TUPLES: "array-length-tuples";
269
285
  /** `--dedupe-enums` names a shared enum by all of its schemas, not by the first one. */
270
286
  readonly DEDUPE_ENUM_NAMES: "dedupe-enum-names";
287
+ /**
288
+ * `--default-non-nullable` finds parameters and request bodies by the document's structure, not
289
+ * by the words `parameters` and `requestBody` anywhere in a schema's location.
290
+ */
291
+ readonly DEFAULT_INPUT_LOCATIONS: "default-input-locations";
271
292
  /** `required` next to an `allOf` `$ref` to a discriminator member still gives `WithRequired`. */
272
293
  readonly DISCRIMINATOR_MEMBER_REQUIRED: "discriminator-member-required";
273
294
  /**
@@ -280,8 +301,8 @@ declare const FIX: {
280
301
  readonly EXPLODED_QUERY_OBJECTS: "exploded-query-objects";
281
302
  /** `--enum` declares an enum that lists `null` without it, and the type adds `| null`. */
282
303
  readonly NULLABLE_ENUMS: "nullable-enums";
283
- /** A parameter with `content` instead of `schema` is typed by the schema of its media type. */
284
- readonly PARAMETER_CONTENT: "parameter-content";
304
+ /** A parameter or header with `content`, not `schema`, is typed by its media type's schema. */
305
+ readonly PARAMETER_HEADER_CONTENT: "parameter-header-content";
285
306
  /** `--path-params-as-types` gives each `{name}` its placeholder, `{number}` included. */
286
307
  readonly PATH_PARAM_TYPE_NAMES: "path-param-type-names";
287
308
  /** A `prefixItems` tuple is open unless `items` or `unevaluatedItems` closes it (2020-12). */
@@ -1474,22 +1495,6 @@ declare const DEPRECATION_CODES: {
1474
1495
  };
1475
1496
  type DeprecationCode = (typeof DEPRECATION_CODES)[keyof typeof DEPRECATION_CODES];
1476
1497
 
1477
- /** The debug groups of the original `DEBUG=openapi-ts:<group>` output. */
1478
- type DebugGroup = "redoc" | "lint" | "bundle" | "ts";
1479
- /**
1480
- * Where the generator reports progress and problems (ENGINEERING_PLAN 4.5). Whether warnings are
1481
- * printed (`silent`) and debug output (`DEBUG`) is decided by the adapter, when it is created.
1482
- */
1483
- interface Logger {
1484
- /**
1485
- * A debug line, with how long the step took when it was measured. A line without a group is
1486
- * written whenever debug output is on.
1487
- */
1488
- debug(message: string, group?: DebugGroup, durationMs?: number): void;
1489
- warn(message: string): void;
1490
- error(message: string): void;
1491
- }
1492
-
1493
1498
  /**
1494
1499
  * Convert an OpenAPI schema to TypeScript declarations (IR nodes; print them with `astToString`)
1495
1500
  * @param {string|URL|object|Readable} source OpenAPI schema source:
@@ -1526,8 +1531,10 @@ declare const ERROR_CODES: {
1526
1531
  readonly ENUM_NAME_EMPTY: "ENUM_NAME_EMPTY";
1527
1532
  readonly CALLBACK_RESULT_UNREADABLE: "CALLBACK_RESULT_UNREADABLE";
1528
1533
  readonly OPTION_FIX_UNKNOWN: "OPTION_FIX_UNKNOWN";
1534
+ readonly OPTION_INVALID: "OPTION_INVALID";
1529
1535
  readonly TYPESCRIPT_NOT_FOUND: "TYPESCRIPT_NOT_FOUND";
1530
1536
  readonly CLI_FLAG_REMOVED: "CLI_FLAG_REMOVED";
1537
+ readonly CLI_FLAG_INVALID: "CLI_FLAG_INVALID";
1531
1538
  readonly CLI_GLOB_UNSUPPORTED: "CLI_GLOB_UNSUPPORTED";
1532
1539
  readonly CLI_CONFIG_NOT_FOUND: "CLI_CONFIG_NOT_FOUND";
1533
1540
  readonly CLI_CONFIG_INVALID: "CLI_CONFIG_INVALID";
@@ -1849,6 +1856,7 @@ declare function transformSchema(schema: OpenAPI3, ctx: GlobalContext): IrDeclar
1849
1856
  /** Every warning code. */
1850
1857
  declare const WARNING_CODES: {
1851
1858
  readonly CLI_INPUT_IGNORED: "CLI_INPUT_IGNORED";
1859
+ readonly CLI_OUTPUT_IGNORED: "CLI_OUTPUT_IGNORED";
1852
1860
  readonly CONFIG_SETTING_UNKNOWN: "CONFIG_SETTING_UNKNOWN";
1853
1861
  readonly DISCRIMINATOR_MAPPING_INVALID: "DISCRIMINATOR_MAPPING_INVALID";
1854
1862
  readonly DISCRIMINATOR_VALUE_NOT_ALLOWED: "DISCRIMINATOR_VALUE_NOT_ALLOWED";
package/dist/index.d.ts CHANGED
@@ -4,6 +4,22 @@ import { Config } from '@redocly/openapi-core';
4
4
  import * as TypeScript from 'typescript';
5
5
  import colors from 'ansi-colors';
6
6
 
7
+ /** The debug groups of the original `DEBUG=openapi-ts:<group>` output. */
8
+ type DebugGroup = "redoc" | "lint" | "bundle" | "ts";
9
+ /**
10
+ * Where the generator reports progress and problems (ENGINEERING_PLAN 4.5). Whether warnings are
11
+ * printed (`silent`) and debug output (`DEBUG`) is decided by the adapter, when it is created.
12
+ */
13
+ interface Logger {
14
+ /**
15
+ * A debug line, with how long the step took when it was measured. A line without a group is
16
+ * written whenever debug output is on.
17
+ */
18
+ debug(message: string, group?: DebugGroup, durationMs?: number): void;
19
+ warn(message: string): void;
20
+ error(message: string): void;
21
+ }
22
+
7
23
  /**
8
24
  * Type IR: the closed set of immutable nodes that describes the TypeScript types and declarations
9
25
  * the generator emits (ENGINEERING_PLAN §4.2, ADR-002). Nodes are plain readonly data with a `kind`
@@ -268,6 +284,11 @@ declare const FIX: {
268
284
  readonly ARRAY_LENGTH_TUPLES: "array-length-tuples";
269
285
  /** `--dedupe-enums` names a shared enum by all of its schemas, not by the first one. */
270
286
  readonly DEDUPE_ENUM_NAMES: "dedupe-enum-names";
287
+ /**
288
+ * `--default-non-nullable` finds parameters and request bodies by the document's structure, not
289
+ * by the words `parameters` and `requestBody` anywhere in a schema's location.
290
+ */
291
+ readonly DEFAULT_INPUT_LOCATIONS: "default-input-locations";
271
292
  /** `required` next to an `allOf` `$ref` to a discriminator member still gives `WithRequired`. */
272
293
  readonly DISCRIMINATOR_MEMBER_REQUIRED: "discriminator-member-required";
273
294
  /**
@@ -280,8 +301,8 @@ declare const FIX: {
280
301
  readonly EXPLODED_QUERY_OBJECTS: "exploded-query-objects";
281
302
  /** `--enum` declares an enum that lists `null` without it, and the type adds `| null`. */
282
303
  readonly NULLABLE_ENUMS: "nullable-enums";
283
- /** A parameter with `content` instead of `schema` is typed by the schema of its media type. */
284
- readonly PARAMETER_CONTENT: "parameter-content";
304
+ /** A parameter or header with `content`, not `schema`, is typed by its media type's schema. */
305
+ readonly PARAMETER_HEADER_CONTENT: "parameter-header-content";
285
306
  /** `--path-params-as-types` gives each `{name}` its placeholder, `{number}` included. */
286
307
  readonly PATH_PARAM_TYPE_NAMES: "path-param-type-names";
287
308
  /** A `prefixItems` tuple is open unless `items` or `unevaluatedItems` closes it (2020-12). */
@@ -1474,22 +1495,6 @@ declare const DEPRECATION_CODES: {
1474
1495
  };
1475
1496
  type DeprecationCode = (typeof DEPRECATION_CODES)[keyof typeof DEPRECATION_CODES];
1476
1497
 
1477
- /** The debug groups of the original `DEBUG=openapi-ts:<group>` output. */
1478
- type DebugGroup = "redoc" | "lint" | "bundle" | "ts";
1479
- /**
1480
- * Where the generator reports progress and problems (ENGINEERING_PLAN 4.5). Whether warnings are
1481
- * printed (`silent`) and debug output (`DEBUG`) is decided by the adapter, when it is created.
1482
- */
1483
- interface Logger {
1484
- /**
1485
- * A debug line, with how long the step took when it was measured. A line without a group is
1486
- * written whenever debug output is on.
1487
- */
1488
- debug(message: string, group?: DebugGroup, durationMs?: number): void;
1489
- warn(message: string): void;
1490
- error(message: string): void;
1491
- }
1492
-
1493
1498
  /**
1494
1499
  * Convert an OpenAPI schema to TypeScript declarations (IR nodes; print them with `astToString`)
1495
1500
  * @param {string|URL|object|Readable} source OpenAPI schema source:
@@ -1526,8 +1531,10 @@ declare const ERROR_CODES: {
1526
1531
  readonly ENUM_NAME_EMPTY: "ENUM_NAME_EMPTY";
1527
1532
  readonly CALLBACK_RESULT_UNREADABLE: "CALLBACK_RESULT_UNREADABLE";
1528
1533
  readonly OPTION_FIX_UNKNOWN: "OPTION_FIX_UNKNOWN";
1534
+ readonly OPTION_INVALID: "OPTION_INVALID";
1529
1535
  readonly TYPESCRIPT_NOT_FOUND: "TYPESCRIPT_NOT_FOUND";
1530
1536
  readonly CLI_FLAG_REMOVED: "CLI_FLAG_REMOVED";
1537
+ readonly CLI_FLAG_INVALID: "CLI_FLAG_INVALID";
1531
1538
  readonly CLI_GLOB_UNSUPPORTED: "CLI_GLOB_UNSUPPORTED";
1532
1539
  readonly CLI_CONFIG_NOT_FOUND: "CLI_CONFIG_NOT_FOUND";
1533
1540
  readonly CLI_CONFIG_INVALID: "CLI_CONFIG_INVALID";
@@ -1849,6 +1856,7 @@ declare function transformSchema(schema: OpenAPI3, ctx: GlobalContext): IrDeclar
1849
1856
  /** Every warning code. */
1850
1857
  declare const WARNING_CODES: {
1851
1858
  readonly CLI_INPUT_IGNORED: "CLI_INPUT_IGNORED";
1859
+ readonly CLI_OUTPUT_IGNORED: "CLI_OUTPUT_IGNORED";
1852
1860
  readonly CONFIG_SETTING_UNKNOWN: "CONFIG_SETTING_UNKNOWN";
1853
1861
  readonly DISCRIMINATOR_MAPPING_INVALID: "DISCRIMINATOR_MAPPING_INVALID";
1854
1862
  readonly DISCRIMINATOR_VALUE_NOT_ALLOWED: "DISCRIMINATOR_VALUE_NOT_ALLOWED";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "openapi-typesafe",
3
3
  "description": "Convert OpenAPI 3.0, 3.1 & 3.2 schemas to TypeScript",
4
- "version": "1.0.0-rc.4",
4
+ "version": "1.0.0-rc.5",
5
5
  "author": {
6
6
  "name": "Fedor Chishchin",
7
7
  "url": "https://github.com/fedorello"
@@ -3,6 +3,7 @@ import { fileURLToPath } from "node:url";
3
3
  import type {
4
4
  ClaimedFile,
5
5
  DirectoryCheck,
6
+ FileCheck,
6
7
  FileClaims,
7
8
  FileIdentity,
8
9
  FileReader,
@@ -110,7 +111,9 @@ function typedWrite<T>(file: URL, step: () => T): T {
110
111
  }
111
112
  }
112
113
 
113
- class NodeFileSystem implements FileReader, FileWriter, FileIdentity, DirectoryCheck, FileClaims {
114
+ class NodeFileSystem
115
+ implements FileReader, FileWriter, FileIdentity, DirectoryCheck, FileCheck, FileClaims
116
+ {
114
117
  readText(file: URL): string {
115
118
  try {
116
119
  return fs.readFileSync(file, "utf8");
@@ -144,6 +147,15 @@ class NodeFileSystem implements FileReader, FileWriter, FileIdentity, DirectoryC
144
147
  }
145
148
  }
146
149
 
150
+ isFile(file: URL): boolean {
151
+ try {
152
+ return fs.statSync(file).isFile();
153
+ } catch {
154
+ // Missing or unreadable: no file; the read that follows reports a failure.
155
+ return false;
156
+ }
157
+ }
158
+
147
159
  isSameFile(left: URL, right: URL): boolean {
148
160
  const leftPath = fileURLToPath(left);
149
161
  const rightPath = fileURLToPath(right);
@@ -166,6 +178,7 @@ export function createNodeFileSystem(): FileReader &
166
178
  FileWriter &
167
179
  FileIdentity &
168
180
  DirectoryCheck &
181
+ FileCheck &
169
182
  FileClaims {
170
183
  return new NodeFileSystem();
171
184
  }
@@ -0,0 +1,29 @@
1
+ import type { Writable } from "node:stream";
2
+
3
+ /**
4
+ * A writer for the CLI's stdout that stops when the reader closes the pipe (`| head`): the write
5
+ * fails with `EPIPE`, which Node raises as an unhandled `error` event and a crash with exit code
6
+ * 1. The reader has all it wanted, so the rest is dropped and the run ends as it would have.
7
+ * Every other write error is thrown again, as before.
8
+ */
9
+
10
+ const BROKEN_PIPE = "EPIPE";
11
+
12
+ function isBrokenPipe(error: Error): boolean {
13
+ return (error as NodeJS.ErrnoException).code === BROKEN_PIPE;
14
+ }
15
+
16
+ /**
17
+ * The text writer of the stream. After `EPIPE` the stream is destroyed, so later writes are
18
+ * dropped by the stream itself and raise no second error.
19
+ */
20
+ export function createPipeSafeWriter(stream: Writable): (text: string) => void {
21
+ stream.on("error", (error: Error) => {
22
+ if (!isBrokenPipe(error)) {
23
+ throw error;
24
+ }
25
+ });
26
+ return (text) => {
27
+ stream.write(text);
28
+ };
29
+ }
@@ -1,5 +1,6 @@
1
- import { childPointer, ROOT_POINTER } from "../../domain/openapi/json-pointer.js";
2
- import { findRefHolders } from "./ref-holders.js";
1
+ import { childPointer } from "../../domain/openapi/json-pointer.js";
2
+ import { type ComponentSchemas, componentSchemasOf, SCHEMAS_POINTER } from "./component-schemas.js";
3
+ import { findMappings, findRefHolders } from "./ref-holders.js";
3
4
 
4
5
  /**
5
6
  * Redocly 1.x bundles every discriminator `mapping` value as if it were an external `$ref`: it
@@ -11,27 +12,13 @@ import { findRefHolders } from "./ref-holders.js";
11
12
  * and the mapping values and `$ref`s that name it point at the original.
12
13
  */
13
14
 
14
- type Schemas = Record<string, unknown>;
15
-
16
- const SCHEMAS_POINTER = childPointer(childPointer(ROOT_POINTER, "components"), "schemas");
17
-
18
- function isContainer(value: unknown): value is Record<string, unknown> {
19
- return typeof value === "object" && value !== null;
20
- }
21
-
22
- function schemasOf(document: unknown): Schemas | undefined {
23
- const components = isContainer(document) ? document.components : undefined;
24
- const schemas = isContainer(components) ? components.schemas : undefined;
25
- return isContainer(schemas) ? schemas : undefined;
26
- }
27
-
28
15
  /** The keys of `components.schemas` before bundling: the bundle edits the document in place. */
29
16
  export function schemaKeysOf(document: unknown): ReadonlySet<string> {
30
- return new Set(Object.keys(schemasOf(document) ?? {}));
17
+ return new Set(Object.keys(componentSchemasOf(document) ?? {}));
31
18
  }
32
19
 
33
20
  /** Each key the bundle added as a copy, with the pointer of the schema it copies. */
34
- function copiesIn(schemas: Schemas, keysBefore: ReadonlySet<string>): Map<string, string> {
21
+ function copiesIn(schemas: ComponentSchemas, keysBefore: ReadonlySet<string>): Map<string, string> {
35
22
  const originals = new Map<unknown, string>();
36
23
  for (const key of keysBefore) {
37
24
  if (Object.hasOwn(schemas, key) && !originals.has(schemas[key])) {
@@ -49,39 +36,17 @@ function copiesIn(schemas: Schemas, keysBefore: ReadonlySet<string>): Map<string
49
36
  return copies;
50
37
  }
51
38
 
52
- /** Every `discriminator.mapping` object of the document; the walk has its own stack. */
53
- function mappingsOf(document: unknown): Record<string, unknown>[] {
54
- const mappings: Record<string, unknown>[] = [];
55
- const visited = new WeakSet<object>();
56
- const pending: unknown[] = [document];
57
- for (let next = pending.pop(); next !== undefined; next = pending.pop()) {
58
- if (!isContainer(next) || visited.has(next)) {
59
- continue;
60
- }
61
- visited.add(next);
62
- const mapping = isContainer(next.discriminator) ? next.discriminator.mapping : undefined;
63
- if (isContainer(mapping)) {
64
- mappings.push(mapping);
65
- }
66
- // One push per child: spreading an array of millions of children overflows the stack.
67
- for (const child of Object.values(next)) {
68
- pending.push(child);
69
- }
70
- }
71
- return mappings;
72
- }
73
-
74
39
  /** Remove the bundle's copies of the document's own schemas, in place. */
75
40
  export function removeBundledMappingCopies(
76
41
  bundled: unknown,
77
42
  keysBefore: ReadonlySet<string>,
78
43
  ): void {
79
- const schemas = schemasOf(bundled);
44
+ const schemas = componentSchemasOf(bundled);
80
45
  const copies = schemas === undefined ? new Map<string, string>() : copiesIn(schemas, keysBefore);
81
46
  if (copies.size === 0) {
82
47
  return;
83
48
  }
84
- for (const mapping of mappingsOf(bundled)) {
49
+ for (const mapping of findMappings(bundled)) {
85
50
  for (const [name, value] of Object.entries(mapping)) {
86
51
  const original = typeof value === "string" ? copies.get(value) : undefined;
87
52
  if (original !== undefined) {
@@ -0,0 +1,19 @@
1
+ import { childPointer, ROOT_POINTER } from "../../domain/openapi/json-pointer.js";
2
+
3
+ /** `components.schemas` of a parsed document, which the loader repairs in place. */
4
+
5
+ export type ComponentSchemas = Record<string, unknown>;
6
+
7
+ /** `#/components/schemas`. */
8
+ export const SCHEMAS_POINTER = childPointer(childPointer(ROOT_POINTER, "components"), "schemas");
9
+
10
+ function isContainer(value: unknown): value is Record<string, unknown> {
11
+ return typeof value === "object" && value !== null;
12
+ }
13
+
14
+ /** The `components.schemas` object of a document, when it has one. */
15
+ export function componentSchemasOf(document: unknown): ComponentSchemas | undefined {
16
+ const components = isContainer(document) ? document.components : undefined;
17
+ const schemas = isContainer(components) ? components.schemas : undefined;
18
+ return isContainer(schemas) ? schemas : undefined;
19
+ }
@@ -0,0 +1,25 @@
1
+ import { childPointer } from "../../domain/openapi/json-pointer.js";
2
+ import { componentSchemasOf, SCHEMAS_POINTER } from "./component-schemas.js";
3
+ import { findMappings } from "./ref-holders.js";
4
+
5
+ /**
6
+ * A discriminator `mapping` value may be a schema name (`cat: Cat`) or a URI reference. Redocly
7
+ * reads every value as a `$ref`, so a name failed with "Can't resolve $ref". OpenAPI 3.1.1
8
+ * (§4.8.25) leaves a value that is both to the implementation and recommends the schema name; a
9
+ * relative URI is then written `./Cat`. So a value that is a key of the document's
10
+ * `components.schemas` becomes the pointer to that schema, in place, before the `$ref`s are
11
+ * resolved. Any other value stays a URI reference.
12
+ */
13
+ export function pointMappingNamesAtSchemas(document: unknown): void {
14
+ const schemas = componentSchemasOf(document);
15
+ if (schemas === undefined) {
16
+ return;
17
+ }
18
+ for (const mapping of findMappings(document)) {
19
+ for (const [name, value] of Object.entries(mapping)) {
20
+ if (typeof value === "string" && Object.hasOwn(schemas, value)) {
21
+ mapping[name] = childPointer(SCHEMAS_POINTER, value);
22
+ }
23
+ }
24
+ }
25
+ }