Skip to content

Commit b4c501c

Browse files
authored
Improve perf by avoid running preEmitDiagnostics per file (#344)
1 parent 4bf8ddf commit b4c501c

28 files changed

+1165
-753
lines changed

.changeset/gentle-students-invent.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@eddeee888/gcg-typescript-resolver-files': patch
3+
---
4+
5+
Update internals to use faster approach to run static analysis

packages/typescript-resolver-files-e2e/project.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
"rimraf -g \"packages/typescript-resolver-files-e2e/src/**/rslvrs/\"",
2525
"rimraf -g \"packages/typescript-resolver-files-e2e/src/**/*.generated.*\"",
2626
"rimraf -g \"packages/typescript-resolver-files-e2e/src/**/*.gen.*\"",
27-
"node packages/typescript-resolver-files-e2e/src/test-resolvers-auto-wireup/test-setup.js"
27+
"node packages/typescript-resolver-files-e2e/src/test-mappers-vs-schema-types/testSetup.js",
28+
"node packages/typescript-resolver-files-e2e/src/test-resolvers-auto-wireup/testSetup.js"
2829
],
2930
"parallel": false
3031
},
@@ -74,7 +75,8 @@
7475
"test-mappers-vs-schema-types": {
7576
"commands": [
7677
"rimraf -g \"packages/typescript-resolver-files-e2e/src/test-mappers-vs-schema-types/**/resolvers/\"",
77-
"rimraf -g \"packages/typescript-resolver-files-e2e/src/test-mappers-vs-schema-types/**/*.generated.*\""
78+
"rimraf -g \"packages/typescript-resolver-files-e2e/src/test-mappers-vs-schema-types/**/*.generated.*\"",
79+
"node packages/typescript-resolver-files-e2e/src/test-mappers-vs-schema-types/testSetup.js"
7880
],
7981
"parallel": false
8082
},
@@ -138,7 +140,7 @@
138140
"commands": [
139141
"rimraf -g \"packages/typescript-resolver-files-e2e/src/test-resolvers-auto-wireup/**/resolvers/\"",
140142
"rimraf -g \"packages/typescript-resolver-files-e2e/src/test-resolvers-auto-wireup/**/*.generated.*\"",
141-
"node packages/typescript-resolver-files-e2e/src/test-resolvers-auto-wireup/test-setup.js"
143+
"node packages/typescript-resolver-files-e2e/src/test-resolvers-auto-wireup/testSetup.js"
142144
],
143145
"parallel": false
144146
},

packages/typescript-resolver-files-e2e/src/test-mappers-vs-schema-types/modules/schema.generated.graphqls

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,11 @@ type Topic {
6868
createdAt: DateTime!
6969
creator: User!
7070
id: ID!
71+
likedBy: [User!]!
72+
likedByNullable: [User]
73+
mostRelatedTopic: Topic
7174
name: String!
75+
relatedTopics: [Topic!]!
7276
url: String
7377
}
7478

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,18 @@
11
import type { TopicResolvers } from './../../types.generated';
22
export const Topic: TopicResolvers = {
3-
/* Implement Topic resolver logic here */
3+
id: ({ id }) => id,
4+
createdAt: async (_parent, _arg, _ctx) => {
5+
/* existing implementation, must keep */
6+
return '2024-01-01T00:00:00.000Z';
7+
},
8+
creator: ({ creator }, _arg, _ctx) => {
9+
/* Topic.creator resolver is required because Topic.creator and TopicMapper.creator are not compatible */
10+
return creator;
11+
},
12+
name: async (_parent, _arg, _ctx) => {
13+
/* Topic.name resolver is required because Topic.name exists but TopicMapper.name does not */
14+
},
15+
url: async (_parent, _arg, _ctx) => {
16+
/* Topic.url resolver is required because Topic.url exists but TopicMapper.url does not */
17+
},
418
};

