mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2025-10-16 12:05:41 +00:00
* Revert "Express: improve type of `Request['params']` aka `req.params` (#37502)"
This reverts commit 9aa863ef23.
* Express: use generics for params, default to dictionary
* Lint
* Bump all dependants
* Spacing
* Bump dependants
* Bump dependants
* Bump dependants
* Bump dependants
* Bump dependants
* Bump dependants
* Bump dependants
* Bump dependants
* Bump dependants
* Bump dependants
* Bump dependants (via tests)
* Bump dependants
* Bump dependants (via tests)
* Bump dependants
* Simplify test
* Hoist imports
* Tidy test
* Add tests
* Add reasons
* Remove redundant params
* Add tests
* Format
* Remove redundant params
* Add tests
* Add JSDoc
* Improve comment
* Improve comment
352 lines
8.3 KiB
TypeScript
352 lines
8.3 KiB
TypeScript
// Type definitions for express-openapi 0.11.x
|
|
// Project: https://github.com/kogosoftwarellc/express-openapi
|
|
// Definitions by: TANAKA Koichi <https://github.com/mugeso>
|
|
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
|
// TypeScript Version: 2.3
|
|
|
|
/* =================== USAGE ===================
|
|
import express = require('express');
|
|
import bodyParser = require('body-parser');
|
|
import openapi = require('express-openapi');
|
|
import cors = require('cors');
|
|
|
|
var app = express();
|
|
app.use(cors());
|
|
app.use(bodyParser.json());
|
|
|
|
var api: openapi.InitializedApi;
|
|
api = openapi.initialize({
|
|
apiDoc: require('./api-doc.js'),
|
|
app: app,
|
|
routes: './api-routes'
|
|
});
|
|
|
|
app.use(function(err, req, res, next) {
|
|
res.status(err.status).json(err);
|
|
});
|
|
|
|
app.listen(3000);
|
|
=============================================== */
|
|
|
|
|
|
|
|
|
|
import express = require('express');
|
|
|
|
export declare function initialize(args: Args): InitializedApi;
|
|
|
|
export interface InitializedApi {
|
|
apiDoc: OpenApi.ApiDefinition;
|
|
}
|
|
|
|
export declare module OpenApi {
|
|
export interface ApiDefinition {
|
|
swagger: string
|
|
info: InfoObject
|
|
host?: string
|
|
basePath?: string
|
|
schemes?: string[]
|
|
consumes?: MimeTypes
|
|
produces?: MimeTypes
|
|
paths: PathsObject
|
|
definitions?: DefinitionsObject
|
|
parameters?: ParametersDefinitionsObject
|
|
responses?: ResponsesDefinitionsObject
|
|
securityDefinitions?: SecurityDefinitionsObject
|
|
security?: SecurityRequirementObject[]
|
|
tags?: TagObject[]
|
|
externalDocs?: ExternalDocumentationObject
|
|
}
|
|
|
|
type MimeTypes = string[]
|
|
|
|
export interface InfoObject {
|
|
title: string
|
|
description?: string
|
|
termsOfService?: string
|
|
contact?: ContactObject
|
|
license?: LicenseObject
|
|
version: string
|
|
}
|
|
|
|
export interface ContactObject {
|
|
name?: string
|
|
url?: string
|
|
email?: string
|
|
}
|
|
|
|
export interface LicenseObject {
|
|
name: string
|
|
url?: string
|
|
}
|
|
|
|
export interface PathsObject {
|
|
[index: string]: PathItemObject | any
|
|
}
|
|
|
|
export interface PathItemObject {
|
|
$ref?: string
|
|
get?: OperationObject
|
|
put?: OperationObject
|
|
post?: OperationObject
|
|
'delete'?: OperationObject
|
|
options?: OperationObject
|
|
head?: OperationObject
|
|
patch?: OperationObject
|
|
parameters?: Parameters
|
|
}
|
|
|
|
export interface OperationObject {
|
|
tags?: string[]
|
|
summary?: string
|
|
description?: string
|
|
externalDocs?: ExternalDocumentationObject
|
|
operationId?: string
|
|
consumes?: MimeTypes
|
|
produces?: MimeTypes
|
|
parameters?: Parameters
|
|
responses: ResponsesObject
|
|
schemes?: string[]
|
|
deprecated?: boolean
|
|
security?: SecurityRequirementObject[],
|
|
[index: string]: any
|
|
}
|
|
|
|
export interface DefinitionsObject {
|
|
[index: string]: SchemaObject
|
|
}
|
|
|
|
export interface ResponsesObject {
|
|
[index: string]: Response | any
|
|
'default': Response
|
|
}
|
|
|
|
type Response = ResponseObject | ReferenceObject
|
|
|
|
export interface ResponsesDefinitionsObject {
|
|
[index: string]: ResponseObject
|
|
}
|
|
|
|
export interface ResponseObject {
|
|
description: string
|
|
schema?: Schema
|
|
headers?: HeadersObject
|
|
examples?: ExampleObject
|
|
}
|
|
|
|
export interface HeadersObject {
|
|
[index: string]: HeaderObject
|
|
}
|
|
|
|
export interface HeaderObject extends ItemsObject {
|
|
}
|
|
|
|
export interface ExampleObject {
|
|
[index: string]: any
|
|
}
|
|
|
|
export interface SecurityDefinitionsObject {
|
|
[index: string]: SecuritySchemeObject
|
|
}
|
|
|
|
export interface SecuritySchemeObject {
|
|
type: string
|
|
description?: string
|
|
name: string
|
|
'in': string
|
|
flow: string
|
|
authorizationUrl: string
|
|
tokenUrl: string
|
|
scopes: ScopesObject
|
|
}
|
|
|
|
export interface ScopesObject {
|
|
[index: string]: any
|
|
}
|
|
|
|
export interface SecurityRequirementObject {
|
|
[index: string]: string[]
|
|
}
|
|
|
|
export interface TagObject {
|
|
name: string
|
|
description?: string
|
|
externalDocs?: ExternalDocumentationObject
|
|
}
|
|
|
|
export interface ItemsObject {
|
|
type: string
|
|
format?: string
|
|
items?: ItemsObject
|
|
collectionFormat?: string
|
|
'default'?: any
|
|
maximum?: number
|
|
exclusiveMaximum?: boolean
|
|
minimum?: number
|
|
exclusiveMinimum?: boolean
|
|
maxLength?: number
|
|
minLength?: number
|
|
pattern?: string
|
|
maxItems?: number
|
|
minItems?: number
|
|
uniqueItems?: boolean
|
|
'enum'?: any[]
|
|
multipleOf?: number
|
|
}
|
|
|
|
export interface ParametersDefinitionsObject {
|
|
[index: string]: ParameterObject
|
|
}
|
|
|
|
type Parameters = (ReferenceObject | Parameter)[]
|
|
|
|
type Parameter = (InBodyParameterObject | GeneralParameterObject);
|
|
|
|
interface ParameterObject {
|
|
name: string
|
|
'in': string
|
|
description?: string
|
|
required?: boolean
|
|
}
|
|
|
|
export interface InBodyParameterObject extends ParameterObject {
|
|
schema: Schema
|
|
}
|
|
|
|
export interface GeneralParameterObject extends ParameterObject, ItemsObject {
|
|
allowEmptyValue?: boolean
|
|
}
|
|
|
|
export interface ReferenceObject {
|
|
$ref: string
|
|
}
|
|
|
|
export interface ExternalDocumentationObject {
|
|
[index: string]: any
|
|
description?: string
|
|
url: string
|
|
}
|
|
|
|
type Schema = SchemaObject | ReferenceObject
|
|
|
|
export interface SchemaObject extends IJsonSchema {
|
|
[index: string]: any
|
|
discriminator?: string
|
|
readOnly?: boolean
|
|
xml?: XMLObject
|
|
externalDocs: ExternalDocumentationObject
|
|
example: any
|
|
}
|
|
|
|
export interface XMLObject {
|
|
[index: string]: any
|
|
name?: string
|
|
namespace?: string
|
|
prefix?: string
|
|
attribute?: boolean
|
|
wrapped?: boolean
|
|
}
|
|
}
|
|
|
|
export interface Args {
|
|
apiDoc: OpenApi.ApiDefinition
|
|
app: express.Application
|
|
routes: string
|
|
docPath: string
|
|
errorTransformer(openapiError: OpenapiError, jsonschemaError: JsonschemaError): any
|
|
exposeApiDocs: boolean
|
|
validateApiDoc: boolean
|
|
customFormats: CustomFormats
|
|
}
|
|
|
|
export interface OperationFunction extends express.RequestHandler {
|
|
apiDoc?: OpenApi.OperationObject;
|
|
}
|
|
|
|
export interface OperationHandlerArray {
|
|
apiDoc?: OpenApi.OperationObject;
|
|
[index: number]: express.RequestHandler;
|
|
}
|
|
|
|
export type Operation = OperationFunction | OperationHandlerArray;
|
|
|
|
export interface PathModule {
|
|
parameters?: OpenApi.Parameters;
|
|
get?: Operation;
|
|
put?: Operation;
|
|
post?: Operation;
|
|
delete?: Operation;
|
|
patch?: Operation;
|
|
options?: Operation;
|
|
head?: Operation;
|
|
}
|
|
|
|
export interface OpenapiError {
|
|
errorCode: string
|
|
location: string
|
|
message: string
|
|
path: string
|
|
}
|
|
|
|
export interface CustomFormats {
|
|
[index: string]: CustomFormatValidator
|
|
}
|
|
|
|
// Following 2 interfaces are part of jsonschema package.
|
|
interface JsonschemaError {
|
|
property: string
|
|
message: string
|
|
schema: string | IJsonSchema
|
|
instance: any
|
|
name: string
|
|
argument: any
|
|
stack: string
|
|
toString(): string
|
|
}
|
|
|
|
interface CustomFormatValidator {
|
|
(input: any): boolean
|
|
}
|
|
|
|
interface IJsonSchema {
|
|
id?: string
|
|
$schema?: string
|
|
title?: string
|
|
description?: string
|
|
multipleOf?: number
|
|
maximum?: number
|
|
exclusiveMaximum?: boolean
|
|
minimum?: number
|
|
exclusiveMinimum?: boolean
|
|
maxLength?: number
|
|
minLength?: number
|
|
pattern?: string
|
|
additionalItems?: boolean | IJsonSchema
|
|
items?: IJsonSchema | IJsonSchema[]
|
|
maxItems?: number
|
|
minItems?: number
|
|
uniqueItems?: boolean
|
|
maxProperties?: number
|
|
minProperties?: number
|
|
required?: string[]
|
|
additionalProperties?: boolean | IJsonSchema
|
|
definitions?: {
|
|
[name: string]: IJsonSchema
|
|
}
|
|
properties?: {
|
|
[name: string]: IJsonSchema
|
|
}
|
|
patternProperties?: {
|
|
[name: string]: IJsonSchema
|
|
}
|
|
dependencies?: {
|
|
[name: string]: IJsonSchema | string[]
|
|
}
|
|
'enum'?: any[]
|
|
type?: string | string[]
|
|
allOf?: IJsonSchema[]
|
|
anyOf?: IJsonSchema[]
|
|
oneOf?: IJsonSchema[]
|
|
not?: IJsonSchema
|
|
}
|