@eddeee888/gcg-typescript-resolver-files 0.8.1 → 0.9.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 (44) hide show
  1. package/package.json +1 -1
  2. package/src/defineConfig.d.ts +2 -1
  3. package/src/defineConfig.js +2 -1
  4. package/src/defineConfig.js.map +1 -1
  5. package/src/generateResolverFiles/generateResolverFiles.js +29 -82
  6. package/src/generateResolverFiles/generateResolverFiles.js.map +1 -1
  7. package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.d.ts +5 -0
  8. package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.js +20 -0
  9. package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.js.map +1 -0
  10. package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.js +4 -4
  11. package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.js.map +1 -1
  12. package/src/generateResolverFiles/handleGraphQLInterfaceType.js +16 -10
  13. package/src/generateResolverFiles/handleGraphQLInterfaceType.js.map +1 -1
  14. package/src/generateResolverFiles/handleGraphQLObjectType.js +17 -10
  15. package/src/generateResolverFiles/handleGraphQLObjectType.js.map +1 -1
  16. package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.js +21 -12
  17. package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.js.map +1 -1
  18. package/src/generateResolverFiles/handleGraphQLScalarType.js +17 -11
  19. package/src/generateResolverFiles/handleGraphQLScalarType.js.map +1 -1
  20. package/src/generateResolverFiles/handleGraphQLUnionType.js +16 -10
  21. package/src/generateResolverFiles/handleGraphQLUnionType.js.map +1 -1
  22. package/src/generateResolverFiles/postProcessFiles.js +11 -3
  23. package/src/generateResolverFiles/postProcessFiles.js.map +1 -1
  24. package/src/generateResolverFiles/types.d.ts +21 -13
  25. package/src/generateResolverFiles/visitNamedType.d.ts +5 -20
  26. package/src/generateResolverFiles/visitNamedType.js +15 -115
  27. package/src/generateResolverFiles/visitNamedType.js.map +1 -1
  28. package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.d.ts +2 -1
  29. package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js.map +1 -1
  30. package/src/parseGraphQLSchema/index.d.ts +1 -0
  31. package/src/parseGraphQLSchema/normalizeResolverName.d.ts +15 -0
  32. package/src/parseGraphQLSchema/normalizeResolverName.js +21 -0
  33. package/src/parseGraphQLSchema/normalizeResolverName.js.map +1 -0
  34. package/src/parseGraphQLSchema/parseGraphQLSchema.d.ts +37 -3
  35. package/src/parseGraphQLSchema/parseGraphQLSchema.js +177 -10
  36. package/src/parseGraphQLSchema/parseGraphQLSchema.js.map +1 -1
  37. package/src/parseGraphQLSchema/parseLocationForOutputDir.d.ts +24 -0
  38. package/src/parseGraphQLSchema/parseLocationForOutputDir.js +40 -0
  39. package/src/parseGraphQLSchema/parseLocationForOutputDir.js.map +1 -0
  40. package/src/preset.js +18 -15
  41. package/src/preset.js.map +1 -1
  42. package/src/validatePresetConfig/validatePresetConfig.d.ts +1 -1
  43. package/src/validatePresetConfig/validatePresetConfig.js +13 -1
  44. package/src/validatePresetConfig/validatePresetConfig.js.map +1 -1
@@ -6,6 +6,7 @@ const path = tslib_1.__importStar(require("path"));
6
6
  const utils_1 = require("../utils");
7
7
  const getVariableStatementWithExpectedIdentifier_1 = require("./getVariableStatementWithExpectedIdentifier");
8
8
  const ensureObjectTypeResolversAreGenerated_1 = require("./ensureObjectTypeResolversAreGenerated");
9
+ const getImportStatementWithExpectedNamedImport_1 = require("./getImportStatementWithExpectedNamedImport");
9
10
  /**
10
11
  * postProcessFiles does static analysis on existing files OR to-be-generated files
11
12
  * e.g.
@@ -37,8 +38,7 @@ const postProcessFiles = ({ config: { tsMorph: { project }, fixObjectTypeResolve
37
38
  });
38
39
  sourceFilesToProcess.forEach(({ sourceFile, resolverFile }) => {
39
40
  const normalizedRelativePath = path.posix.relative((0, utils_1.cwd)(), sourceFile.getFilePath());
40
- // TODO: Check missing import
41
- // ...
41
+ ensureImportedType(sourceFile, resolverFile);
42
42
  ensureExportedResolver(sourceFile, resolverFile);
43
43
  if (fixObjectTypeResolvers === 'smart' &&
44
44
  resolverFile.__filetype === 'objectType') {
@@ -56,7 +56,6 @@ const ensureExportedResolver = (sourceFile, resolverFile) => {
56
56
  const { variableStatement, isExported } = (0, getVariableStatementWithExpectedIdentifier_1.getVariableStatementWithExpectedIdentifier)(sourceFile, resolverFile);
57
57
  if (!variableStatement) {
58
58
  // Did not find variable statement with expected identifier, add it to the end with a warning
59
- sourceFile.addStatements('/* WARNING: The following resolver was missing from this file. Make sure it is properly implemented or there could be runtime errors. */');
60
59
  sourceFile.addStatements(resolverFile.meta.variableStatement);
