6 Commits

Author SHA1 Message Date
d60ff7efdf 1.0.8 2021-11-20 22:38:37 +01:00
f29623c084 fix(core): update 2021-11-20 22:38:37 +01:00
d152920692 1.0.7 2021-11-20 22:28:08 +01:00
5628ce6328 fix(core): update 2021-11-20 22:28:08 +01:00
a24e7c6f73 1.0.6 2021-11-20 20:32:16 +01:00
8d9d3f92db fix(tests): add more meaningful tests 2021-11-20 20:32:16 +01:00
6 changed files with 65 additions and 29 deletions

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "@pushrocks/smartswagger", "name": "@pushrocks/smartswagger",
"version": "1.0.5", "version": "1.0.8",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@pushrocks/smartswagger", "name": "@pushrocks/smartswagger",
"version": "1.0.5", "version": "1.0.8",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@apidevtools/swagger-parser": "^10.0.3", "@apidevtools/swagger-parser": "^10.0.3",

View File

@@ -1,6 +1,6 @@
{ {
"name": "@pushrocks/smartswagger", "name": "@pushrocks/smartswagger",
"version": "1.0.5", "version": "1.0.8",
"private": false, "private": false,
"description": "a swagger tookit for working with swagger files", "description": "a swagger tookit for working with swagger files",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",

View File

@@ -1,8 +1,58 @@
import { expect, tap } from '@pushrocks/tapbundle'; import { expect, tap } from '@pushrocks/tapbundle';
import * as smartswagger from '../ts/index'; import * as smartswagger from '../ts/index';
import * as smartexpress from '@pushrocks/smartexpress';
let testSmartswaggerInstance: smartswagger.Smartswagger;
let testExpressServer: smartexpress.Server;
tap.test('first test', async () => { tap.test('first test', async () => {
console.log(smartswagger); testSmartswaggerInstance = await smartswagger.Smartswagger.createFromUrl(
'https://my.sevdesk.de/OpenAPI/ReceiptAPI/openApi.json'
);
await testSmartswaggerInstance.mergeDocumentFromUrl(
'https://my.sevdesk.de/OpenAPI/ContactAPI/openApi.json',
''
);
await testSmartswaggerInstance.mergeDocumentFromUrl(
'https://my.sevdesk.de/OpenAPI/InvoiceAPI/openApi.json',
''
);
await testSmartswaggerInstance.mergeDocumentFromUrl(
'https://my.sevdesk.de/OpenAPI/OrderAPI/openApi.json',
''
);
await testSmartswaggerInstance.mergeDocumentFromUrl(
'https://my.sevdesk.de/OpenAPI/InventoryAPI/openApi.json',
''
);
// express stuff
testExpressServer = new smartexpress.Server({
cors: true,
});
testExpressServer.addRoute(
'/apiui',
new smartexpress.Handler('ALL', testSmartswaggerInstance.getSlashApiUiMiddleware())
);
testExpressServer.addRoute(
'/apiredoc',
new smartexpress.Handler('ALL', testSmartswaggerInstance.getSlashRedocMiddleware())
);
testExpressServer.addRoute(
'/apischema',
new smartexpress.Handler('ALL', testSmartswaggerInstance.getSlashApiSchemaMiddleware())
);
await testExpressServer.start(3000);
});
tap.test('should run for a few seconds', async (toolsArg) => {
await toolsArg.delayFor(5000);
});
tap.test('should end smartswagger', async () => {
await testExpressServer.stop();
}); });
tap.start(); tap.start();

View File

@@ -1 +1 @@
export * from './smartswagger.classes.smartswagger'; export * from './smartswagger.classes.smartswagger';

View File

@@ -9,9 +9,9 @@ type IExtendedApiDoc = plugins.openapiTypes.OpenAPIV3.Document & RedocProps;
export class Smartswagger { export class Smartswagger {
// STATIC // STATIC
/** /**
* *
* @param urlArg a url arg that contains an original swagger.json in the response * @param urlArg a url arg that contains an original swagger.json in the response
* @returns an instance of * @returns an instance of
*/ */
public static async createFromUrl(urlArg: string) { public static async createFromUrl(urlArg: string) {
const jsonResponse = await plugins.nodeFetch(urlArg, { const jsonResponse = await plugins.nodeFetch(urlArg, {
@@ -40,9 +40,7 @@ export class Smartswagger {
* dereferences the document at hand * dereferences the document at hand
*/ */
public async deref() { public async deref() {
this.apiDoc = (await plugins.swaggerParser.dereference( this.apiDoc = (await plugins.swaggerParser.dereference(this.apiDoc)) as IExtendedApiDoc;
this.apiDoc
)) as IExtendedApiDoc;
} }
public async addServer(serverArg: plugins.openapiTypes.OpenAPIV3.ServerObject) { public async addServer(serverArg: plugins.openapiTypes.OpenAPIV3.ServerObject) {
@@ -56,10 +54,7 @@ export class Smartswagger {
* @param documentToMergeArg * @param documentToMergeArg
* @param basePathArg * @param basePathArg
*/ */
public async mergeDocument( public async mergeDocument(documentToMergeArg: IExtendedApiDoc, basePathArg: string) {
documentToMergeArg: IExtendedApiDoc,
basePathArg: string
) {
console.log(`merging document with name ${documentToMergeArg.info?.title}`); console.log(`merging document with name ${documentToMergeArg.info?.title}`);
await this.deref(); await this.deref();
// lets get a dereferenced version of the document we want to merge // lets get a dereferenced version of the document we want to merge
@@ -86,7 +81,7 @@ export class Smartswagger {
* merges a document from url * merges a document from url
*/ */
public async mergeDocumentFromUrl(documentUrlArg: string, basePathArg: string = '') { public async mergeDocumentFromUrl(documentUrlArg: string, basePathArg: string = '') {
console.log(`getting document at ${documentUrlArg} for merging...`) console.log(`getting document at ${documentUrlArg} for merging...`);
const documentResponse = await plugins.nodeFetch(documentUrlArg, { const documentResponse = await plugins.nodeFetch(documentUrlArg, {
headers: { headers: {
'accept-encoding': 'application/json', 'accept-encoding': 'application/json',
@@ -102,11 +97,11 @@ export class Smartswagger {
* merge multiple documents in parallel * merge multiple documents in parallel
* @param urlArrayArg * @param urlArrayArg
*/ */
public async mergeManyDocumentsFromUrl(urlArrayArg: {url: string, basePath: string}[]) { public async mergeManyDocumentsFromUrl(urlArrayArg: { url: string; basePath: string }[]) {
const promiseArray: Promise<void>[] = []; const promiseArray: Promise<void>[] = [];
for (const urlArg of urlArrayArg) { for (const urlArg of urlArrayArg) {
promiseArray.push(this.mergeDocumentFromUrl(urlArg.url, urlArg.basePath)); promiseArray.push(this.mergeDocumentFromUrl(urlArg.url, urlArg.basePath));
}; }
await Promise.all(promiseArray); await Promise.all(promiseArray);
} }

View File

@@ -1,26 +1,17 @@
// node native // node native
import * as path from 'path'; import * as path from 'path';
export { export { path };
path
}
// @pushrocks scope // @pushrocks scope
import * as smartexpress from '@pushrocks/smartexpress'; import * as smartexpress from '@pushrocks/smartexpress';
import * as smartpromise from '@pushrocks/smartpromise'; import * as smartpromise from '@pushrocks/smartpromise';
export { export { smartexpress, smartpromise };
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 nodeFetch from 'node-fetch'; import nodeFetch from 'node-fetch';
export { export { openapiTypes, swaggerParser, nodeFetch };
openapiTypes,
swaggerParser,
nodeFetch
}