fix(core): update

This commit is contained in:
Philipp Kunz 2021-11-22 10:24:09 +01:00
parent 762305f29c
commit 692be04ed4
5 changed files with 83 additions and 18 deletions

65
package-lock.json generated
View File

@ -13,6 +13,7 @@
"@pushrocks/smartpromise": "^3.1.6", "@pushrocks/smartpromise": "^3.1.6",
"@types/node-fetch": "^2.5.12", "@types/node-fetch": "^2.5.12",
"@types/swagger-ui-express": "^4.1.3", "@types/swagger-ui-express": "^4.1.3",
"matcher": "^4.0.0",
"node-fetch": "^2.6.6", "node-fetch": "^2.6.6",
"openapi-types": "^9.3.1" "openapi-types": "^9.3.1"
}, },
@ -2467,6 +2468,32 @@
"matcher": "^3.0.0" "matcher": "^3.0.0"
} }
}, },
"node_modules/@pushrocks/smartmatch/node_modules/escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://verdaccio.lossless.one/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@pushrocks/smartmatch/node_modules/matcher": {
"version": "3.0.0",
"resolved": "https://verdaccio.lossless.one/matcher/-/matcher-3.0.0.tgz",
"integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==",
"dev": true,
"license": "MIT",
"dependencies": {
"escape-string-regexp": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@pushrocks/smartmime": { "node_modules/@pushrocks/smartmime": {
"version": "1.0.5", "version": "1.0.5",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartmime/-/smartmime-1.0.5.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartmime/-/smartmime-1.0.5.tgz",
@ -9540,23 +9567,24 @@
} }
}, },
"node_modules/matcher": { "node_modules/matcher": {
"version": "3.0.0", "version": "4.0.0",
"resolved": "https://verdaccio.lossless.one/matcher/-/matcher-3.0.0.tgz", "resolved": "https://verdaccio.lossless.one/matcher/-/matcher-4.0.0.tgz",
"integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", "integrity": "sha512-S6x5wmcDmsDRRU/c2dkccDwQPXoFczc5+HpQ2lON8pnvHlnvHAHj5WlLVvw6n6vNyHuVugYrFohYxbS+pvFpKQ==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"escape-string-regexp": "^4.0.0" "escape-string-regexp": "^4.0.0"
}, },
"engines": { "engines": {
"node": ">=10" "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/matcher/node_modules/escape-string-regexp": { "node_modules/matcher/node_modules/escape-string-regexp": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://verdaccio.lossless.one/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "resolved": "https://verdaccio.lossless.one/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=10" "node": ">=10"
@ -17387,6 +17415,23 @@
"dev": true, "dev": true,
"requires": { "requires": {
"matcher": "^3.0.0" "matcher": "^3.0.0"
},
"dependencies": {
"escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://verdaccio.lossless.one/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true
},
"matcher": {
"version": "3.0.0",
"resolved": "https://verdaccio.lossless.one/matcher/-/matcher-3.0.0.tgz",
"integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==",
"dev": true,
"requires": {
"escape-string-regexp": "^4.0.0"
}
}
} }
}, },
"@pushrocks/smartmime": { "@pushrocks/smartmime": {
@ -22758,10 +22803,9 @@
} }
}, },
"matcher": { "matcher": {
"version": "3.0.0", "version": "4.0.0",
"resolved": "https://verdaccio.lossless.one/matcher/-/matcher-3.0.0.tgz", "resolved": "https://verdaccio.lossless.one/matcher/-/matcher-4.0.0.tgz",
"integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", "integrity": "sha512-S6x5wmcDmsDRRU/c2dkccDwQPXoFczc5+HpQ2lON8pnvHlnvHAHj5WlLVvw6n6vNyHuVugYrFohYxbS+pvFpKQ==",
"dev": true,
"requires": { "requires": {
"escape-string-regexp": "^4.0.0" "escape-string-regexp": "^4.0.0"
}, },
@ -22769,8 +22813,7 @@
"escape-string-regexp": { "escape-string-regexp": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://verdaccio.lossless.one/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "resolved": "https://verdaccio.lossless.one/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
"dev": true
} }
} }
}, },

