openapi-typesafe 1.0.0-rc.3 → 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 (596) hide show
  1. package/CHANGELOG.md +1972 -0
  2. package/dist/adapters/node-file-system/file-claims.cjs +105 -0
  3. package/dist/adapters/node-file-system/file-claims.cjs.map +1 -0
  4. package/dist/adapters/node-file-system/file-claims.mjs +95 -0
  5. package/dist/adapters/node-file-system/file-claims.mjs.map +1 -0
  6. package/dist/adapters/node-file-system/file-identity.cjs +82 -0
  7. package/dist/adapters/node-file-system/file-identity.cjs.map +1 -0
  8. package/dist/adapters/node-file-system/file-identity.mjs +74 -0
  9. package/dist/adapters/node-file-system/file-identity.mjs.map +1 -0
  10. package/dist/adapters/node-file-system/node-file-system.cjs +97 -14
  11. package/dist/adapters/node-file-system/node-file-system.cjs.map +1 -1
  12. package/dist/adapters/node-file-system/node-file-system.mjs +97 -14
  13. package/dist/adapters/node-file-system/node-file-system.mjs.map +1 -1
  14. package/dist/adapters/pipe-safe-writer/pipe-safe-writer.cjs +19 -0
  15. package/dist/adapters/pipe-safe-writer/pipe-safe-writer.cjs.map +1 -0
  16. package/dist/adapters/pipe-safe-writer/pipe-safe-writer.mjs +17 -0
  17. package/dist/adapters/pipe-safe-writer/pipe-safe-writer.mjs.map +1 -0
  18. package/dist/adapters/redocly-loader/bundled-mapping-copies.cjs +48 -0
  19. package/dist/adapters/redocly-loader/bundled-mapping-copies.cjs.map +1 -0
  20. package/dist/adapters/redocly-loader/bundled-mapping-copies.mjs +45 -0
  21. package/dist/adapters/redocly-loader/bundled-mapping-copies.mjs.map +1 -0
  22. package/dist/adapters/redocly-loader/bundled-ref-repair.cjs +1 -1
  23. package/dist/adapters/redocly-loader/bundled-ref-repair.cjs.map +1 -1
  24. package/dist/adapters/redocly-loader/bundled-ref-repair.mjs +2 -2
  25. package/dist/adapters/redocly-loader/bundled-ref-repair.mjs.map +1 -1
  26. package/dist/adapters/redocly-loader/component-schemas.cjs +17 -0
  27. package/dist/adapters/redocly-loader/component-schemas.cjs.map +1 -0
  28. package/dist/adapters/redocly-loader/component-schemas.mjs +14 -0
  29. package/dist/adapters/redocly-loader/component-schemas.mjs.map +1 -0
  30. package/dist/adapters/redocly-loader/loaded-documents.cjs +28 -0
  31. package/dist/adapters/redocly-loader/loaded-documents.cjs.map +1 -0
  32. package/dist/adapters/redocly-loader/loaded-documents.mjs +21 -0
  33. package/dist/adapters/redocly-loader/loaded-documents.mjs.map +1 -0
  34. package/dist/adapters/redocly-loader/mapping-schema-names.cjs +22 -0
  35. package/dist/adapters/redocly-loader/mapping-schema-names.cjs.map +1 -0
  36. package/dist/adapters/redocly-loader/mapping-schema-names.mjs +20 -0
  37. package/dist/adapters/redocly-loader/mapping-schema-names.mjs.map +1 -0
  38. package/dist/adapters/redocly-loader/query-named-components.cjs +137 -0
  39. package/dist/adapters/redocly-loader/query-named-components.cjs.map +1 -0
  40. package/dist/adapters/redocly-loader/query-named-components.mjs +134 -0
  41. package/dist/adapters/redocly-loader/query-named-components.mjs.map +1 -0
  42. package/dist/adapters/redocly-loader/redocly-schema-loader.cjs +40 -29
  43. package/dist/adapters/redocly-loader/redocly-schema-loader.cjs.map +1 -1
  44. package/dist/adapters/redocly-loader/redocly-schema-loader.mjs +38 -27
  45. package/dist/adapters/redocly-loader/redocly-schema-loader.mjs.map +1 -1
  46. package/dist/adapters/redocly-loader/ref-access.cjs +45 -4
  47. package/dist/adapters/redocly-loader/ref-access.cjs.map +1 -1
  48. package/dist/adapters/redocly-loader/ref-access.mjs +45 -4
  49. package/dist/adapters/redocly-loader/ref-access.mjs.map +1 -1
  50. package/dist/adapters/redocly-loader/ref-holders.cjs +52 -10
  51. package/dist/adapters/redocly-loader/ref-holders.cjs.map +1 -1
  52. package/dist/adapters/redocly-loader/ref-holders.mjs +53 -12
  53. package/dist/adapters/redocly-loader/ref-holders.mjs.map +1 -1
  54. package/dist/adapters/redocly-loader/remote-body-limit.cjs +50 -0
  55. package/dist/adapters/redocly-loader/remote-body-limit.cjs.map +1 -0
  56. package/dist/adapters/redocly-loader/remote-body-limit.mjs +48 -0
  57. package/dist/adapters/redocly-loader/remote-body-limit.mjs.map +1 -0
  58. package/dist/adapters/redocly-loader/remote-fetch.cjs +40 -9
  59. package/dist/adapters/redocly-loader/remote-fetch.cjs.map +1 -1
  60. package/dist/adapters/redocly-loader/remote-fetch.mjs +40 -9
  61. package/dist/adapters/redocly-loader/remote-fetch.mjs.map +1 -1
  62. package/dist/adapters/redocly-loader/remote-node-limit.cjs +61 -0
  63. package/dist/adapters/redocly-loader/remote-node-limit.cjs.map +1 -0
  64. package/dist/adapters/redocly-loader/remote-node-limit.mjs +58 -0
  65. package/dist/adapters/redocly-loader/remote-node-limit.mjs.map +1 -0
  66. package/dist/adapters/redocly-loader/schema-load-errors.cjs +32 -8
  67. package/dist/adapters/redocly-loader/schema-load-errors.cjs.map +1 -1
  68. package/dist/adapters/redocly-loader/schema-load-errors.mjs +32 -9
  69. package/dist/adapters/redocly-loader/schema-load-errors.mjs.map +1 -1
  70. package/dist/adapters/redocly-loader/schema-source.cjs +18 -9
  71. package/dist/adapters/redocly-loader/schema-source.cjs.map +1 -1
  72. package/dist/adapters/redocly-loader/schema-source.mjs +20 -11
  73. package/dist/adapters/redocly-loader/schema-source.mjs.map +1 -1
  74. package/dist/adapters/redocly-loader/unsupported-keys.cjs +3 -5
  75. package/dist/adapters/redocly-loader/unsupported-keys.cjs.map +1 -1
  76. package/dist/adapters/redocly-loader/unsupported-keys.mjs +3 -5
  77. package/dist/adapters/redocly-loader/unsupported-keys.mjs.map +1 -1
  78. package/dist/adapters/terminal-logger/terminal-logger.cjs +10 -4
  79. package/dist/adapters/terminal-logger/terminal-logger.cjs.map +1 -1
  80. package/dist/adapters/terminal-logger/terminal-logger.mjs +10 -4
  81. package/dist/adapters/terminal-logger/terminal-logger.mjs.map +1 -1
  82. package/dist/api/default-ports.cjs +14 -2
  83. package/dist/api/default-ports.cjs.map +1 -1
  84. package/dist/api/default-ports.mjs +14 -2
  85. package/dist/api/default-ports.mjs.map +1 -1
  86. package/dist/api/discriminator-enum-parent.cjs +2 -2
  87. package/dist/api/discriminator-enum-parent.cjs.map +1 -1
  88. package/dist/api/discriminator-enum-parent.mjs +3 -3
  89. package/dist/api/discriminator-enum-parent.mjs.map +1 -1
  90. package/dist/api/discriminator-other-owners.cjs +5 -3
  91. package/dist/api/discriminator-other-owners.cjs.map +1 -1
  92. package/dist/api/discriminator-other-owners.mjs +5 -3
  93. package/dist/api/discriminator-other-owners.mjs.map +1 -1
  94. package/dist/api/discriminator-patch.cjs +5 -1
  95. package/dist/api/discriminator-patch.cjs.map +1 -1
  96. package/dist/api/discriminator-patch.mjs +5 -1
  97. package/dist/api/discriminator-patch.mjs.map +1 -1
  98. package/dist/api/discriminator-scan.cjs +15 -8
  99. package/dist/api/discriminator-scan.cjs.map +1 -1
  100. package/dist/api/discriminator-scan.mjs +15 -8
  101. package/dist/api/discriminator-scan.mjs.map +1 -1
  102. package/dist/api/document-refs.cjs +16 -1
  103. package/dist/api/document-refs.cjs.map +1 -1
  104. package/dist/api/document-refs.mjs +16 -1
  105. package/dist/api/document-refs.mjs.map +1 -1
  106. package/dist/api/document-run.cjs +6 -12
  107. package/dist/api/document-run.cjs.map +1 -1
  108. package/dist/api/document-run.mjs +6 -12
  109. package/dist/api/document-run.mjs.map +1 -1
  110. package/dist/api/legacy-utils.cjs.map +1 -1
  111. package/dist/api/legacy-utils.mjs.map +1 -1
  112. package/dist/api/openapi-ts.cjs +9 -6
  113. package/dist/api/openapi-ts.cjs.map +1 -1
  114. package/dist/api/openapi-ts.mjs +10 -8
  115. package/dist/api/openapi-ts.mjs.map +1 -1
  116. package/dist/api/ref-limit-options.cjs +63 -0
  117. package/dist/api/ref-limit-options.cjs.map +1 -0
  118. package/dist/api/ref-limit-options.mjs +57 -0
  119. package/dist/api/ref-limit-options.mjs.map +1 -0
  120. package/dist/api/schema-callbacks.cjs +36 -12
  121. package/dist/api/schema-callbacks.cjs.map +1 -1
  122. package/dist/api/schema-callbacks.mjs +36 -12
  123. package/dist/api/schema-callbacks.mjs.map +1 -1
  124. package/dist/api/transform-context.cjs +7 -3
  125. package/dist/api/transform-context.cjs.map +1 -1
  126. package/dist/api/transform-context.mjs +7 -3
  127. package/dist/api/transform-context.mjs.map +1 -1
  128. package/dist/api/transform-schema.cjs +47 -10
  129. package/dist/api/transform-schema.cjs.map +1 -1
  130. package/dist/api/transform-schema.mjs +48 -11
  131. package/dist/api/transform-schema.mjs.map +1 -1
  132. package/dist/application/print/text-writer.cjs +10 -3
  133. package/dist/application/print/text-writer.cjs.map +1 -1
  134. package/dist/application/print/text-writer.mjs +10 -3
  135. package/dist/application/print/text-writer.mjs.map +1 -1
  136. package/dist/application/stack-overflow.cjs +2 -1
  137. package/dist/application/stack-overflow.cjs.map +1 -1
  138. package/dist/application/stack-overflow.mjs +2 -1
  139. package/dist/application/stack-overflow.mjs.map +1 -1
  140. package/dist/application/transform/declared-value-types.cjs +36 -0
  141. package/dist/application/transform/declared-value-types.cjs.map +1 -0
  142. package/dist/application/transform/declared-value-types.mjs +34 -0
  143. package/dist/application/transform/declared-value-types.mjs.map +1 -0
  144. package/dist/application/transform/document/components.cjs +1 -1
  145. package/dist/application/transform/document/components.cjs.map +1 -1
  146. package/dist/application/transform/document/components.mjs +2 -2
  147. package/dist/application/transform/document/components.mjs.map +1 -1
  148. package/dist/application/transform/document/declared-type-names.cjs +23 -0
  149. package/dist/application/transform/document/declared-type-names.cjs.map +1 -0
  150. package/dist/application/transform/document/declared-type-names.mjs +20 -0
  151. package/dist/application/transform/document/declared-type-names.mjs.map +1 -0
  152. package/dist/application/transform/document/defs-root.cjs +1 -1
  153. package/dist/application/transform/document/defs-root.cjs.map +1 -1
  154. package/dist/application/transform/document/defs-root.mjs +2 -2
  155. package/dist/application/transform/document/defs-root.mjs.map +1 -1
  156. package/dist/application/transform/document/document.cjs +7 -2
  157. package/dist/application/transform/document/document.cjs.map +1 -1
  158. package/dist/application/transform/document/document.mjs +6 -3
  159. package/dist/application/transform/document/document.mjs.map +1 -1
  160. package/dist/application/transform/document/enum-names-given-back.cjs +62 -0
  161. package/dist/application/transform/document/enum-names-given-back.cjs.map +1 -0
  162. package/dist/application/transform/document/enum-names-given-back.mjs +58 -0
  163. package/dist/application/transform/document/enum-names-given-back.mjs.map +1 -0
  164. package/dist/application/transform/document/exploded-query-values.cjs +63 -0
  165. package/dist/application/transform/document/exploded-query-values.cjs.map +1 -0
  166. package/dist/application/transform/document/exploded-query-values.mjs +59 -0
  167. package/dist/application/transform/document/exploded-query-values.mjs.map +1 -0
  168. package/dist/application/transform/document/global-type-references.cjs +1 -0
  169. package/dist/application/transform/document/global-type-references.cjs.map +1 -1
  170. package/dist/application/transform/document/global-type-references.mjs +1 -1
  171. package/dist/application/transform/document/global-type-references.mjs.map +1 -1
  172. package/dist/application/transform/document/header.cjs +11 -3
  173. package/dist/application/transform/document/header.cjs.map +1 -1
  174. package/dist/application/transform/document/header.mjs +10 -2
  175. package/dist/application/transform/document/header.mjs.map +1 -1
  176. package/dist/application/transform/document/media-type.cjs +2 -2
  177. package/dist/application/transform/document/media-type.cjs.map +1 -1
  178. package/dist/application/transform/document/media-type.mjs +3 -3
  179. package/dist/application/transform/document/media-type.mjs.map +1 -1
  180. package/dist/application/transform/document/operation-keys-written.cjs +26 -0
  181. package/dist/application/transform/document/operation-keys-written.cjs.map +1 -0
  182. package/dist/application/transform/document/operation-keys-written.mjs +24 -0
  183. package/dist/application/transform/document/operation-keys-written.mjs.map +1 -0
  184. package/dist/application/transform/document/operation.cjs +1 -1
  185. package/dist/application/transform/document/operation.cjs.map +1 -1
  186. package/dist/application/transform/document/operation.mjs +2 -2
  187. package/dist/application/transform/document/operation.mjs.map +1 -1
  188. package/dist/application/transform/document/parameter-entries.cjs +34 -0
  189. package/dist/application/transform/document/parameter-entries.cjs.map +1 -0
  190. package/dist/application/transform/document/parameter-entries.mjs +30 -0
  191. package/dist/application/transform/document/parameter-entries.mjs.map +1 -0
  192. package/dist/application/transform/document/parameter.cjs +12 -4
  193. package/dist/application/transform/document/parameter.cjs.map +1 -1
  194. package/dist/application/transform/document/parameter.mjs +13 -5
  195. package/dist/application/transform/document/parameter.mjs.map +1 -1
  196. package/dist/application/transform/document/parameters.cjs +29 -34
  197. package/dist/application/transform/document/parameters.cjs.map +1 -1
  198. package/dist/application/transform/document/parameters.mjs +29 -34
  199. package/dist/application/transform/document/parameters.mjs.map +1 -1
  200. package/dist/application/transform/document/path-item.cjs +15 -17
  201. package/dist/application/transform/document/path-item.cjs.map +1 -1
  202. package/dist/application/transform/document/path-item.mjs +15 -19
  203. package/dist/application/transform/document/path-item.mjs.map +1 -1
  204. package/dist/application/transform/document/path-template-key.cjs +84 -0
  205. package/dist/application/transform/document/path-template-key.cjs.map +1 -0
  206. package/dist/application/transform/document/path-template-key.mjs +79 -0
  207. package/dist/application/transform/document/path-template-key.mjs.map +1 -0
  208. package/dist/application/transform/document/path-template-refs.cjs +70 -0
  209. package/dist/application/transform/document/path-template-refs.cjs.map +1 -0
  210. package/dist/application/transform/document/path-template-refs.mjs +67 -0
  211. package/dist/application/transform/document/path-template-refs.mjs.map +1 -0
  212. package/dist/application/transform/document/paths-enum.cjs +8 -6
  213. package/dist/application/transform/document/paths-enum.cjs.map +1 -1
  214. package/dist/application/transform/document/paths-enum.mjs +8 -7
  215. package/dist/application/transform/document/paths-enum.mjs.map +1 -1
  216. package/dist/application/transform/document/paths.cjs +43 -67
  217. package/dist/application/transform/document/paths.cjs.map +1 -1
  218. package/dist/application/transform/document/paths.mjs +42 -68
  219. package/dist/application/transform/document/paths.mjs.map +1 -1
  220. package/dist/application/transform/document/referenced-parameter.cjs +80 -0
  221. package/dist/application/transform/document/referenced-parameter.cjs.map +1 -0
  222. package/dist/application/transform/document/referenced-parameter.mjs +78 -0
  223. package/dist/application/transform/document/referenced-parameter.mjs.map +1 -0
  224. package/dist/application/transform/document/request-body.cjs +1 -1
  225. package/dist/application/transform/document/request-body.cjs.map +1 -1
  226. package/dist/application/transform/document/request-body.mjs +2 -2
  227. package/dist/application/transform/document/request-body.mjs.map +1 -1
  228. package/dist/application/transform/document/response.cjs +2 -2
  229. package/dist/application/transform/document/response.cjs.map +1 -1
  230. package/dist/application/transform/document/response.mjs +3 -3
  231. package/dist/application/transform/document/response.mjs.map +1 -1
  232. package/dist/application/transform/document/responses.cjs +1 -1
  233. package/dist/application/transform/document/responses.cjs.map +1 -1
  234. package/dist/application/transform/document/responses.mjs +2 -2
  235. package/dist/application/transform/document/responses.mjs.map +1 -1
  236. package/dist/application/transform/document/root-type-aliases.cjs +8 -23
  237. package/dist/application/transform/document/root-type-aliases.cjs.map +1 -1
  238. package/dist/application/transform/document/root-type-aliases.mjs +8 -24
  239. package/dist/application/transform/document/root-type-aliases.mjs.map +1 -1
  240. package/dist/application/transform/document/type-resolution.cjs +3 -1
  241. package/dist/application/transform/document/type-resolution.cjs.map +1 -1
  242. package/dist/application/transform/document/type-resolution.mjs +3 -1
  243. package/dist/application/transform/document/type-resolution.mjs.map +1 -1
  244. package/dist/application/transform/document/webhooks.cjs +10 -3
  245. package/dist/application/transform/document/webhooks.cjs.map +1 -1
  246. package/dist/application/transform/document/webhooks.mjs +10 -3
  247. package/dist/application/transform/document/webhooks.mjs.map +1 -1
  248. package/dist/application/transform/footer/document-footer.cjs +16 -5
  249. package/dist/application/transform/footer/document-footer.cjs.map +1 -1
  250. package/dist/application/transform/footer/document-footer.mjs +16 -5
  251. package/dist/application/transform/footer/document-footer.mjs.map +1 -1
  252. package/dist/application/transform/footer/enum-name-claims.cjs +48 -0
  253. package/dist/application/transform/footer/enum-name-claims.cjs.map +1 -0
  254. package/dist/application/transform/footer/enum-name-claims.mjs +46 -0
  255. package/dist/application/transform/footer/enum-name-claims.mjs.map +1 -0
  256. package/dist/application/transform/footer/operation-keys.cjs +23 -0
  257. package/dist/application/transform/footer/operation-keys.cjs.map +1 -0
  258. package/dist/application/transform/footer/operation-keys.mjs +21 -0
  259. package/dist/application/transform/footer/operation-keys.mjs.map +1 -0
  260. package/dist/application/transform/footer/type-evaluation.cjs +4 -4
  261. package/dist/application/transform/footer/type-evaluation.cjs.map +1 -1
  262. package/dist/application/transform/footer/type-evaluation.mjs +4 -4
  263. package/dist/application/transform/footer/type-evaluation.mjs.map +1 -1
  264. package/dist/application/transform/helper-types.cjs +3 -3
  265. package/dist/application/transform/helper-types.cjs.map +1 -1
  266. package/dist/application/transform/helper-types.mjs +3 -3
  267. package/dist/application/transform/helper-types.mjs.map +1 -1
  268. package/dist/application/transform/numbered-names.cjs +9 -0
  269. package/dist/application/transform/numbered-names.cjs.map +1 -1
  270. package/dist/application/transform/numbered-names.mjs +9 -1
  271. package/dist/application/transform/numbered-names.mjs.map +1 -1
  272. package/dist/application/transform/ref-pointer/generated-location.cjs +5 -5
  273. package/dist/application/transform/ref-pointer/generated-location.cjs.map +1 -1
  274. package/dist/application/transform/ref-pointer/generated-location.mjs +3 -3
  275. package/dist/application/transform/ref-pointer/generated-location.mjs.map +1 -1
  276. package/dist/application/transform/ref-pointer/generated-shape.cjs +47 -66
  277. package/dist/application/transform/ref-pointer/generated-shape.cjs.map +1 -1
  278. package/dist/application/transform/ref-pointer/generated-shape.mjs +36 -50
  279. package/dist/application/transform/ref-pointer/generated-shape.mjs.map +1 -1
  280. package/dist/application/transform/ref-pointer/inline-cycles.cjs +2 -2
  281. package/dist/application/transform/ref-pointer/inline-cycles.cjs.map +1 -1
  282. package/dist/application/transform/ref-pointer/inline-cycles.mjs +1 -1
  283. package/dist/application/transform/ref-pointer/inline-cycles.mjs.map +1 -1
  284. package/dist/application/transform/ref-pointer/located-node.cjs +23 -0
  285. package/dist/application/transform/ref-pointer/located-node.cjs.map +1 -0
  286. package/dist/application/transform/ref-pointer/located-node.mjs +18 -0
  287. package/dist/application/transform/ref-pointer/located-node.mjs.map +1 -0
  288. package/dist/application/transform/ref-pointer/original-index.cjs +68 -13
  289. package/dist/application/transform/ref-pointer/original-index.cjs.map +1 -1
  290. package/dist/application/transform/ref-pointer/original-index.mjs +70 -15
  291. package/dist/application/transform/ref-pointer/original-index.mjs.map +1 -1
  292. package/dist/application/transform/ref-pointer/pointer-type.cjs +2 -2
  293. package/dist/application/transform/ref-pointer/pointer-type.cjs.map +1 -1
  294. package/dist/application/transform/ref-pointer/pointer-type.mjs +1 -1
  295. package/dist/application/transform/ref-pointer/pointer-type.mjs.map +1 -1
  296. package/dist/application/transform/ref-pointer/pointer-walk.cjs +54 -13
  297. package/dist/application/transform/ref-pointer/pointer-walk.cjs.map +1 -1
  298. package/dist/application/transform/ref-pointer/pointer-walk.mjs +46 -7
  299. package/dist/application/transform/ref-pointer/pointer-walk.mjs.map +1 -1
  300. package/dist/application/transform/ref-pointer/property-shape.cjs +52 -0
  301. package/dist/application/transform/ref-pointer/property-shape.cjs.map +1 -0
  302. package/dist/application/transform/ref-pointer/property-shape.mjs +45 -0
  303. package/dist/application/transform/ref-pointer/property-shape.mjs.map +1 -0
  304. package/dist/application/transform/ref-pointer/typed-walk.cjs +79 -21
  305. package/dist/application/transform/ref-pointer/typed-walk.cjs.map +1 -1
  306. package/dist/application/transform/ref-pointer/typed-walk.mjs +76 -18
  307. package/dist/application/transform/ref-pointer/typed-walk.mjs.map +1 -1
  308. package/dist/application/transform/ref-type.cjs +2 -1
  309. package/dist/application/transform/ref-type.cjs.map +1 -1
  310. package/dist/application/transform/ref-type.mjs +2 -1
  311. package/dist/application/transform/ref-type.mjs.map +1 -1
  312. package/dist/application/transform/schema/access-flags.cjs.map +1 -1
  313. package/dist/application/transform/schema/access-flags.mjs.map +1 -1
  314. package/dist/application/transform/schema/composition-type.cjs +1 -1
  315. package/dist/application/transform/schema/composition-type.cjs.map +1 -1
  316. package/dist/application/transform/schema/composition-type.mjs +2 -2
  317. package/dist/application/transform/schema/composition-type.mjs.map +1 -1
  318. package/dist/application/transform/schema/enum-rule.cjs +1 -1
  319. package/dist/application/transform/schema/enum-rule.cjs.map +1 -1
  320. package/dist/application/transform/schema/enum-rule.mjs +2 -2
  321. package/dist/application/transform/schema/enum-rule.mjs.map +1 -1
  322. package/dist/application/transform/schema/index-signature-type.cjs +21 -0
  323. package/dist/application/transform/schema/index-signature-type.cjs.map +1 -0
  324. package/dist/application/transform/schema/index-signature-type.mjs +19 -0
  325. package/dist/application/transform/schema/index-signature-type.mjs.map +1 -0
  326. package/dist/application/transform/schema/input-location.cjs +23 -0
  327. package/dist/application/transform/schema/input-location.cjs.map +1 -0
  328. package/dist/application/transform/schema/input-location.mjs +21 -0
  329. package/dist/application/transform/schema/input-location.mjs.map +1 -0
  330. package/dist/application/transform/schema/object-type.cjs +18 -8
  331. package/dist/application/transform/schema/object-type.cjs.map +1 -1
  332. package/dist/application/transform/schema/object-type.mjs +19 -9
  333. package/dist/application/transform/schema/object-type.mjs.map +1 -1
  334. package/dist/application/transform/schema/ref-siblings.cjs +47 -0
  335. package/dist/application/transform/schema/ref-siblings.cjs.map +1 -0
  336. package/dist/application/transform/schema/ref-siblings.mjs +45 -0
  337. package/dist/application/transform/schema/ref-siblings.mjs.map +1 -0
  338. package/dist/application/transform/schema/schema-transform.cjs +6 -3
  339. package/dist/application/transform/schema/schema-transform.cjs.map +1 -1
  340. package/dist/application/transform/schema/schema-transform.mjs +6 -3
  341. package/dist/application/transform/schema/schema-transform.mjs.map +1 -1
  342. package/dist/application/transform/schema/unevaluated-properties.cjs +2 -30
  343. package/dist/application/transform/schema/unevaluated-properties.cjs.map +1 -1
  344. package/dist/application/transform/schema/unevaluated-properties.mjs +3 -31
  345. package/dist/application/transform/schema/unevaluated-properties.mjs.map +1 -1
  346. package/dist/application/transform/schema-comment.cjs +5 -1
  347. package/dist/application/transform/schema-comment.cjs.map +1 -1
  348. package/dist/application/transform/schema-comment.mjs +5 -1
  349. package/dist/application/transform/schema-comment.mjs.map +1 -1
  350. package/dist/cli/api-logger.cjs +13 -0
  351. package/dist/cli/api-logger.cjs.map +1 -0
  352. package/dist/cli/api-logger.mjs +11 -0
  353. package/dist/cli/api-logger.mjs.map +1 -0
  354. package/dist/cli/api-settings.cjs +57 -9
  355. package/dist/cli/api-settings.cjs.map +1 -1
  356. package/dist/cli/api-settings.mjs +56 -11
  357. package/dist/cli/api-settings.mjs.map +1 -1
  358. package/dist/cli/api-writes.cjs +72 -0
  359. package/dist/cli/api-writes.cjs.map +1 -0
  360. package/dist/cli/api-writes.mjs +69 -0
  361. package/dist/cli/api-writes.mjs.map +1 -0
  362. package/dist/cli/cli-arguments.cjs +51 -11
  363. package/dist/cli/cli-arguments.cjs.map +1 -1
  364. package/dist/cli/cli-arguments.mjs +51 -11
  365. package/dist/cli/cli-arguments.mjs.map +1 -1
  366. package/dist/cli/cli-errors.cjs +29 -1
  367. package/dist/cli/cli-errors.cjs.map +1 -1
  368. package/dist/cli/cli-errors.mjs +29 -2
  369. package/dist/cli/cli-errors.mjs.map +1 -1
  370. package/dist/cli/cli-output.cjs +111 -4
  371. package/dist/cli/cli-output.cjs.map +1 -1
  372. package/dist/cli/cli-output.mjs +104 -5
  373. package/dist/cli/cli-output.mjs.map +1 -1
  374. package/dist/cli/main.cjs +13 -3
  375. package/dist/cli/main.cjs.map +1 -1
  376. package/dist/cli/main.mjs +14 -4
  377. package/dist/cli/main.mjs.map +1 -1
  378. package/dist/cli/redocly-apis.cjs +94 -37
  379. package/dist/cli/redocly-apis.cjs.map +1 -1
  380. package/dist/cli/redocly-apis.mjs +99 -42
  381. package/dist/cli/redocly-apis.mjs.map +1 -1
  382. package/dist/cli/ref-limits.cjs +15 -1
  383. package/dist/cli/ref-limits.cjs.map +1 -1
  384. package/dist/cli/ref-limits.mjs +15 -2
  385. package/dist/cli/ref-limits.mjs.map +1 -1
  386. package/dist/cli/run-cli.cjs +37 -14
  387. package/dist/cli/run-cli.cjs.map +1 -1
  388. package/dist/cli/run-cli.mjs +39 -16
  389. package/dist/cli/run-cli.mjs.map +1 -1
  390. package/dist/domain/append-all.cjs +10 -0
  391. package/dist/domain/append-all.cjs.map +1 -0
  392. package/dist/domain/append-all.mjs +8 -0
  393. package/dist/domain/append-all.mjs.map +1 -0
  394. package/dist/domain/cause-secrets.cjs +52 -0
  395. package/dist/domain/cause-secrets.cjs.map +1 -0
  396. package/dist/domain/cause-secrets.mjs +50 -0
  397. package/dist/domain/cause-secrets.mjs.map +1 -0
  398. package/dist/domain/errors.cjs +11 -3
  399. package/dist/domain/errors.cjs.map +1 -1
  400. package/dist/domain/errors.mjs +11 -3
  401. package/dist/domain/errors.mjs.map +1 -1
  402. package/dist/domain/ir/identifier-text.cjs.map +1 -1
  403. package/dist/domain/ir/identifier-text.mjs +1 -1
  404. package/dist/domain/ir/identifier-text.mjs.map +1 -1
  405. package/dist/domain/ir/ir-shape.cjs +187 -0
  406. package/dist/domain/ir/ir-shape.cjs.map +1 -0
  407. package/dist/domain/ir/ir-shape.mjs +184 -0
  408. package/dist/domain/ir/ir-shape.mjs.map +1 -0
  409. package/dist/domain/ir/newer-identifier-ranges.cjs +182 -29
  410. package/dist/domain/ir/newer-identifier-ranges.cjs.map +1 -1
  411. package/dist/domain/ir/newer-identifier-ranges.mjs +182 -29
  412. package/dist/domain/ir/newer-identifier-ranges.mjs.map +1 -1
  413. package/dist/domain/location-text.cjs +9 -0
  414. package/dist/domain/location-text.cjs.map +1 -0
  415. package/dist/domain/location-text.mjs +7 -0
  416. package/dist/domain/location-text.mjs.map +1 -0
  417. package/dist/domain/openapi/alias-expansion.cjs +3 -1
  418. package/dist/domain/openapi/alias-expansion.cjs.map +1 -1
  419. package/dist/domain/openapi/alias-expansion.mjs +3 -1
  420. package/dist/domain/openapi/alias-expansion.mjs.map +1 -1
  421. package/dist/domain/openapi/discriminated-union.cjs +3 -3
  422. package/dist/domain/openapi/discriminated-union.cjs.map +1 -1
  423. package/dist/domain/openapi/discriminated-union.mjs +4 -4
  424. package/dist/domain/openapi/discriminated-union.mjs.map +1 -1
  425. package/dist/domain/openapi/discriminator-conflicts.cjs +10 -6
  426. package/dist/domain/openapi/discriminator-conflicts.cjs.map +1 -1
  427. package/dist/domain/openapi/discriminator-conflicts.mjs +11 -7
  428. package/dist/domain/openapi/discriminator-conflicts.mjs.map +1 -1
  429. package/dist/domain/openapi/document-places.cjs +55 -0
  430. package/dist/domain/openapi/document-places.cjs.map +1 -0
  431. package/dist/domain/openapi/document-places.mjs +53 -0
  432. package/dist/domain/openapi/document-places.mjs.map +1 -0
  433. package/dist/domain/openapi/json-pointer.cjs +43 -1
  434. package/dist/domain/openapi/json-pointer.cjs.map +1 -1
  435. package/dist/domain/openapi/json-pointer.mjs +40 -2
  436. package/dist/domain/openapi/json-pointer.mjs.map +1 -1
  437. package/dist/domain/openapi/schema-dialect.cjs +15 -0
  438. package/dist/domain/openapi/schema-dialect.cjs.map +1 -0
  439. package/dist/domain/openapi/schema-dialect.mjs +12 -0
  440. package/dist/domain/openapi/schema-dialect.mjs.map +1 -0
  441. package/dist/domain/openapi/unsupported-features.cjs +1 -1
  442. package/dist/domain/openapi/unsupported-features.cjs.map +1 -1
  443. package/dist/domain/openapi/unsupported-features.mjs +2 -2
  444. package/dist/domain/openapi/unsupported-features.mjs.map +1 -1
  445. package/dist/domain/output-fixes.cjs +20 -0
  446. package/dist/domain/output-fixes.cjs.map +1 -1
  447. package/dist/domain/output-fixes.mjs +20 -0
  448. package/dist/domain/output-fixes.mjs.map +1 -1
  449. package/dist/domain/terminal-text.cjs +31 -0
  450. package/dist/domain/terminal-text.cjs.map +1 -0
  451. package/dist/domain/terminal-text.mjs +29 -0
  452. package/dist/domain/terminal-text.mjs.map +1 -0
  453. package/dist/domain/url-secrets.cjs +48 -0
  454. package/dist/domain/url-secrets.cjs.map +1 -0
  455. package/dist/domain/url-secrets.mjs +45 -0
  456. package/dist/domain/url-secrets.mjs.map +1 -0
  457. package/dist/domain/warnings.cjs +1 -0
  458. package/dist/domain/warnings.cjs.map +1 -1
  459. package/dist/domain/warnings.mjs +1 -0
  460. package/dist/domain/warnings.mjs.map +1 -1
  461. package/dist/index.d.cts +46 -20
  462. package/dist/index.d.mts +46 -20
  463. package/dist/index.d.ts +46 -20
  464. package/package.json +4 -5
  465. package/src/adapters/node-file-system/file-claims.ts +138 -0
  466. package/src/adapters/node-file-system/file-identity.ts +137 -0
  467. package/src/adapters/node-file-system/node-file-system.ts +158 -18
  468. package/src/adapters/pipe-safe-writer/pipe-safe-writer.ts +29 -0
  469. package/src/adapters/redocly-loader/bundled-mapping-copies.ts +60 -0
  470. package/src/adapters/redocly-loader/bundled-ref-repair.ts +2 -2
  471. package/src/adapters/redocly-loader/component-schemas.ts +19 -0
  472. package/src/adapters/redocly-loader/loaded-documents.ts +46 -0
  473. package/src/adapters/redocly-loader/mapping-schema-names.ts +25 -0
  474. package/src/adapters/redocly-loader/query-named-components.ts +201 -0
  475. package/src/adapters/redocly-loader/redocly-schema-loader.ts +64 -38
  476. package/src/adapters/redocly-loader/ref-access.ts +51 -4
  477. package/src/adapters/redocly-loader/ref-holders.ts +76 -15
  478. package/src/adapters/redocly-loader/remote-body-limit.ts +66 -0
  479. package/src/adapters/redocly-loader/remote-fetch.ts +85 -13
  480. package/src/adapters/redocly-loader/remote-node-limit.ts +102 -0
  481. package/src/adapters/redocly-loader/schema-load-errors.ts +52 -13
  482. package/src/adapters/redocly-loader/schema-source.ts +35 -11
  483. package/src/adapters/redocly-loader/unsupported-keys.ts +3 -7
  484. package/src/adapters/terminal-logger/terminal-logger.ts +17 -6
  485. package/src/api/default-ports.ts +33 -4
  486. package/src/api/discriminator-enum-parent.ts +3 -3
  487. package/src/api/discriminator-other-owners.ts +5 -3
  488. package/src/api/discriminator-patch.ts +5 -1
  489. package/src/api/discriminator-scan.ts +16 -8
  490. package/src/api/document-refs.ts +29 -1
  491. package/src/api/document-run.ts +10 -19
  492. package/src/api/legacy-utils.ts +5 -1
  493. package/src/api/openapi-ts.ts +26 -8
  494. package/src/api/ref-limit-options.ts +76 -0
  495. package/src/api/run-context.ts +3 -0
  496. package/src/api/schema-callbacks.ts +60 -17
  497. package/src/api/transform-context.ts +7 -3
  498. package/src/api/transform-schema.ts +79 -12
  499. package/src/application/ports/file-system.ts +47 -0
  500. package/src/application/ports/schema-loader.ts +11 -1
  501. package/src/application/print/text-writer.ts +10 -3
  502. package/src/application/stack-overflow.ts +9 -5
  503. package/src/application/transform/declared-value-types.ts +42 -0
  504. package/src/application/transform/document/components.ts +2 -2
  505. package/src/application/transform/document/declared-type-names.ts +36 -0
  506. package/src/application/transform/document/defs-root.ts +2 -2
  507. package/src/application/transform/document/document.ts +8 -5
  508. package/src/application/transform/document/enum-names-given-back.ts +91 -0
  509. package/src/application/transform/document/exploded-query-values.ts +88 -0
  510. package/src/application/transform/document/global-type-references.ts +1 -1
  511. package/src/application/transform/document/header.ts +25 -5
  512. package/src/application/transform/document/media-type.ts +4 -3
  513. package/src/application/transform/document/operation-keys-written.ts +27 -0
  514. package/src/application/transform/document/operation.ts +2 -2
  515. package/src/application/transform/document/parameter-entries.ts +70 -0
  516. package/src/application/transform/document/parameter.ts +21 -9
  517. package/src/application/transform/document/parameters.ts +56 -66
  518. package/src/application/transform/document/path-item.ts +16 -34
  519. package/src/application/transform/document/path-template-key.ts +152 -0
  520. package/src/application/transform/document/path-template-refs.ts +106 -0
  521. package/src/application/transform/document/paths-enum.ts +24 -10
  522. package/src/application/transform/document/paths.ts +59 -125
  523. package/src/application/transform/document/referenced-parameter.ts +146 -0
  524. package/src/application/transform/document/request-body.ts +2 -2
  525. package/src/application/transform/document/response.ts +3 -3
  526. package/src/application/transform/document/responses.ts +2 -2
  527. package/src/application/transform/document/root-type-aliases.ts +17 -38
  528. package/src/application/transform/document/type-resolution.ts +2 -1
  529. package/src/application/transform/document/webhooks.ts +19 -6
  530. package/src/application/transform/footer/document-footer.ts +36 -9
  531. package/src/application/transform/footer/enum-name-claims.ts +62 -0
  532. package/src/application/transform/footer/operation-keys.ts +28 -0
  533. package/src/application/transform/footer/type-evaluation.ts +4 -4
  534. package/src/application/transform/helper-types.ts +8 -7
  535. package/src/application/transform/numbered-names.ts +15 -0
  536. package/src/application/transform/ref-pointer/generated-location.ts +3 -3
  537. package/src/application/transform/ref-pointer/generated-shape.ts +67 -78
  538. package/src/application/transform/ref-pointer/inline-cycles.ts +1 -1
  539. package/src/application/transform/ref-pointer/located-node.ts +38 -0
  540. package/src/application/transform/ref-pointer/original-index.ts +100 -17
  541. package/src/application/transform/ref-pointer/pointer-type.ts +1 -1
  542. package/src/application/transform/ref-pointer/pointer-walk.ts +82 -8
  543. package/src/application/transform/ref-pointer/property-shape.ts +97 -0
  544. package/src/application/transform/ref-pointer/typed-walk.ts +117 -25
  545. package/src/application/transform/ref-type.ts +2 -1
  546. package/src/application/transform/schema/access-flags.ts +5 -2
  547. package/src/application/transform/schema/composition-type.ts +2 -2
  548. package/src/application/transform/schema/enum-rule.ts +6 -2
  549. package/src/application/transform/schema/index-signature-type.ts +31 -0
  550. package/src/application/transform/schema/input-location.ts +35 -0
  551. package/src/application/transform/schema/object-type.ts +22 -12
  552. package/src/application/transform/schema/ref-siblings.ts +76 -0
  553. package/src/application/transform/schema/schema-context.ts +3 -0
  554. package/src/application/transform/schema/schema-transform.ts +6 -3
  555. package/src/application/transform/schema/unevaluated-properties.ts +4 -44
  556. package/src/application/transform/schema-comment.ts +5 -1
  557. package/src/application/transform/transform-context.ts +5 -0
  558. package/src/cli/api-logger.ts +17 -0
  559. package/src/cli/api-settings.ts +80 -13
  560. package/src/cli/api-writes.ts +117 -0
  561. package/src/cli/cli-arguments.ts +90 -14
  562. package/src/cli/cli-dependencies.ts +26 -4
  563. package/src/cli/cli-errors.ts +42 -1
  564. package/src/cli/cli-output.ts +195 -15
  565. package/src/cli/main.ts +14 -5
  566. package/src/cli/redocly-apis.ts +177 -52
  567. package/src/cli/ref-limits.ts +21 -2
  568. package/src/cli/run-cli.ts +76 -15
  569. package/src/domain/append-all.ts +10 -0
  570. package/src/domain/cause-secrets.ts +86 -0
  571. package/src/domain/errors.ts +16 -5
  572. package/src/domain/ir/identifier-text.ts +6 -5
  573. package/src/domain/ir/ir-shape.ts +299 -0
  574. package/src/domain/ir/newer-identifier-ranges.ts +183 -30
  575. package/src/domain/location-text.ts +12 -0
  576. package/src/domain/openapi/alias-expansion.ts +4 -1
  577. package/src/domain/openapi/discriminated-union.ts +6 -4
  578. package/src/domain/openapi/discriminator-conflicts.ts +21 -7
  579. package/src/domain/openapi/document-object.ts +2 -0
  580. package/src/domain/openapi/document-places.ts +78 -0
  581. package/src/domain/openapi/json-pointer.ts +96 -7
  582. package/src/domain/openapi/schema-dialect.ts +22 -0
  583. package/src/domain/openapi/unsupported-features.ts +2 -2
  584. package/src/domain/output-fixes.ts +28 -2
  585. package/src/domain/terminal-text.ts +44 -0
  586. package/src/domain/url-secrets.ts +72 -0
  587. package/src/domain/warnings.ts +1 -0
  588. package/src/types/generator-options.ts +1 -1
  589. package/dist/cli/main.d.cts +0 -2
  590. package/dist/cli/main.d.mts +0 -2
  591. package/dist/cli/main.d.ts +0 -2
  592. package/dist/domain/url-credentials.cjs +0 -10
  593. package/dist/domain/url-credentials.cjs.map +0 -1
  594. package/dist/domain/url-credentials.mjs +0 -8
  595. package/dist/domain/url-credentials.mjs.map +0 -1
  596. package/src/domain/url-credentials.ts +0 -18
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,6 +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";
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";
283
306
  /** `--path-params-as-types` gives each `{name}` its placeholder, `{number}` included. */
