src/2.0/annotations.js   A
last analyzed

Complexity

Total Complexity 0
Complexity/F 0

Size

Lines of Code 1
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 0
c 1
b 0
f 1
nc 1
dl 0
loc 1
rs 10
noi 0
wmc 0
mnd 0
bc 0
fnc 0
bpm 0
cpm 0
1
/**
2
 * @typedef {Object} Swagger20
3
 * Swagger 2.0 specification object
4
 *
5
 * @property {String} swagger Required. Specifies the Swagger Specification version being used. It can be used by the Swagger UI and other clients to interpret the API listing. The value MUST be "2.0".
6
 * @property {Swagger20InfoObject} info Required. Provides metadata about the API. The metadata can be used by the clients if needed.
7
 * @property {String} host The host (name or ip) serving the API. This MUST be the host only and does not include the scheme nor sub-paths. It MAY include a port. If the host is not included, the host serving the documentation is to be used (including the port). The host does not support path templating.
8
 * @property {String} basePath The base path on which the API is served, which is relative to the host. If it is not included, the API is served directly under the host. The value MUST start with a leading slash (/). The basePath does not support path templating.
9
 * @property {Array.<string>} schemes  The transfer protocol of the API. Values MUST be from the list: "http", "https", "ws", "wss". If the schemes is not included, the default scheme to be used is the one used to access the Swagger definition itself.
10
 * @property {Array.<string>} consumes A list of MIME types the APIs can consume. This is global to all APIs but can be overridden on specific API calls
11
 * @property {Array.<string>} produces A list of MIME types the APIs can produce. This is global to all APIs but can be overridden on specific API calls
12
 * @property {Object.<Swagger20PathObject>} paths Required. The available paths and operations for the API.
13
 */
14
15
/**
16
 * @typedef {Object} Swagger20PathObject
17
 * Swagger 2.0 api endpoints object
18
 *
19
 * @property {string} $ref Allows for an external definition of this path item. The referenced structure MUST be in the format of a Path Item Object. If there are conflicts between the referenced definition and this Path Item's definition, the behavior is undefined.
20
 * @property {Swagger20OperationDefinition} get A definition of a GET operation on this path.
21
 * @property {Swagger20OperationDefinition} put A definition of a PUT operation on this path.
22
 * @property {Swagger20OperationDefinition} post A definition of a POST operation on this path.
23
 * @property {Swagger20OperationDefinition} delete A definition of a DELETE operation on this path.
24
 * @property {Swagger20OperationDefinition} options A definition of a OPTIONS operation on this path.
25
 * @property {Swagger20OperationDefinition} head A definition of a HEAD operation on this path.
26
 * @property {Array.<Swagger20ParameterObject>|Array.<Swagger20ReferenceObject>} parameters A definition of a GET operation on this path.
27
 *
28
 * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#pathItemObject
29
 * for more details
30
 */
31
32
/**
33
 * @typedef {Object} Swagger20OperationDefinition
34
 * Swagger 2.0 operation definition
35
 *
36
 * @property {Array.<string>} A list of tags for API documentation control. Tags can be used for logical grouping of operations by resources or any other qualifier.
37
 * @property {String} summary A short summary of what the operation does. For maximum readability in the swagger-ui, this field SHOULD be less than 120 characters.
38
 * @property {String} description A verbose explanation of the operation behavior
39
 * @property {Swagger20ExternalDocObject} externalDocs Additional external documentation for this operation.
40
 * @property {String} operationId Unique string used to identify the operation. The id MUST be unique among all operations described in the API. Tools and libraries MAY use the operationId to uniquely identify an operation, therefore, it is recommended to follow common programming naming conventions.
41
 * @property {Array.<string>} consumes A list of MIME types the operation can consume. This overrides the consumes definition at the Swagger Object. An empty value MAY be used to clear the global definition.
42
 * @property {Array.<string>} produces A list of MIME types the operation can produce. This overrides the produces definition at the Swagger Object. An empty value MAY be used to clear the global definition
43
 * @property {Array.<Swagger20ParameterObject>} parameters A list of parameters that are applicable for this operation. If a parameter is already defined at the Path Item, the new definition will override it, but can never remove it. The list MUST NOT include duplicated parameters. A unique parameter is defined by a combination of a name and location. The list can use the Reference Object to link to parameters that are defined at the Swagger Object's parameters. There can be one "body" parameter at most.
44
 * @property {Object.<Swagger20ResponseObject>|Object.<Swagger20ReferenceObject>} responses Required. The list of possible responses as they are returned from executing this operation.
45
 * @property {Array.<string>} schemes The transfer protocol for the operation. Values MUST be from the list: "http", "https", "ws", "wss"
46
 * @property {boolean} deprecated  Declares this operation to be deprecated. Usage of the declared operation should be refrained. Default value is false.
47
 * @property {Array.<Swagger20SecurityObject>} security A declaration of which security schemes are applied for this operation. The list of values describes alternative security schemes that can be used (that is, there is a logical OR between the security requirements)
48
 *
49
 * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#operationObject
50
 * for more details
51
 */
