oa-document-builder.d.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. import {Optional} from './types.js';
  2. import {Service, ServiceContainer} from '@e22m4u/js-service';
  3. import {OADocumentScope, OADocumentScopeOptions} from './oa-document-scope.js';
  4. import {
  5. OALinkObject,
  6. OASchemaObject,
  7. OAHeaderObject,
  8. OAExampleObject,
  9. OADocumentObject,
  10. OACallbackObject,
  11. OAResponseObject,
  12. OAPathItemObject,
  13. OAOperationMethod,
  14. OAOperationObject,
  15. OAReferenceObject,
  16. OAParameterObject,
  17. OARequestBodyObject,
  18. OASecuritySchemeObject,
  19. } from './document-specification.js';
  20. /**
  21. * Document input.
  22. */
  23. export type OADocumentInput = Optional<OADocumentObject, 'openapi' | 'info'>;
  24. /**
  25. * Schema component definition.
  26. */
  27. export type OASchemaComponentDefinition = {
  28. name: string;
  29. schema: OASchemaObject;
  30. };
  31. /**
  32. * Response component definition.
  33. */
  34. export type OAResponseComponentDefinition = {
  35. name: string;
  36. response: OAResponseObject | OAReferenceObject;
  37. };
  38. /**
  39. * Parameter component definition.
  40. */
  41. export type OAParameterComponentDefinition = {
  42. name: string;
  43. parameter: OAParameterObject | OAReferenceObject;
  44. };
  45. /**
  46. * Example component definition.
  47. */
  48. export type OAExampleComponentDefinition = {
  49. name: string;
  50. example: OAExampleObject | OAReferenceObject;
  51. };
  52. /**
  53. * Request body component definition.
  54. */
  55. export type OARequestBodyComponentDefinition = {
  56. name: string;
  57. requestBody: OARequestBodyObject | OAReferenceObject;
  58. };
  59. /**
  60. * Header component definition.
  61. */
  62. export type OAHeaderComponentDefinition = {
  63. name: string;
  64. header: OAHeaderObject | OAReferenceObject;
  65. };
  66. /**
  67. * Security scheme component definition.
  68. */
  69. export type OASecuritySchemeComponentDefinition = {
  70. name: string;
  71. securityScheme: OASecuritySchemeObject | OAReferenceObject;
  72. };
  73. /**
  74. * Link component definition.
  75. */
  76. export type OALinkComponentDefinition = {
  77. name: string;
  78. link: OALinkObject | OAReferenceObject;
  79. };
  80. /**
  81. * Callback component definition.
  82. */
  83. export type OACallbackComponentDefinition = {
  84. name: string;
  85. callback: OACallbackObject | OAReferenceObject;
  86. };
  87. /**
  88. * Path item component definition.
  89. */
  90. export type OAPathItemComponentDefinition = {
  91. name: string;
  92. pathItem: OAPathItemObject | OAReferenceObject;
  93. };
  94. /**
  95. * Operation definition.
  96. */
  97. export type OAOperationDefinition = {
  98. path: string;
  99. method: OAOperationMethod;
  100. operation: OAOperationObject;
  101. };
  102. /**
  103. * Document builder.
  104. */
  105. export declare class OADocumentBuilder extends Service {
  106. /**
  107. * Constructor.
  108. *
  109. * @param container
  110. * @param document
  111. */
  112. constructor(container: ServiceContainer, document?: OADocumentInput);
  113. /**
  114. * Constructor.
  115. *
  116. * @param document
  117. */
  118. constructor(document?: OADocumentInput);
  119. /**
  120. * Constructor.
  121. *
  122. * @param containerOrDocument
  123. * @param document
  124. */
  125. constructor(
  126. containerOrDocument?: ServiceContainer | OADocumentInput,
  127. document?: OADocumentInput,
  128. );
  129. /**
  130. * Define schema component.
  131. *
  132. * @param schemaDef
  133. */
  134. defineSchemaComponent(schemaDef: OASchemaComponentDefinition): this;
  135. /**
  136. * Define response component.
  137. *
  138. * @param responseDef
  139. */
  140. defineResponseComponent(responseDef: OAResponseComponentDefinition): this;
  141. /**
  142. * Define parameter component.
  143. *
  144. * @param parameterDef
  145. */
  146. defineParameterComponent(parameterDef: OAParameterComponentDefinition): this;
  147. /**
  148. * Define example component.
  149. *
  150. * @param exampleDef
  151. */
  152. defineExampleComponent(exampleDef: OAExampleComponentDefinition): this;
  153. /**
  154. * Define request body component.
  155. *
  156. * @param requestBodyDef
  157. */
  158. defineRequestBodyComponent(
  159. requestBodyDef: OARequestBodyComponentDefinition,
  160. ): this;
  161. /**
  162. * Define header component.
  163. *
  164. * @param headerDef
  165. */
  166. defineHeaderComponent(headerDef: OAHeaderComponentDefinition): this;
  167. /**
  168. * Define security scheme component.
  169. *
  170. * @param securitySchemeDef
  171. */
  172. defineSecuritySchemeComponent(
  173. securitySchemeDef: OASecuritySchemeComponentDefinition,
  174. ): this;
  175. /**
  176. * Define link component.
  177. *
  178. * @param linkDef
  179. */
  180. defineLinkComponent(linkDef: OALinkComponentDefinition): this;
  181. /**
  182. * Define callback component.
  183. *
  184. * @param callbackDef
  185. */
  186. defineCallbackComponent(callbackDef: OACallbackComponentDefinition): this;
  187. /**
  188. * Define path item component.
  189. *
  190. * @param pathItemDef
  191. */
  192. definePathItemComponent(pathItemDef: OAPathItemComponentDefinition): this;
  193. /**
  194. * Define operation.
  195. *
  196. * @param operationDef
  197. */
  198. defineOperation(operationDef: OAOperationDefinition): this;
  199. /**
  200. * Create scope.
  201. *
  202. * @param options
  203. */
  204. createScope(options?: OADocumentScopeOptions): OADocumentScope;
  205. /**
  206. * Build.
  207. */
  208. build(): OADocumentObject;
  209. }