@ehuelsmann/openapi-validator 0.15.0 → 0.16.0
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.
- package/README.md +6 -0
- package/dist/index.d.mts +149 -0
- package/dist/index.d.ts +149 -14
- package/dist/index.js +521 -11
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +484 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +22 -9
- package/dist/classes/AbstractOpenApiSpec.d.ts +0 -47
- package/dist/classes/AbstractOpenApiSpec.d.ts.map +0 -1
- package/dist/classes/AbstractOpenApiSpec.js +0 -149
- package/dist/classes/AbstractOpenApiSpec.js.map +0 -1
- package/dist/classes/AbstractResponse.d.ts +0 -23
- package/dist/classes/AbstractResponse.d.ts.map +0 -1
- package/dist/classes/AbstractResponse.js +0 -18
- package/dist/classes/AbstractResponse.js.map +0 -1
- package/dist/classes/AxiosResponse.d.ts +0 -9
- package/dist/classes/AxiosResponse.d.ts.map +0 -1
- package/dist/classes/AxiosResponse.js +0 -24
- package/dist/classes/AxiosResponse.js.map +0 -1
- package/dist/classes/OpenApi2Spec.d.ts +0 -19
- package/dist/classes/OpenApi2Spec.d.ts.map +0 -1
- package/dist/classes/OpenApi2Spec.js +0 -81
- package/dist/classes/OpenApi2Spec.js.map +0 -1
- package/dist/classes/OpenApi3Spec.d.ts +0 -24
- package/dist/classes/OpenApi3Spec.d.ts.map +0 -1
- package/dist/classes/OpenApi3Spec.js +0 -99
- package/dist/classes/OpenApi3Spec.js.map +0 -1
- package/dist/classes/RequestPromiseResponse.d.ts +0 -14
- package/dist/classes/RequestPromiseResponse.d.ts.map +0 -1
- package/dist/classes/RequestPromiseResponse.js +0 -34
- package/dist/classes/RequestPromiseResponse.js.map +0 -1
- package/dist/classes/SuperAgentResponse.d.ts +0 -17
- package/dist/classes/SuperAgentResponse.d.ts.map +0 -1
- package/dist/classes/SuperAgentResponse.js +0 -37
- package/dist/classes/SuperAgentResponse.js.map +0 -1
- package/dist/classes/errors/ValidationError.d.ts +0 -15
- package/dist/classes/errors/ValidationError.d.ts.map +0 -1
- package/dist/classes/errors/ValidationError.js +0 -24
- package/dist/classes/errors/ValidationError.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/openApiSpecFactory.d.ts +0 -5
- package/dist/openApiSpecFactory.d.ts.map +0 -1
- package/dist/openApiSpecFactory.js +0 -67
- package/dist/openApiSpecFactory.js.map +0 -1
- package/dist/responseFactory.d.ts +0 -6
- package/dist/responseFactory.d.ts.map +0 -1
- package/dist/responseFactory.js +0 -19
- package/dist/responseFactory.js.map +0 -1
- package/dist/utils/OpenApi3Spec.utils.d.ts +0 -7
- package/dist/utils/OpenApi3Spec.utils.d.ts.map +0 -1
- package/dist/utils/OpenApi3Spec.utils.js +0 -54
- package/dist/utils/OpenApi3Spec.utils.js.map +0 -1
- package/dist/utils/common.utils.d.ts +0 -10
- package/dist/utils/common.utils.d.ts.map +0 -1
- package/dist/utils/common.utils.js +0 -58
- package/dist/utils/common.utils.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractOpenApiSpec.d.ts","sourceRoot":"","sources":["../../lib/classes/AbstractOpenApiSpec.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEvE,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,eAA8B,MAAM,0BAA0B,CAAC;AAEtE,KAAK,QAAQ,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;AAExD,KAAK,SAAS,GAAG,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC;AAIvE,KAAK,cAAc,GAAG,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;AAE1E,MAAM,MAAM,wBAAwB,GAChC,CAAC,SAAS,CAAC,cAAc,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAA;CAAE,CAAC,GACzD,CAAC,SAAS,CAAC,cAAc,GAAG;IAC1B,OAAO,EAAE;QACP,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,eAAe,GAAG;YAC3C,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC;SAChC,CAAC;KACH,CAAC;CACH,CAAC,GACF,CAAC,WAAW,CAAC,cAAc,GAAG;IAC5B,OAAO,EAAE;QACP,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,eAAe,GAAG;YAC7C,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC;SAClC,CAAC;KACH,CAAC;CACH,CAAC,CAAC;AAEP,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC;AAE/D,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,WAAW;IAiB3B,SAAS,CAAC,IAAI,EAAE,QAAQ;IAhBpC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;IAEzE,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CACvC,eAAe,EAAE,MAAM,GACtB,wBAAwB,GAAG,SAAS;IAEvC,SAAS,CAAC,QAAQ,CAAC,+BAA+B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAE5E,SAAS,CAAC,QAAQ,CAAC,+BAA+B,IAC9C;QACE,WAAW,EAAE,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;KAChD,GACD;QACE,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;KAC9C;gBAEiB,IAAI,EAAE,QAAQ;IAEpC,WAAW,IAAI,QAAQ,CAAC,OAAO,CAAC;IAIhC,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc;IAKhD,KAAK,IAAI,MAAM,EAAE;IAIjB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIvD,mBAAmB,CACjB,iBAAiB,EAAE,SAAS,EAC5B,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAC/B,wBAAwB,GAAG,SAAS;IAWvC,oBAAoB,CAClB,cAAc,EAAE,cAAc,GAC7B,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAoB3C,8BAA8B,CAAC,aAAa,EAAE,aAAa,GAAG,MAAM;IAMpE,oBAAoB,CAAC,aAAa,EAAE,aAAa,GAAG,cAAc;IAOlE,6BAA6B,CAC3B,aAAa,EAAE,aAAa,GAC3B,SAAS,GAAG,SAAS;IAOxB,gBAAgB,CAAC,cAAc,EAAE,cAAc,GAAG,eAAe,GAAG,IAAI;IAuCxE,cAAc,CACZ,YAAY,EAAE,OAAO,EACrB,MAAM,EAAE,MAAM,GACb,eAAe,GAAG,IAAI;CAsB1B"}
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
const openapi_response_validator_1 = __importDefault(require("openapi-response-validator"));
|
|
40
|
-
const common_utils_1 = require("../utils/common.utils");
|
|
41
|
-
const ValidationError_1 = __importStar(require("./errors/ValidationError"));
|
|
42
|
-
class OpenApiSpec {
|
|
43
|
-
constructor(spec) {
|
|
44
|
-
this.spec = spec;
|
|
45
|
-
}
|
|
46
|
-
pathsObject() {
|
|
47
|
-
return this.spec.paths;
|
|
48
|
-
}
|
|
49
|
-
getPathItem(openApiPath) {
|
|
50
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
51
|
-
return this.pathsObject()[openApiPath];
|
|
52
|
-
}
|
|
53
|
-
paths() {
|
|
54
|
-
return Object.keys(this.pathsObject());
|
|
55
|
-
}
|
|
56
|
-
getSchemaObject(schemaName) {
|
|
57
|
-
var _a;
|
|
58
|
-
return (_a = this.getSchemaObjects()) === null || _a === void 0 ? void 0 : _a[schemaName];
|
|
59
|
-
}
|
|
60
|
-
getExpectedResponse(responseOperation, status) {
|
|
61
|
-
const response = responseOperation.responses[status];
|
|
62
|
-
if (!response) {
|
|
63
|
-
return undefined;
|
|
64
|
-
}
|
|
65
|
-
if ('$ref' in response) {
|
|
66
|
-
return this.findResponseDefinition(response.$ref);
|
|
67
|
-
}
|
|
68
|
-
return response;
|
|
69
|
-
}
|
|
70
|
-
findExpectedResponse(actualResponse) {
|
|
71
|
-
const actualRequest = actualResponse.req;
|
|
72
|
-
const expectedResponseOperation = this.findExpectedResponseOperation(actualRequest);
|
|
73
|
-
if (!expectedResponseOperation) {
|
|
74
|
-
throw new ValidationError_1.default(ValidationError_1.ErrorCode.MethodNotFound);
|
|
75
|
-
}
|
|
76
|
-
const { status } = actualResponse;
|
|
77
|
-
const expectedResponse = this.getExpectedResponse(expectedResponseOperation, status);
|
|
78
|
-
if (!expectedResponse) {
|
|
79
|
-
throw new ValidationError_1.default(ValidationError_1.ErrorCode.StatusNotFound);
|
|
80
|
-
}
|
|
81
|
-
return { [status]: expectedResponse };
|
|
82
|
-
}
|
|
83
|
-
findOpenApiPathMatchingRequest(actualRequest) {
|
|
84
|
-
const actualPathname = (0, common_utils_1.getPathname)(actualRequest);
|
|
85
|
-
const openApiPath = this.findOpenApiPathMatchingPathname(actualPathname);
|
|
86
|
-
return openApiPath;
|
|
87
|
-
}
|
|
88
|
-
findExpectedPathItem(actualRequest) {
|
|
89
|
-
const actualPathname = (0, common_utils_1.getPathname)(actualRequest);
|
|
90
|
-
const openApiPath = this.findOpenApiPathMatchingPathname(actualPathname);
|
|
91
|
-
const pathItemObject = this.getPathItem(openApiPath);
|
|
92
|
-
return pathItemObject;
|
|
93
|
-
}
|
|
94
|
-
findExpectedResponseOperation(actualRequest) {
|
|
95
|
-
const pathItemObject = this.findExpectedPathItem(actualRequest);
|
|
96
|
-
const operationObject = pathItemObject[actualRequest.method.toLowerCase()];
|
|
97
|
-
return operationObject;
|
|
98
|
-
}
|
|
99
|
-
validateResponse(actualResponse) {
|
|
100
|
-
let expectedResponse;
|
|
101
|
-
try {
|
|
102
|
-
expectedResponse = this.findExpectedResponse(actualResponse);
|
|
103
|
-
}
|
|
104
|
-
catch (error) {
|
|
105
|
-
if (error instanceof ValidationError_1.default) {
|
|
106
|
-
return error;
|
|
107
|
-
}
|
|
108
|
-
throw error;
|
|
109
|
-
}
|
|
110
|
-
const validator = new openapi_response_validator_1.default({
|
|
111
|
-
responses: expectedResponse,
|
|
112
|
-
...this.getComponentDefinitionsProperty(),
|
|
113
|
-
});
|
|
114
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
115
|
-
const expectedResStatus = Object.keys(expectedResponse)[0];
|
|
116
|
-
const validationError = validator.validateResponse(expectedResStatus, actualResponse.getBodyForValidation());
|
|
117
|
-
return validationError
|
|
118
|
-
? new ValidationError_1.default(ValidationError_1.ErrorCode.InvalidBody, validationError.errors
|
|
119
|
-
.map(({ path, message }) => `${path} ${message}`)
|
|
120
|
-
.join(', '))
|
|
121
|
-
: null;
|
|
122
|
-
}
|
|
123
|
-
/*
|
|
124
|
-
* For consistency and to save maintaining another dependency,
|
|
125
|
-
* we validate objects using our response validator:
|
|
126
|
-
* We put the object inside a mock response, then validate
|
|
127
|
-
* the whole response against a mock expected response.
|
|
128
|
-
* The 2 mock responses are identical except for the body,
|
|
129
|
-
* thus validating the object against its schema.
|
|
130
|
-
*/
|
|
131
|
-
validateObject(actualObject, schema) {
|
|
132
|
-
const mockResStatus = '200';
|
|
133
|
-
const mockExpectedResponse = { [mockResStatus]: { schema } };
|
|
134
|
-
const validator = new openapi_response_validator_1.default({
|
|
135
|
-
responses: mockExpectedResponse,
|
|
136
|
-
...this.getComponentDefinitionsProperty(),
|
|
137
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
138
|
-
errorTransformer: ({ path, message }) => ({
|
|
139
|
-
message: `${path.replace('response', 'object')} ${message}`,
|
|
140
|
-
}),
|
|
141
|
-
});
|
|
142
|
-
const validationError = validator.validateResponse(mockResStatus, actualObject);
|
|
143
|
-
return validationError
|
|
144
|
-
? new ValidationError_1.default(ValidationError_1.ErrorCode.InvalidObject, validationError.errors.map((error) => error.message).join(', '))
|
|
145
|
-
: null;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
exports.default = OpenApiSpec;
|
|
149
|
-
//# sourceMappingURL=AbstractOpenApiSpec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractOpenApiSpec.js","sourceRoot":"","sources":["../../lib/classes/AbstractOpenApiSpec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { RawAxiosResponse } from './AxiosResponse';
|
|
2
|
-
import type { RawRequestPromiseResponse } from './RequestPromiseResponse';
|
|
3
|
-
import type { RawSuperAgentResponse } from './SuperAgentResponse';
|
|
4
|
-
export type RawResponse = RawAxiosResponse | RawSuperAgentResponse | RawRequestPromiseResponse;
|
|
5
|
-
export default abstract class AbstractResponse {
|
|
6
|
-
protected res: RawResponse;
|
|
7
|
-
status: number;
|
|
8
|
-
req: {
|
|
9
|
-
method: string;
|
|
10
|
-
path: string;
|
|
11
|
-
};
|
|
12
|
-
abstract getBodyForValidation(): unknown;
|
|
13
|
-
protected body: unknown;
|
|
14
|
-
protected bodyHasNoContent: boolean;
|
|
15
|
-
constructor(res: RawResponse);
|
|
16
|
-
summary(): {
|
|
17
|
-
body: unknown;
|
|
18
|
-
};
|
|
19
|
-
toString(): string;
|
|
20
|
-
}
|
|
21
|
-
export type ActualResponse = AbstractResponse;
|
|
22
|
-
export type ActualRequest = AbstractResponse['req'];
|
|
23
|
-
//# sourceMappingURL=AbstractResponse.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractResponse.d.ts","sourceRoot":"","sources":["../../lib/classes/AbstractResponse.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,MAAM,MAAM,WAAW,GACnB,gBAAgB,GAChB,qBAAqB,GACrB,yBAAyB,CAAC;AAE9B,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,gBAAgB;IAWhC,SAAS,CAAC,GAAG,EAAE,WAAW;IAVvB,MAAM,EAAE,MAAM,CAAC;IAEf,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;aAErC,oBAAoB,IAAI,OAAO;IAE/C,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC;IAExB,UAAkB,gBAAgB,EAAE,OAAO,CAAC;gBAEtB,GAAG,EAAE,WAAW;IAEtC,OAAO,IAAI;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE;IAM5B,QAAQ,IAAI,MAAM;CAGnB;AAED,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAE9C,MAAM,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const common_utils_1 = require("../utils/common.utils");
|
|
4
|
-
class AbstractResponse {
|
|
5
|
-
constructor(res) {
|
|
6
|
-
this.res = res;
|
|
7
|
-
}
|
|
8
|
-
summary() {
|
|
9
|
-
return {
|
|
10
|
-
body: this.body,
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
toString() {
|
|
14
|
-
return (0, common_utils_1.stringify)(this.summary());
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
exports.default = AbstractResponse;
|
|
18
|
-
//# sourceMappingURL=AbstractResponse.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractResponse.js","sourceRoot":"","sources":["../../lib/classes/AbstractResponse.ts"],"names":[],"mappings":";;AAAA,wDAAkD;AAUlD,MAA8B,gBAAgB;IAW5C,YAAsB,GAAgB;QAAhB,QAAG,GAAH,GAAG,CAAa;IAAG,CAAC;IAE1C,OAAO;QACL,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,IAAA,wBAAS,EAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACnC,CAAC;CACF;AAtBD,mCAsBC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { AxiosResponse as AxiosResponseType } from 'axios';
|
|
2
|
-
import AbstractResponse from './AbstractResponse';
|
|
3
|
-
export type RawAxiosResponse = AxiosResponseType;
|
|
4
|
-
export default class AxiosResponse extends AbstractResponse {
|
|
5
|
-
protected res: RawAxiosResponse;
|
|
6
|
-
constructor(res: RawAxiosResponse);
|
|
7
|
-
getBodyForValidation(): AxiosResponse['body'];
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=AxiosResponse.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AxiosResponse.d.ts","sourceRoot":"","sources":["../../lib/classes/AxiosResponse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,gBAAgB;cAC1B,GAAG,EAAE,gBAAgB;gBAArB,GAAG,EAAE,gBAAgB;IAQpD,oBAAoB,IAAI,aAAa,CAAC,MAAM,CAAC;CAM9C"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const AbstractResponse_1 = __importDefault(require("./AbstractResponse"));
|
|
7
|
-
class AxiosResponse extends AbstractResponse_1.default {
|
|
8
|
-
constructor(res) {
|
|
9
|
-
super(res);
|
|
10
|
-
this.res = res;
|
|
11
|
-
this.status = res.status;
|
|
12
|
-
this.body = res.data;
|
|
13
|
-
this.req = res.request;
|
|
14
|
-
this.bodyHasNoContent = this.body === '';
|
|
15
|
-
}
|
|
16
|
-
getBodyForValidation() {
|
|
17
|
-
if (this.bodyHasNoContent) {
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
return this.body;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
exports.default = AxiosResponse;
|
|
24
|
-
//# sourceMappingURL=AxiosResponse.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AxiosResponse.js","sourceRoot":"","sources":["../../lib/classes/AxiosResponse.ts"],"names":[],"mappings":";;;;;AACA,0EAAkD;AAIlD,MAAqB,aAAc,SAAQ,0BAAgB;IACzD,YAA+B,GAAqB;QAClD,KAAK,CAAC,GAAG,CAAC,CAAC;QADkB,QAAG,GAAH,GAAG,CAAkB;QAElD,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;IAC3C,CAAC;IAED,oBAAoB;QAClB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF;AAfD,gCAeC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { OpenAPIV2 } from 'openapi-types';
|
|
2
|
-
import type { ResponseObjectWithSchema } from './AbstractOpenApiSpec';
|
|
3
|
-
import AbstractOpenApiSpec from './AbstractOpenApiSpec';
|
|
4
|
-
export default class OpenApi2Spec extends AbstractOpenApiSpec {
|
|
5
|
-
spec: OpenAPIV2.Document;
|
|
6
|
-
didUserDefineBasePath: boolean;
|
|
7
|
-
constructor(spec: OpenAPIV2.Document);
|
|
8
|
-
/**
|
|
9
|
-
* "If the basePath property is not provided, the API is served directly under the host
|
|
10
|
-
* @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#fixed-fields
|
|
11
|
-
*/
|
|
12
|
-
findOpenApiPathMatchingPathname(pathname: string): string;
|
|
13
|
-
findResponseDefinition(referenceString: string): ResponseObjectWithSchema | undefined;
|
|
14
|
-
getComponentDefinitionsProperty(): {
|
|
15
|
-
definitions: OpenAPIV2.Document['definitions'];
|
|
16
|
-
};
|
|
17
|
-
getSchemaObjects(): OpenAPIV2.Document['definitions'];
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=OpenApi2Spec.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OpenApi2Spec.d.ts","sourceRoot":"","sources":["../../lib/classes/OpenApi2Spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAKtE,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AAMxD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,mBAAmB;IAG/B,IAAI,EAAE,SAAS,CAAC,QAAQ;IAF7C,qBAAqB,EAAE,OAAO,CAAC;gBAEV,IAAI,EAAE,SAAS,CAAC,QAAQ;IAKpD;;;OAGG;IACH,+BAA+B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAkBzD,sBAAsB,CACpB,eAAe,EAAE,MAAM,GACtB,wBAAwB,GAAG,SAAS;IAQvC,+BAA+B,IAAI;QACjC,WAAW,EAAE,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;KAChD;IAID,gBAAgB,IAAI,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC;CAGtD"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
const common_utils_1 = require("../utils/common.utils");
|
|
40
|
-
const AbstractOpenApiSpec_1 = __importDefault(require("./AbstractOpenApiSpec"));
|
|
41
|
-
const ValidationError_1 = __importStar(require("./errors/ValidationError"));
|
|
42
|
-
const basePathPropertyNotProvided = (spec) => !spec.basePath;
|
|
43
|
-
class OpenApi2Spec extends AbstractOpenApiSpec_1.default {
|
|
44
|
-
constructor(spec) {
|
|
45
|
-
super(spec);
|
|
46
|
-
this.spec = spec;
|
|
47
|
-
this.didUserDefineBasePath = !basePathPropertyNotProvided(spec);
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* "If the basePath property is not provided, the API is served directly under the host
|
|
51
|
-
* @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#fixed-fields
|
|
52
|
-
*/
|
|
53
|
-
findOpenApiPathMatchingPathname(pathname) {
|
|
54
|
-
const { basePath } = this.spec;
|
|
55
|
-
if (basePath && !pathname.startsWith(basePath)) {
|
|
56
|
-
throw new ValidationError_1.default(ValidationError_1.ErrorCode.BasePathNotFound);
|
|
57
|
-
}
|
|
58
|
-
const pathnameWithoutBasePath = basePath
|
|
59
|
-
? (0, common_utils_1.getPathnameWithoutBasePath)(basePath, pathname)
|
|
60
|
-
: pathname;
|
|
61
|
-
const openApiPath = (0, common_utils_1.findOpenApiPathMatchingPossiblePathnames)([pathnameWithoutBasePath], this.paths());
|
|
62
|
-
if (!openApiPath) {
|
|
63
|
-
throw new ValidationError_1.default(ValidationError_1.ErrorCode.PathNotFound);
|
|
64
|
-
}
|
|
65
|
-
return openApiPath;
|
|
66
|
-
}
|
|
67
|
-
findResponseDefinition(referenceString) {
|
|
68
|
-
var _a;
|
|
69
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
70
|
-
const nameOfResponseDefinition = referenceString.split('#/responses/')[1];
|
|
71
|
-
return (_a = this.spec.responses) === null || _a === void 0 ? void 0 : _a[nameOfResponseDefinition];
|
|
72
|
-
}
|
|
73
|
-
getComponentDefinitionsProperty() {
|
|
74
|
-
return { definitions: this.spec.definitions };
|
|
75
|
-
}
|
|
76
|
-
getSchemaObjects() {
|
|
77
|
-
return this.spec.definitions;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
exports.default = OpenApi2Spec;
|
|
81
|
-
//# sourceMappingURL=OpenApi2Spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OpenApi2Spec.js","sourceRoot":"","sources":["../../lib/classes/OpenApi2Spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,wDAG+B;AAC/B,gFAAwD;AACxD,4EAAsE;AAEtE,MAAM,2BAA2B,GAAG,CAAC,IAAwB,EAAW,EAAE,CACxE,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEjB,MAAqB,YAAa,SAAQ,6BAAmB;IAG3D,YAA4B,IAAwB;QAClD,KAAK,CAAC,IAAI,CAAC,CAAC;QADc,SAAI,GAAJ,IAAI,CAAoB;QAElD,IAAI,CAAC,qBAAqB,GAAG,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACH,+BAA+B,CAAC,QAAgB;QAC9C,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAC/B,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,yBAAe,CAAC,2BAAS,CAAC,gBAAgB,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,uBAAuB,GAAG,QAAQ;YACtC,CAAC,CAAC,IAAA,yCAA0B,EAAC,QAAQ,EAAE,QAAQ,CAAC;YAChD,CAAC,CAAC,QAAQ,CAAC;QACb,MAAM,WAAW,GAAG,IAAA,uDAAwC,EAC1D,CAAC,uBAAuB,CAAC,EACzB,IAAI,CAAC,KAAK,EAAE,CACb,CAAC;QACF,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,yBAAe,CAAC,2BAAS,CAAC,YAAY,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,sBAAsB,CACpB,eAAuB;;QAEvB,oEAAoE;QACpE,MAAM,wBAAwB,GAAG,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAE,CAAC;QAC3E,OAAO,MAAA,IAAI,CAAC,IAAI,CAAC,SAAS,0CAAG,wBAAwB,CAExC,CAAC;IAChB,CAAC;IAED,+BAA+B;QAG7B,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAChD,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAC/B,CAAC;CACF;AAjDD,+BAiDC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { OpenAPIV3 } from 'openapi-types';
|
|
2
|
-
import type { ResponseObjectWithSchema } from './AbstractOpenApiSpec';
|
|
3
|
-
import AbstractOpenApiSpec from './AbstractOpenApiSpec';
|
|
4
|
-
export default class OpenApi3Spec extends AbstractOpenApiSpec {
|
|
5
|
-
protected spec: OpenAPIV3.Document;
|
|
6
|
-
didUserDefineServers: boolean;
|
|
7
|
-
constructor(spec: OpenAPIV3.Document);
|
|
8
|
-
/**
|
|
9
|
-
* "If the servers property is not provided, or is an empty array, the default value would be a Server Object with a url value of '/'"
|
|
10
|
-
* @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#fixed-fields
|
|
11
|
-
*/
|
|
12
|
-
ensureDefaultServer(): void;
|
|
13
|
-
servers(): OpenAPIV3.ServerObject[];
|
|
14
|
-
getServerUrls(): string[];
|
|
15
|
-
getMatchingServerUrls(pathname: string): string[];
|
|
16
|
-
getMatchingServerBasePaths(pathname: string): string[];
|
|
17
|
-
findOpenApiPathMatchingPathname(pathname: string): string;
|
|
18
|
-
findResponseDefinition(referenceString: string): ResponseObjectWithSchema | undefined;
|
|
19
|
-
getComponentDefinitionsProperty(): {
|
|
20
|
-
components: OpenAPIV3.Document['components'];
|
|
21
|
-
};
|
|
22
|
-
getSchemaObjects(): OpenAPIV3.ComponentsObject['schemas'];
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=OpenApi3Spec.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OpenApi3Spec.d.ts","sourceRoot":"","sources":["../../lib/classes/OpenApi3Spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAUtE,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AAGxD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,mBAAmB;cAG5B,IAAI,EAAE,SAAS,CAAC,QAAQ;IAFhD,oBAAoB,EAAE,OAAO,CAAC;gBAEN,IAAI,EAAE,SAAS,CAAC,QAAQ;IAMvD;;;OAGG;IACH,mBAAmB,IAAI,IAAI;IAM3B,OAAO,IAAI,SAAS,CAAC,YAAY,EAAE;IAKnC,aAAa,IAAI,MAAM,EAAE;IAIzB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAOjD,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAOtD,+BAA+B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAkBzD,sBAAsB,CACpB,eAAe,EAAE,MAAM,GACtB,wBAAwB,GAAG,SAAS;IAUvC,+BAA+B,IAAI;QACjC,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;KAC9C;IAID,gBAAgB,IAAI,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC;CAG1D"}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
const common_utils_1 = require("../utils/common.utils");
|
|
40
|
-
const OpenApi3Spec_utils_1 = require("../utils/OpenApi3Spec.utils");
|
|
41
|
-
const AbstractOpenApiSpec_1 = __importDefault(require("./AbstractOpenApiSpec"));
|
|
42
|
-
const ValidationError_1 = __importStar(require("./errors/ValidationError"));
|
|
43
|
-
class OpenApi3Spec extends AbstractOpenApiSpec_1.default {
|
|
44
|
-
constructor(spec) {
|
|
45
|
-
super(spec);
|
|
46
|
-
this.spec = spec;
|
|
47
|
-
this.didUserDefineServers = !(0, OpenApi3Spec_utils_1.serversPropertyNotProvidedOrIsEmptyArray)(spec);
|
|
48
|
-
this.ensureDefaultServer();
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* "If the servers property is not provided, or is an empty array, the default value would be a Server Object with a url value of '/'"
|
|
52
|
-
* @see https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#fixed-fields
|
|
53
|
-
*/
|
|
54
|
-
ensureDefaultServer() {
|
|
55
|
-
if ((0, OpenApi3Spec_utils_1.serversPropertyNotProvidedOrIsEmptyArray)(this.spec)) {
|
|
56
|
-
this.spec.servers = [{ url: common_utils_1.defaultBasePath }];
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
servers() {
|
|
60
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
61
|
-
return this.spec.servers;
|
|
62
|
-
}
|
|
63
|
-
getServerUrls() {
|
|
64
|
-
return this.servers().map((server) => server.url);
|
|
65
|
-
}
|
|
66
|
-
getMatchingServerUrls(pathname) {
|
|
67
|
-
return (0, OpenApi3Spec_utils_1.getMatchingServerUrlsAndServerBasePaths)(this.servers(), pathname).map(({ concreteUrl }) => concreteUrl);
|
|
68
|
-
}
|
|
69
|
-
getMatchingServerBasePaths(pathname) {
|
|
70
|
-
return (0, OpenApi3Spec_utils_1.getMatchingServerUrlsAndServerBasePaths)(this.servers(), pathname).map(({ matchingBasePath }) => matchingBasePath);
|
|
71
|
-
}
|
|
72
|
-
findOpenApiPathMatchingPathname(pathname) {
|
|
73
|
-
const matchingServerBasePaths = this.getMatchingServerBasePaths(pathname);
|
|
74
|
-
if (!matchingServerBasePaths.length) {
|
|
75
|
-
throw new ValidationError_1.default(ValidationError_1.ErrorCode.ServerNotFound);
|
|
76
|
-
}
|
|
77
|
-
const possiblePathnames = matchingServerBasePaths.map((basePath) => (0, common_utils_1.getPathnameWithoutBasePath)(basePath, pathname));
|
|
78
|
-
const openApiPath = (0, common_utils_1.findOpenApiPathMatchingPossiblePathnames)(possiblePathnames, this.paths());
|
|
79
|
-
if (!openApiPath) {
|
|
80
|
-
throw new ValidationError_1.default(ValidationError_1.ErrorCode.PathNotFound);
|
|
81
|
-
}
|
|
82
|
-
return openApiPath;
|
|
83
|
-
}
|
|
84
|
-
findResponseDefinition(referenceString) {
|
|
85
|
-
var _a, _b;
|
|
86
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
87
|
-
const nameOfResponseDefinition = referenceString.split('#/components/responses/')[1];
|
|
88
|
-
return (_b = (_a = this.spec.components) === null || _a === void 0 ? void 0 : _a.responses) === null || _b === void 0 ? void 0 : _b[nameOfResponseDefinition];
|
|
89
|
-
}
|
|
90
|
-
getComponentDefinitionsProperty() {
|
|
91
|
-
return { components: this.spec.components };
|
|
92
|
-
}
|
|
93
|
-
getSchemaObjects() {
|
|
94
|
-
var _a;
|
|
95
|
-
return (_a = this.spec.components) === null || _a === void 0 ? void 0 : _a.schemas;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
exports.default = OpenApi3Spec;
|
|
99
|
-
//# sourceMappingURL=OpenApi3Spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OpenApi3Spec.js","sourceRoot":"","sources":["../../lib/classes/OpenApi3Spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,wDAI+B;AAC/B,oEAGqC;AACrC,gFAAwD;AACxD,4EAAsE;AAEtE,MAAqB,YAAa,SAAQ,6BAAmB;IAG3D,YAA+B,IAAwB;QACrD,KAAK,CAAC,IAAI,CAAC,CAAC;QADiB,SAAI,GAAJ,IAAI,CAAoB;QAErD,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAA,6DAAwC,EAAC,IAAI,CAAC,CAAC;QAC5E,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,mBAAmB;QACjB,IAAI,IAAA,6DAAwC,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,8BAAe,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,OAAO;QACL,oEAAoE;QACpE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAQ,CAAC;IAC5B,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;IAED,qBAAqB,CAAC,QAAgB;QACpC,OAAO,IAAA,4DAAuC,EAC5C,IAAI,CAAC,OAAO,EAAE,EACd,QAAQ,CACT,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IAED,0BAA0B,CAAC,QAAgB;QACzC,OAAO,IAAA,4DAAuC,EAC5C,IAAI,CAAC,OAAO,EAAE,EACd,QAAQ,CACT,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC;IACpD,CAAC;IAED,+BAA+B,CAAC,QAAgB;QAC9C,MAAM,uBAAuB,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QAC1E,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,IAAI,yBAAe,CAAC,2BAAS,CAAC,cAAc,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACjE,IAAA,yCAA0B,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAC/C,CAAC;QACF,MAAM,WAAW,GAAG,IAAA,uDAAwC,EAC1D,iBAAiB,EACjB,IAAI,CAAC,KAAK,EAAE,CACb,CAAC;QACF,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,yBAAe,CAAC,2BAAS,CAAC,YAAY,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,sBAAsB,CACpB,eAAuB;;QAEvB,oEAAoE;QACpE,MAAM,wBAAwB,GAAG,eAAe,CAAC,KAAK,CACpD,yBAAyB,CAC1B,CAAC,CAAC,CAAE,CAAC;QACN,OAAO,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,0CAAE,SAAS,0CAAG,wBAAwB,CAEpD,CAAC;IAChB,CAAC;IAED,+BAA+B;QAG7B,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IAC9C,CAAC;IAED,gBAAgB;;QACd,OAAO,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,0CAAE,OAAO,CAAC;IACvC,CAAC;CACF;AAjFD,+BAiFC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { Request, Response } from 'request';
|
|
2
|
-
import AbstractResponse from './AbstractResponse';
|
|
3
|
-
export type RawRequestPromiseResponse = Response & {
|
|
4
|
-
req: Request;
|
|
5
|
-
request: Response['request'] & {
|
|
6
|
-
_json?: unknown;
|
|
7
|
-
};
|
|
8
|
-
};
|
|
9
|
-
export default class RequestPromiseResponse extends AbstractResponse {
|
|
10
|
-
protected res: RawRequestPromiseResponse;
|
|
11
|
-
constructor(res: RawRequestPromiseResponse);
|
|
12
|
-
getBodyForValidation(): RequestPromiseResponse['body'];
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=RequestPromiseResponse.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RequestPromiseResponse.d.ts","sourceRoot":"","sources":["../../lib/classes/RequestPromiseResponse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG;IACjD,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG;QAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,gBAAgB;cACnC,GAAG,EAAE,yBAAyB;gBAA9B,GAAG,EAAE,yBAAyB;IAU7D,oBAAoB,IAAI,sBAAsB,CAAC,MAAM,CAAC;CAavD"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const AbstractResponse_1 = __importDefault(require("./AbstractResponse"));
|
|
7
|
-
class RequestPromiseResponse extends AbstractResponse_1.default {
|
|
8
|
-
constructor(res) {
|
|
9
|
-
super(res);
|
|
10
|
-
this.res = res;
|
|
11
|
-
this.status = res.statusCode;
|
|
12
|
-
this.body = res.request._json // eslint-disable-line no-underscore-dangle
|
|
13
|
-
? res.body
|
|
14
|
-
: res.body.replace(/"/g, '');
|
|
15
|
-
this.req = res.req;
|
|
16
|
-
this.bodyHasNoContent = this.body === '';
|
|
17
|
-
}
|
|
18
|
-
getBodyForValidation() {
|
|
19
|
-
if (this.bodyHasNoContent) {
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
try {
|
|
23
|
-
return JSON.parse(this.body);
|
|
24
|
-
}
|
|
25
|
-
catch (error) {
|
|
26
|
-
// if JSON.parse errors, then body is not stringfied JSON that
|
|
27
|
-
// needs parsing into a JSON object, so just move to the next
|
|
28
|
-
// block and return the body
|
|
29
|
-
}
|
|
30
|
-
return this.body;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
exports.default = RequestPromiseResponse;
|
|
34
|
-
//# sourceMappingURL=RequestPromiseResponse.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RequestPromiseResponse.js","sourceRoot":"","sources":["../../lib/classes/RequestPromiseResponse.ts"],"names":[],"mappings":";;;;;AACA,0EAAkD;AASlD,MAAqB,sBAAuB,SAAQ,0BAAgB;IAClE,YAA+B,GAA8B;QAC3D,KAAK,CAAC,GAAG,CAAC,CAAC;QADkB,QAAG,GAAH,GAAG,CAA2B;QAE3D,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,2CAA2C;YACvE,CAAC,CAAC,GAAG,CAAC,IAAI;YACV,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;QACnB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;IAC3C,CAAC;IAED,oBAAoB;QAClB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,8DAA8D;YAC9D,6DAA6D;YAC7D,4BAA4B;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF;AAxBD,yCAwBC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { Response, SuperAgentRequest } from 'superagent';
|
|
2
|
-
import AbstractResponse from './AbstractResponse';
|
|
3
|
-
export type RawSuperAgentResponse = Response & {
|
|
4
|
-
req: SuperAgentRequest & {
|
|
5
|
-
path: string;
|
|
6
|
-
};
|
|
7
|
-
};
|
|
8
|
-
export default class SuperAgentResponse extends AbstractResponse {
|
|
9
|
-
protected res: RawSuperAgentResponse;
|
|
10
|
-
private isResTextPopulatedInsteadOfResBody;
|
|
11
|
-
constructor(res: RawSuperAgentResponse);
|
|
12
|
-
getBodyForValidation(): SuperAgentResponse['body'];
|
|
13
|
-
summary(): ReturnType<AbstractResponse['summary']> & {
|
|
14
|
-
text?: string;
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=SuperAgentResponse.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SuperAgentResponse.d.ts","sourceRoot":"","sources":["../../lib/classes/SuperAgentResponse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAMlD,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG;IAC7C,GAAG,EAAE,iBAAiB,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,gBAAgB;cAG/B,GAAG,EAAE,qBAAqB;IAFzD,OAAO,CAAC,kCAAkC,CAAU;gBAErB,GAAG,EAAE,qBAAqB;IAUzD,oBAAoB,IAAI,kBAAkB,CAAC,MAAM,CAAC;IAUzC,OAAO,IAAI,UAAU,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,GAAG;QAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;KACf;CAMF"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const AbstractResponse_1 = __importDefault(require("./AbstractResponse"));
|
|
7
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
8
|
-
const isEmptyObj = (obj) => !!obj && Object.entries(obj).length === 0 && obj.constructor === Object;
|
|
9
|
-
class SuperAgentResponse extends AbstractResponse_1.default {
|
|
10
|
-
constructor(res) {
|
|
11
|
-
super(res);
|
|
12
|
-
this.res = res;
|
|
13
|
-
this.status = res.status;
|
|
14
|
-
this.body = res.body;
|
|
15
|
-
this.req = res.req;
|
|
16
|
-
this.isResTextPopulatedInsteadOfResBody =
|
|
17
|
-
res.text !== '{}' && isEmptyObj(this.body);
|
|
18
|
-
this.bodyHasNoContent = res.text === '';
|
|
19
|
-
}
|
|
20
|
-
getBodyForValidation() {
|
|
21
|
-
if (this.bodyHasNoContent) {
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
if (this.isResTextPopulatedInsteadOfResBody) {
|
|
25
|
-
return this.res.text;
|
|
26
|
-
}
|
|
27
|
-
return this.body;
|
|
28
|
-
}
|
|
29
|
-
summary() {
|
|
30
|
-
return {
|
|
31
|
-
...super.summary(),
|
|
32
|
-
...(this.isResTextPopulatedInsteadOfResBody && { text: this.res.text }),
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
exports.default = SuperAgentResponse;
|
|
37
|
-
//# sourceMappingURL=SuperAgentResponse.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SuperAgentResponse.js","sourceRoot":"","sources":["../../lib/classes/SuperAgentResponse.ts"],"names":[],"mappings":";;;;;AACA,0EAAkD;AAElD,8DAA8D;AAC9D,MAAM,UAAU,GAAG,CAAC,GAAQ,EAAgC,EAAE,CAC5D,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;AAM1E,MAAqB,kBAAmB,SAAQ,0BAAgB;IAG9D,YAA+B,GAA0B;QACvD,KAAK,CAAC,GAAG,CAAC,CAAC;QADkB,QAAG,GAAH,GAAG,CAAuB;QAEvD,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;QACnB,IAAI,CAAC,kCAAkC;YACrC,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;IAC1C,CAAC;IAED,oBAAoB;QAClB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,kCAAkC,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEQ,OAAO;QAGd,OAAO;YACL,GAAG,KAAK,CAAC,OAAO,EAAE;YAClB,GAAG,CAAC,IAAI,CAAC,kCAAkC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;SACxE,CAAC;IACJ,CAAC;CACF;AA/BD,qCA+BC"}
|