52
53
/**
54
 * @typedef {Object} Swagger20SecurityObject
55
 * Swagger 20 security object
56
 *
57
 * @property {Array.<string>} {name} Each name must correspond to a security scheme which is declared in the Security Definitions. If the security scheme is of type "oauth2", then the value is a list of scope names required for the execution. For other security scheme types, the array MUST be empty.
58
 *
59
 * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#securityRequirementObject
60
 * for more details
61
 */
62
63
/**
64
 * @typedef {Object} Swagger20ResponseObject
65
 * Swagger 2.0 response object
66
 *
67
 * @property {string} description Required. A short description of the response
68
 * @property {Object.<Swagger20SchemaObject>} schema A definition of the response structure. It can be a primitive, an array or an object. If this field does not exist, it means no content is returned as part of the response. As an extension to the Schema Object, its root type value may also be "file". This SHOULD be accompanied by a relevant produces mime-type.
69
 * @property {Object.<Swagger20HeaderObject>} headers A list of headers that are sent with the response.
70
 * @property {Object.<Swagger20ExampleObject>} examples An example of the response message.
71
 *
72
 * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#responseObject
73
 * for more details
74
 */
75
76
/**
77
 * @typedef {Object} Swagger20ExampleObject
78
 * Example object
79
 *
80
 * @property {*} {mime type} The name of the property MUST be one of the Operation produces values (either implicit or inherited). The value SHOULD be an example of what such a response would look like.
81
 *
82
 * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#exampleObject
83
 * for more details
84
 */
85
86
/**
87
 * @typedef {Object} Swagger20HeaderObject
88
 * Header object
89
 *
90
 * @property {String} description A short description of the header.
91
 * @property {String} type Required. The type of the object. The value MUST be one of "string", "number", "integer", "boolean", or "array".
92
 * @property {String} format The extending format for the previously mentioned type. See Data Type Formats for further details.
93
 * @property {Object.<Swagger20ItemObject>} items Required if type is "array". Describes the type of items in the array.
94
 * @property {String} collectionFormat Determines the format of the array if type array is used. Possible values are:
95
 * <ul>
96
 *   <li><code>csv</code> - comma separated values <code>foo,bar</code>.</li>
97
 *   <li><code>ssv</code> - space separated values <code>foo bar</code>.</li>
98
 *   <li><code>tsv</code> - tab separated values <code>foo\tbar</code>.</li>
99
 *   <li>pipes - pipe separated values <code>foo|bar</code>.</li>
100
 *   Default value is <code>csv</code>.
101
 * </ul>
102
 * @property {*} default Declares the value of the item that the server will use if none is provided. (Note: "default" has no meaning for required items.)
103
 * @property {Number} maximum @see  https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.2.
104
 * @property {Boolean} exclusiveMaximum @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.2.
105
 * @property {Number} minimum  @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.3.
106
 * @property {Boolean} exclusiveMinimum @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.3.
107
 * @property {Number} maxLength @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.1.
108
 * @property {Number} minLength @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.2.
109
 * @property {String} pattern @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.3.
110
 * @property {Number} maxItems @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.3.2.
111
 * @property {Number} minItems @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.3.3.
112
 * @property {Boolean} uniqueItems @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.3.4.
113
 * @property {Array.<*>} enum @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.5.1.
114
 * @property {Number} multipleOf @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.1.
115
 *
116
 * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#headerObject
117
 * for more details
118
 */