packages/typescript-resolver-files-e2e/src/test-mappers-vs-schema-types/modules/topic/topic.graphqls

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,14 @@ extend type Mutation {
1212

1313
type Topic {
1414
id: ID!
15+
createdAt: DateTime!
16+
creator: User!
17+
likedBy: [User!]!
18+
likedByNullable: [User]
19+
mostRelatedTopic: Topic
1520
name: String!
21+
relatedTopics: [Topic!]!
1622
url: String
17-
creator: User!
18-
createdAt: DateTime!
1923
}
2024

2125
type TopicByIdResult {
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import type { UserMapper } from '../user/user.graphqls.mappers';
2+
3+
export type TopicMapper = {
4+
id: string;
5+
creator: string;
6+
mostRelatedTopic?: TopicMapper;
7+
relatedTopics: TopicMapper[];
8+
likedBy: UserMapper[];
9+
likedByNullable: null;
10+
};

packages/typescript-resolver-files-e2e/src/test-mappers-vs-schema-types/modules/typeDefs.generated.ts

Lines changed: 62 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -388,47 +388,102 @@ export const typeDefs = {
388388
},
389389
{
390390
kind: 'FieldDefinition',
391-
name: { kind: 'Name', value: 'name' },
391+
name: { kind: 'Name', value: 'createdAt' },
392392
arguments: [],
393393
type: {
394394
kind: 'NonNullType',
395395
type: {
396396
kind: 'NamedType',
397-
name: { kind: 'Name', value: 'String' },
397+
name: { kind: 'Name', value: 'DateTime' },
398398
},
399399
},
400400
directives: [],
401401
},
402402
{
403403
kind: 'FieldDefinition',
404-
name: { kind: 'Name', value: 'url' },
404+
name: { kind: 'Name', value: 'creator' },
405405
arguments: [],
406-
type: { kind: 'NamedType', name: { kind: 'Name', value: 'String' } },
406+
type: {
407+
kind: 'NonNullType',
408+
type: { kind: 'NamedType', name: { kind: 'Name', value: 'User' } },
409+
},
407410
directives: [],
408411
},
409412
{
410413
kind: 'FieldDefinition',
411-
name: { kind: 'Name', value: 'creator' },
414+
name: { kind: 'Name', value: 'likedBy' },
412415
arguments: [],
413416
type: {
414417
kind: 'NonNullType',
418+
type: {
419+
kind: 'ListType',
420+
type: {
421+
kind: 'NonNullType',
422+
type: {
423+
kind: 'NamedType',
424+
name: { kind: 'Name', value: 'User' },
425+
},
426+
},
427+
},
428+
},
429+
directives: [],
430+
},
431+
{
432+
kind: 'FieldDefinition',
433+
name: { kind: 'Name', value: 'likedByNullable' },
434+
arguments: [],
435+
type: {
436+
kind: 'ListType',
415437
type: { kind: 'NamedType', name: { kind: 'Name', value: 'User' } },
416438
},
417439
directives: [],
418440
},
419441
{
420442
kind: 'FieldDefinition',
421-
name: { kind: 'Name', value: 'createdAt' },
443+
name: { kind: 'Name', value: 'mostRelatedTopic' },
444+
arguments: [],
445+
type: { kind: 'NamedType', name: { kind: 'Name', value: 'Topic' } },
446+
directives: [],
447+
},
448+
{
449+
kind: 'FieldDefinition',
450+
name: { kind: 'Name', value: 'name' },
422451
arguments: [],
423452
type: {
424453
kind: 'NonNullType',
425454
type: {
426455
kind: 'NamedType',
427-
name: { kind: 'Name', value: 'DateTime' },
456+
name: { kind: 'Name', value: 'String' },
428457
},
429458
},
430459
directives: [],
431460
},
461+
{
462+
kind: 'FieldDefinition',
463+
name: { kind: 'Name', value: 'relatedTopics' },
464+
arguments: [],
465+
type: {
466+
kind: 'NonNullType',
467+
type: {
468+
kind: 'ListType',
469+
type: {
470+
kind: 'NonNullType',
471+
type: {
472+
kind: 'NamedType',
473+
name: { kind: 'Name', value: 'Topic' },
474+
},
475+
},
476+
},
477+
},
478+
directives: [],
479+
},
480+
{
481+
kind: 'FieldDefinition',
482+
name: { kind: 'Name', value: 'url' },
483+
arguments: [],
484+
type: { kind: 'NamedType', name: { kind: 'Name', value: 'String' } },
485+
directives: [],
486+
},
432487
],
433488
},
434489
{

packages/typescript-resolver-files-e2e/src/test-mappers-vs-schema-types/modules/types.generated.ts

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
ProfileMetaMapper,
1111
} from './user/profile.mappers';
1212
import { CatMapper, DogMapper } from './pet/schema.mappers';
13+
import { TopicMapper } from './topic/topic.mappers';
1314
import { UserMapper } from './user/user.graphqls.mappers';
1415
export type Maybe<T> = T | null | undefined;
1516
export type InputMaybe<T> = T | null | undefined;
@@ -145,7 +146,11 @@ export type Topic = {
145146
createdAt: Scalars['DateTime']['output'];
146147
creator: User;
147148
id: Scalars['ID']['output'];
149+
likedBy: Array<User>;
150+
likedByNullable?: Maybe<Array<Maybe<User>>>;
151+
mostRelatedTopic?: Maybe<Topic>;
148152
name: Scalars['String']['output'];
153+
relatedTopics: Array<Topic>;
149154
url?: Maybe<Scalars['String']['output']>;
150155
};
151156

