@eddeee888/gcg-typescript-resolver-files 0.18.0 → 0.18.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/defineConfig.d.ts +1 -1
  2. package/dist/defineConfig.js +8 -0
  3. package/package.json +7 -3
  4. package/CHANGELOG.md +0 -816
  5. package/DEVELOPMENT.md +0 -49
  6. package/dist/tsconfig.lib.tsbuildinfo +0 -1
  7. package/eslint.config.mjs +0 -22
  8. package/project.json +0 -8
  9. package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.ts +0 -109
  10. package/src/addVirtualTypesFileToTsMorphProject/index.ts +0 -1
  11. package/src/defineConfig.spec.ts +0 -76
  12. package/src/defineConfig.ts +0 -37
  13. package/src/generateResolverFiles/addExternalResolverImport.ts +0 -185
  14. package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.spec.ts +0 -1174
  15. package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.ts +0 -144
  16. package/src/generateResolverFiles/addResolverMainFiles.ts +0 -343
  17. package/src/generateResolverFiles/ensureEnumTypeResolversAreGenerated.ts +0 -51
  18. package/src/generateResolverFiles/generateResolverFiles.ts +0 -148
  19. package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.spec.ts +0 -127
  20. package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.ts +0 -25
  21. package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.spec.ts +0 -147
  22. package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.ts +0 -34
  23. package/src/generateResolverFiles/handleGraphQLEnumType.ts +0 -100
  24. package/src/generateResolverFiles/handleGraphQLInterfaceType.ts +0 -70
  25. package/src/generateResolverFiles/handleGraphQLObjectType.ts +0 -171
  26. package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.ts +0 -105
  27. package/src/generateResolverFiles/handleGraphQLScalarType.ts +0 -81
  28. package/src/generateResolverFiles/handleGraphQLUnionType.ts +0 -68
  29. package/src/generateResolverFiles/index.ts +0 -2
  30. package/src/generateResolverFiles/postProcessFiles.ts +0 -287
  31. package/src/generateResolverFiles/types.ts +0 -203
  32. package/src/generateResolverFiles/visitNamedType.ts +0 -66
  33. package/src/generateTypeDefsFiles/generateTypeDefsContent.ts +0 -15
  34. package/src/generateTypeDefsFiles/generateTypeDefsFiles.ts +0 -100
  35. package/src/generateTypeDefsFiles/index.ts +0 -1
  36. package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.ts +0 -361
  37. package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.spec.ts +0 -115
  38. package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.ts +0 -88
  39. package/src/getGraphQLObjectTypeResolversToGenerate/index.ts +0 -1
  40. package/src/index.ts +0 -3
  41. package/src/normalizeAddConfigPath/index.ts +0 -1
  42. package/src/normalizeAddConfigPath/normalizeAddConfigPath.ts +0 -29
  43. package/src/parseGraphQLSchema/index.ts +0 -2
  44. package/src/parseGraphQLSchema/normalizeResolverName.ts +0 -28
  45. package/src/parseGraphQLSchema/parseGraphQLSchema.ts +0 -531
  46. package/src/parseGraphQLSchema/parseLocationForOutputDir.ts +0 -76
  47. package/src/parseSources/index.ts +0 -1
  48. package/src/parseSources/parseSources.ts +0 -83
  49. package/src/parseTypeMappers/collectTypeMappersFromSourceFile.spec.ts +0 -789
  50. package/src/parseTypeMappers/collectTypeMappersFromSourceFile.ts +0 -197
  51. package/src/parseTypeMappers/index.ts +0 -1
  52. package/src/parseTypeMappers/parseTypeMappers.ts +0 -75
  53. package/src/preset.ts +0 -317
  54. package/src/utils/cwd.ts +0 -8
  55. package/src/utils/fmt.ts +0 -16
  56. package/src/utils/index.ts +0 -12
  57. package/src/utils/isMatchResolverNamePattern.ts +0 -27
  58. package/src/utils/isNativeNamedType.ts +0 -21
  59. package/src/utils/isRootObjectType.ts +0 -8
  60. package/src/utils/isWhitelistedModule.spec.ts +0 -71
  61. package/src/utils/isWhitelistedModule.ts +0 -21
  62. package/src/utils/logger.ts +0 -14
  63. package/src/utils/normalizeImportExtension.spec.ts +0 -42
  64. package/src/utils/normalizeImportExtension.ts +0 -16
  65. package/src/utils/normalizeRelativePath.ts +0 -6
  66. package/src/utils/parseLocationForWhitelistedModule.spec.ts +0 -130
  67. package/src/utils/parseLocationForWhitelistedModule.ts +0 -38
  68. package/src/utils/printImportLine.spec.ts +0 -150
  69. package/src/utils/printImportLine.ts +0 -78
  70. package/src/utils/relativeModulePath.ts +0 -7
  71. package/src/validateAndMergeParsedConfigs/index.ts +0 -1
  72. package/src/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.spec.ts +0 -211
  73. package/src/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.ts +0 -92
  74. package/src/validatePresetConfig/index.ts +0 -1
  75. package/src/validatePresetConfig/validatePresetConfig.spec.ts +0 -706
  76. package/src/validatePresetConfig/validatePresetConfig.ts +0 -571
  77. package/tsconfig.json +0 -14
  78. package/tsconfig.lib.json +0 -18
  79. package/tsconfig.spec.json +0 -20
  80. package/vite.config.ts +0 -24