119
120
/**
121
 * @typedef {Object} Swagger20ItemObject
122
 * Item object
123
 *
124
 * @property {String} type Required. The type of the object. The value MUST be one of "string", "number", "integer", "boolean", or "array".
125
 * @property {String} format The extending format for the previously mentioned type. See Data Type Formats for further details.
126
 * @property {Object.<Swagger20ItemObject>} items Required if type is "array". Describes the type of items in the array.
127
 * @property {String} collectionFormat Determines the format of the array if type array is used. Possible values are:
128
 * <ul>
129
 *   <li><code>csv</code> - comma separated values <code>foo,bar</code>.</li>
130
 *   <li><code>ssv</code> - space separated values <code>foo bar</code>.</li>
131
 *   <li><code>tsv</code> - tab separated values <code>foo\tbar</code>.</li>
132
 *   <li>pipes - pipe separated values <code>foo|bar</code>.</li>
133
 *   Default value is <code>csv</code>.
134
 * </ul>
135
 * @property {*} default Declares the value of the item that the server will use if none is provided. (Note: "default" has no meaning for required items.)
136
 * @property {Number} maximum @see  https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.2.
137
 * @property {Boolean} exclusiveMaximum @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.2.
138
 * @property {Number} minimum  @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.3.
139
 * @property {Boolean} exclusiveMinimum @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.3.
140
 * @property {Number} maxLength @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.1.
141
 * @property {Number} minLength @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.2.
142
 * @property {String} pattern @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.2.3.
143
 * @property {Number} maxItems @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.3.2.
144
 * @property {Number} minItems @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.3.3.
145
 * @property {Boolean} uniqueItems @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.3.4.
146
 * @property {Array.<*>} enum @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.5.1.
147
 * @property {Number} multipleOf @see https://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.1.1.
148
 *
149
 * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#itemsObject
150
 * for more details
151
 */
152
153
/**
154
 * @typedef {Object} Swagger20ReferenceObject
155
 * Swagger 2.0 response object
156
 *
157
 * @property string $ref Required. The reference string.
158
 *
159
 * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#referenceObject
160
 * for more details
161
 */
162
163
/**
164
 * @typedef {Object} Swagger20ParameterObject
165
 *
166
 * @property {String} name Required. The name of the parameter. Parameter names are case sensitive.
167
 * @property {String} in Required. The location of the parameter. Possible values are "query", "header", "path", "formData" or "body".
168
 * @property {String} description A brief description of the parameter. This could contain examples of use. GFM syntax can be used for rich text representation.
169
 * @property {boolean} required Determines whether this parameter is mandatory. If the parameter is in "path", this property is required and its value MUST be true. Otherwise, the property MAY be included and its default value is false.
170
 * @property {Swagger20SchemaObject} schema Required if <i>in</i> is <code>"body"</code> . The schema defining the type used for the body parameter.
171
 * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameterObject
172
 * for more details
173
 */
174
175
/**
176
 * @typedef {Object} Swagger20SchemaObject
177
 *
178
 * @property {String} title Required. The name of the parameter.
179
 * @property {String} format Data type format
180
 * @property {String} type Data type
181
 * @property {String} description Parameter description
182
 * @property {*} default Default parameter value
183
 * @property {String} description A short description for the tag
184
 * @property {String} discriminator Adds support for polymorphism. The discriminator is the schema property name that is used to differentiate between other schema that inherit this schema. The property name used MUST be defined at this schema and it MUST be in the required property list. When used, the value MUST be the name of this schema or any schema that inherits it.
185
 * @property {boolean} readOnly Relevant only for Schema "properties" definitions. Declares the property as "read only". This means that it MAY be sent as part of a response but MUST NOT be sent as part of the request. Properties marked as readOnly being true SHOULD NOT be in the required list of the defined schema. Default value is false.
186
 * @property {Swagger20XMLObject} xml  This MAY be used only on properties schemas. It has no effect on root schemas. Adds Additional metadata to describe the XML representation format of this property.
187
 * @property {Swagger20ExternalDocObject} externalDocs Additional external documentation for this schema.
188
 * @property {*} example A free-form property to include an example of an instance for this schema.
189
 *
190
 * https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#schema-object
191
 * for more details
192
 */
193
194
/**
195
 * @typedef {Object} Swagger20XMLObject
196
 * @property {String} name Replaces the name of the element/attribute used for the described schema property. When defined within the Items Object (items), it will affect the name of the individual XML elements within the list. When defined alongside type being array (outside the items), it will affect the wrapping element and only if wrapped is true. If wrapped is false, it will be ignored.
197
 * @property {String} namespace The URL of the namespace definition. Value SHOULD be in the form of a URL.
198
 * @property {String} prefix The prefix to be used for the name.
199
 * @property {boolean} attribute Declares whether the property definition translates to an attribute instead of an element. Default value is false.
200
 * @property {boolean} wrapped MAY be used only for an array definition. Signifies whether the array is wrapped (for example, <books><book/><book/></books>) or unwrapped (<book/><book/>). Default value is false. The definition takes effect only when defined alongside type being array (outside the items).
201
 */
202
203
/**
204
 * @typedef {Object} Swagger20ExternalDocObject
205
 * Allows referencing an external resource for extended documentation.
206
 *
207
 * @property {String} description A short description of the target documentation. GFM syntax can be used for rich text representation.
208
 * @property {String} url Required. The URL for the target documentation. Value MUST be in the format of a URL.
209
 *
210
 * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#externalDocumentationObject
211
 * for more details
212
 */