61
60
  }
62
61
  else if (variableStatement && !isExported) {
@@ -71,4 +70,13 @@ const ensureExportedResolver = (sourceFile, resolverFile) => {
71
70
  // else, if identifier's been exported do nothing
72
71
  }
73
72
  };
73
+ /**
74
+ * Ensure correctly imported resolves type generated by typescript-resolvers plugin
75
+ */
76
+ const ensureImportedType = (sourceFile, resolverFile) => {
77
+ const { importDeclaration } = (0, getImportStatementWithExpectedNamedImport_1.getImportStatementWithExpectedNamedImport)(sourceFile, resolverFile);
78
+ if (!importDeclaration) {
79
+ sourceFile.insertStatements(0, resolverFile.meta.resolverTypeImportDeclaration);
80
+ }
81
+ };
74
82
  //# sourceMappingURL=postProcessFiles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"postProcessFiles.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/postProcessFiles.ts"],"names":[],"mappings":";;;;AACA,mDAA6B;AAC7B,oCAA+B;AAE/B,6GAA0G;AAC1G,mGAAgG;AAEhG;;;;;GAKG;AACI,MAAM,gBAAgB,GAAG,CAAC,EAC/B,MAAM,EAAE,EACN,OAAO,EAAE,EAAE,OAAO,EAAE,EACpB,sBAAsB,GACvB,EACD,MAAM,GACuB,EAAQ,EAAE;IACvC,MAAM,oBAAoB,GAGpB,EAAE,CAAC;IACT,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;QACxD,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,kBAAkB,GAAG,OAAO,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QACzE,IAAI,kBAAkB,EAAE,CAAC;YACvB,oBAAoB,CAAC,IAAI,CAAC;gBACxB,UAAU,EAAE,kBAAkB;gBAC9B,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,uGAAuG;QACvG,IAAI,IAAI,CAAC,UAAU,KAAK,YAAY,EAAE,CAAC;YACrC,MAAM,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAChD,QAAQ,EACR,IAAI,CAAC,OAAO,CACb,CAAC;YACF,oBAAoB,CAAC,IAAI,CAAC;gBACxB,UAAU,EAAE,iBAAiB;gBAC7B,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,oBAAoB,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE;QAC5D,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAChD,IAAA,WAAG,GAAE,EACL,UAAU,CAAC,WAAW,EAAE,CACzB,CAAC;QAEF,6BAA6B;QAC7B,MAAM;QAEN,sBAAsB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACjD,IACE,sBAAsB,KAAK,OAAO;YAClC,YAAY,CAAC,UAAU,KAAK,YAAY,EACxC,CAAC;YACD,IAAA,6EAAqC,EAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAClE,CAAC;QAED,sCAAsC;QACtC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,mCAC/B,YAAY,KACf,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,GAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA7DW,QAAA,gBAAgB,oBA6D3B;AAEF;;GAEG;AACH,MAAM,sBAAsB,GAAG,CAC7B,UAAsB,EACtB,YAA0B,EACpB,EAAE;IACR,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,GACrC,IAAA,uFAA0C,EAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAEvE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,6FAA6F;QAC7F,UAAU,CAAC,aAAa,CACtB,0IAA0I,CAC3I,CAAC;QACF,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChE,CAAC;SAAM,IAAI,iBAAiB,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5C,qCAAqC;QACrC,kCAAkC;QAClC,MAAM,4BAA4B,GAAG,OAAO,CAC1C,UAAU;aACP,uBAAuB,EAAE;aACzB,GAAG,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAC1C,CAAC;QACF,IAAI,CAAC,4BAA4B,EAAE,CAAC;YAClC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QACD,iDAAiD;IACnD,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"postProcessFiles.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/postProcessFiles.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,10 @@
1
- import type { GraphQLSchema } from 'graphql';
2
1
  import type { SourceFile, Project } from 'ts-morph';
3
2
  import type { GraphQLObjectTypeResolversToGenerate } from '../getGraphQLObjectTypeResolversToGenerate';
4
3
  import type { TypeMappersMap } from '../parseTypeMappers';
5
- import type { ParseSourcesResult } from '../parseSources';
6
4
  import type { ImportLineMeta, RootObjectType } from '../utils';
7
5
  import type { ParsedPresetConfig } from '../validatePresetConfig';
