README
TS Swagger 2 Fetch generator
CLI tool powered by node.js that (fetches and/or) transforms swagger definition files that you can easily incorporate into your TypeScript+React application.
install
npm i -D ts-swagger-fetch
configure
Config file is a json file that is expressed with this interface - ConfigFile
.
interface ConfigFile {
// path relative to the config file
output: string;
swaggers: SwaggerFileDescriptor[];
}
interface SwaggerFileDescriptor {
// your custom name (will be visible in logs)
name: string;
// swagger definition file path relative to config file
file: string;
// swagger definition remote location information
remote: SwaggerRemoteFileDescriptor;
// should a factory function
// allowing replacing window.fetch
// be generated
factory?: boolean;
// Object here will override (overshadow)
// contents of the swagger definition file
overrides?: Partial<Spec>;
}
interface SwaggerRemoteFileDescriptor {
url: string;
username?: string;
password?: string;
}
transform
npx msf ./msfconfig.json
# ^ this will run it including node_modules in PATH
# ^ this is a name of the CLI tool
# ^ this is the path to your config file
incorporate
A) A fetch method
import { pet } from './test/output/pet';
async function shoutOutPet(id: number) {
const response = await pet('get /pet/{petId}', {
path: {
petId: 0,
},
});
switch (response.status) {
case 200: return alert(
`Dog's name ${response.json?.name ?? ''}`
);
case 400: return alert('Fatal error!');
case 404: return alert('Not found');
default: return;
}
}
B) A factory function returning fetch method
import { petFactory } from './test/output/pet';
const pet = petFactory(window.fetch);
async function shoutOutPet(id: number) {
const response = await pet('get /pet/{petId}', {
path: {
petId: 0,
},
});
switch (response.status) {
case 200: return alert(
`Dog's name ${response.json?.name ?? ''}`
);
case 400: return alert('Fatal error!');
case 404: return alert('Not found');
default: return;
}
}