213
214
/**
215
 * @typedef {Object} Swagger20InfoObject
216
 * Swagger 20 info object
217
 *
218
 * @property {String} title Required. The title of the application.
219
 * @property {String} description A short description of the application
220
 * @property {String} termsOfService The Terms of Service for the API.
221
 * @property {Swagger20ContactObject} contact The contact information for the exposed API.
222
 * @property {Swagger20LicenseObject} license The license information for the exposed API.
223
 * @property {String} version Required Provides the version of the application API (not to be confused with the specification version).
224
 *
225
 * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#infoObject
226
 * for more details
227
 */
228
229
/**
230
 * @typedef {Object} Swagger20LicenseObject
231
 * Swagger 20 license object
232
 *
233
 * @property {String} name Required. The license name used for the API.
234
 * @property {String} url A URL to the license used for the API. MUST be in the format of a URL.
235
 *
236
 * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#licenseObject
237
 * for more details
238
 */
239
240
/**
241
 * @typedef {Object} Swagger20ContactObject
242
 * Swagger 20 contact information object
243
 *
244
 * @property {String} name The identifying name of the contact person/organization.
245
 * @property {String} url The URL pointing to the contact information. MUST be in the format of a URL.
246
 * @property {String} email The email address of the contact person/organization. MUST be in the format of an email address.
247
 *
248
 * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#contactObject
249
 * for more details
250
 */
251
252
/**
253
 * @typedef {Object} ParserOptions
254
 * @property {String} getTagCommand Command for get tag list
255
 * @property {String} repoPath Path to repository with project
256
 * @property {String|undefined} packageVersion Package version
257
 * @property {String} packageName Package name
258
 * @property {String} moduleName Module name
259
 * @property {String} className Class name
260
 * @property {ParserOptions} methodsParserConfig Method parser config
261
 * @property {String} modelPath Model path
262
 * @property {String} docsPath Methods path
263
 */
264
265
// Package definitions
266
267
/**
268
 * @typedef {Object} SecurityObject
269
 * Definitions object (for model)
270
 *
271
 * @property {String} type Required. The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".
272
 * @property {String} description A short description for security scheme.
273
 * @property {String} name Required. The name of the header or query parameter to be used.
274
 * @property {String} in Required The location of the API key. Valid values are "query" or "header".
275
 * @property {String} flow Required. The flow used by the OAuth2 security scheme. Valid values are "implicit", "password", "application" or "accessCode".
276
 * @property {String} authorizationUrl Required. The authorization URL to be used for this flow. This SHOULD be in the form of a URL.
277
 * @property {String} tokenUrl Required. The token URL to be used for this flow. This SHOULD be in the form of a URL.
278
 * @property {Array.<Scope>} scopes Required. The available scopes for the OAuth2 security scheme.
279
 *
280
 * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#security-scheme-object
281
 * for more information
282
 */
283
284
/**
285
 * @typedef {Object} Scope
286
 * Scope object
287
 *
288
 * @property {String} name Maps between a name of a scope to a short description of it (as the value of the property).
289
 *
290
 * @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#scopesObject
291
 * for more details
292
 */
293
294
/**
295
 * @typedef {Object} ParameterObject
296
 * Custom property object
297
 *
298
 * @property {String} name The name of the parameter. Parameter names are case sensitive.
299
 * @property {String} camelCaseName The name of the parameter. Parameter names are camelCase sensitive.
300
 * @property {String} description A brief description of the parameter
301
 * @property {boolean} required Determines whether this parameter is mandatory. If the parameter is in "path", this property is required and its value MUST be true. Otherwise, the property MAY be included and its default value is false.
302
 * @property {String} description Short parameter description
303
 *
304
 */
305
306
/**
307
 * @typedef {Object} HeaderObject
308
 * Header object
309
 *
310
 * @property {String} description Header description
311
 * @property {String} name Header name
312
 * @property {String} camelCaseName Header camelcase name
313
 * @property {Array.<String>} Header values
314
 *
315
 */
316
317
/**
318
 * @typedef {Object} ParameterParserOptionsObject
319
 * Parameters parser options object
320
 * @property {boolean} addEnumDescription Add description for enum. Default is true
321
 */