8
- import type { NormalizedResolverName } from './visitNamedType';
6
+ import type { NormalizedResolverName } from '../parseGraphQLSchema';
7
+ import type { ParsedGraphQLSchemaMeta } from '../parseGraphQLSchema';
9
8
  interface BaseVirtualFile {
10
9
  __filetype: string;
11
10
  content: string;
@@ -19,8 +18,12 @@ export interface GeneralResolverFile extends BaseVirtualFile {
19
18
  meta: {
20
19
  moduleName: string;
21
20
  relativePathFromBaseToModule: string[];
21
+ resolverTypeImportDeclaration: string;
22
22
  variableStatement: string;
23
- resolverTypeString: string | null;
23
+ resolverType: {
24
+ baseImport: string;
25
+ final: string;
26
+ };
24
27
  normalizedResolverName: NormalizedResolverName;
25
28
  };
26
29
  }
@@ -30,8 +33,13 @@ export interface RootObjectTypeFieldResolverFile extends BaseVirtualFile {
30
33
  moduleName: string;
31
34
  relativePathFromBaseToModule: string[];
32
35
  belongsToRootObject: RootObjectType;
36
+ resolverTypeImportDeclaration: string;
33
37
  variableStatement: string;
34
- resolverTypeString: string;
38
+ resolverType: {
39
+ baseImport: string;
40
+ resolver: string;
41
+ final: string;
42
+ };
35
43
  normalizedResolverName: NormalizedResolverName;
36
44
  };
37
45
  }