@@ -371,9 +376,7 @@ export type ResolversTypes = {
371376
ProfileMeta: ResolverTypeWrapper<ProfileMetaMapper>;
372377
Query: ResolverTypeWrapper<{}>;
373378
Subscription: ResolverTypeWrapper<{}>;
374-
Topic: ResolverTypeWrapper<
375-
Omit<Topic, 'creator'> & { creator: ResolversTypes['User'] }
376-
>;
379+
Topic: ResolverTypeWrapper<TopicMapper>;
377380
TopicByIdPayload: ResolverTypeWrapper<
378381
ResolversUnionTypes<ResolversTypes>['TopicByIdPayload']
379382
>;
@@ -433,7 +436,7 @@ export type ResolversParentTypes = {
433436
ProfileMeta: ProfileMetaMapper;
434437
Query: {};
435438
Subscription: {};
436-
Topic: Omit<Topic, 'creator'> & { creator: ResolversParentTypes['User'] };
439+
Topic: TopicMapper;
437440
TopicByIdPayload: ResolversUnionTypes<ResolversParentTypes>['TopicByIdPayload'];
438441
TopicByIdResult: Omit<TopicByIdResult, 'result'> & {
439442
result?: Maybe<ResolversParentTypes['Topic']>;
@@ -605,7 +608,23 @@ export type TopicResolvers<
605608
createdAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>;
606609
creator?: Resolver<ResolversTypes['User'], ParentType, ContextType>;
607610
id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
611+
likedBy?: Resolver<Array<ResolversTypes['User']>, ParentType, ContextType>;
612+
likedByNullable?: Resolver<
613+
Maybe<Array<Maybe<ResolversTypes['User']>>>,
614+
ParentType,
615+
ContextType
616+
>;
617+
mostRelatedTopic?: Resolver<
618+
Maybe<ResolversTypes['Topic']>,
619+
ParentType,
620+
ContextType
621+
>;
608622
name?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
623+
relatedTopics?: Resolver<
624+
Array<ResolversTypes['Topic']>,
625+
ParentType,
626+
ContextType
627+
>;
609628
url?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
610629
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
611630
};
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
const { createTestSetup } = require('../utils/createTestSetup');
2+
3+
createTestSetup({
4+
baseDir:
5+
'packages/typescript-resolver-files-e2e/src/test-mappers-vs-schema-types/',
6+
files: [
7+
{
8+
file: 'modules/topic/resolvers/Topic.ts',
9+
content: `import type { TopicResolvers } from './../../types.generated';
10+
export const Topic: TopicResolvers = {
11+
id: ({ id }) => id,
12+
createdAt: async (_parent, _arg, _ctx) => {
13+
/* existing implementation, must keep */
14+
return '2024-01-01T00:00:00.000Z';
15+
},
16+
};`,
17+
},
18+
],
19+
});

0 commit comments

Comments
 (0)