@ehuelsmann/openapi-validator 0.15.0 → 0.16.1
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 +26 -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,15 +0,0 @@
|
|
|
1
|
-
export declare enum ErrorCode {
|
|
2
|
-
ServerNotFound = 0,
|
|
3
|
-
BasePathNotFound = 1,
|
|
4
|
-
PathNotFound = 2,
|
|
5
|
-
MethodNotFound = 3,
|
|
6
|
-
StatusNotFound = 4,
|
|
7
|
-
InvalidBody = 5,
|
|
8
|
-
InvalidObject = 6
|
|
9
|
-
}
|
|
10
|
-
export default class ValidationError extends Error {
|
|
11
|
-
code: ErrorCode;
|
|
12
|
-
constructor(code: ErrorCode, message?: string);
|
|
13
|
-
toString(): string;
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=ValidationError.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationError.d.ts","sourceRoot":"","sources":["../../../lib/classes/errors/ValidationError.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IACnB,cAAc,IAAA;IACd,gBAAgB,IAAA;IAChB,YAAY,IAAA;IACZ,cAAc,IAAA;IACd,cAAc,IAAA;IACd,WAAW,IAAA;IACX,aAAa,IAAA;CACd;AAED,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,KAAK;IAEvC,IAAI,EAAE,SAAS;gBAAf,IAAI,EAAE,SAAS,EACtB,OAAO,CAAC,EAAE,MAAM;IAKT,QAAQ,IAAI,MAAM;CAG5B"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ErrorCode = void 0;
|
|
4
|
-
var ErrorCode;
|
|
5
|
-
(function (ErrorCode) {
|
|
6
|
-
ErrorCode[ErrorCode["ServerNotFound"] = 0] = "ServerNotFound";
|
|
7
|
-
ErrorCode[ErrorCode["BasePathNotFound"] = 1] = "BasePathNotFound";
|
|
8
|
-
ErrorCode[ErrorCode["PathNotFound"] = 2] = "PathNotFound";
|
|
9
|
-
ErrorCode[ErrorCode["MethodNotFound"] = 3] = "MethodNotFound";
|
|
10
|
-
ErrorCode[ErrorCode["StatusNotFound"] = 4] = "StatusNotFound";
|
|
11
|
-
ErrorCode[ErrorCode["InvalidBody"] = 5] = "InvalidBody";
|
|
12
|
-
ErrorCode[ErrorCode["InvalidObject"] = 6] = "InvalidObject";
|
|
13
|
-
})(ErrorCode || (exports.ErrorCode = ErrorCode = {}));
|
|
14
|
-
class ValidationError extends Error {
|
|
15
|
-
constructor(code, message) {
|
|
16
|
-
super(message);
|
|
17
|
-
this.code = code;
|
|
18
|
-
}
|
|
19
|
-
toString() {
|
|
20
|
-
return this.message;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
exports.default = ValidationError;
|
|
24
|
-
//# sourceMappingURL=ValidationError.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationError.js","sourceRoot":"","sources":["../../../lib/classes/errors/ValidationError.ts"],"names":[],"mappings":";;;AAAA,IAAY,SAQX;AARD,WAAY,SAAS;IACnB,6DAAc,CAAA;IACd,iEAAgB,CAAA;IAChB,yDAAY,CAAA;IACZ,6DAAc,CAAA;IACd,6DAAc,CAAA;IACd,uDAAW,CAAA;IACX,2DAAa,CAAA;AACf,CAAC,EARW,SAAS,yBAAT,SAAS,QAQpB;AAED,MAAqB,eAAgB,SAAQ,KAAK;IAChD,YACS,IAAe,EACtB,OAAgB;QAEhB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAW;IAIxB,CAAC;IAEQ,QAAQ;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAXD,kCAWC"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,YAAY,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,YAAY,MAAM,wBAAwB,CAAC;AAEvD,YAAY,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAC5D,YAAY,EACV,aAAa,EACb,cAAc,EACd,WAAW,GACZ,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,YAAY,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtE,YAAY,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,YAAY,CAAC;AACtD,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { OpenAPI } from 'openapi-types';
|
|
2
|
-
import OpenApi2Spec from './classes/OpenApi2Spec';
|
|
3
|
-
import OpenApi3Spec from './classes/OpenApi3Spec';
|
|
4
|
-
export default function makeApiSpec(filepathOrObject: string | OpenAPI.Document): OpenApi2Spec | OpenApi3Spec;
|
|
5
|
-
//# sourceMappingURL=openApiSpecFactory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openApiSpecFactory.d.ts","sourceRoot":"","sources":["../lib/openApiSpecFactory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAwB,MAAM,eAAe,CAAC;AAGnE,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAQlD,MAAM,CAAC,OAAO,UAAU,WAAW,CACjC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAC1C,YAAY,GAAG,YAAY,CAQ7B"}
|
|
@@ -1,67 +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
|
-
exports.default = makeApiSpec;
|
|
7
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
-
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
9
|
-
const openapi_schema_validator_1 = __importDefault(require("openapi-schema-validator"));
|
|
10
|
-
const path_1 = __importDefault(require("path"));
|
|
11
|
-
const typeof_1 = __importDefault(require("typeof"));
|
|
12
|
-
const OpenApi2Spec_1 = __importDefault(require("./classes/OpenApi2Spec"));
|
|
13
|
-
const OpenApi3Spec_1 = __importDefault(require("./classes/OpenApi3Spec"));
|
|
14
|
-
const common_utils_1 = require("./utils/common.utils");
|
|
15
|
-
const isObject = (arg) => typeof arg === 'object' && arg !== null && !Array.isArray(arg);
|
|
16
|
-
function makeApiSpec(filepathOrObject) {
|
|
17
|
-
const spec = loadSpec(filepathOrObject);
|
|
18
|
-
validateSpec(spec);
|
|
19
|
-
const validSpec = spec;
|
|
20
|
-
if ('swagger' in validSpec) {
|
|
21
|
-
return new OpenApi2Spec_1.default(validSpec);
|
|
22
|
-
}
|
|
23
|
-
return new OpenApi3Spec_1.default(validSpec);
|
|
24
|
-
}
|
|
25
|
-
function loadSpec(arg) {
|
|
26
|
-
try {
|
|
27
|
-
if (typeof arg === 'string') {
|
|
28
|
-
return loadFile(arg);
|
|
29
|
-
}
|
|
30
|
-
if (isObject(arg)) {
|
|
31
|
-
return arg;
|
|
32
|
-
}
|
|
33
|
-
throw new Error(`Received type '${(0, typeof_1.default)(arg)}'`);
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
throw new Error(`The provided argument must be either an absolute filepath or an object representing an OpenAPI specification.\nError details: ${error.message}`);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
function loadFile(filepath) {
|
|
40
|
-
if (!path_1.default.isAbsolute(filepath)) {
|
|
41
|
-
throw new Error(`'${filepath}' is not an absolute filepath`);
|
|
42
|
-
}
|
|
43
|
-
const fileData = fs_extra_1.default.readFileSync(filepath, { encoding: 'utf8' });
|
|
44
|
-
try {
|
|
45
|
-
return js_yaml_1.default.load(fileData);
|
|
46
|
-
}
|
|
47
|
-
catch (error) {
|
|
48
|
-
throw new Error(`Invalid YAML or JSON:\n${error.message}`);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
function validateSpec(obj) {
|
|
52
|
-
try {
|
|
53
|
-
const validator = new openapi_schema_validator_1.default({
|
|
54
|
-
version: obj.swagger || // '2.0'
|
|
55
|
-
obj.openapi, // '3.X.X'
|
|
56
|
-
});
|
|
57
|
-
const { errors } = validator.validate(obj);
|
|
58
|
-
if (errors.length > 0) {
|
|
59
|
-
throw new Error((0, common_utils_1.stringify)(errors));
|
|
60
|
-
}
|
|
61
|
-
return obj;
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
throw new Error(`Invalid OpenAPI spec: ${error.message}`);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=openApiSpecFactory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openApiSpecFactory.js","sourceRoot":"","sources":["../lib/openApiSpecFactory.ts"],"names":[],"mappings":";;;;;AAeA,8BAUC;AAzBD,wDAA0B;AAC1B,sDAA2B;AAC3B,wFAA8D;AAE9D,gDAAwB;AACxB,oDAA4B;AAC5B,0EAAkD;AAClD,0EAAkD;AAClD,uDAAiD;AAIjD,MAAM,QAAQ,GAAG,CAAC,GAAY,EAAoB,EAAE,CAClD,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEjE,SAAwB,WAAW,CACjC,gBAA2C;IAE3C,MAAM,IAAI,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACxC,YAAY,CAAC,IAAI,CAAC,CAAC;IACnB,MAAM,SAAS,GAAG,IAAwB,CAAC;IAC3C,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;QAC3B,OAAO,IAAI,sBAAY,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,IAAI,sBAAY,CAAC,SAA+B,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,QAAQ,CAAC,GAAY;IAC5B,IAAI,CAAC;QACH,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,GAAG,CAAC;QACb,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAA,gBAAM,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,iIACG,KAAe,CAAC,OACnB,EAAE,CACH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,QAAgB;IAChC,IAAI,CAAC,cAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,IAAI,QAAQ,+BAA+B,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,QAAQ,GAAG,kBAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC;QACH,OAAO,iBAAI,CAAC,IAAI,CAAC,QAAQ,CAAc,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,0BAA2B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,GAAc;IAClC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,kCAAsB,CAAC;YAC3C,OAAO,EACJ,GAAqC,CAAC,OAAO,IAAI,QAAQ;gBACzD,GAAqC,CAAC,OAAO,EAAE,UAAU;SAC7D,CAAC,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAuB,CAAC,CAAC;QAC/D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,IAAA,wBAAS,EAAC,MAAM,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,GAAuB,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,yBAA0B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { RawResponse } from './classes/AbstractResponse';
|
|
2
|
-
import AxiosResponse from './classes/AxiosResponse';
|
|
3
|
-
import RequestPromiseResponse from './classes/RequestPromiseResponse';
|
|
4
|
-
import SuperAgentResponse from './classes/SuperAgentResponse';
|
|
5
|
-
export default function makeResponse(res: RawResponse): AxiosResponse | SuperAgentResponse | RequestPromiseResponse;
|
|
6
|
-
//# sourceMappingURL=responseFactory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"responseFactory.d.ts","sourceRoot":"","sources":["../lib/responseFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,aAAa,MAAM,yBAAyB,CAAC;AACpD,OAAO,sBAAsB,MAAM,kCAAkC,CAAC;AACtE,OAAO,kBAAkB,MAAM,8BAA8B,CAAC;AAE9D,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,GAAG,EAAE,WAAW,GACf,aAAa,GAAG,kBAAkB,GAAG,sBAAsB,CAQ7D"}
|
package/dist/responseFactory.js
DELETED
|
@@ -1,19 +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
|
-
exports.default = makeResponse;
|
|
7
|
-
const AxiosResponse_1 = __importDefault(require("./classes/AxiosResponse"));
|
|
8
|
-
const RequestPromiseResponse_1 = __importDefault(require("./classes/RequestPromiseResponse"));
|
|
9
|
-
const SuperAgentResponse_1 = __importDefault(require("./classes/SuperAgentResponse"));
|
|
10
|
-
function makeResponse(res) {
|
|
11
|
-
if ('data' in res) {
|
|
12
|
-
return new AxiosResponse_1.default(res);
|
|
13
|
-
}
|
|
14
|
-
if ('status' in res) {
|
|
15
|
-
return new SuperAgentResponse_1.default(res);
|
|
16
|
-
}
|
|
17
|
-
return new RequestPromiseResponse_1.default(res);
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=responseFactory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"responseFactory.js","sourceRoot":"","sources":["../lib/responseFactory.ts"],"names":[],"mappings":";;;;;AAKA,+BAUC;AAdD,4EAAoD;AACpD,8FAAsE;AACtE,sFAA8D;AAE9D,SAAwB,YAAY,CAClC,GAAgB;IAEhB,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;QAClB,OAAO,IAAI,uBAAa,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,QAAQ,IAAI,GAAG,EAAE,CAAC;QACpB,OAAO,IAAI,4BAAkB,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,IAAI,gCAAsB,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { OpenAPIV3 } from 'openapi-types';
|
|
2
|
-
export declare const serversPropertyNotProvidedOrIsEmptyArray: (spec: OpenAPIV3.Document) => boolean;
|
|
3
|
-
export declare const getMatchingServerUrlsAndServerBasePaths: (servers: OpenAPIV3.ServerObject[], pathname: string) => {
|
|
4
|
-
concreteUrl: string;
|
|
5
|
-
matchingBasePath: string;
|
|
6
|
-
}[];
|
|
7
|
-
//# sourceMappingURL=OpenApi3Spec.utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OpenApi3Spec.utils.d.ts","sourceRoot":"","sources":["../../lib/utils/OpenApi3Spec.utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAO/C,eAAO,MAAM,wCAAwC,GACnD,MAAM,SAAS,CAAC,QAAQ,KACvB,OAAgD,CAAC;AAmEpD,eAAO,MAAM,uCAAuC,GAClD,SAAS,SAAS,CAAC,YAAY,EAAE,EACjC,UAAU,MAAM,KACf;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,EAoBnD,CAAC"}
|
|
@@ -1,54 +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
|
-
exports.getMatchingServerUrlsAndServerBasePaths = exports.serversPropertyNotProvidedOrIsEmptyArray = void 0;
|
|
7
|
-
const combos_1 = __importDefault(require("combos"));
|
|
8
|
-
const common_utils_1 = require("./common.utils");
|
|
9
|
-
const unique = (array) => [...new Set(array)];
|
|
10
|
-
const serversPropertyNotProvidedOrIsEmptyArray = (spec) => !spec.servers || !spec.servers.length;
|
|
11
|
-
exports.serversPropertyNotProvidedOrIsEmptyArray = serversPropertyNotProvidedOrIsEmptyArray;
|
|
12
|
-
const getBasePath = (url) => {
|
|
13
|
-
const basePathStartIndex = url.replace('//', ' ').indexOf('/');
|
|
14
|
-
return basePathStartIndex !== -1
|
|
15
|
-
? url.slice(basePathStartIndex)
|
|
16
|
-
: common_utils_1.defaultBasePath;
|
|
17
|
-
};
|
|
18
|
-
const getPossibleValuesOfServerVariable = ({ default: defaultValue, enum: enumMembers, }) => enumMembers ? unique([defaultValue].concat(enumMembers)) : [defaultValue];
|
|
19
|
-
const mapServerVariablesToPossibleValues = (serverVariables) => Object.entries(serverVariables).reduce((currentMap, [variableName, detailsOfPossibleValues]) => ({
|
|
20
|
-
...currentMap,
|
|
21
|
-
[variableName]: getPossibleValuesOfServerVariable(detailsOfPossibleValues),
|
|
22
|
-
}), {});
|
|
23
|
-
const convertTemplateExpressionToConcreteExpression = (templateExpression, mapOfVariablesToValues) => Object.entries(mapOfVariablesToValues).reduce((currentExpression, [variable, value]) => currentExpression.replace(`{${variable}}`, value), templateExpression);
|
|
24
|
-
const getPossibleConcreteBasePaths = (basePath, serverVariables) => {
|
|
25
|
-
const mapOfServerVariablesToPossibleValues = mapServerVariablesToPossibleValues(serverVariables);
|
|
26
|
-
const combinationsOfBasePathVariableValues = (0, combos_1.default)(mapOfServerVariablesToPossibleValues);
|
|
27
|
-
const possibleBasePaths = combinationsOfBasePathVariableValues.map((mapOfVariablesToValues) => convertTemplateExpressionToConcreteExpression(basePath, mapOfVariablesToValues));
|
|
28
|
-
return possibleBasePaths;
|
|
29
|
-
};
|
|
30
|
-
const getPossibleBasePaths = (url, serverVariables) => {
|
|
31
|
-
const basePath = getBasePath(url);
|
|
32
|
-
return serverVariables
|
|
33
|
-
? getPossibleConcreteBasePaths(basePath, serverVariables)
|
|
34
|
-
: [basePath];
|
|
35
|
-
};
|
|
36
|
-
const getMatchingServerUrlsAndServerBasePaths = (servers, pathname) => {
|
|
37
|
-
const matchesPathname = (basePath) => pathname.startsWith(basePath);
|
|
38
|
-
return servers
|
|
39
|
-
.map(({ url: templatedUrl, variables }) => ({
|
|
40
|
-
templatedUrl,
|
|
41
|
-
possibleBasePaths: getPossibleBasePaths(templatedUrl, variables),
|
|
42
|
-
}))
|
|
43
|
-
.filter(({ possibleBasePaths }) => possibleBasePaths.some(matchesPathname))
|
|
44
|
-
.map(({ templatedUrl, possibleBasePaths }) => {
|
|
45
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
46
|
-
const matchingBasePath = possibleBasePaths.find(matchesPathname);
|
|
47
|
-
return {
|
|
48
|
-
concreteUrl: templatedUrl.replace(getBasePath(templatedUrl), matchingBasePath),
|
|
49
|
-
matchingBasePath,
|
|
50
|
-
};
|
|
51
|
-
});
|
|
52
|
-
};
|
|
53
|
-
exports.getMatchingServerUrlsAndServerBasePaths = getMatchingServerUrlsAndServerBasePaths;
|
|
54
|
-
//# sourceMappingURL=OpenApi3Spec.utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OpenApi3Spec.utils.js","sourceRoot":"","sources":["../../lib/utils/OpenApi3Spec.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { ActualRequest } from '../classes/AbstractResponse';
|
|
2
|
-
export declare const stringify: (obj: unknown) => string;
|
|
3
|
-
/**
|
|
4
|
-
* Excludes the query because path = pathname + query
|
|
5
|
-
*/
|
|
6
|
-
export declare const getPathname: (request: ActualRequest) => string;
|
|
7
|
-
export declare const findOpenApiPathMatchingPossiblePathnames: (possiblePathnames: string[], OAPaths: string[]) => string | undefined;
|
|
8
|
-
export declare const defaultBasePath = "/";
|
|
9
|
-
export declare const getPathnameWithoutBasePath: (basePath: string, pathname: string) => string;
|
|
10
|
-
//# sourceMappingURL=common.utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"common.utils.d.ts","sourceRoot":"","sources":["../../lib/utils/common.utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,eAAO,MAAM,SAAS,GAAI,KAAK,OAAO,KAAG,MACV,CAAC;AAEhC;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,SAAS,aAAa,KAAG,MAElB,CAAC;AAiCpC,eAAO,MAAM,wCAAwC,GACnD,mBAAmB,MAAM,EAAE,EAC3B,SAAS,MAAM,EAAE,KAChB,MAAM,GAAG,SAeX,CAAC;AAEF,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,eAAO,MAAM,0BAA0B,GACrC,UAAU,MAAM,EAChB,UAAU,MAAM,KACf,MACuE,CAAC"}
|
|
@@ -1,58 +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
|
-
exports.getPathnameWithoutBasePath = exports.defaultBasePath = exports.findOpenApiPathMatchingPossiblePathnames = exports.getPathname = exports.stringify = void 0;
|
|
7
|
-
const path_parser_1 = require("path-parser");
|
|
8
|
-
const url_1 = __importDefault(require("url"));
|
|
9
|
-
const util_1 = require("util");
|
|
10
|
-
const stringify = (obj) => (0, util_1.inspect)(obj, { depth: null });
|
|
11
|
-
exports.stringify = stringify;
|
|
12
|
-
/**
|
|
13
|
-
* Excludes the query because path = pathname + query
|
|
14
|
-
*/
|
|
15
|
-
const getPathname = (request) =>
|
|
16
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
17
|
-
url_1.default.parse(request.path).pathname;
|
|
18
|
-
exports.getPathname = getPathname;
|
|
19
|
-
/**
|
|
20
|
-
* Converts all {foo} to :foo
|
|
21
|
-
*/
|
|
22
|
-
const convertOpenApiPathToColonForm = (openApiPath) => openApiPath.replace(/{/g, ':').replace(/}/g, '');
|
|
23
|
-
const doesColonPathMatchPathname = (pathInColonForm, pathname) => {
|
|
24
|
-
/*
|
|
25
|
-
* By default, OpenAPI path parameters have `style: simple; explode: false` (https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameter-object)
|
|
26
|
-
* So array path parameters in the pathname of the actual request should be in the form: `/pathParams/a,b,c`
|
|
27
|
-
* `path-parser` fails to match parameter patterns to parameters containing commas.
|
|
28
|
-
* So we remove the commas.
|
|
29
|
-
*/
|
|
30
|
-
const pathWithoutCommas = pathname.replace(/,/g, '');
|
|
31
|
-
const pathParamsInPathname = new path_parser_1.Path(pathInColonForm).test(pathWithoutCommas); // => one of: null, {}, {exampleParam: 'foo'}
|
|
32
|
-
return Boolean(pathParamsInPathname);
|
|
33
|
-
};
|
|
34
|
-
const doesOpenApiPathMatchPathname = (openApiPath, pathname) => {
|
|
35
|
-
const pathInColonForm = convertOpenApiPathToColonForm(openApiPath);
|
|
36
|
-
return doesColonPathMatchPathname(pathInColonForm, pathname);
|
|
37
|
-
};
|
|
38
|
-
const findOpenApiPathMatchingPossiblePathnames = (possiblePathnames, OAPaths) => {
|
|
39
|
-
let openApiPath;
|
|
40
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
41
|
-
for (const pathname of possiblePathnames) {
|
|
42
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
43
|
-
for (const OAPath of OAPaths) {
|
|
44
|
-
if (OAPath === pathname) {
|
|
45
|
-
return OAPath;
|
|
46
|
-
}
|
|
47
|
-
if (doesOpenApiPathMatchPathname(OAPath, pathname)) {
|
|
48
|
-
openApiPath = OAPath;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return openApiPath;
|
|
53
|
-
};
|
|
54
|
-
exports.findOpenApiPathMatchingPossiblePathnames = findOpenApiPathMatchingPossiblePathnames;
|
|
55
|
-
exports.defaultBasePath = '/';
|
|
56
|
-
const getPathnameWithoutBasePath = (basePath, pathname) => basePath === exports.defaultBasePath ? pathname : pathname.replace(basePath, '');
|
|
57
|
-
exports.getPathnameWithoutBasePath = getPathnameWithoutBasePath;
|
|
58
|
-
//# sourceMappingURL=common.utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"common.utils.js","sourceRoot":"","sources":["../../lib/utils/common.utils.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAmC;AACnC,8CAAsB;AACtB,+BAA+B;AAGxB,MAAM,SAAS,GAAG,CAAC,GAAY,EAAU,EAAE,CAChD,IAAA,cAAO,EAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AADnB,QAAA,SAAS,aACU;AAEhC;;GAEG;AACI,MAAM,WAAW,GAAG,CAAC,OAAsB,EAAU,EAAE;AAC5D,oEAAoE;AACpE,aAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAS,CAAC;AAFvB,QAAA,WAAW,eAEY;AAEpC;;GAEG;AACH,MAAM,6BAA6B,GAAG,CAAC,WAAmB,EAAU,EAAE,CACpE,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAEnD,MAAM,0BAA0B,GAAG,CACjC,eAAuB,EACvB,QAAgB,EACP,EAAE;IACX;;;;;OAKG;IACH,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrD,MAAM,oBAAoB,GAAG,IAAI,kBAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CACzD,iBAAiB,CAClB,CAAC,CAAC,6CAA6C;IAChD,OAAO,OAAO,CAAC,oBAAoB,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,4BAA4B,GAAG,CACnC,WAAmB,EACnB,QAAgB,EACP,EAAE;IACX,MAAM,eAAe,GAAG,6BAA6B,CAAC,WAAW,CAAC,CAAC;IACnE,OAAO,0BAA0B,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEK,MAAM,wCAAwC,GAAG,CACtD,iBAA2B,EAC3B,OAAiB,EACG,EAAE;IACtB,IAAI,WAA+B,CAAC;IACpC,gDAAgD;IAChD,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QACzC,gDAAgD;QAChD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,IAAI,4BAA4B,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACnD,WAAW,GAAG,MAAM,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAlBW,QAAA,wCAAwC,4CAkBnD;AAEW,QAAA,eAAe,GAAG,GAAG,CAAC;AAE5B,MAAM,0BAA0B,GAAG,CACxC,QAAgB,EAChB,QAAgB,EACR,EAAE,CACV,QAAQ,KAAK,uBAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAJ9D,QAAA,0BAA0B,8BAIoC"}
|