@@ -40,8 +48,12 @@ export interface ObjectTypeFile extends BaseVirtualFile {
40
48
  meta: {
41
49
  moduleName: string;
42
50
  relativePathFromBaseToModule: string[];
51
+ resolverTypeImportDeclaration: string;
43
52
  variableStatement: string;
44
- resolverTypeString: string;
53
+ resolverType: {
54
+ baseImport: string;
55
+ final: string;
56
+ };
45
57
  normalizedResolverName: NormalizedResolverName;
46
58
  resolversToGenerate?: GraphQLObjectTypeResolversToGenerate[number];
47
59
  };
@@ -49,27 +61,22 @@ export interface ObjectTypeFile extends BaseVirtualFile {
49
61
  export type ResolverFile = GeneralResolverFile | RootObjectTypeFieldResolverFile | ObjectTypeFile;
50
62
  export interface GenerateResolverFilesContext {
51
63
  config: {
52
- schema: GraphQLSchema;
53
- sourceMap: ParseSourcesResult['sourceMap'];
54
64
  baseOutputDir: string;
55
65
  resolverTypesPath: string;
56
66
  resolverRelativeTargetDir: string;
57
67
  resolverMainFile: string;
58
68
  resolverMainFileMode: ParsedPresetConfig['resolverMainFileMode'];
59
69
  resolverGeneration: ParsedPresetConfig['resolverGeneration'];
60
- mode: ParsedPresetConfig['mode'];
61
- whitelistedModules: string[];
62
- blacklistedModules: string[];
63
70
  externalResolvers: Record<string, string>;
64
71
  tsMorph: {
65
72
  project: Project;
66
73
  typesSourceFile: SourceFile;
67
74
  };
68
75
  typeMappersMap: TypeMappersMap;
76
+ parsedGraphQLSchemaMeta: ParsedGraphQLSchemaMeta;
69
77
  graphQLObjectTypeResolversToGenerate: GraphQLObjectTypeResolversToGenerate;
70
78
  fixObjectTypeResolvers: ParsedPresetConfig['fixObjectTypeResolvers'];
71
79
  emitLegacyCommonJSImports: boolean;
72
- federationEnabled: boolean;
73
80
  };
74
81
  result: {
75
82
  files: Record<string, StandardFile | ResolverFile>;
@@ -89,10 +96,11 @@ export interface GraphQLTypeHandlerParams<BelongsToRootObject = null> {
89
96
  relativePathFromBaseToModule: string[];
90
97
  fieldFilePath: string;
91
98
  resolverName: string;
99
+ isFileAlreadyOnFilesystem: boolean;
92
100
  belongsToRootObject: BelongsToRootObject;
93
101
  normalizedResolverName: NormalizedResolverName;
94
102
  resolversTypeMeta: {
95
- typeNamedImport: `${string}Resolvers`;
103
+ typeNamedImport: string;
96
104
  module: ImportLineMeta['module'];
97
105
  moduleType: ImportLineMeta['moduleType'];
98
106
  typeString: string;
@@ -1,21 +1,6 @@
1
- import { type GraphQLNamedType, type Location } from 'graphql';
2
- import { type RootObjectType } from '../utils';
3
1
  import type { GraphQLTypeHandler, GenerateResolverFilesContext } from './types';
4
- export interface VisitNamedTypeParams {
5
- namedType: GraphQLNamedType;
6
- resolverName: string;
7
- belongsToRootObject: RootObjectType | null;
8
- visitor: {
9
- RootObjectTypeField: GraphQLTypeHandler<RootObjectType>;
10
- ObjectType: GraphQLTypeHandler;
11
- ScalarType: GraphQLTypeHandler;
12
- UnionType: GraphQLTypeHandler;
13
- InterfaceType: GraphQLTypeHandler;
14
- };
15
- location?: Location;
16
- }
17
- export declare const visitNamedType: <P extends Record<string, unknown>>({ namedType, resolverName, belongsToRootObject, location, visitor, ...extraParams }: VisitNamedTypeParams & P, ctx: GenerateResolverFilesContext) => void;
18
- export interface NormalizedResolverName {
19
- base: string;
20
- withModule: string;
21
- }
2
+ import type { ResolverDetails } from '../parseGraphQLSchema';
3
+ export declare const visitNamedType: <T = null>({ moduleName, relativePathFromBaseToModule, normalizedResolverName, resolverFile, relativePathToResolverTypesFile, typeNamedImport, typeString, belongsToRootObject, visitor, }: ResolverDetails & {
4
+ belongsToRootObject: T;
5
+ visitor: GraphQLTypeHandler<T>;
6
+ }, ctx: GenerateResolverFilesContext) => void;
@@ -1,21 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.visitNamedType = void 0;
4
- const tslib_1 = require("tslib");
5
- const path = tslib_1.__importStar(require("path"));
6
- const graphql_1 = require("graphql");
7
- const utils_1 = require("../utils");
8
4
  const addExternalResolverImport_1 = require("./addExternalResolverImport");
9
- const visitNamedType = (_a, ctx) => {
10
- var { namedType, resolverName, belongsToRootObject, location, visitor } = _a, extraParams = tslib_1.__rest(_a, ["namedType", "resolverName", "belongsToRootObject", "location", "visitor"]);
11
- // Check to see if need to generate resolver files
12
- const parsedDetails = parseLocationForOutputDir(belongsToRootObject ? [belongsToRootObject] : [], ctx, location);
13
- if (!parsedDetails) {
14
- // No `parsedDetails` means the location is NOT whitelisted, ignore.
15
- return;
16
- }
17
- const { moduleName, resolversOutputDir, relativePathFromBaseToModule } = parsedDetails;
18
- const normalizedResolverName = normalizeResolverName(moduleName, resolverName, belongsToRootObject);
5
+ const visitNamedType = ({ moduleName, relativePathFromBaseToModule, normalizedResolverName, resolverFile, relativePathToResolverTypesFile, typeNamedImport, typeString, belongsToRootObject, visitor, }, ctx) => {
19
6
  const externalResolverImportSyntax = ctx.config.externalResolvers[normalizedResolverName.base];
20
7
  // when used with extended object types scenario
21
8
  if (externalResolverImportSyntax) {
@@ -28,111 +15,24 @@ const visitNamedType = (_a, ctx) => {
28
15
  }, ctx);
29
16
  return;
30
17
  }
31
- // Generate resolver files based on its type
32
- const visitorHandlerParamsBase = validateAndPrepareForGraphQLTypeHandler({
33
- resolverName,
34
- normalizedResolverName,
35
- resolversOutputDir,
18
+ if (ctx.result.files[resolverFile.path]) {
19
+ throw new Error(`Unexpected duplication in field filename. Type: ${resolverFile.name}, file: ${resolverFile.path}`);
20
+ }
21
+ visitor({
36
22
  belongsToRootObject,
23
+ fieldFilePath: resolverFile.path,
24
+ isFileAlreadyOnFilesystem: resolverFile.isOnFilesystem,
37
25
  moduleName,
26
+ normalizedResolverName,
38
27
  relativePathFromBaseToModule,
28
+ resolverName: resolverFile.name,
29
+ resolversTypeMeta: {
30
+ module: relativePathToResolverTypesFile,
31
+ moduleType: 'file',
32
+ typeNamedImport,
33
+ typeString,
34
+ },
39
35
  }, ctx);
40
- const visitorHandlerParams = Object.assign(Object.assign({}, visitorHandlerParamsBase), extraParams);
41
- if (visitorHandlerParams.belongsToRootObject) {
42
- visitor['RootObjectTypeField'](visitorHandlerParams, ctx);
43
- }
44
- else {
45
- if ((0, graphql_1.isObjectType)(namedType)) {
46
- visitor['ObjectType'](visitorHandlerParams, ctx);
47
- }
48
- else if ((0, graphql_1.isUnionType)(namedType)) {
49
- visitor['UnionType'](visitorHandlerParams, ctx);
50
- }
51
- else if ((0, graphql_1.isScalarType)(namedType)) {
52
- visitor['ScalarType'](visitorHandlerParams, ctx);
53
- }
54
- else if ((0, graphql_1.isInterfaceType)(namedType)) {
55
- visitor['InterfaceType'](visitorHandlerParams, ctx);
56
- }
57
- }
58
36
  };
59
37
  exports.visitNamedType = visitNamedType;
60
- /**
61
- * Parse location to see which module it belongs to.
62
- * Also check against whitelisted and blacklisted to see if need to generate file.
63
- */
64
- const parseLocationForOutputDir = (nestedDirs, { config: { mode, sourceMap, whitelistedModules, blacklistedModules, baseOutputDir, resolverRelativeTargetDir, }, }, location) => {
65
- // If mode is "merged", there's only one module:
66
- // - always generate a.k.a it's always whitelisted
67
- // - put them together at designated relativeTargetDir
68
- // - moduleName='' i.e. no module
69
- if (mode === 'merged') {
70
- return {
71
- resolversOutputDir: path.posix.join(baseOutputDir, resolverRelativeTargetDir, ...nestedDirs),
72
- moduleName: '',
73
- relativePathFromBaseToModule: [],
74
- };
75
- }
76
- // 2. mode is "modules", each module is the folder containing the schema files
77
- // This means one or multiple schema files can add up to one module
78
- const parsedSource = (0, utils_1.parseLocationForWhitelistedModule)({
79
- location,
80
- sourceMap,
81
- whitelistedModules,
82
- blacklistedModules,
83
- });
84
- return parsedSource
85
- ? {
86
- resolversOutputDir: path.posix.join(baseOutputDir, ...parsedSource.relativePathFromBaseToModule, resolverRelativeTargetDir, ...nestedDirs),
87
- moduleName: parsedSource.moduleName,
88
- relativePathFromBaseToModule: parsedSource.relativePathFromBaseToModule,
89
- }
90
- : undefined;
91
- };
92
- const validateAndPrepareForGraphQLTypeHandler = ({ resolverName, normalizedResolverName, resolversOutputDir, belongsToRootObject, moduleName, relativePathFromBaseToModule, }, { config, result }) => {
93
- const fieldFilePath = path.posix.join(resolversOutputDir, `${resolverName}.ts`);
94
- if (result.files[fieldFilePath]) {
95
- throw new Error(`Unexpected duplication in field filename. Type: ${resolverName}, file: ${fieldFilePath}`);
96
- }
97
- // resolverTypeName are generated from typescript-resolvers plugin
98
- const resolversTypeMetaModule = (0, utils_1.relativeModulePath)(resolversOutputDir, config.resolverTypesPath);
99
- const resolversTypeMeta = belongsToRootObject
100
- ? {
101
- typeNamedImport: `${belongsToRootObject}Resolvers`,
102
- module: resolversTypeMetaModule,
103
- moduleType: 'file',
104
- typeString: `${belongsToRootObject}Resolvers['${resolverName}']`,
105
- }
106
- : {
107
- typeNamedImport: `${resolverName}Resolvers`,
108
- module: resolversTypeMetaModule,
109
- moduleType: 'file',
110
- typeString: `${resolverName}Resolvers`,
111
- };
112
- return {
113
- fieldFilePath,
114
- resolverName,
115
- belongsToRootObject,
116
- normalizedResolverName,
117
- resolversTypeMeta,
118
- moduleName,
119
- relativePathFromBaseToModule,
120
- };
121
- };
122
- /**
123
- * Function to get format resolver name based on its definition in the schema
124
- * - Root object type resolver e.g Query.me, Mutation.updateUser
125
- * - Object type e.g. User, Profile
126
- *
127
- * Returns an object with 2 key/value pairs:
128
- * - base: resolver name without module. This is used by to match up with config.externalResolvers.
129
- * - withModule: resolver name with module. This is used to identify the resolver INTERNAL unique path used in main resolver files.
130
- */
131
- const normalizeResolverName = (moduleName, name, rootObject) => {
132
- const baseResolverName = !rootObject ? name : `${rootObject}.${name}`;
133
- return {
134
- base: baseResolverName,
135
- withModule: `${moduleName}.${baseResolverName}`,
136
- };
137
- };
138
38
  //# sourceMappingURL=visitNamedType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"visitNamedType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/visitNamedType.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"visitNamedType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/visitNamedType.ts"],"names":[],"mappings":";;;AACA,2EAAwE;AAGjE,MAAM,cAAc,GAAG,CAC5B,EACE,UAAU,EACV,4BAA4B,EAC5B,sBAAsB,EACtB,YAAY,EACZ,+BAA+B,EAC/B,eAAe,EACf,UAAU,EACV,mBAAmB,EACnB,OAAO,GAIR,EACD,GAAiC,EAC3B,EAAE;IACR,MAAM,4BAA4B,GAChC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAE5D,gDAAgD;IAChD,IAAI,4BAA4B,EAAE,CAAC;QACjC,mCAAmC;QACnC,IAAA,qDAAyB,EACvB;YACE,UAAU;YACV,4BAA4B;YAC5B,sBAAsB,EAAE,sBAAsB,CAAC,IAAI;YACnD,kBAAkB,EAAE,4BAA4B;SACjD,EACD,GAAG,CACJ,CAAC;QAEF,OAAO;IACT,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,mDAAmD,YAAY,CAAC,IAAI,WAAW,YAAY,CAAC,IAAI,EAAE,CACnG,CAAC;IACJ,CAAC;IAED,OAAO,CACL;QACE,mBAAmB;QACnB,aAAa,EAAE,YAAY,CAAC,IAAI;QAChC,yBAAyB,EAAE,YAAY,CAAC,cAAc;QACtD,UAAU;QACV,sBAAsB;QACtB,4BAA4B;QAC5B,YAAY,EAAE,YAAY,CAAC,IAAI;QAC/B,iBAAiB,EAAE;YACjB,MAAM,EAAE,+BAA+B;YACvC,UAAU,EAAE,MAAM;YAClB,eAAe;YACf,UAAU;SACX;KACF,EACD,GAAG,CACJ,CAAC;AACJ,CAAC,CAAC;AA5DW,QAAA,cAAc,kBA4DzB"}
@@ -1,5 +1,6 @@
1
1
  import { type SourceFile, type Project } from 'ts-morph';
2
2
  import type { TypeMappersMap } from '../parseTypeMappers';
3
+ import type { ParsedGraphQLSchemaMeta } from '../parseGraphQLSchema';
3
4
  export type GraphQLObjectTypeResolversToGenerate = Record<string, Record<string, {
4
5
  resolverName: string;
5
6
  resolverDeclaration: string;
@@ -8,5 +9,5 @@ export declare const getGraphQLObjectTypeResolversToGenerate: ({ tsMorphProject,
8
9
  tsMorphProject: Project;
9
10
  typesSourceFile: SourceFile;
10
11
  typeMappersMap: TypeMappersMap;
11
- userDefinedSchemaObjectTypeMap: Record<string, true>;
12
+ userDefinedSchemaObjectTypeMap: ParsedGraphQLSchemaMeta['userDefinedSchemaTypeMap']['object'];
12
13
  }) => GraphQLObjectTypeResolversToGenerate;
@@ -1 +1 @@
1
- {"version":3,"file":"getGraphQLObjectTypeResolversToGenerate.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.ts"],"names":[],"mappings":";;;AAAA,uCAMkB;AAElB,oCAAoE;AAO7D,MAAM,uCAAuC,GAAG,CAAC,EACtD,cAAc,EACd,eAAe,EACf,8BAA8B,EAC9B,cAAc,GAMf,EAAwC,EAAE;IACzC,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1D,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,0CAA0C;IAC1C,MAAM,qBAAqB,GAAoC,EAAE,CAAC;IAElE,MAAM,6BAA6B,GAAG,CACpC,IAAiD,EAC3C,EAAE;QACR,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;QAC5C,IAAI,8BAA8B,CAAC,cAAc,CAAC,EAAE,CAAC;YACnD,qBAAqB,CAAC,cAAc,CAAC,GAAG,IAAA,0BAAkB,EAAC;gBACzD,cAAc;gBACd,IAAI;aACL,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IACF,eAAe;SACZ,oBAAoB,CAAC,qBAAU,CAAC,oBAAoB,CAAC;SACrD,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAE1C,eAAe;SACZ,oBAAoB,CAAC,qBAAU,CAAC,oBAAoB,CAAC;SACrD,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAE1C,+CAA+C;IAC/C,MAAM,MAAM,GAAyC,EAAE,CAAC;IACxD,kBAAkB,CAAC,OAAO,CACxB,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,qBAAqB,EAAE,CAAC,EAAE,EAAE;QAC7D,MAAM,4BAA4B,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACvE,IAAI,4BAA4B,EAAE,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,OAAO,CACjD,CAAC,kBAAkB,EAAE,EAAE;gBACrB,MAAM,kBAAkB,GACtB,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBACjD,MAAM,4BAA4B,GAAG,GAAG,cAAc,IAAI,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBACpF,MAAM,4BAA4B,GAAG,GAAG,UAAU,IAAI,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBAEhF,IAAI,kBAAkB,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC7C,OAAO;gBACT,CAAC;gBAED,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBAE9C,yDAAyD;gBACzD,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBACxB,MAAM,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG;wBAC5C,YAAY,EAAE,kBAAkB,CAAC,IAAI;wBACrC,mBAAmB,EAAE,uCAAuC,4BAA4B,iCAAiC,4BAA4B,eAAe,4BAA4B,gBAAgB;qBACjN,CAAC;oBACF,OAAO;gBACT,CAAC;gBAED;;;;;;;;mBAQG;gBACH,MAAM,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG;oBAC5C,YAAY,EAAE,kBAAkB,CAAC,IAAI;oBACrC,mBAAmB,EAAE,MAAM,kBAAkB,CAAC,IAAI;qBAC3C,4BAA4B,iCAAiC,4BAA4B,QAAQ,4BAA4B;yBACzH,kBAAkB,CAAC,IAAI;gBAChC;iBACH,CAAC;gBAEF,OAAO;YACT,CAAC,CACF,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AA5FW,QAAA,uCAAuC,2CA4FlD"}
1
+ {"version":3,"file":"getGraphQLObjectTypeResolversToGenerate.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.ts"],"names":[],"mappings":";;;AAAA,uCAMkB;AAElB,oCAAoE;AAQ7D,MAAM,uCAAuC,GAAG,CAAC,EACtD,cAAc,EACd,eAAe,EACf,8BAA8B,EAC9B,cAAc,GAMf,EAAwC,EAAE;IACzC,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1D,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,0CAA0C;IAC1C,MAAM,qBAAqB,GAAoC,EAAE,CAAC;IAElE,MAAM,6BAA6B,GAAG,CACpC,IAAiD,EAC3C,EAAE;QACR,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;QAC5C,IAAI,8BAA8B,CAAC,cAAc,CAAC,EAAE,CAAC;YACnD,qBAAqB,CAAC,cAAc,CAAC,GAAG,IAAA,0BAAkB,EAAC;gBACzD,cAAc;gBACd,IAAI;aACL,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IACF,eAAe;SACZ,oBAAoB,CAAC,qBAAU,CAAC,oBAAoB,CAAC;SACrD,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAE1C,eAAe;SACZ,oBAAoB,CAAC,qBAAU,CAAC,oBAAoB,CAAC;SACrD,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAE1C,+CAA+C;IAC/C,MAAM,MAAM,GAAyC,EAAE,CAAC;IACxD,kBAAkB,CAAC,OAAO,CACxB,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,qBAAqB,EAAE,CAAC,EAAE,EAAE;QAC7D,MAAM,4BAA4B,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACvE,IAAI,4BAA4B,EAAE,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,OAAO,CACjD,CAAC,kBAAkB,EAAE,EAAE;gBACrB,MAAM,kBAAkB,GACtB,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBACjD,MAAM,4BAA4B,GAAG,GAAG,cAAc,IAAI,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBACpF,MAAM,4BAA4B,GAAG,GAAG,UAAU,IAAI,kBAAkB,CAAC,IAAI,EAAE,CAAC;gBAEhF,IAAI,kBAAkB,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC7C,OAAO;gBACT,CAAC;gBAED,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBAE9C,yDAAyD;gBACzD,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBACxB,MAAM,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG;wBAC5C,YAAY,EAAE,kBAAkB,CAAC,IAAI;wBACrC,mBAAmB,EAAE,uCAAuC,4BAA4B,iCAAiC,4BAA4B,eAAe,4BAA4B,gBAAgB;qBACjN,CAAC;oBACF,OAAO;gBACT,CAAC;gBAED;;;;;;;;mBAQG;gBACH,MAAM,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG;oBAC5C,YAAY,EAAE,kBAAkB,CAAC,IAAI;oBACrC,mBAAmB,EAAE,MAAM,kBAAkB,CAAC,IAAI;qBAC3C,4BAA4B,iCAAiC,4BAA4B,QAAQ,4BAA4B;yBACzH,kBAAkB,CAAC,IAAI;gBAChC;iBACH,CAAC;gBAEF,OAAO;YACT,CAAC,CACF,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AA5FW,QAAA,uCAAuC,2CA4FlD"}
@@ -1 +1,2 @@
1
1
  export * from './parseGraphQLSchema';
2
+ export type { NormalizedResolverName } from './normalizeResolverName';
@@ -0,0 +1,15 @@
1
+ import type { RootObjectType } from '../utils';
2
+ export interface NormalizedResolverName {
3
+ base: string;
4
+ withModule: string;
5
+ }
6
+ /**
7
+ * Function to get format resolver name based on its definition in the schema
8
+ * - Root object type resolver e.g Query.me, Mutation.updateUser
9
+ * - Object type e.g. User, Profile
10
+ *
11
+ * Returns an object with 2 key/value pairs:
12
+ * - base: resolver name without module. This is used by to match up with config.externalResolvers.
13
+ * - withModule: resolver name with module. This is used to identify the resolver INTERNAL unique path used in main resolver files.
14
+ */
15
+ export declare const normalizeResolverName: (moduleName: string, name: string, rootObject: RootObjectType | null) => NormalizedResolverName;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeResolverName = void 0;
4
+ /**
5
+ * Function to get format resolver name based on its definition in the schema
6
+ * - Root object type resolver e.g Query.me, Mutation.updateUser
7
+ * - Object type e.g. User, Profile
8
+ *
9
+ * Returns an object with 2 key/value pairs:
10
+ * - base: resolver name without module. This is used by to match up with config.externalResolvers.
11
+ * - withModule: resolver name with module. This is used to identify the resolver INTERNAL unique path used in main resolver files.
12
+ */
13
+ const normalizeResolverName = (moduleName, name, rootObject) => {
14
+ const baseResolverName = !rootObject ? name : `${rootObject}.${name}`;
15
+ return {
16
+ base: baseResolverName,
17
+ withModule: `${moduleName}.${baseResolverName}`,
18
+ };
19
+ };
20
+ exports.normalizeResolverName = normalizeResolverName;
21
+ //# sourceMappingURL=normalizeResolverName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeResolverName.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/parseGraphQLSchema/normalizeResolverName.ts"],"names":[],"mappings":";;;AAOA;;;;;;;;GAQG;AACI,MAAM,qBAAqB,GAAG,CACnC,UAAkB,EAClB,IAAY,EACZ,UAAiC,EACT,EAAE;IAC1B,MAAM,gBAAgB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,IAAI,EAAE,CAAC;IAEtE,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,UAAU,EAAE,GAAG,UAAU,IAAI,gBAAgB,EAAE;KAChD,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,qBAAqB,yBAWhC"}
@@ -2,19 +2,53 @@ import { type GraphQLSchema } from 'graphql';
2
2
  import type { ParseSourcesResult } from '../parseSources';
3
3
  import type { TypeMappersMap } from '../parseTypeMappers';
4
4
  import type { ParsedPresetConfig, ScalarsOverridesType } from '../validatePresetConfig';
5
+ import { normalizeResolverName } from './normalizeResolverName';
5
6
  interface ParseGraphQLSchemaParams {
6
7
  schemaAst: GraphQLSchema;
7
8
  sourceMap: ParseSourcesResult['sourceMap'];
9
+ resolverTypesPath: string;
8
10
  typeMappersMap: TypeMappersMap;
9
11
  scalarsModule: ParsedPresetConfig['scalarsModule'];
10
12
  scalarsOverrides: ParsedPresetConfig['scalarsOverrides'];
13
+ mode: ParsedPresetConfig['mode'];
14
+ baseOutputDir: string;
15
+ resolverRelativeTargetDir: string;
11
16
  whitelistedModules: ParsedPresetConfig['whitelistedModules'];
12
17
  blacklistedModules: ParsedPresetConfig['blacklistedModules'];
18
+ federationEnabled: boolean;
13
19
  }
20
+ export interface ResolverDetails {
21
+ schemaType: string;
22
+ moduleName: string;
23
+ resolverFile: {
24
+ name: string;
25
+ path: string;
26
+ isOnFilesystem: boolean;
27
+ };
28
+ relativePathFromBaseToModule: string[];
29
+ normalizedResolverName: ReturnType<typeof normalizeResolverName>;
30
+ typeNamedImport: string;
31
+ typeString: string;
32
+ relativePathToResolverTypesFile: string;
33
+ }
34
+ type ObjectResolverDetails = ResolverDetails & {
35
+ fieldsToPick: string[];
36
+ pickReferenceResolver: boolean;
37
+ };
14
38
  export interface ParsedGraphQLSchemaMeta {
15
39
  userDefinedSchemaTypeMap: {
16
- object: Record<string, true>;
17
- scalar: Record<string, true>;
40
+ query: Record<string, // normalized resolver name
41
+ ResolverDetails>;
42
+ mutation: Record<string, // normalized resolver name
43
+ ResolverDetails>;
44
+ subscription: Record<string, // normalized resolver name
45
+ ResolverDetails>;
46
+ object: Record<string, // schema name e.g. `User`, `Job`, etc.
47
+ Record<string, // normalized name e.g. `user.User` (modules) or `.User` (merged)
48
+ ObjectResolverDetails>>;
49
+ scalar: Record<string, ResolverDetails>;
50
+ interface: Record<string, ResolverDetails>;
51
+ union: Record<string, ResolverDetails>;
18
52
  };
19
53
  pluginsConfig: {
20
54
  defaultScalarTypesMap: Record<string, ScalarsOverridesType>;
@@ -22,5 +56,5 @@ export interface ParsedGraphQLSchemaMeta {
22
56
  defaultTypeMappers: Record<string, string>;
23
57
  };
24
58
  }
25
- export declare const parseGraphQLSchema: ({ schemaAst, sourceMap, typeMappersMap, scalarsModule, scalarsOverrides, whitelistedModules, blacklistedModules, }: ParseGraphQLSchemaParams) => Promise<ParsedGraphQLSchemaMeta>;
59
+ export declare const parseGraphQLSchema: ({ schemaAst, sourceMap, resolverTypesPath, typeMappersMap, scalarsModule, scalarsOverrides, mode, baseOutputDir, resolverRelativeTargetDir, whitelistedModules, blacklistedModules, federationEnabled, }: ParseGraphQLSchemaParams) => Promise<ParsedGraphQLSchemaMeta>;
26
60
  export {};