Skip to content

Commit

Permalink
feat(generate): warn about missing dependencies used in generated client
Browse files Browse the repository at this point in the history
  • Loading branch information
jordanshatford committed Mar 23, 2024
1 parent f83279c commit 22d540a
Showing 1 changed file with 23 additions and 1 deletion.
24 changes: 23 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,15 @@ type Dependencies = Record<string, unknown>;
// TODO: add support for `openapi-ts.config.ts`
const configFiles = ['openapi-ts.config.js', 'openapi-ts.config.cjs', 'openapi-ts.config.mjs'];

// Mapping of all dependencies used in each client. These should be installed in the generated client package
const clientDependencies: Record<Config['client'], string[]> = {
angular: ['@angular/common', '@angular/core', 'rxjs'],
axios: ['axios'],
fetch: [],
node: ['node-fetch'],
xhr: [],
};

const processOutput = (config: Config, dependencies: Dependencies) => {
if (config.format) {
if (dependencies.prettier) {
Expand All @@ -35,12 +44,15 @@ const processOutput = (config: Config, dependencies: Dependencies) => {
};

const inferClient = (dependencies: Dependencies): Config['client'] => {
if (dependencies['@angular/cli']) {
if (Object.keys(dependencies).some(d => d.startsWith('@angular'))) {
return 'angular';
}
if (dependencies.axios) {
return 'axios';
}
if (dependencies['node-fetch']) {
return 'node';
}
return 'fetch';
};

Expand All @@ -59,6 +71,13 @@ const logClientMessage = (client: Config['client']) => {
}
};

const logMissingDependenciesWarning = (client: Config['client'], dependencies: Dependencies) => {
const missing = clientDependencies[client].filter(d => dependencies[d] === undefined);
if (missing.length > 0) {
console.log('⚠️ Dependencies used in generated client are missing: ' + missing.join(' '));
}
};

const getConfigFromFile = async (): Promise<UserConfig | undefined> => {
const configPath = configFiles
.map(file => pathToFileURL(path.resolve(process.cwd(), file)))
Expand Down Expand Up @@ -179,6 +198,9 @@ export async function createClient(userConfig: UserConfig): Promise<Client> {
}

console.log('✨ Done! Your client is located in:', config.output);

logMissingDependenciesWarning(config.client, dependencies);

return client;
}

Expand Down

0 comments on commit 22d540a

Please sign in to comment.