@eddeee888/gcg-typescript-resolver-files 0.8.1 → 0.9.0
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.
- package/package.json +1 -1
- package/src/generateResolverFiles/generateResolverFiles.js +29 -82
- package/src/generateResolverFiles/generateResolverFiles.js.map +1 -1
- package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.d.ts +5 -0
- package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.js +20 -0
- package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.js.map +1 -0
- package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.js +4 -4
- package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.js.map +1 -1
- package/src/generateResolverFiles/handleGraphQLInterfaceType.js +16 -10
- package/src/generateResolverFiles/handleGraphQLInterfaceType.js.map +1 -1
- package/src/generateResolverFiles/handleGraphQLObjectType.js +17 -10
- package/src/generateResolverFiles/handleGraphQLObjectType.js.map +1 -1
- package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.js +21 -12
- package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.js.map +1 -1
- package/src/generateResolverFiles/handleGraphQLScalarType.js +17 -11
- package/src/generateResolverFiles/handleGraphQLScalarType.js.map +1 -1
- package/src/generateResolverFiles/handleGraphQLUnionType.js +16 -10
- package/src/generateResolverFiles/handleGraphQLUnionType.js.map +1 -1
- package/src/generateResolverFiles/postProcessFiles.js +11 -3
- package/src/generateResolverFiles/postProcessFiles.js.map +1 -1
- package/src/generateResolverFiles/types.d.ts +21 -13
- package/src/generateResolverFiles/visitNamedType.d.ts +5 -20
- package/src/generateResolverFiles/visitNamedType.js +15 -115
- package/src/generateResolverFiles/visitNamedType.js.map +1 -1
- package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.d.ts +2 -1
- package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js.map +1 -1
- package/src/parseGraphQLSchema/index.d.ts +1 -0
- package/src/parseGraphQLSchema/normalizeResolverName.d.ts +15 -0
- package/src/parseGraphQLSchema/normalizeResolverName.js +21 -0
- package/src/parseGraphQLSchema/normalizeResolverName.js.map +1 -0
- package/src/parseGraphQLSchema/parseGraphQLSchema.d.ts +37 -3
- package/src/parseGraphQLSchema/parseGraphQLSchema.js +177 -10
- package/src/parseGraphQLSchema/parseGraphQLSchema.js.map +1 -1
- package/src/parseGraphQLSchema/parseLocationForOutputDir.d.ts +24 -0
- package/src/parseGraphQLSchema/parseLocationForOutputDir.js +40 -0
- package/src/parseGraphQLSchema/parseLocationForOutputDir.js.map +1 -0
- package/src/preset.js +18 -15
- package/src/preset.js.map +1 -1
- package/src/validatePresetConfig/validatePresetConfig.d.ts +1 -1
- package/src/validatePresetConfig/validatePresetConfig.js +13 -1
- package/src/validatePresetConfig/validatePresetConfig.js.map +1 -1
|
@@ -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;
|
|
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 '
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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 = (
|
|
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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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":"
|
|
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"}
|
package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.d.ts
CHANGED
|
@@ -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:
|
|
12
|
+
userDefinedSchemaObjectTypeMap: ParsedGraphQLSchemaMeta['userDefinedSchemaTypeMap']['object'];
|
|
12
13
|
}) => GraphQLObjectTypeResolversToGenerate;
|
package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getGraphQLObjectTypeResolversToGenerate.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.ts"],"names":[],"mappings":";;;AAAA,uCAMkB;AAElB,oCAAoE;
|
|
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"}
|
|
@@ -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
|
-
|
|
17
|
-
|
|
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 {};
|