View File

@ -26,6 +26,7 @@
"@pushrocks/smartpromise": "^3.1.6", "@pushrocks/smartpromise": "^3.1.6",
"@types/node-fetch": "^2.5.12", "@types/node-fetch": "^2.5.12",
"@types/swagger-ui-express": "^4.1.3", "@types/swagger-ui-express": "^4.1.3",
"matcher": "^4.0.0",
"node-fetch": "^2.6.6", "node-fetch": "^2.6.6",
"openapi-types": "^9.3.1" "openapi-types": "^9.3.1"
}, },

View File

@ -27,6 +27,16 @@ tap.test('first test', async () => {
'' ''
); );
await testSmartswaggerInstance.mergeComponentToRoutes({excludeGlobArray: [], includeGlobArray: []}, {
"securitySchemes": {
"token": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT"
}
}
})
// express stuff // express stuff
testExpressServer = new smartexpress.Server({ testExpressServer = new smartexpress.Server({
cors: true, cors: true,

View File

@ -147,23 +147,25 @@ export class Smartswagger {
*/ */
public mergeComponentToRoutes( public mergeComponentToRoutes(
routeDescriptor: { routeDescriptor: {
includeRegexpArray: RegExp[]; includeGlobArray: string[];
excludeRegexpArray: RegExp[]; excludeGlobArray: string[];
}, },
componentArg: plugins.openapiTypes.OpenAPIV3.ComponentsObject componentArg: plugins.openapiTypes.OpenAPIV3.ComponentsObject
) { ) {
for (const pathCandidateRoute of Object.keys(this.apiDoc.paths)) { for (const pathCandidateRoute of Object.keys(this.apiDoc.paths)) {
let included: boolean = false; let included: boolean = false;
let excluded: boolean = false; let excluded: boolean = false;
for (const regExp of routeDescriptor.includeRegexpArray) {
if (regExp.test(pathCandidateRoute)) { // We are using glob espressions here due to easier path expressions
for (const globExpression of routeDescriptor.includeGlobArray) {
if (plugins.matcher.isMatch(pathCandidateRoute, globExpression)) {
included = true; included = true;
break; break;
} }
} }
if (included) { if (included) {
for (const regExp of routeDescriptor.excludeRegexpArray) { for (const globExpression of routeDescriptor.excludeGlobArray) {
if (regExp.test(pathCandidateRoute)) { if (plugins.matcher.isMatch(pathCandidateRoute, globExpression)) {
excluded = true; excluded = true;
break; break;
} }
@ -177,8 +179,16 @@ export class Smartswagger {
return; return;
} }
if (componentArg.securitySchemes) { if (componentArg.securitySchemes) {
methodArg.security = methodArg.security || [];
for (const securityScheme of Object.keys(componentArg.securitySchemes)) {
methodArg.security.push({ [securityScheme]: [] })
}
} }
}; };
instrumentMethod(pathCandidate.get);
instrumentMethod(pathCandidate.post);
instrumentMethod(pathCandidate.put);
instrumentMethod(pathCandidate.delete);
} }
} }
} }

View File

@ -12,6 +12,7 @@ export { smartexpress, smartpromise };
// third party // third party
import * as openapiTypes from 'openapi-types'; import * as openapiTypes from 'openapi-types';
import swaggerParser from '@apidevtools/swagger-parser'; import swaggerParser from '@apidevtools/swagger-parser';
import matcher from 'matcher';
import nodeFetch from 'node-fetch'; import nodeFetch from 'node-fetch';
export { openapiTypes, swaggerParser, nodeFetch }; export { openapiTypes, matcher, nodeFetch, swaggerParser, };