322
323
/**
324
 * @typedef {Object} MethodConfigObject
325
 * Parsed method object
326
 *
327
 * @property {String} path Method URL
328
 * @property {String} method HTTP request method
329
 * @property {Array.<String>} tags Mathod tags
330
 * @property {String} summary A short summary of what the operation does. For maximum readability in the swagger-ui, this field SHOULD be less than 120 characters.
331
 * @property {String} description A verbose explanation of the operation behavior
332
 * @property {Swagger20ExternalDocObject} externalDocs Additional external documentation for this operation.
333
 * @property {String} operationId Unique string used to identify the operation. The id MUST be unique among all operations described in the API. Tools and libraries MAY use the operationId to uniquely identify an operation, therefore, it is recommended to follow common programming naming conventions.
334
 * @property {Array.<string>} consumes A list of MIME types the operation can consume. This overrides the consumes definition at the Swagger Object. An empty value MAY be used to clear the global definition.
335
 * @property {Array.<string>} produces A list of MIME types the operation can produce. This overrides the produces definition at the Swagger Object. An empty value MAY be used to clear the global definition
336
 * @property {Array.<ParameterObject>} parameters A list of parameters that are applicable for this operation. If a parameter is already defined at the Path Item, the new definition will override it, but can never remove it. The list MUST NOT include duplicated parameters. A unique parameter is defined by a combination of a name and location. The list can use the Reference Object to link to parameters that are defined at the Swagger Object's parameters. There can be one "body" parameter at most.
337
 * @property {Array.<ParameterObject>} headers A list of headers that are applicable for this operation
338
 * @property {Array.<ParameterObject>} bodyParams A list of body request parameters that are applicable for this operation
339
 * @property {Array.<ParameterObject>} queryParams A list of query parameters that are applicable for this operation
340
 * @property {Array.<ParameterObject>} formDataParams A list of multipart/form-data parameters that are applicable for this operation
341
 * @property {Array.<ParameterObject>} pathParams A list of path parameters that are applicable for this operation
342
 * @property {Object.<Swagger20ResponseObject>|Object.<Swagger20ReferenceObject>} responses Required. The list of possible responses as they are returned from executing this operation.
343
 * @property {Array.<string>} schemes The transfer protocol for the operation. Values MUST be from the list: "http", "https", "ws", "wss"
344
 * @property {boolean} isDeprecated  Declares this operation to be deprecated. Usage of the declared operation should be refrained. Default value is false.
345
 * @property {boolean} isSecure Method has security schemes
346
 * @property {boolean} isGET Method is HTTP GET request
347
 * @property {boolean} isPUT Method is HTTP PUT request
348
 * @property {boolean} isDELETE Method is HTTP DELETE request
349
 * @property {boolean} isOPTIONS Method is HTTP OPTIONS request
350
 * @property {boolean} isHEAD Method is HTTP HEAD request
351
 * @property {boolean} isCONNECT Method is HTTP CONNECT request
352
 * @property {boolean} isTRACE Method is HTTP TRACE request
353
 * @property {boolean} isPATCH Method is HTTP PATCH request
354
 * @property {boolean} isPOST Method is HTTP POST request
355
 * @property {Array.<ParameterObject>} enums Enum list
356
 * @property {Array.<Swagger20SecurityObject>} security A declaration of which security schemes are applied for this operation. The list of values describes alternative security schemes that can be used (that is, there is a logical OR between the security requirements)
357
 *
358
 */
359
360
// Generator API
361
362
/**
363
 * @typedef {Object} GeneratorOptions
364
 *
365
 * @property {String} moduleName Module name
366
 * @property {String} className Class name
367
 * @property {String|undefined} outFile Destination swagger api object
368
 * @property {String} moduleName Module name
369
 * @property {String} className Class name
370
 * @property {String} packageVersion Package version
371
 * @property {String} docsPath Method definitions path
372
 * @property {String} modelPath Model path
373
 */
374
375
/**
376
 * @typedef {Object} DocGeneratorOptionsObject
377
 *
378
 * @property {String} type Output documentation type
379
 * @property {String} templatePath Path to template
380
 * @property {Function} generatorCallback Custom generator callback
381
 * @property {String} docsPath Documentation path
382
 * @property {String} modelPath Path for models definitions
383
 * @property {String} destination Docs destination
384
 * @property {Object.<Object>} additionalLayouts Additional layouts for Handlebars in format <code><file-name-or-relative-path>: <template-name></code>
385
 * @property {Object.<Object>} additionalHelpers Additional helpers for Handlebars in format <code><helper-name>: function (templateName, Handlebars) {
386
 *  // Some helper detail
387
 * }</code>
388
 * @property {String} moduleName Module name
389
 * @property {String} className Class name
390
 * @property {String} packageVersion Package version
391
 * @property {String} docsPath Method definitions path
392
 * @property {String} modelPath Model path
393
 */