Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(load): respect filters in DEBUG env var #5715

Merged
merged 1 commit into from
Nov 23, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changeset/purple-owls-nail.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@graphql-tools/utils': patch
'@graphql-tools/load': patch
---

Print debug timer logs by respecting the filters in DEBUG env var
36 changes: 16 additions & 20 deletions packages/load/src/load-typedefs.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
import { env } from 'process';
import { asArray, BaseLoaderOptions, compareStrings, Loader, Source } from '@graphql-tools/utils';
import {
asArray,
BaseLoaderOptions,
compareStrings,
debugTimerEnd,
debugTimerStart,
Loader,
Source,
} from '@graphql-tools/utils';
import { collectSources, collectSourcesSync } from './load-typedefs/collect-sources.js';
import { applyDefaultOptions } from './load-typedefs/options.js';
import { parseSource } from './load-typedefs/parse.js';
Expand Down Expand Up @@ -30,9 +37,7 @@ export async function loadTypedefs<AdditionalConfig = Record<string, unknown>>(
pointerOrPointers: UnnormalizedTypeDefPointer | UnnormalizedTypeDefPointer[],
options: LoadTypedefsOptions<Partial<AdditionalConfig>>,
): Promise<Source[]> {
if (env['DEBUG'] != null) {
console.time('@graphql-tools/load: loadTypedefs');
}
debugTimerStart('@graphql-tools/load: loadTypedefs');
const { ignore, pointerOptionMap } = normalizePointers(pointerOrPointers);

options.ignore = asArray(options.ignore || []);
Expand Down Expand Up @@ -67,9 +72,7 @@ export async function loadTypedefs<AdditionalConfig = Record<string, unknown>>(

const result = prepareResult({ options, pointerOptionMap, validSources });

if (env['DEBUG'] != null) {
console.timeEnd('@graphql-tools/load: loadTypedefs');
}
debugTimerEnd('@graphql-tools/load: loadTypedefs');

return result;
}
Expand All @@ -85,9 +88,7 @@ export function loadTypedefsSync<AdditionalConfig = Record<string, unknown>>(
pointerOrPointers: UnnormalizedTypeDefPointer | UnnormalizedTypeDefPointer[],
options: LoadTypedefsOptions<Partial<AdditionalConfig>>,
): Source[] {
if (env['DEBUG'] != null) {
console.time('@graphql-tools/load: loadTypedefsSync');
}
debugTimerStart('@graphql-tools/load: loadTypedefsSync');
const { ignore, pointerOptionMap } = normalizePointers(pointerOrPointers);

options.ignore = asArray(options.ignore || []).concat(ignore);
Expand All @@ -114,9 +115,7 @@ export function loadTypedefsSync<AdditionalConfig = Record<string, unknown>>(

const result = prepareResult({ options, pointerOptionMap, validSources });

if (env['DEBUG'] != null) {
console.timeEnd('@graphql-tools/load: loadTypedefsSync');
}
debugTimerEnd('@graphql-tools/load: loadTypedefsSync');

return result;
}
Expand All @@ -132,9 +131,7 @@ function prepareResult({
pointerOptionMap: any;
validSources: Source[];
}) {
if (env['DEBUG'] != null) {
console.time('@graphql-tools/load: prepareResult');
}
debugTimerStart('@graphql-tools/load: prepareResult');
const pointerList = Object.keys(pointerOptionMap);

if (pointerList.length > 0 && validSources.length === 0) {
Expand All @@ -150,8 +147,7 @@ function prepareResult({
const sortedResult = options.sort
? validSources.sort((left, right) => compareStrings(left.location, right.location))
: validSources;
if (env['DEBUG'] != null) {
console.timeEnd('@graphql-tools/load: prepareResult');
}

debugTimerEnd('@graphql-tools/load: prepareResult');
return sortedResult;
}
92 changes: 25 additions & 67 deletions packages/load/src/load-typedefs/collect-sources.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import { createRequire } from 'module';
import { cwd, env } from 'process';
import { cwd } from 'process';
import { isSchema, Kind } from 'graphql';
import {
asArray,
debugTimerEnd,
debugTimerStart,
getDocumentNodeFromSchema,
isDocumentString,
parseGraphQLSDL,
Expand All @@ -28,9 +30,7 @@ export async function collectSources<TOptions>({
};
options: LoadTypedefsOptions<Partial<TOptions>>;
}): Promise<Source[]> {
if (env['DEBUG'] != null) {
console.time('@graphql-tools/load: collectSources');
}
debugTimerStart('@graphql-tools/load: collectSources');
const sources: Source[] = [];
const queue = useQueue<void>({ concurrency: CONCURRENCY_LIMIT });

Expand All @@ -42,9 +42,7 @@ export async function collectSources<TOptions>({
for (const pointer in pointerOptionMap) {
const pointerOptions = pointerOptionMap[pointer];

if (env['DEBUG'] != null) {
console.time(`@graphql-tools/load: collectSources ${pointer}`);
}
debugTimerStart(`@graphql-tools/load: collectSources ${pointer}`);
collect({
pointer,
pointerOptions,
Expand All @@ -53,18 +51,12 @@ export async function collectSources<TOptions>({
addSource,
queue: queue.add as AddToQueue<void>,
});
if (env['DEBUG'] != null) {
console.timeEnd(`@graphql-tools/load: collectSources ${pointer}`);
}
debugTimerEnd(`@graphql-tools/load: collectSources ${pointer}`);
}

if (env['DEBUG'] != null) {
console.time('@graphql-tools/load: collectSources queue');
}
debugTimerStart('@graphql-tools/load: collectSources queue');
await queue.runAll();
if (env['DEBUG'] != null) {
console.timeEnd('@graphql-tools/load: collectSources queue');
}
debugTimerEnd('@graphql-tools/load: collectSources queue');
return sources;
}

Expand All @@ -85,16 +77,12 @@ export function collectSourcesSync<TOptions>({
stack: [collectDocumentString, collectCustomLoaderSync, collectFallbackSync],
});

if (env['DEBUG'] != null) {
console.time('@graphql-tools/load: collectSourcesSync');
}
debugTimerStart('@graphql-tools/load: collectSourcesSync');

for (const pointer in pointerOptionMap) {
const pointerOptions = pointerOptionMap[pointer];

if (env['DEBUG'] != null) {
console.time(`@graphql-tools/load: collectSourcesSync ${pointer}`);
}
debugTimerStart(`@graphql-tools/load: collectSourcesSync ${pointer}`);
collect({
pointer,
pointerOptions,
Expand All @@ -103,19 +91,13 @@ export function collectSourcesSync<TOptions>({
addSource,
queue: queue.add,
});
if (env['DEBUG'] != null) {
console.timeEnd(`@graphql-tools/load: collectSourcesSync ${pointer}`);
}
debugTimerEnd(`@graphql-tools/load: collectSourcesSync ${pointer}`);
}

if (env['DEBUG'] != null) {
console.time('@graphql-tools/load: collectSourcesSync queue');
}
debugTimerStart('@graphql-tools/load: collectSourcesSync queue');
queue.runAll();
debugTimerEnd('@graphql-tools/load: collectSourcesSync queue');

if (env['DEBUG'] != null) {
console.timeEnd('@graphql-tools/load: collectSourcesSync queue');
}
return sources;
}

Expand Down Expand Up @@ -156,9 +138,7 @@ function addResultOfCustomLoader({
result: any;
addSource: AddSource;
}) {
if (env['DEBUG'] != null) {
console.time(`@graphql-tools/load: addResultOfCustomLoader ${pointer}`);
}
debugTimerStart(`@graphql-tools/load: addResultOfCustomLoader ${pointer}`);
if (isSchema(result)) {
addSource({
source: {
Expand Down Expand Up @@ -186,18 +166,14 @@ function addResultOfCustomLoader({
pointer,
});
}
if (env['DEBUG'] != null) {
console.timeEnd(`@graphql-tools/load: addResultOfCustomLoader ${pointer}`);
}
debugTimerEnd(`@graphql-tools/load: addResultOfCustomLoader ${pointer}`);
}

function collectDocumentString<T>(
{ pointer, pointerOptions, options, addSource, queue }: CollectOptions<T>,
next: StackNext,
) {
if (env['DEBUG'] != null) {
console.time(`@graphql-tools/load: collectDocumentString ${pointer}`);
}
debugTimerStart(`@graphql-tools/load: collectDocumentString ${pointer}`);
if (isDocumentString(pointer)) {
return queue(() => {
const source = parseGraphQLSDL(`${stringToHash(pointer)}.graphql`, pointer, {
Expand All @@ -211,9 +187,7 @@ function collectDocumentString<T>(
});
});
}
if (env['DEBUG'] != null) {
console.timeEnd(`@graphql-tools/load: collectDocumentString ${pointer}`);
}
debugTimerEnd(`@graphql-tools/load: collectDocumentString ${pointer}`);

next();
}
Expand All @@ -224,18 +198,14 @@ function collectCustomLoader<T>(
) {
if (pointerOptions.loader) {
return queue(async () => {
if (env['DEBUG'] != null) {
console.time(`@graphql-tools/load: collectCustomLoader ${pointer}`);
}
debugTimerStart(`@graphql-tools/load: collectCustomLoader ${pointer}`);
await Promise.all(asArray(pointerOptions.require).map(m => import(m)));
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore TODO options.cwd is possibly undefined, but it seems like no test covers this path
const loader = await useCustomLoader(pointerOptions.loader, options.cwd);
const result = await loader(pointer, { ...options, ...pointerOptions }, pointerOptionMap);

if (env['DEBUG'] != null) {
console.timeEnd(`@graphql-tools/load: collectCustomLoader ${pointer}`);
}
debugTimerEnd(`@graphql-tools/load: collectCustomLoader ${pointer}`);
if (!result) {
return;
}
Expand All @@ -253,9 +223,7 @@ function collectCustomLoaderSync<T>(
) {
if (pointerOptions.loader) {
return queue(() => {
if (env['DEBUG'] != null) {
console.time(`@graphql-tools/load: collectCustomLoaderSync ${pointer}`);
}
debugTimerStart(`@graphql-tools/load: collectCustomLoaderSync ${pointer}`);
const cwdRequire = createRequire(options.cwd || cwd());
for (const m of asArray(pointerOptions.require)) {
cwdRequire(m);
Expand All @@ -265,9 +233,7 @@ function collectCustomLoaderSync<T>(
const loader = useCustomLoaderSync(pointerOptions.loader, options.cwd);
const result = loader(pointer, { ...options, ...pointerOptions }, pointerOptionMap);

if (env['DEBUG'] != null) {
console.timeEnd(`@graphql-tools/load: collectCustomLoaderSync ${pointer}`);
}
debugTimerEnd(`@graphql-tools/load: collectCustomLoaderSync ${pointer}`);
if (result) {
addResultOfCustomLoader({ pointer, result, addSource });
}
Expand All @@ -285,9 +251,7 @@ function collectFallback<T>({
addSource,
}: CollectOptions<T>) {
return queue(async () => {
if (env['DEBUG'] != null) {
console.time(`@graphql-tools/load: collectFallback ${pointer}`);
}
debugTimerStart(`@graphql-tools/load: collectFallback ${pointer}`);
const sources = await loadFile(pointer, {
...options,
...pointerOptions,
Expand All @@ -298,9 +262,7 @@ function collectFallback<T>({
addSource({ source, pointer });
}
}
if (env['DEBUG'] != null) {
console.timeEnd(`@graphql-tools/load: collectFallback ${pointer}`);
}
debugTimerEnd(`@graphql-tools/load: collectFallback ${pointer}`);
});
}

Expand All @@ -312,9 +274,7 @@ function collectFallbackSync<T>({
addSource,
}: CollectOptions<T>) {
return queue(() => {
if (env['DEBUG'] != null) {
console.time(`@graphql-tools/load: collectFallbackSync ${pointer}`);
}
debugTimerStart(`@graphql-tools/load: collectFallbackSync ${pointer}`);
const sources = loadFileSync(pointer, {
...options,
...pointerOptions,
Expand All @@ -325,8 +285,6 @@ function collectFallbackSync<T>({
addSource({ source, pointer });
}
}
if (env['DEBUG'] != null) {
console.timeEnd(`@graphql-tools/load: collectFallbackSync ${pointer}`);
}
debugTimerEnd(`@graphql-tools/load: collectFallbackSync ${pointer}`);
});
}
18 changes: 5 additions & 13 deletions packages/load/src/load-typedefs/load-file.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
import { env } from 'process';
import { Source } from '@graphql-tools/utils';
import { debugTimerEnd, debugTimerStart, Source } from '@graphql-tools/utils';
import { LoadTypedefsOptions } from '../load-typedefs.js';

export async function loadFile(pointer: string, options: LoadTypedefsOptions): Promise<Source[]> {
if (env['DEBUG'] != null) {
console.time(`@graphql-tools/load: loadFile ${pointer}`);
}
debugTimerStart(`@graphql-tools/load: loadFile ${pointer}`);
let results = options.cache?.[pointer];

if (!results) {
Expand Down Expand Up @@ -47,17 +45,13 @@ export async function loadFile(pointer: string, options: LoadTypedefsOptions): P
}
}

if (env['DEBUG'] != null) {
console.timeEnd(`@graphql-tools/load: loadFile ${pointer}`);
}
debugTimerEnd(`@graphql-tools/load: loadFile ${pointer}`);

return results;
}

export function loadFileSync(pointer: string, options: LoadTypedefsOptions): Source[] {
if (env['DEBUG'] != null) {
console.time(`@graphql-tools/load: loadFileSync ${pointer}`);
}
debugTimerStart(`@graphql-tools/load: loadFileSync ${pointer}`);
let results = options.cache?.[pointer];

if (!results) {
Expand Down Expand Up @@ -99,9 +93,7 @@ export function loadFileSync(pointer: string, options: LoadTypedefsOptions): Sou
}
}

if (env['DEBUG'] != null) {
console.timeEnd(`@graphql-tools/load: loadFileSync ${pointer}`);
}
debugTimerEnd(`@graphql-tools/load: loadFileSync ${pointer}`);

return results;
}
Loading
Loading