284
307
  readonly PATH_PARAM_TYPE_NAMES: "path-param-type-names";
285
308
  /** A `prefixItems` tuple is open unless `items` or `unevaluatedItems` closes it (2020-12). */
@@ -291,6 +314,11 @@ declare const FIX: {
291
314
  * points at, also where the original type compiles through an index signature.
292
315
  */
293
316
  readonly REF_POINTERS: "ref-pointers";
317
+ /**
318
+ * OpenAPI 3.1 and 3.2: keywords next to a `$ref` (`required`, `properties`) apply too, so the
319
+ * type is the reference intersected with them. OpenAPI 3.0 ignores them, as its spec says.
320
+ */
321
+ readonly REF_SIBLINGS: "ref-siblings";
294
322
  /** Schemas of one root type name without the prefix each get an alias, the earlier numbered. */
295
323
  readonly ROOT_TYPE_NUMBERING: "root-type-numbering";
296
324
  /** `unevaluatedProperties` types the keys no other keyword declares (an index signature). */
@@ -1298,7 +1326,7 @@ interface OpenAPITSBaseOptions {
1298
1326
  * still fail the run.
1299
1327
  */
1300
1328
  lint?: boolean;
1301
- /** (optional) Should logging be suppressed? (necessary for STDOUT) */
1329
+ /** Hide warnings (default: false). Every line of the logger goes to stderr, never to stdout. */
1302
1330
  silent?: boolean;
1303
1331
  /** Accepted for compatibility with openapi-typescript; not read. */
1304
1332
  version?: number;
@@ -1467,22 +1495,6 @@ declare const DEPRECATION_CODES: {
1467
1495
  };
1468
1496
  type DeprecationCode = (typeof DEPRECATION_CODES)[keyof typeof DEPRECATION_CODES];
1469
1497
 
1470
- /** The debug groups of the original `DEBUG=openapi-ts:<group>` output. */
1471
- type DebugGroup = "redoc" | "lint" | "bundle" | "ts";
1472
- /**
1473
- * Where the generator reports progress and problems (ENGINEERING_PLAN 4.5). Whether warnings are
1474
- * printed (`silent`) and debug output (`DEBUG`) is decided by the adapter, when it is created.
1475
- */
1476
- interface Logger {
1477
- /**
1478
- * A debug line, with how long the step took when it was measured. A line without a group is
1479
- * written whenever debug output is on.
1480
- */
1481
- debug(message: string, group?: DebugGroup, durationMs?: number): void;
1482
- warn(message: string): void;
1483
- error(message: string): void;
1484
- }
1485
-
1486
1498
  /**
1487
1499
  * Convert an OpenAPI schema to TypeScript declarations (IR nodes; print them with `astToString`)
1488
1500
  * @param {string|URL|object|Readable} source OpenAPI schema source:
@@ -1519,14 +1531,20 @@ declare const ERROR_CODES: {
1519
1531
  readonly ENUM_NAME_EMPTY: "ENUM_NAME_EMPTY";
1520
1532
  readonly CALLBACK_RESULT_UNREADABLE: "CALLBACK_RESULT_UNREADABLE";
1521
1533
  readonly OPTION_FIX_UNKNOWN: "OPTION_FIX_UNKNOWN";
1534
+ readonly OPTION_INVALID: "OPTION_INVALID";
1522
1535
  readonly TYPESCRIPT_NOT_FOUND: "TYPESCRIPT_NOT_FOUND";
1523
1536
  readonly CLI_FLAG_REMOVED: "CLI_FLAG_REMOVED";
1537
+ readonly CLI_FLAG_INVALID: "CLI_FLAG_INVALID";
1524
1538
  readonly CLI_GLOB_UNSUPPORTED: "CLI_GLOB_UNSUPPORTED";
1525
1539
  readonly CLI_CONFIG_NOT_FOUND: "CLI_CONFIG_NOT_FOUND";
1526
1540
  readonly CLI_CONFIG_INVALID: "CLI_CONFIG_INVALID";
1527
1541
  readonly CLI_CONFIG_OUTPUT_MISSING: "CLI_CONFIG_OUTPUT_MISSING";
1528
1542
  readonly CLI_CHECK_OUTPUT_MISSING: "CLI_CHECK_OUTPUT_MISSING";
1529
1543
  readonly CLI_INPUT_MISSING: "CLI_INPUT_MISSING";
1544
+ readonly CLI_OUTPUT_IS_INPUT: "CLI_OUTPUT_IS_INPUT";
1545
+ readonly CLI_OUTPUT_DUPLICATE: "CLI_OUTPUT_DUPLICATE";
1546
+ readonly CLI_OUTPUT_INVALID: "CLI_OUTPUT_INVALID";
1547
+ readonly CLI_LOCATION_INVALID: "CLI_LOCATION_INVALID";
1530
1548
  readonly OUTPUT_STALE: "OUTPUT_STALE";
1531
1549
  readonly OUTPUT_READ_FAILED: "OUTPUT_READ_FAILED";
1532
1550
  readonly OUTPUT_WRITE_FAILED: "OUTPUT_WRITE_FAILED";
@@ -1541,12 +1559,15 @@ interface OpenAPITypesafeErrorInit {
1541
1559
  readonly code: ErrorCode;
1542
1560
  readonly message: string;
1543
1561
  readonly details?: ErrorDetails;
1544
- /** The lower-level error this one reports, if any (kept as the standard `cause`). */
1562
+ /**
1563
+ * The lower-level error this one reports, if any (kept as the standard `cause`; a copy with URL
1564
+ * secrets hidden when its chain names one, see cause-secrets.ts).
1565
+ */
1545
1566
  readonly cause?: unknown;
1546
1567
  }
1547
1568
  /**
1548
1569
  * The base of every expected failure; check `code`, not the class or the message. The message
1549
- * never shows the user info of a URL (`url-credentials.ts`).
1570
+ * and the `cause` chain never show the user info or the query of a URL (`url-secrets.ts`).
1550
1571
  */
1551
1572
  declare class OpenAPITypesafeError extends Error {
1552
1573
  readonly code: ErrorCode;
@@ -1773,7 +1794,11 @@ declare function createDiscriminatorProperty(discriminator: DiscriminatorObject,
1773
1794
  path: string;
1774
1795
  readonly?: boolean;
1775
1796
  }): IrPropertySignature;
1776
- /** Create a $ref pointer (even from other $refs) */
1797
+ /**
1798
+ * Create a $ref pointer (even from other $refs). A part that contains `#/` is read as a `$ref`
1799
+ * and contributes its decoded segments, so it throws URIError for a malformed percent escape; any
1800
+ * other part is one segment. To append raw document keys, escape each one instead.
1801
+ */
1777
1802
  declare function createRef(parts: (number | string | undefined | null)[]): string;
1778
1803
  /**
1779
1804
  * Print debug message (cribbed from the `debug` package, but without all the bells & whistles
@@ -1831,6 +1856,7 @@ declare function transformSchema(schema: OpenAPI3, ctx: GlobalContext): IrDeclar
1831
1856
  /** Every warning code. */
1832
1857
  declare const WARNING_CODES: {
1833
1858
  readonly CLI_INPUT_IGNORED: "CLI_INPUT_IGNORED";
1859
+ readonly CLI_OUTPUT_IGNORED: "CLI_OUTPUT_IGNORED";
1834
1860
  readonly CONFIG_SETTING_UNKNOWN: "CONFIG_SETTING_UNKNOWN";
1835
1861
  readonly DISCRIMINATOR_MAPPING_INVALID: "DISCRIMINATOR_MAPPING_INVALID";
1836
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,6 +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";
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";
283
306
  /** `--path-params-as-types` gives each `{name}` its placeholder, `{number}` included. */
284
307
  readonly PATH_PARAM_TYPE_NAMES: "path-param-type-names";
285
308
  /** A `prefixItems` tuple is open unless `items` or `unevaluatedItems` closes it (2020-12). */
@@ -291,6 +314,11 @@ declare const FIX: {
291
314
  * points at, also where the original type compiles through an index signature.
292
315
  */
293
316
  readonly REF_POINTERS: "ref-pointers";
317
+ /**
318
+ * OpenAPI 3.1 and 3.2: keywords next to a `$ref` (`required`, `properties`) apply too, so the
319
+ * type is the reference intersected with them. OpenAPI 3.0 ignores them, as its spec says.
320
+ */
321
+ readonly REF_SIBLINGS: "ref-siblings";
294
322
  /** Schemas of one root type name without the prefix each get an alias, the earlier numbered. */
295
323
  readonly ROOT_TYPE_NUMBERING: "root-type-numbering";
296
324
  /** `unevaluatedProperties` types the keys no other keyword declares (an index signature). */
@@ -1298,7 +1326,7 @@ interface OpenAPITSBaseOptions {
1298
1326
  * still fail the run.
1299
1327
  */
1300
1328
  lint?: boolean;
1301
- /** (optional) Should logging be suppressed? (necessary for STDOUT) */
1329
+ /** Hide warnings (default: false). Every line of the logger goes to stderr, never to stdout. */
1302
1330
  silent?: boolean;
1303
1331
  /** Accepted for compatibility with openapi-typescript; not read. */
1304
1332
  version?: number;
@@ -1467,22 +1495,6 @@ declare const DEPRECATION_CODES: {
1467
1495
  };
1468
1496
  type DeprecationCode = (typeof DEPRECATION_CODES)[keyof typeof DEPRECATION_CODES];
1469
1497
 
1470
- /** The debug groups of the original `DEBUG=openapi-ts:<group>` output. */
1471
- type DebugGroup = "redoc" | "lint" | "bundle" | "ts";
1472
- /**
1473
- * Where the generator reports progress and problems (ENGINEERING_PLAN 4.5). Whether warnings are
1474
- * printed (`silent`) and debug output (`DEBUG`) is decided by the adapter, when it is created.
1475
- */
1476
- interface Logger {
1477
- /**
1478
- * A debug line, with how long the step took when it was measured. A line without a group is
1479
- * written whenever debug output is on.
1480
- */
1481
- debug(message: string, group?: DebugGroup, durationMs?: number): void;
1482
- warn(message: string): void;
1483
- error(message: string): void;
1484
- }
1485
-
1486
1498
  /**
1487
1499
  * Convert an OpenAPI schema to TypeScript declarations (IR nodes; print them with `astToString`)
1488
1500
  * @param {string|URL|object|Readable} source OpenAPI schema source:
@@ -1519,14 +1531,20 @@ declare const ERROR_CODES: {
1519
1531
  readonly ENUM_NAME_EMPTY: "ENUM_NAME_EMPTY";
1520
1532
  readonly CALLBACK_RESULT_UNREADABLE: "CALLBACK_RESULT_UNREADABLE";
1521
1533
  readonly OPTION_FIX_UNKNOWN: "OPTION_FIX_UNKNOWN";
1534
+ readonly OPTION_INVALID: "OPTION_INVALID";
1522
1535
  readonly TYPESCRIPT_NOT_FOUND: "TYPESCRIPT_NOT_FOUND";
1523
1536
  readonly CLI_FLAG_REMOVED: "CLI_FLAG_REMOVED";
1537
+ readonly CLI_FLAG_INVALID: "CLI_FLAG_INVALID";
1524
1538
  readonly CLI_GLOB_UNSUPPORTED: "CLI_GLOB_UNSUPPORTED";
1525
1539
  readonly CLI_CONFIG_NOT_FOUND: "CLI_CONFIG_NOT_FOUND";
1526
1540
  readonly CLI_CONFIG_INVALID: "CLI_CONFIG_INVALID";
1527
1541
  readonly CLI_CONFIG_OUTPUT_MISSING: "CLI_CONFIG_OUTPUT_MISSING";
1528
1542
  readonly CLI_CHECK_OUTPUT_MISSING: "CLI_CHECK_OUTPUT_MISSING";
1529
1543
  readonly CLI_INPUT_MISSING: "CLI_INPUT_MISSING";
1544
+ readonly CLI_OUTPUT_IS_INPUT: "CLI_OUTPUT_IS_INPUT";
1545
+ readonly CLI_OUTPUT_DUPLICATE: "CLI_OUTPUT_DUPLICATE";
1546
+ readonly CLI_OUTPUT_INVALID: "CLI_OUTPUT_INVALID";
1547
+ readonly CLI_LOCATION_INVALID: "CLI_LOCATION_INVALID";
1530
1548
  readonly OUTPUT_STALE: "OUTPUT_STALE";
1531
1549
  readonly OUTPUT_READ_FAILED: "OUTPUT_READ_FAILED";
1532
1550
  readonly OUTPUT_WRITE_FAILED: "OUTPUT_WRITE_FAILED";
@@ -1541,12 +1559,15 @@ interface OpenAPITypesafeErrorInit {
1541
1559
  readonly code: ErrorCode;
1542
1560
  readonly message: string;
1543
1561
  readonly details?: ErrorDetails;
1544
- /** The lower-level error this one reports, if any (kept as the standard `cause`). */
1562
+ /**
1563
+ * The lower-level error this one reports, if any (kept as the standard `cause`; a copy with URL
1564
+ * secrets hidden when its chain names one, see cause-secrets.ts).
1565
+ */
1545
1566
  readonly cause?: unknown;
1546
1567
  }
1547
1568
  /**
1548
1569
  * The base of every expected failure; check `code`, not the class or the message. The message
1549
- * never shows the user info of a URL (`url-credentials.ts`).
1570
+ * and the `cause` chain never show the user info or the query of a URL (`url-secrets.ts`).
1550
1571
  */
1551
1572
  declare class OpenAPITypesafeError extends Error {
1552
1573
  readonly code: ErrorCode;
@@ -1773,7 +1794,11 @@ declare function createDiscriminatorProperty(discriminator: DiscriminatorObject,
1773
1794
  path: string;
1774
1795
  readonly?: boolean;
1775
1796
  }): IrPropertySignature;
1776
- /** Create a $ref pointer (even from other $refs) */
1797
+ /**
1798
+ * Create a $ref pointer (even from other $refs). A part that contains `#/` is read as a `$ref`
1799
+ * and contributes its decoded segments, so it throws URIError for a malformed percent escape; any
1800
+ * other part is one segment. To append raw document keys, escape each one instead.
1801
+ */
1777
1802
  declare function createRef(parts: (number | string | undefined | null)[]): string;
1778
1803
  /**
1779
1804
  * Print debug message (cribbed from the `debug` package, but without all the bells & whistles
@@ -1831,6 +1856,7 @@ declare function transformSchema(schema: OpenAPI3, ctx: GlobalContext): IrDeclar
1831
1856
  /** Every warning code. */
1832
1857
  declare const WARNING_CODES: {
1833
1858
  readonly CLI_INPUT_IGNORED: "CLI_INPUT_IGNORED";
1859
+ readonly CLI_OUTPUT_IGNORED: "CLI_OUTPUT_IGNORED";
1834
1860
  readonly CONFIG_SETTING_UNKNOWN: "CONFIG_SETTING_UNKNOWN";
1835
1861
  readonly DISCRIMINATOR_MAPPING_INVALID: "DISCRIMINATOR_MAPPING_INVALID";
1836
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,6 +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";
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";
283
306
  /** `--path-params-as-types` gives each `{name}` its placeholder, `{number}` included. */
284
307
  readonly PATH_PARAM_TYPE_NAMES: "path-param-type-names";
285
308
  /** A `prefixItems` tuple is open unless `items` or `unevaluatedItems` closes it (2020-12). */
@@ -291,6 +314,11 @@ declare const FIX: {
291
314
  * points at, also where the original type compiles through an index signature.
292
315
  */
293
316
  readonly REF_POINTERS: "ref-pointers";
317
+ /**
318
+ * OpenAPI 3.1 and 3.2: keywords next to a `$ref` (`required`, `properties`) apply too, so the
319
+ * type is the reference intersected with them. OpenAPI 3.0 ignores them, as its spec says.
320
+ */
321
+ readonly REF_SIBLINGS: "ref-siblings";
294
322
  /** Schemas of one root type name without the prefix each get an alias, the earlier numbered. */
295
323
  readonly ROOT_TYPE_NUMBERING: "root-type-numbering";
296
324
  /** `unevaluatedProperties` types the keys no other keyword declares (an index signature). */
@@ -1298,7 +1326,7 @@ interface OpenAPITSBaseOptions {
1298
1326
  * still fail the run.
1299
1327
  */
1300
1328
  lint?: boolean;
1301
- /** (optional) Should logging be suppressed? (necessary for STDOUT) */
1329
+ /** Hide warnings (default: false). Every line of the logger goes to stderr, never to stdout. */
1302
1330
  silent?: boolean;
1303
1331
  /** Accepted for compatibility with openapi-typescript; not read. */
1304
1332
  version?: number;
@@ -1467,22 +1495,6 @@ declare const DEPRECATION_CODES: {
1467
1495
  };
1468
1496
  type DeprecationCode = (typeof DEPRECATION_CODES)[keyof typeof DEPRECATION_CODES];
1469
1497
 
1470
- /** The debug groups of the original `DEBUG=openapi-ts:<group>` output. */
1471
- type DebugGroup = "redoc" | "lint" | "bundle" | "ts";
1472
- /**
1473
- * Where the generator reports progress and problems (ENGINEERING_PLAN 4.5). Whether warnings are
1474
- * printed (`silent`) and debug output (`DEBUG`) is decided by the adapter, when it is created.
1475
- */
1476
- interface Logger {
1477
- /**
1478
- * A debug line, with how long the step took when it was measured. A line without a group is
1479
- * written whenever debug output is on.
1480
- */
1481
- debug(message: string, group?: DebugGroup, durationMs?: number): void;
1482
- warn(message: string): void;
1483
- error(message: string): void;
1484
- }
1485
-
1486
1498
  /**
1487
1499
  * Convert an OpenAPI schema to TypeScript declarations (IR nodes; print them with `astToString`)
1488
1500
  * @param {string|URL|object|Readable} source OpenAPI schema source:
@@ -1519,14 +1531,20 @@ declare const ERROR_CODES: {
1519
1531
  readonly ENUM_NAME_EMPTY: "ENUM_NAME_EMPTY";
1520
1532
  readonly CALLBACK_RESULT_UNREADABLE: "CALLBACK_RESULT_UNREADABLE";
1521
1533
  readonly OPTION_FIX_UNKNOWN: "OPTION_FIX_UNKNOWN";
1534
+ readonly OPTION_INVALID: "OPTION_INVALID";
1522
1535
  readonly TYPESCRIPT_NOT_FOUND: "TYPESCRIPT_NOT_FOUND";
1523
1536
  readonly CLI_FLAG_REMOVED: "CLI_FLAG_REMOVED";
1537
+ readonly CLI_FLAG_INVALID: "CLI_FLAG_INVALID";
1524
1538
  readonly CLI_GLOB_UNSUPPORTED: "CLI_GLOB_UNSUPPORTED";
1525
1539
  readonly CLI_CONFIG_NOT_FOUND: "CLI_CONFIG_NOT_FOUND";
1526
1540
  readonly CLI_CONFIG_INVALID: "CLI_CONFIG_INVALID";
1527
1541
  readonly CLI_CONFIG_OUTPUT_MISSING: "CLI_CONFIG_OUTPUT_MISSING";
1528
1542
  readonly CLI_CHECK_OUTPUT_MISSING: "CLI_CHECK_OUTPUT_MISSING";
1529
1543
  readonly CLI_INPUT_MISSING: "CLI_INPUT_MISSING";
1544
+ readonly CLI_OUTPUT_IS_INPUT: "CLI_OUTPUT_IS_INPUT";
1545
+ readonly CLI_OUTPUT_DUPLICATE: "CLI_OUTPUT_DUPLICATE";
1546
+ readonly CLI_OUTPUT_INVALID: "CLI_OUTPUT_INVALID";
1547
+ readonly CLI_LOCATION_INVALID: "CLI_LOCATION_INVALID";
1530
1548
  readonly OUTPUT_STALE: "OUTPUT_STALE";
1531
1549
  readonly OUTPUT_READ_FAILED: "OUTPUT_READ_FAILED";
1532
1550
  readonly OUTPUT_WRITE_FAILED: "OUTPUT_WRITE_FAILED";
@@ -1541,12 +1559,15 @@ interface OpenAPITypesafeErrorInit {
1541
1559
  readonly code: ErrorCode;
1542
1560
  readonly message: string;
1543
1561
  readonly details?: ErrorDetails;
1544
- /** The lower-level error this one reports, if any (kept as the standard `cause`). */
1562
+ /**
1563
+ * The lower-level error this one reports, if any (kept as the standard `cause`; a copy with URL
1564
+ * secrets hidden when its chain names one, see cause-secrets.ts).
1565
+ */
1545
1566
  readonly cause?: unknown;
1546
1567
  }
1547
1568
  /**
1548
1569
  * The base of every expected failure; check `code`, not the class or the message. The message
1549
- * never shows the user info of a URL (`url-credentials.ts`).
1570
+ * and the `cause` chain never show the user info or the query of a URL (`url-secrets.ts`).
1550
1571
  */
1551
1572
  declare class OpenAPITypesafeError extends Error {
1552
1573
  readonly code: ErrorCode;
@@ -1773,7 +1794,11 @@ declare function createDiscriminatorProperty(discriminator: DiscriminatorObject,
1773
1794
  path: string;
1774
1795
  readonly?: boolean;
1775
1796
  }): IrPropertySignature;
1776
- /** Create a $ref pointer (even from other $refs) */
1797
+ /**
1798
+ * Create a $ref pointer (even from other $refs). A part that contains `#/` is read as a `$ref`
1799
+ * and contributes its decoded segments, so it throws URIError for a malformed percent escape; any
1800
+ * other part is one segment. To append raw document keys, escape each one instead.
1801
+ */
1777
1802
  declare function createRef(parts: (number | string | undefined | null)[]): string;
1778
1803
  /**
1779
1804
  * Print debug message (cribbed from the `debug` package, but without all the bells & whistles
@@ -1831,6 +1856,7 @@ declare function transformSchema(schema: OpenAPI3, ctx: GlobalContext): IrDeclar
1831
1856
  /** Every warning code. */
1832
1857
  declare const WARNING_CODES: {
1833
1858
  readonly CLI_INPUT_IGNORED: "CLI_INPUT_IGNORED";
1859
+ readonly CLI_OUTPUT_IGNORED: "CLI_OUTPUT_IGNORED";
1834
1860
  readonly CONFIG_SETTING_UNKNOWN: "CONFIG_SETTING_UNKNOWN";
1835
1861
  readonly DISCRIMINATOR_MAPPING_INVALID: "DISCRIMINATOR_MAPPING_INVALID";
1836
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.3",
4
+ "version": "1.0.0-rc.5",
5
5
  "author": {
6
6
  "name": "Fedor Chishchin",
7
7
  "url": "https://github.com/fedorello"
@@ -35,6 +35,7 @@
35
35
  "./*": "./*"
36
36
  },
37
37
  "files": [
38
+ "CHANGELOG.md",
38
39
  "bin",
39
40
  "dist",
40
41
  "src"
@@ -61,7 +62,7 @@
61
62
  },
62
63
  "peerDependencies": {
63
64
  "@typescript/typescript6": "^6.0.0",
64
- "typescript": ">=5.0.0"
65
+ "typescript": ">=5.4.0"
65
66
  },
66
67
  "peerDependenciesMeta": {
67
68
  "@typescript/typescript6": {
@@ -106,11 +107,9 @@
106
107
  "lint:ts": "tsc --noEmit && tsc -p tsconfig.strict.json",
107
108
  "test": "pnpm run test:js && pnpm run test:examples && pnpm run test:exports",
108
109
  "test:js": "vitest run",
109
- "test:exports": "pnpm run build && ../../scripts/check-exports.sh",
110
+ "test:exports": "../../scripts/check-exports.sh",
110
111
  "test:examples": "tsc -p tsconfig.examples.json --noEmit",
111
112
  "update:examples": "pnpm run build && pnpm run download:schemas && vite-node ./scripts/update-examples.ts",
112
- "prepublish": "pnpm run build",
113
- "version": "pnpm run build",
114
113
  "lint:deps": "depcruise src --config .dependency-cruiser.cjs",
115
114
  "test:coverage": "vitest run --coverage",
116
115
  "lint:sizes": "vite-node scripts/size-rules/check-sizes.ts src"
@@ -0,0 +1,138 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import type { ClaimedFile } from "../../application/ports/file-system.js";
4
+ import { creationPath, type FileNumber, type PathQueries } from "./file-identity.js";
5
+
6
+ /**
7
+ * Claiming an output on Node's `fs` (ADR-043, decision 1): the file is opened for appending,
8
+ * which creates it when it is missing (also through a symbolic link) and never truncates it.
9
+ * The device and file number of the open file are its identity. A claim or a write that fails
10
+ * removes the directories it created.
11
+ */
12
+
13
+ /**
14
+ * The directories that do not exist yet on the way to `directory`, deepest first: the ones a
15
+ * recursive `fs.mkdirSync` creates. They are listed before it runs, in the form of `directory`
16
+ * itself: on Windows the path that `fs.mkdirSync` returns did not match that form, so comparing
17
+ * with it found no new directory and a failed run left them behind.
18
+ */
19
+ export function missingDirectories(
20
+ directory: string,
21
+ exists: (candidate: string) => boolean,
22
+ ): string[] {
23
+ const missing: string[] = [];
24
+ for (let current = directory; !exists(current); current = path.dirname(current)) {
25
+ missing.push(current);
26
+ if (path.dirname(current) === current) {
27
+ break;
28
+ }
29
+ }
30
+ return missing;
31
+ }
32
+
33
+ /**
34
+ * The identity of an open file: its device and file number, or its stored path on a file system
35
+ * that reports the file number 0 (FAT, some network shares), which proves nothing.
36
+ */
37
+ export function claimIdentity(number: FileNumber, storedPath: () => string): string {
38
+ return number.file === 0n ? `path:${storedPath()}` : `${number.device}:${number.file}`;
39
+ }
40
+
41
+ function identityOf(descriptor: number, filePath: string): string {
42
+ const status = fs.fstatSync(descriptor, { bigint: true });
43
+ return claimIdentity({ device: status.dev, file: status.ino }, () =>
44
+ fs.realpathSync.native(filePath),
45
+ );
46
+ }
47
+
48
+ function errorCodeOf(error: unknown): unknown {
49
+ return error instanceof Error && "code" in error ? error.code : undefined;
50
+ }
51
+
52
+ /** Remove the new directories, deepest first, until one holds another file. */
53
+ function removeDirectories(directories: readonly string[]): void {
54
+ for (const directory of directories) {
55
+ try {
56
+ fs.rmdirSync(directory);
57
+ } catch (error) {
58
+ const code = errorCodeOf(error);
59
+ // Another output or the user put a file there since: the directory and its parents stay.
60
+ if (code === "ENOTEMPTY" || code === "EEXIST") {
61
+ return;
62
+ }
63
+ // Removed since: nothing to remove, but its parents may still be empty. Windows also gives
64
+ // ENOENT for a file put in its place, which must fail like any other path it cannot remove.
65
+ if (code !== "ENOENT" || fs.lstatSync(directory, { throwIfNoEntry: false }) !== undefined) {
66
+ throw error;
67
+ }
68
+ }
69
+ }
70
+ }
71
+
72
+ /**
73
+ * Create `directory` and give the directories that this created. Through a link to a missing
74
+ * directory it creates the link's target, as a write through the link would, so the path to
75
+ * create and the new directories are real paths, where links are already followed. A recursive
76
+ * `mkdir` that fails part of the way (a directory name too long for the file system) keeps the
77
+ * directories above the failing one, so the ones that exist now are removed here.
78
+ */
79
+ function createDirectory(directory: string, queries: PathQueries): string[] {
80
+ const target = creationPath(directory, queries);
81
+ const missing = missingDirectories(target, fs.existsSync);
82
+ try {
83
+ fs.mkdirSync(target, { recursive: true });
84
+ } catch (error) {
85
+ removeDirectories(missing.filter((created) => fs.existsSync(created)));
86
+ throw error;
87
+ }
88
+ return missing;
89
+ }
90
+
91
+ /** Open `filePath` for appending, which creates it, and give its identity and whether it is new. */
92
+ function openClaim(filePath: string): { identity: string; createdFile: string | undefined } {
93
+ const isCreated = !fs.existsSync(filePath);
94
+ const descriptor = fs.openSync(filePath, "a");
95
+ try {
96
+ const identity = identityOf(descriptor, filePath);
97
+ // A link to a missing file created its target: that file is what the claim removes.
98
+ return { identity, createdFile: isCreated ? fs.realpathSync.native(filePath) : undefined };
99
+ } finally {
100
+ fs.closeSync(descriptor);
101
+ }
102
+ }
103
+
104
+ /**
105
+ * Claim the file at `filePath`; the caller turns a failure into a typed error. A claim that fails
106
+ * after creating directories (a file name too long for the file system) removes them again.
107
+ */
108
+ export function claimFileAt(filePath: string, queries: PathQueries): ClaimedFile {
109
+ const directories = createDirectory(path.dirname(filePath), queries);
110
+ let opened: ReturnType<typeof openClaim>;
111
+ try {
112
+ opened = openClaim(filePath);
113
+ } catch (error) {
114
+ removeDirectories(directories);
115
+ throw error;
116
+ }
117
+ const { identity, createdFile } = opened;
118
+ return {
119
+ identity,
120
+ release: () => {
121
+ if (createdFile !== undefined) {
122
+ fs.rmSync(createdFile, { force: true });
123
+ }
124
+ removeDirectories(directories);
125
+ },
126
+ };
127
+ }
128
+
129
+ /** Write `contents` to `filePath`, creating its directory; a failed write removes what it made. */
130
+ export function writeFileAt(filePath: string, contents: string, queries: PathQueries): void {
131
+ const directories = createDirectory(path.dirname(filePath), queries);
132
+ try {
133
+ fs.writeFileSync(filePath, contents, "utf8");
134
+ } catch (error) {
135
+ removeDirectories(directories);
136
+ throw error;
137
+ }
138
+ }