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

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 (78) hide show
  1. package/package.json +6 -2
  2. package/CHANGELOG.md +0 -816
  3. package/DEVELOPMENT.md +0 -49
  4. package/dist/tsconfig.lib.tsbuildinfo +0 -1
  5. package/eslint.config.mjs +0 -22
  6. package/project.json +0 -8
  7. package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.ts +0 -109
  8. package/src/addVirtualTypesFileToTsMorphProject/index.ts +0 -1
  9. package/src/defineConfig.spec.ts +0 -76
  10. package/src/defineConfig.ts +0 -37
  11. package/src/generateResolverFiles/addExternalResolverImport.ts +0 -185
  12. package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.spec.ts +0 -1174
  13. package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.ts +0 -144
  14. package/src/generateResolverFiles/addResolverMainFiles.ts +0 -343
  15. package/src/generateResolverFiles/ensureEnumTypeResolversAreGenerated.ts +0 -51
  16. package/src/generateResolverFiles/generateResolverFiles.ts +0 -148
  17. package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.spec.ts +0 -127
  18. package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.ts +0 -25
  19. package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.spec.ts +0 -147
  20. package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.ts +0 -34
  21. package/src/generateResolverFiles/handleGraphQLEnumType.ts +0 -100
  22. package/src/generateResolverFiles/handleGraphQLInterfaceType.ts +0 -70
  23. package/src/generateResolverFiles/handleGraphQLObjectType.ts +0 -171
  24. package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.ts +0 -105
  25. package/src/generateResolverFiles/handleGraphQLScalarType.ts +0 -81
  26. package/src/generateResolverFiles/handleGraphQLUnionType.ts +0 -68
  27. package/src/generateResolverFiles/index.ts +0 -2
  28. package/src/generateResolverFiles/postProcessFiles.ts +0 -287
  29. package/src/generateResolverFiles/types.ts +0 -203
  30. package/src/generateResolverFiles/visitNamedType.ts +0 -66
  31. package/src/generateTypeDefsFiles/generateTypeDefsContent.ts +0 -15
  32. package/src/generateTypeDefsFiles/generateTypeDefsFiles.ts +0 -100
  33. package/src/generateTypeDefsFiles/index.ts +0 -1
  34. package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.ts +0 -361
  35. package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.spec.ts +0 -115
  36. package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.ts +0 -88
  37. package/src/getGraphQLObjectTypeResolversToGenerate/index.ts +0 -1
  38. package/src/index.ts +0 -3
  39. package/src/normalizeAddConfigPath/index.ts +0 -1
  40. package/src/normalizeAddConfigPath/normalizeAddConfigPath.ts +0 -29
  41. package/src/parseGraphQLSchema/index.ts +0 -2
  42. package/src/parseGraphQLSchema/normalizeResolverName.ts +0 -28
  43. package/src/parseGraphQLSchema/parseGraphQLSchema.ts +0 -531
  44. package/src/parseGraphQLSchema/parseLocationForOutputDir.ts +0 -76
  45. package/src/parseSources/index.ts +0 -1
  46. package/src/parseSources/parseSources.ts +0 -83
  47. package/src/parseTypeMappers/collectTypeMappersFromSourceFile.spec.ts +0 -789
  48. package/src/parseTypeMappers/collectTypeMappersFromSourceFile.ts +0 -197
  49. package/src/parseTypeMappers/index.ts +0 -1
  50. package/src/parseTypeMappers/parseTypeMappers.ts +0 -75
  51. package/src/preset.ts +0 -317
  52. package/src/utils/cwd.ts +0 -8
  53. package/src/utils/fmt.ts +0 -16
  54. package/src/utils/index.ts +0 -12
  55. package/src/utils/isMatchResolverNamePattern.ts +0 -27
  56. package/src/utils/isNativeNamedType.ts +0 -21
  57. package/src/utils/isRootObjectType.ts +0 -8
  58. package/src/utils/isWhitelistedModule.spec.ts +0 -71
  59. package/src/utils/isWhitelistedModule.ts +0 -21
  60. package/src/utils/logger.ts +0 -14
  61. package/src/utils/normalizeImportExtension.spec.ts +0 -42
  62. package/src/utils/normalizeImportExtension.ts +0 -16
  63. package/src/utils/normalizeRelativePath.ts +0 -6
  64. package/src/utils/parseLocationForWhitelistedModule.spec.ts +0 -130
  65. package/src/utils/parseLocationForWhitelistedModule.ts +0 -38
  66. package/src/utils/printImportLine.spec.ts +0 -150
  67. package/src/utils/printImportLine.ts +0 -78
  68. package/src/utils/relativeModulePath.ts +0 -7
  69. package/src/validateAndMergeParsedConfigs/index.ts +0 -1
  70. package/src/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.spec.ts +0 -211
  71. package/src/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.ts +0 -92
  72. package/src/validatePresetConfig/index.ts +0 -1
  73. package/src/validatePresetConfig/validatePresetConfig.spec.ts +0 -706
  74. package/src/validatePresetConfig/validatePresetConfig.ts +0 -571
  75. package/tsconfig.json +0 -14
  76. package/tsconfig.lib.json +0 -18
  77. package/tsconfig.spec.json +0 -20
  78. 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';