@@ -1,203 +0,0 @@
1
- import type { SourceFile, Project } from 'ts-morph';
2
- import type * as typeScriptResolversPlugin from '@graphql-codegen/typescript-resolvers';
3
- import type { GraphQLObjectTypeResolversToGenerate } from '../getGraphQLObjectTypeResolversToGenerate/index.js';
4
- import type { TypeMappersMap } from '../parseTypeMappers/index.js';
5
- import type {
6
- ImportExtension,
7
- ImportLineMeta,
8
- RootObjectType,
9
- } from '../utils/index.js';
10
- import type { ParsedPresetConfig } from '../validatePresetConfig/index.js';
11
- import type { NormalizedResolverName } from '../parseGraphQLSchema/index.js';
12
- import type { ParsedGraphQLSchemaMeta } from '../parseGraphQLSchema/index.js';
13
-
14
- export type GeneratedTypesFileMeta = {
15
- generatedResolverTypes: NonNullable<
16
- Awaited<ReturnType<typeof typeScriptResolversPlugin.plugin>>['meta']
17
- >['generatedResolverTypes'];
18
- };
19
-
20
- interface BaseVirtualFile {
21
- __filetype: string;
22
- filesystem: {
23
- type: 'virtual' | 'filesystem';
24
- contentUpdated: boolean;
25
- };
26
- content: string;
27
- mainImportIdentifier: string;
28
- }
29
-
30
- export interface StandardFile extends BaseVirtualFile {
31
- __filetype: 'file';
32
- }
33
-
34
- export interface InterfacelResolverFile extends BaseVirtualFile {
35
- __filetype: 'interfaceResolver';
36
- meta: {
37
- moduleName: string;
38
- relativePathFromBaseToModule: string[];
39
- resolverTypeImportDeclaration: string;
40
- variableStatement: string;
41
- resolverType: {
42
- baseImport: string; // e.g. `NodeResolvers`
43
- final: string;
44
- };
45
- normalizedResolverName: NormalizedResolverName;
46
- };
47
- }
48
-
49
- export interface UnionResolverFile extends BaseVirtualFile {
50
- __filetype: 'unionResolver';
51
- meta: {
52
- moduleName: string;
53
- relativePathFromBaseToModule: string[];
54
- resolverTypeImportDeclaration: string;
55
- variableStatement: string;
56
- resolverType: {
57
- baseImport: string; // e.g. `NodeResolvers`
58
- final: string;
59
- };
60
- normalizedResolverName: NormalizedResolverName;
61
- };
62
- }
63
-
64
- export interface ScalarResolverFile extends BaseVirtualFile {
65
- __filetype: 'scalarResolver';
66
- meta: {
67
- moduleName: string;
68
- relativePathFromBaseToModule: string[];
69
- resolverTypeImportDeclaration: string;
70
- variableStatement: string;
71
- resolverType: {
72
- baseImport: string; // e.g. `NodeResolvers`
73
- final: string;
74
- };
75
- normalizedResolverName: NormalizedResolverName;
76
- };
77
- }
78
-
79
- export interface EnumResolverFile extends BaseVirtualFile {
80
- __filetype: 'enumResolver';
81
- meta: {
82
- moduleName: string;
83
- relativePathFromBaseToModule: string[];
84
- resolverTypeImportDeclaration: string;
85
- variableStatement: string;
86
- resolverType: {
87
- baseImport: string; // e.g. `NodeResolvers`
88
- final: string;
89
- };
90
- normalizedResolverName: NormalizedResolverName;
91
- allowedValues: string[];
92
- };
93
- }
94
-
95
- export interface RootObjectTypeFieldResolverFile extends BaseVirtualFile {
96
- __filetype: 'rootObjectTypeFieldResolver';
97
- meta: {
98
- moduleName: string;
99
- relativePathFromBaseToModule: string[];
100
- belongsToRootObject: RootObjectType;
101
- resolverTypeImportDeclaration: string;
102
- variableStatement: string;
103
- resolverType: {
104
- baseImport: string; // e.g. `QueryResolvers`
105
- resolver: string; // e.g. `QueryResolvers['user']`
106
- final: string; // e.g. `NonNullable<<QueryResolvers['user']>`
107
- };
108
- normalizedResolverName: NormalizedResolverName;
109
- };
110
- }
111
-
112
- export interface ObjectTypeFile extends BaseVirtualFile {
113
- __filetype: 'objectType';
114
- meta: {
115
- moduleName: string;
116
- relativePathFromBaseToModule: string[];
117
- resolverTypeImportDeclaration: string;
118
- variableStatement: string;
119
- resolverType: {
120
- baseImport: string; // e.g. `UserResolvers`
121
- final: string; // e.g. `UserResolvers`, `Pick<UserResolvers, 'id'|'name'>`
122
- otherVariants: string[]; // e.g. `Pick<UserResolvers, |'id'|'name'>`
123
- };
124
- normalizedResolverName: NormalizedResolverName;
125
- resolversToGenerate?: GraphQLObjectTypeResolversToGenerate[number];
126
- };
127
- }
128
-
129
- export type ResolverFile =
130
- | RootObjectTypeFieldResolverFile
131
- | ObjectTypeFile
132
- | InterfacelResolverFile
133
- | UnionResolverFile
134
- | ScalarResolverFile
135
- | EnumResolverFile;
136
-
137
- export interface GenerateResolverFilesContext {
138
- config: {
139
- baseOutputDir: string;
140
- resolverTypesPath: string;
141
- resolverRelativeTargetDir: string;
142
- resolverMainFile: string;
143
- resolverMainFileMode: ParsedPresetConfig['resolverMainFileMode'];
144
- resolverGeneration: ParsedPresetConfig['resolverGeneration'];
145
- unmanagedResolvers: Record<string, string>;
146
- tsMorph: {
147
- project: Project;
148
- typesSourceFile: SourceFile;
149
- };
150
- typeMappersMap: TypeMappersMap;
151
- parsedGraphQLSchemaMeta: ParsedGraphQLSchemaMeta;
152
- graphQLObjectTypeResolversToGenerate: GraphQLObjectTypeResolversToGenerate;
153
- fixObjectTypeResolvers: ParsedPresetConfig['fixObjectTypeResolvers'];
154
- emitLegacyCommonJSImports: boolean;
155
- importExtension: ImportExtension;
156
- generatedTypesFileMeta: GeneratedTypesFileMeta;
157
- };
158
- result: {
159
- files: Record<string, StandardFile | ResolverFile>;
160
- externalImports: Record<
161
- string,
162
- {
163
- moduleName: string;
164
- relativePathFromBaseToModule: string[];
165
- importLineMeta: ImportLineMeta;
166
- identifierUsages: {
167
- identifierName: string;
168
- normalizedResolverName: string;
169
- }[];
170
- }
171
- >;
172
- };
173
- }
174
-
175
- export interface GraphQLTypeHandlerParams<BelongsToRootObject = null> {
176
- moduleName: string;
177
- relativePathFromBaseToModule: string[];
178
- fieldFilePath: string;
179
- resolverName: string;
180
- isFileAlreadyOnFilesystem: boolean;
181
- belongsToRootObject: BelongsToRootObject;
182
- normalizedResolverName: NormalizedResolverName;
183
- resolversTypeMeta: {
184
- // typeNamedImport: name of the type to be imported from `module`.
185
- // If it's a root object type field, this is the root type (e.g. Query, Mutation, Subscription).
186
- // Otherwise, it's the object type e.g. User, Profile, etc.
187
- typeNamedImport: string;
188
- // path to typescript-resolvers file
189
- module: ImportLineMeta['module'];
190
- moduleType: ImportLineMeta['moduleType'];
191
- // typeString: valid type specified for a field or object type
192
- typeString: string;
193
- };
194
- generatedTypesFileMeta: GeneratedTypesFileMeta;
195
- }
196
-
197
- export type GraphQLTypeHandler<
198
- BelongsToRootObject = null,
199
- ExtraParams = Record<string, unknown>
200
- > = (
201
- params: GraphQLTypeHandlerParams<BelongsToRootObject> & ExtraParams,
202
- ctx: GenerateResolverFilesContext
203
- ) => void;
@@ -1,66 +0,0 @@
1
- import type {
2
- GraphQLTypeHandler,
3
- GenerateResolverFilesContext,
4
- } from './types.js';
5
- import { addExternalResolverImport } from './addExternalResolverImport.js';
6
- import type { ResolverDetails } from '../parseGraphQLSchema/index.js';
7
-
8
- export const visitNamedType = <T = null>(
9
- {
10
- moduleName,
11
- relativePathFromBaseToModule,
12
- normalizedResolverName,
13
- resolverFile,
14
- relativePathToResolverTypesFile,
15
- typeNamedImport,
16
- typeString,
17
- belongsToRootObject,
18
- visitor,
19
- }: ResolverDetails & {
20
- belongsToRootObject: T;
21
- visitor: GraphQLTypeHandler<T>;
22
- },
23
- ctx: GenerateResolverFilesContext
24
- ): void => {
25
- const unmanagedResolversImportSyntax =
26
- ctx.config.unmanagedResolvers[normalizedResolverName.base];
27
- if (unmanagedResolversImportSyntax) {
28
- addExternalResolverImport(
29
- {
30
- moduleName,
31
- relativePathFromBaseToModule,
32
- normalizedResolverName: normalizedResolverName.base,
33
- configImportSyntax: unmanagedResolversImportSyntax,
34
- },
35
- ctx
36
- );
37
-
38
- return;
39
- }
40
-
41
- if (ctx.result.files[resolverFile.path]) {
42
- throw new Error(
43
- `Unexpected duplication in field filename. Type: ${resolverFile.name}, file: ${resolverFile.path}`
44
- );
45
- }
46
-
47
- visitor(
48
- {
49
- belongsToRootObject,
50
- fieldFilePath: resolverFile.path,
51
- isFileAlreadyOnFilesystem: resolverFile.isOnFilesystem,
52
- moduleName,
53
- normalizedResolverName,
54
- relativePathFromBaseToModule,
55
- resolverName: resolverFile.name,
56
- resolversTypeMeta: {
57
- module: relativePathToResolverTypesFile,
58
- moduleType: 'file',
59
- typeNamedImport: typeNamedImport(ctx.config.generatedTypesFileMeta),
60
- typeString: typeString(ctx.config.generatedTypesFileMeta),
61
- },
62
- generatedTypesFileMeta: ctx.config.generatedTypesFileMeta,
63
- },
64
- ctx
65
- );
66
- };
@@ -1,15 +0,0 @@
1
- import { mergeTypeDefs } from '@graphql-tools/merge';
2
-
3
- interface GenerateTypeDefsContentParams {
4
- mergedSDL: string;
5
- }
6
-
7
- export const generateTypeDefsContent = ({
8
- mergedSDL,
9
- }: GenerateTypeDefsContentParams): string => {
10
- const documentNode = mergeTypeDefs(mergedSDL, { noLocation: true });
11
- const documentNodeString = JSON.stringify(documentNode);
12
-
13
- return `import type { DocumentNode } from 'graphql';
14
- export const typeDefs = ${documentNodeString} as unknown as DocumentNode`;
15
- };
@@ -1,100 +0,0 @@
1
- import * as path from 'path';
2
- import type { StandardFile } from '../generateResolverFiles/index.js';
3
- import type { ParseSourcesResult } from '../parseSources/index.js';
4
- import { cwd, isWhitelistedModule } from '../utils/index.js';
5
- import type { TypeDefsFileMode } from '../validatePresetConfig/index.js';
6
- import { generateTypeDefsContent } from './generateTypeDefsContent.js';
7
-
8
- interface GenerateTypeDefsFilesParams {
9
- baseOutputDir: string;
10
- typeDefsFilePath: string;
11
- typeDefsFileMode: TypeDefsFileMode;
12
- sourceMap: ParseSourcesResult['sourceMap'];
13
- whitelistedModules: string[];
14
- blacklistedModules: string[];
15
- }
16
-
17
- export const generateTypeDefsFiles = ({
18
- baseOutputDir,
19
- typeDefsFilePath,
20
- typeDefsFileMode,
21
- sourceMap,
22
- blacklistedModules,
23
- whitelistedModules,
24
- }: GenerateTypeDefsFilesParams): Record<string, StandardFile> => {
25
- const filesContent: Record<string, string> = {};
26
- Object.values(sourceMap).forEach(({ moduleName, source, sourcePath }) => {
27
- const isWhitelisted = isWhitelistedModule({
28
- moduleName,
29
- whitelistedModules,
30
- blacklistedModules,
31
- });
32
-
33
- if (typeDefsFileMode === 'merged') {
34
- appendSDLToFile({
35
- filesContent,
36
- filePath: path.posix.join(baseOutputDir, typeDefsFilePath),
37
- rawSDL: source.rawSDL,
38
- });
39
- return;
40
- }
41
-
42
- if (isWhitelisted && typeDefsFileMode === 'mergedWhitelisted') {
43
- appendSDLToFile({
44
- filesContent,
45
- filePath: path.posix.join(baseOutputDir, typeDefsFilePath),
46
- rawSDL: source.rawSDL,
47
- });
48
- return;
49
- }
50
-
51
- if (isWhitelisted && typeDefsFileMode === 'modules') {
52
- // sourcePath.dir is absolute which does not work well to use as filenames for Windows
53
- // example of cases where it does not work:
54
- // - when `prettier` is run in afterAllFileWrite hooks with absolute Windows path
55
- const relativeSourcePathDir = path.posix.relative(cwd(), sourcePath.dir);
56
- appendSDLToFile({
57
- filesContent,
58
- filePath: path.posix.join(relativeSourcePathDir, typeDefsFilePath),
59
- rawSDL: source.rawSDL,
60
- });
61
- return;
62
- }
63
- });
64
-
65
- const result: Record<string, StandardFile> = {};
66
- Object.entries(filesContent).forEach(([filePath, content]) => {
67
- result[filePath] = {
68
- __filetype: 'file',
69
- // TODO: this is virtual so it will always re-generate
70
- // In the future, if no schema file changes, then we don't need to re-generate this file
71
- filesystem: {
72
- type: 'virtual',
73
- contentUpdated: false,
74
- },
75
- content: generateTypeDefsContent({ mergedSDL: content }),
76
- mainImportIdentifier: 'typeDefs',
77
- };
78
- });
79
-
80
- return result;
81
- };
82
-
83
- const appendSDLToFile = ({
84
- rawSDL,
85
- filePath,
86
- filesContent,
87
- }: {
88
- rawSDL: string | undefined;
89
- filePath: string;
90
- filesContent: Record<string, string>;
91
- }): void => {
92
- if (!rawSDL) {
93
- return;
94
- }
95
-
96
- if (!filesContent[filePath]) {
97
- filesContent[filePath] = '';
98
- }
99
- filesContent[filePath] += `${rawSDL}\n`;
100
- };
@@ -1 +0,0 @@
1
- export * from './generateTypeDefsFiles.js';