From 65b79e10c87dc9ca2eeff38347917e4607268500 Mon Sep 17 00:00:00 2001 From: Shadaj Laddad Date: Fri, 3 Aug 2018 11:11:04 -0700 Subject: [PATCH] Scan all files for queries and reduce use of default endpoints (#526) --- .../src/commands/codegen/generate.ts | 2 +- .../apollo-cli/src/commands/schema/check.ts | 2 +- .../src/commands/schema/download.ts | 4 ++-- packages/apollo-cli/src/config.ts | 10 ++++++--- packages/apollo-cli/src/load-config.ts | 2 +- packages/apollo-codegen-core/src/loading.ts | 21 ++++++++++++++++--- 6 files changed, 30 insertions(+), 11 deletions(-) diff --git a/packages/apollo-cli/src/commands/codegen/generate.ts b/packages/apollo-cli/src/commands/codegen/generate.ts index cc5e083734..60eb53e704 100644 --- a/packages/apollo-cli/src/commands/codegen/generate.ts +++ b/packages/apollo-cli/src/commands/codegen/generate.ts @@ -186,7 +186,7 @@ export default class Generate extends Command { } const tasks: Listr = new Listr([ - loadConfigStep(flags), + loadConfigStep(flags, false), { title: "Resolving GraphQL document sets and dependencies", task: async (ctx, task) => { diff --git a/packages/apollo-cli/src/commands/schema/check.ts b/packages/apollo-cli/src/commands/schema/check.ts index 3e9653948d..db56dc6134 100644 --- a/packages/apollo-cli/src/commands/schema/check.ts +++ b/packages/apollo-cli/src/commands/schema/check.ts @@ -60,7 +60,7 @@ export default class SchemaCheck extends Command { const { flags } = this.parse(SchemaCheck); const tasks = new Listr([ - loadConfigStep(flags), + loadConfigStep(flags, true), { title: "Fetching local schema", task: async ctx => { diff --git a/packages/apollo-cli/src/commands/schema/download.ts b/packages/apollo-cli/src/commands/schema/download.ts index ef645c6caa..d5b5b1cf27 100644 --- a/packages/apollo-cli/src/commands/schema/download.ts +++ b/packages/apollo-cli/src/commands/schema/download.ts @@ -52,7 +52,7 @@ export default class SchemaDownload extends Command { const { flags, args } = this.parse(SchemaDownload); const tasks: Listr = new Listr([ - loadConfigStep(flags), + loadConfigStep(flags, false), { title: "Fetching current schema", task: async ctx => { @@ -67,7 +67,7 @@ export default class SchemaDownload extends Command { ctx.schema = await loadSchema( Object.values(ctx.config.schemas)[0], ctx.config - ).catch(this.error); + ); } }, { diff --git a/packages/apollo-cli/src/config.ts b/packages/apollo-cli/src/config.ts index 89157fb596..a01b84a4fe 100644 --- a/packages/apollo-cli/src/config.ts +++ b/packages/apollo-cli/src/config.ts @@ -89,13 +89,13 @@ function loadDocumentSet(obj: any): DocumentSet { ? [obj.includes as string] : obj.includes ? (obj.includes as string[]) - : ["**/*.graphql"], + : ["**"], excludes: typeof obj.excludes === "string" ? [obj.excludes as string] : obj.excludes ? (obj.excludes as string[]) - : ["node_modules"] + : ["node_modules/**"] }; } @@ -124,7 +124,11 @@ export function loadConfig( ? Array.isArray(obj.queries) ? (obj.queries as any[]) : [obj.queries] - : [] + : ( + Object.keys(schemasObj).length == 1 ? + [ { schema: Object.keys(schemasObj)[0] } ] : + [] + ) ).map(d => loadDocumentSet(d)), engineEndpoint: obj.engineEndpoint }; diff --git a/packages/apollo-cli/src/load-config.ts b/packages/apollo-cli/src/load-config.ts index 73a842c357..f5f828ac8a 100644 --- a/packages/apollo-cli/src/load-config.ts +++ b/packages/apollo-cli/src/load-config.ts @@ -7,7 +7,7 @@ import { ListrTask } from "listr"; export function loadConfigStep( flags: any, - defaultEndpoint: boolean = true + defaultEndpoint: boolean ): ListrTask { const header: any[] = Array.isArray(flags.header) ? flags.header diff --git a/packages/apollo-codegen-core/src/loading.ts b/packages/apollo-codegen-core/src/loading.ts index a471a64655..7987982e55 100644 --- a/packages/apollo-codegen-core/src/loading.ts +++ b/packages/apollo-codegen-core/src/loading.ts @@ -84,6 +84,10 @@ export function loadQueryDocuments( ): DocumentNode[] { const sources = inputPaths .map(inputPath => { + if (fs.lstatSync(inputPath).isDirectory()) { + return null; + } + const body = fs.readFileSync(inputPath, "utf8"); if (!body) { return null; @@ -99,11 +103,22 @@ export function loadQueryDocuments( return doc ? new Source(doc, inputPath) : null; } - return new Source(body, inputPath); + if (inputPath.endsWith(".graphql") || inputPath.endsWith(".gql")) { + return new Source(body, inputPath); + } + + return null; }) - .filter(source => source); + .filter(source => source) + .map(source => { + try { + return parse(source!); + } catch { + return null; + } + }).filter(source => source); - return (sources as Source[]).map(source => parse(source)); + return sources as DocumentNode[]; } export function loadAndMergeQueryDocuments(