@eddeee888/gcg-typescript-resolver-files 0.0.1 → 0.0.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.
- package/CHANGELOG.md +7 -0
- package/README.md +8 -7
- package/package.json +1 -1
- package/src/plugin.d.ts +2 -0
- package/src/plugin.js +15 -10
- package/src/plugin.js.map +1 -1
- package/src/run/addExternalResolverImport.d.ts +7 -0
- package/src/run/addExternalResolverImport.js +99 -0
- package/src/run/addExternalResolverImport.js.map +1 -0
- package/src/run/addResolversMainFile.d.ts +2 -8
- package/src/run/addResolversMainFile.js +77 -18
- package/src/run/addResolversMainFile.js.map +1 -1
- package/src/run/fixExistingResolvers.d.ts +2 -2
- package/src/run/fixExistingResolvers.js +5 -5
- package/src/run/fixExistingResolvers.js.map +1 -1
- package/src/run/handleGraphQLObjectType.d.ts +1 -2
- package/src/run/handleGraphQLObjectType.js +10 -15
- package/src/run/handleGraphQLObjectType.js.map +1 -1
- package/src/run/handleGraphQLRootObjectTypeField.d.ts +2 -0
- package/src/run/handleGraphQLRootObjectTypeField.js +25 -0
- package/src/run/handleGraphQLRootObjectTypeField.js.map +1 -0
- package/src/run/handleGraphQLScalarType.d.ts +2 -0
- package/src/run/handleGraphQLScalarType.js +26 -0
- package/src/run/handleGraphQLScalarType.js.map +1 -0
- package/src/run/handleGraphQLUninionType.d.ts +1 -2
- package/src/run/handleGraphQLUninionType.js +10 -14
- package/src/run/handleGraphQLUninionType.js.map +1 -1
- package/src/run/run.d.ts +2 -2
- package/src/run/run.js +43 -29
- package/src/run/run.js.map +1 -1
- package/src/run/visitNamedType.d.ts +15 -0
- package/src/run/visitNamedType.js +103 -0
- package/src/run/visitNamedType.js.map +1 -0
- package/src/types.d.ts +44 -16
- package/src/utils.d.ts +3 -2
- package/src/utils.js +34 -12
- package/src/utils.js.map +1 -1
- package/src/run/handleGraphQLRootObjectType.d.ts +0 -3
- package/src/run/handleGraphQLRootObjectType.js +0 -44
- package/src/run/handleGraphQLRootObjectType.js.map +0 -1
- package/src/run/parseLocation.d.ts +0 -7
- package/src/run/parseLocation.js +0 -37
- package/src/run/parseLocation.js.map +0 -1
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -33,10 +33,11 @@ generates:
|
|
|
33
33
|
|
|
34
34
|
## Config
|
|
35
35
|
|
|
36
|
-
| Name | Type
|
|
37
|
-
| -------------------- |
|
|
38
|
-
| `resolverTypesPath` | `string`
|
|
39
|
-
| `mode` | `merged` or `modules`
|
|
40
|
-
| `relativeTargetDir` | `string`
|
|
41
|
-
| `mainFile` | `string`
|
|
42
|
-
| `whitelistedModules` | `Array<string>`
|
|
36
|
+
| Name | Type | Description |
|
|
37
|
+
| -------------------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
38
|
+
| `resolverTypesPath` | `string` | (Required) Relative path to type file generated by `typescript-resolvers` plugin. |
|
|
39
|
+
| `mode` | `merged` or `modules` | (Default: `modules`) How files are collocated. `modules` detects containing dir of a schema file as "modules", then split resolvers into those modules. `merged` treats `baseOutputDir` as the one and only module and generates resolvers. |
|
|
40
|
+
| `relativeTargetDir` | `string` | Relative path to target dir. For `config.mode=merged`, files will be generated into `<baseOutputDir>/<relativeTargetDir>`. For `config.mode=modules`, files will be generated into `<baseOutputDir>/<moduleName>/<relativeTargetDir>` |
|
|
41
|
+
| `mainFile` | `string` | File that puts all generated resolvers together. Relative from `baseOutputDir` |
|
|
42
|
+
| `whitelistedModules` | `Array<string>` | (Only works with `config.mode=modules`) Whitelists modules to generate files and main file for. Useful for gradual migrations. |
|
|
43
|
+
| `externalResolvers` | `Record<string, string>` | Map of relative or absolute path (prefixed with `~`) to external or existing resolvers. e.g. `DateTime: ~graphql-scalars#DateTimeResolver`, `Query.me: '~@org/meResolver#default as meResolver'`, `User: 'otherResolvers#User as UserResolver'`. |
|
package/package.json
CHANGED
package/src/plugin.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ interface PluginConfig {
|
|
|
5
5
|
mainFile?: string;
|
|
6
6
|
mode?: 'merged' | 'modules';
|
|
7
7
|
whitelistedModules?: string[];
|
|
8
|
+
externalResolvers?: Record<string, string>;
|
|
8
9
|
}
|
|
9
10
|
export declare const plugin: PluginFunction<PluginConfig>;
|
|
10
11
|
interface RawPluginConfig {
|
|
@@ -13,6 +14,7 @@ interface RawPluginConfig {
|
|
|
13
14
|
mainFile?: string;
|
|
14
15
|
mode?: string;
|
|
15
16
|
whitelistedModules?: string[];
|
|
17
|
+
externalResolvers?: Record<string, string>;
|
|
16
18
|
}
|
|
17
19
|
export declare const validate: PluginValidateFn<RawPluginConfig>;
|
|
18
20
|
export {};
|
package/src/plugin.js
CHANGED
|
@@ -19,22 +19,27 @@ const plugin = (schema, _documents, config, info) => tslib_1.__awaiter(void 0, v
|
|
|
19
19
|
throw new Error('Empty Sources. Make sure schema files are parsed correctly.');
|
|
20
20
|
}
|
|
21
21
|
const sourcesMap = (0, utils_1.parseSources)(sources);
|
|
22
|
-
const { resolverTypesPath: relativeResolverTypesPathFromBaseOutputDir, relativeTargetDir = '', mainFile = 'index.ts', mode = configDefaultMode, whitelistedModules = [], } = config;
|
|
22
|
+
const { resolverTypesPath: relativeResolverTypesPathFromBaseOutputDir, relativeTargetDir = '', mainFile = 'index.ts', mode = configDefaultMode, whitelistedModules = [], externalResolvers = {}, } = config;
|
|
23
23
|
const resolverTypesPath = path.join(baseOutputDir, relativeResolverTypesPathFromBaseOutputDir);
|
|
24
24
|
const result = {
|
|
25
25
|
dirs: {},
|
|
26
26
|
files: {},
|
|
27
|
+
externalImports: {},
|
|
27
28
|
};
|
|
28
29
|
(0, run_1.run)({
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
config: {
|
|
31
|
+
schema,
|
|
32
|
+
sourcesMap,
|
|
33
|
+
baseOutputDir,
|
|
34
|
+
resolverTypesPath,
|
|
35
|
+
relativeTargetDir,
|
|
36
|
+
mainFile,
|
|
37
|
+
mode,
|
|
38
|
+
whitelistedModules,
|
|
39
|
+
externalResolvers,
|
|
40
|
+
},
|
|
41
|
+
result,
|
|
42
|
+
});
|
|
38
43
|
// Write dirs and files
|
|
39
44
|
yield Promise.all(Object.keys(result.dirs).map((dir) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return yield (0, promises_1.mkdir)(dir, { recursive: true }); })));
|
|
40
45
|
yield Promise.all(Object.entries(result.files).map(([filePath, file]) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return yield (0, promises_1.writeFile)(filePath, file.content); })));
|
package/src/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../../packages/typescript-resolver-files/src/plugin.ts"],"names":[],"mappings":";;;;AAAA,6BAA6B;AAK7B,0CAA+C;AAC/C,+BAA4B;AAE5B,mCAAuC;AAEvC,MAAM,UAAU,GAAG,0CAA0C,CAAC;AAC9D,MAAM,iBAAiB,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../../packages/typescript-resolver-files/src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RunContext } from '../types';
|
|
2
|
+
interface AddExternalResolverImportParams {
|
|
3
|
+
normalizedResolverName: string;
|
|
4
|
+
configImportSyntax: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const addExternalResolverImport: (params: AddExternalResolverImportParams, { result }: RunContext) => void;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addExternalResolverImport = void 0;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
const addExternalResolverImport = (params, { result }) => {
|
|
6
|
+
const { importIdentifier, identifierUsage, moduleImport } = parseImportSyntax(params);
|
|
7
|
+
result.externalImports[moduleImport] =
|
|
8
|
+
result.externalImports[moduleImport] ||
|
|
9
|
+
{
|
|
10
|
+
importLineMeta: {
|
|
11
|
+
isTypeImport: false,
|
|
12
|
+
module: moduleImport,
|
|
13
|
+
namedImports: [],
|
|
14
|
+
defaultImport: undefined,
|
|
15
|
+
},
|
|
16
|
+
identifierUsages: [],
|
|
17
|
+
};
|
|
18
|
+
const externalImport = result.externalImports[moduleImport];
|
|
19
|
+
switch (importIdentifier.__type) {
|
|
20
|
+
case 'default':
|
|
21
|
+
if (externalImport.importLineMeta.defaultImport &&
|
|
22
|
+
externalImport.importLineMeta.defaultImport !==
|
|
23
|
+
importIdentifier.defaultImport) {
|
|
24
|
+
throw new Error(`There can be only one default import from '${moduleImport}'. Current: ${externalImport.importLineMeta.defaultImport}. New: ${importIdentifier.defaultImport}`);
|
|
25
|
+
}
|
|
26
|
+
externalImport.importLineMeta.defaultImport =
|
|
27
|
+
importIdentifier.defaultImport;
|
|
28
|
+
break;
|
|
29
|
+
case 'named':
|
|
30
|
+
externalImport.importLineMeta.namedImports.push(importIdentifier.namedImport);
|
|
31
|
+
break;
|
|
32
|
+
case 'namedWithAlias':
|
|
33
|
+
externalImport.importLineMeta.namedImports.push({
|
|
34
|
+
propertyName: importIdentifier.propertyName,
|
|
35
|
+
identifierName: importIdentifier.identifierName,
|
|
36
|
+
});
|
|
37
|
+
break;
|
|
38
|
+
default:
|
|
39
|
+
// importIdentifier is `never` unless new __type is added
|
|
40
|
+
// i.e. this is here for typesafety
|
|
41
|
+
return importIdentifier;
|
|
42
|
+
}
|
|
43
|
+
externalImport.identifierUsages.push(identifierUsage);
|
|
44
|
+
};
|
|
45
|
+
exports.addExternalResolverImport = addExternalResolverImport;
|
|
46
|
+
const parseImportSyntax = ({ configImportSyntax, normalizedResolverName, }) => {
|
|
47
|
+
const isAbsoluteImport = configImportSyntax[0] === '~';
|
|
48
|
+
const importStringWithoutRelativity = isAbsoluteImport
|
|
49
|
+
? configImportSyntax.slice(1)
|
|
50
|
+
: configImportSyntax;
|
|
51
|
+
const [rawModuleName, importIdentifier] = importStringWithoutRelativity.split('#');
|
|
52
|
+
const moduleImport = isAbsoluteImport
|
|
53
|
+
? rawModuleName
|
|
54
|
+
: (0, utils_1.normalizeRelativePath)(rawModuleName);
|
|
55
|
+
if (importIdentifier.startsWith('default')) {
|
|
56
|
+
if (!importIdentifier.startsWith('default as ')) {
|
|
57
|
+
throw new Error(`Invalid import syntax. "${configImportSyntax}": Default import must include identifier name e.g. moduleName#default as Identifier`);
|
|
58
|
+
}
|
|
59
|
+
const [_, defaultImportIdentifier] = importIdentifier.split('default as ');
|
|
60
|
+
return {
|
|
61
|
+
importIdentifier: {
|
|
62
|
+
__type: 'default',
|
|
63
|
+
defaultImport: defaultImportIdentifier,
|
|
64
|
+
},
|
|
65
|
+
identifierUsage: {
|
|
66
|
+
identifierName: defaultImportIdentifier,
|
|
67
|
+
normalizedResolverName,
|
|
68
|
+
},
|
|
69
|
+
moduleImport,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const namedImportParts = importIdentifier.split(' as ');
|
|
73
|
+
if (namedImportParts.length === 1) {
|
|
74
|
+
return {
|
|
75
|
+
importIdentifier: {
|
|
76
|
+
__type: 'named',
|
|
77
|
+
namedImport: namedImportParts[0],
|
|
78
|
+
},
|
|
79
|
+
identifierUsage: {
|
|
80
|
+
identifierName: namedImportParts[0],
|
|
81
|
+
normalizedResolverName,
|
|
82
|
+
},
|
|
83
|
+
moduleImport,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
importIdentifier: {
|
|
88
|
+
__type: 'namedWithAlias',
|
|
89
|
+
propertyName: namedImportParts[0],
|
|
90
|
+
identifierName: namedImportParts[1],
|
|
91
|
+
},
|
|
92
|
+
identifierUsage: {
|
|
93
|
+
identifierName: namedImportParts[1],
|
|
94
|
+
normalizedResolverName,
|
|
95
|
+
},
|
|
96
|
+
moduleImport,
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=addExternalResolverImport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addExternalResolverImport.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/addExternalResolverImport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
baseOutputDir: string;
|
|
4
|
-
resolverTypesPath: string;
|
|
5
|
-
mainFile: string;
|
|
6
|
-
}
|
|
7
|
-
export declare const addResolversMainFile: ({ baseOutputDir, resolverTypesPath, mainFile }: AddResolversMainFileParams, result: RunResult) => void;
|
|
8
|
-
export {};
|
|
1
|
+
import type { RunContext } from '../types';
|
|
2
|
+
export declare const addResolversMainFile: ({ config: { baseOutputDir, resolverTypesPath, mainFile }, result, }: RunContext) => void;
|
|
@@ -3,27 +3,46 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.addResolversMainFile = void 0;
|
|
4
4
|
const path = require("path");
|
|
5
5
|
const utils_1 = require("../utils");
|
|
6
|
-
const addResolversMainFile = ({ baseOutputDir, resolverTypesPath, mainFile }, result) => {
|
|
6
|
+
const addResolversMainFile = ({ config: { baseOutputDir, resolverTypesPath, mainFile }, result, }) => {
|
|
7
7
|
const filename = path.join(baseOutputDir, mainFile.split('/').join(path.sep));
|
|
8
8
|
const outputDir = path.dirname(filename);
|
|
9
9
|
// Make sure to create target dir to main file, in case mainFile is a path!
|
|
10
10
|
result.dirs[outputDir] = true;
|
|
11
11
|
const relativePathToResolverTypes = (0, utils_1.relativeModulePath)(outputDir, resolverTypesPath);
|
|
12
|
-
const pathToResolverModule = (0, utils_1.printImportModule)(relativePathToResolverTypes);
|
|
13
12
|
const resolversDetails = Object.entries(result.files).reduce((res, [filepath, file]) => {
|
|
14
13
|
if (file.__filetype === 'file') {
|
|
15
14
|
return res;
|
|
16
15
|
}
|
|
17
|
-
|
|
18
|
-
res.importLines.push(`import { ${file.mainImportIdentifier} } from '${pathToModule}'`);
|
|
16
|
+
// Non Root Object fields that was generated
|
|
19
17
|
if (!file.meta.belongsToRootObject) {
|
|
20
|
-
res.
|
|
18
|
+
res.importLines.push((0, utils_1.printImportLine)({
|
|
19
|
+
isTypeImport: false,
|
|
20
|
+
module: (0, utils_1.relativeModulePath)(outputDir, filepath),
|
|
21
|
+
namedImports: [file.mainImportIdentifier],
|
|
22
|
+
}));
|
|
23
|
+
res.objectTypes.push({
|
|
24
|
+
propertyName: file.mainImportIdentifier,
|
|
25
|
+
identifierName: file.mainImportIdentifier,
|
|
26
|
+
});
|
|
21
27
|
return res;
|
|
22
28
|
}
|
|
29
|
+
// Root object fields
|
|
30
|
+
const identifierName = file.meta.normalizedResolverName
|
|
31
|
+
.split('.')
|
|
32
|
+
.join('_');
|
|
33
|
+
const fieldMapping = {
|
|
34
|
+
propertyName: file.mainImportIdentifier,
|
|
35
|
+
identifierName,
|
|
36
|
+
};
|
|
37
|
+
res.importLines.push((0, utils_1.printImportLine)({
|
|
38
|
+
isTypeImport: false,
|
|
39
|
+
module: (0, utils_1.relativeModulePath)(outputDir, filepath),
|
|
40
|
+
namedImports: [fieldMapping],
|
|
41
|
+
}));
|
|
23
42
|
const rootObjectMap = {
|
|
24
|
-
Query: () => res.queryFields.push(
|
|
25
|
-
Mutation: () => res.mutationFields.push(
|
|
26
|
-
Subscription: () => res.subscriptionFields.push(
|
|
43
|
+
Query: () => res.queryFields.push(fieldMapping),
|
|
44
|
+
Mutation: () => res.mutationFields.push(fieldMapping),
|
|
45
|
+
Subscription: () => res.subscriptionFields.push(fieldMapping),
|
|
27
46
|
};
|
|
28
47
|
rootObjectMap[file.meta.belongsToRootObject]();
|
|
29
48
|
return res;
|
|
@@ -34,36 +53,76 @@ const addResolversMainFile = ({ baseOutputDir, resolverTypesPath, mainFile }, re
|
|
|
34
53
|
subscriptionFields: [],
|
|
35
54
|
objectTypes: [],
|
|
36
55
|
});
|
|
56
|
+
Object.entries(result.externalImports).reduce((res, [module, meta]) => {
|
|
57
|
+
res.importLines.push((0, utils_1.printImportLine)({
|
|
58
|
+
isTypeImport: false,
|
|
59
|
+
module,
|
|
60
|
+
namedImports: meta.importLineMeta.namedImports,
|
|
61
|
+
defaultImport: meta.importLineMeta.defaultImport,
|
|
62
|
+
}));
|
|
63
|
+
meta.identifierUsages.forEach((usage) => {
|
|
64
|
+
const resolverNameParts = usage.normalizedResolverName.split('.');
|
|
65
|
+
// Only 1 part, this is a GraphQL ObjectType
|
|
66
|
+
if (resolverNameParts.length === 1) {
|
|
67
|
+
res.objectTypes.push({
|
|
68
|
+
propertyName: resolverNameParts[0],
|
|
69
|
+
identifierName: usage.identifierName,
|
|
70
|
+
});
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
// 2+ parts, treat as 2 parts. This is a GraphQL ObjectType with field e.g. Query.me, Mutation.updateUser
|
|
74
|
+
const [rootObjectType, field] = resolverNameParts;
|
|
75
|
+
if (!(0, utils_1.isRootObjectType)(rootObjectType)) {
|
|
76
|
+
throw new Error(`Unexpected root object type found: ${rootObjectType}`);
|
|
77
|
+
}
|
|
78
|
+
const fieldMapping = {
|
|
79
|
+
identifierName: usage.identifierName,
|
|
80
|
+
propertyName: field,
|
|
81
|
+
};
|
|
82
|
+
const rootObjectMap = {
|
|
83
|
+
Query: () => res.queryFields.push(fieldMapping),
|
|
84
|
+
Mutation: () => res.mutationFields.push(fieldMapping),
|
|
85
|
+
Subscription: () => res.subscriptionFields.push(fieldMapping),
|
|
86
|
+
};
|
|
87
|
+
rootObjectMap[rootObjectType]();
|
|
88
|
+
});
|
|
89
|
+
return res;
|
|
90
|
+
}, resolversDetails);
|
|
37
91
|
const resolversIdentifier = 'resolvers';
|
|
38
92
|
const resolversTypeName = 'Resolvers'; // Generated type from typescript-resolvers plugin
|
|
39
93
|
const queries = resolversDetails.queryFields.length > 0
|
|
40
94
|
? `Query: { ${resolversDetails.queryFields
|
|
41
|
-
.map(
|
|
42
|
-
.join('
|
|
95
|
+
.map(printObjectMapping)
|
|
96
|
+
.join(',')} },`
|
|
43
97
|
: '';
|
|
44
98
|
const mutations = resolversDetails.mutationFields.length > 0
|
|
45
99
|
? `Mutation: { ${resolversDetails.mutationFields
|
|
46
|
-
.map(
|
|
47
|
-
.join('
|
|
100
|
+
.map(printObjectMapping)
|
|
101
|
+
.join(',')} },`
|
|
48
102
|
: '';
|
|
49
103
|
const suscriptions = resolversDetails.subscriptionFields.length > 0
|
|
50
104
|
? `Subscription: { ${resolversDetails.subscriptionFields
|
|
51
|
-
.map(
|
|
52
|
-
.join('
|
|
105
|
+
.map(printObjectMapping)
|
|
106
|
+
.join(',')} },`
|
|
53
107
|
: '';
|
|
54
108
|
result.files[filename] = {
|
|
55
109
|
__filetype: 'file',
|
|
56
110
|
content: `/* This file was automatically generated. DO NOT UPDATE MANUALLY. */
|
|
57
|
-
|
|
58
|
-
|
|
111
|
+
${(0, utils_1.printImportLine)({
|
|
112
|
+
isTypeImport: true,
|
|
113
|
+
module: relativePathToResolverTypes,
|
|
114
|
+
namedImports: [resolversTypeName],
|
|
115
|
+
})}
|
|
116
|
+
${resolversDetails.importLines.map((line) => line).join('\n')}
|
|
59
117
|
export const ${resolversIdentifier}: ${resolversTypeName} = {
|
|
60
118
|
${queries}
|
|
61
119
|
${mutations}
|
|
62
120
|
${suscriptions}
|
|
63
|
-
${resolversDetails.objectTypes.map(
|
|
121
|
+
${resolversDetails.objectTypes.map(printObjectMapping).join(',\n')}
|
|
64
122
|
}`,
|
|
65
|
-
mainImportIdentifier:
|
|
123
|
+
mainImportIdentifier: resolversIdentifier,
|
|
66
124
|
};
|
|
67
125
|
};
|
|
68
126
|
exports.addResolversMainFile = addResolversMainFile;
|
|
127
|
+
const printObjectMapping = ({ propertyName, identifierName, }) => `${propertyName}: ${identifierName}`;
|
|
69
128
|
//# sourceMappingURL=addResolversMainFile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addResolversMainFile.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/addResolversMainFile.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAE7B,
|
|
1
|
+
{"version":3,"file":"addResolversMainFile.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/addResolversMainFile.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAE7B,oCAIkB;AAEX,MAAM,oBAAoB,GAAG,CAAC,EACnC,MAAM,EAAE,EAAE,aAAa,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EACtD,MAAM,GACK,EAAQ,EAAE;IACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEzC,2EAA2E;IAC3E,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IAE9B,MAAM,2BAA2B,GAAG,IAAA,0BAAkB,EACpD,SAAS,EACT,iBAAiB,CAClB,CAAC;IAEF,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAO1D,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;QACxB,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE;YAC9B,OAAO,GAAG,CAAC;SACZ;QAED,4CAA4C;QAC5C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAClC,GAAG,CAAC,WAAW,CAAC,IAAI,CAClB,IAAA,uBAAe,EAAC;gBACd,YAAY,EAAE,KAAK;gBACnB,MAAM,EAAE,IAAA,0BAAkB,EAAC,SAAS,EAAE,QAAQ,CAAC;gBAC/C,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC;aAC1C,CAAC,CACH,CAAC;YACF,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;gBACnB,YAAY,EAAE,IAAI,CAAC,oBAAoB;gBACvC,cAAc,EAAE,IAAI,CAAC,oBAAoB;aAC1C,CAAC,CAAC;YACH,OAAO,GAAG,CAAC;SACZ;QAED,qBAAqB;QACrB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,sBAAsB;aACpD,KAAK,CAAC,GAAG,CAAC;aACV,IAAI,CAAC,GAAG,CAAC,CAAC;QAEb,MAAM,YAAY,GAAuB;YACvC,YAAY,EAAE,IAAI,CAAC,oBAAoB;YACvC,cAAc;SACf,CAAC;QACF,GAAG,CAAC,WAAW,CAAC,IAAI,CAClB,IAAA,uBAAe,EAAC;YACd,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE,IAAA,0BAAkB,EAAC,SAAS,EAAE,QAAQ,CAAC;YAC/C,YAAY,EAAE,CAAC,YAAY,CAAC;SAC7B,CAAC,CACH,CAAC;QAEF,MAAM,aAAa,GAAuC;YACxD,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;YAC/C,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC;YACrD,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC;SAC9D,CAAC;QACF,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAE/C,OAAO,GAAG,CAAC;IACb,CAAC,EACD;QACE,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE;QACf,cAAc,EAAE,EAAE;QAClB,kBAAkB,EAAE,EAAE;QACtB,WAAW,EAAE,EAAE;KAChB,CACF,CAAC;IAEF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;QACpE,GAAG,CAAC,WAAW,CAAC,IAAI,CAClB,IAAA,uBAAe,EAAC;YACd,YAAY,EAAE,KAAK;YACnB,MAAM;YACN,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,YAAY;YAC9C,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa;SACjD,CAAC,CACH,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACtC,MAAM,iBAAiB,GAAG,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAElE,4CAA4C;YAC5C,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;gBAClC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;oBACnB,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC;oBAClC,cAAc,EAAE,KAAK,CAAC,cAAc;iBACrC,CAAC,CAAC;gBACH,OAAO;aACR;YAED,yGAAyG;YACzG,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG,iBAAiB,CAAC;YAClD,IAAI,CAAC,IAAA,wBAAgB,EAAC,cAAc,CAAC,EAAE;gBACrC,MAAM,IAAI,KAAK,CAAC,sCAAsC,cAAc,EAAE,CAAC,CAAC;aACzE;YACD,MAAM,YAAY,GAAuB;gBACvC,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,YAAY,EAAE,KAAK;aACpB,CAAC;YACF,MAAM,aAAa,GAAuC;gBACxD,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;gBAC/C,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrD,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC;aAC9D,CAAC;YACF,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAErB,MAAM,mBAAmB,GAAG,WAAW,CAAC;IACxC,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,kDAAkD;IAEzF,MAAM,OAAO,GACX,gBAAgB,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QACrC,CAAC,CAAC,YAAY,gBAAgB,CAAC,WAAW;aACrC,GAAG,CAAC,kBAAkB,CAAC;aACvB,IAAI,CAAC,GAAG,CAAC,KAAK;QACnB,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,SAAS,GACb,gBAAgB,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;QACxC,CAAC,CAAC,eAAe,gBAAgB,CAAC,cAAc;aAC3C,GAAG,CAAC,kBAAkB,CAAC;aACvB,IAAI,CAAC,GAAG,CAAC,KAAK;QACnB,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,YAAY,GAChB,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;QAC5C,CAAC,CAAC,mBAAmB,gBAAgB,CAAC,kBAAkB;aACnD,GAAG,CAAC,kBAAkB,CAAC;aACvB,IAAI,CAAC,GAAG,CAAC,KAAK;QACnB,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG;QACvB,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE;MACP,IAAA,uBAAe,EAAC;YAChB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,2BAA2B;YACnC,YAAY,EAAE,CAAC,iBAAiB,CAAC;SAClC,CAAC;MACA,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;mBAC9C,mBAAmB,KAAK,iBAAiB;QACpD,OAAO;QACP,SAAS;QACT,YAAY;QACZ,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;MAClE;QACF,oBAAoB,EAAE,mBAAmB;KAC1C,CAAC;AACJ,CAAC,CAAC;AA/JW,QAAA,oBAAoB,wBA+J/B;AAMF,MAAM,kBAAkB,GAAG,CAAC,EAC1B,YAAY,EACZ,cAAc,GACK,EAAU,EAAE,CAAC,GAAG,YAAY,KAAK,cAAc,EAAE,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const fixExistingResolvers: (result:
|
|
1
|
+
import type { RunContext } from '../types';
|
|
2
|
+
export declare const fixExistingResolvers: ({ result }: RunContext) => void;
|
|
@@ -4,7 +4,7 @@ exports.fixExistingResolvers = void 0;
|
|
|
4
4
|
const fs_1 = require("fs");
|
|
5
5
|
const ts_morph_1 = require("ts-morph");
|
|
6
6
|
const path = require("path");
|
|
7
|
-
const fixExistingResolvers = (result) => {
|
|
7
|
+
const fixExistingResolvers = ({ result }) => {
|
|
8
8
|
const existingResolverFiles = Object.entries(result.files).reduce((res, [filePath, file]) => {
|
|
9
9
|
if ((0, fs_1.existsSync)(filePath) && file.__filetype === 'resolver') {
|
|
10
10
|
res[filePath] = file;
|
|
@@ -15,10 +15,10 @@ const fixExistingResolvers = (result) => {
|
|
|
15
15
|
project.addSourceFilesAtPaths(Object.keys(existingResolverFiles));
|
|
16
16
|
const sourceFiles = project.getSourceFiles();
|
|
17
17
|
sourceFiles.forEach((sourceFile) => {
|
|
18
|
-
const
|
|
19
|
-
const file = existingResolverFiles[
|
|
18
|
+
const normalizedRelativePath = path.relative(process.cwd(), sourceFile.getFilePath());
|
|
19
|
+
const file = existingResolverFiles[normalizedRelativePath];
|
|
20
20
|
if (!file) {
|
|
21
|
-
throw new Error(`Unable to find resolver file: ${
|
|
21
|
+
throw new Error(`Unable to find resolver file: ${normalizedRelativePath}`);
|
|
22
22
|
}
|
|
23
23
|
// TODO: Check missing import
|
|
24
24
|
// ...
|
|
@@ -58,7 +58,7 @@ const fixExistingResolvers = (result) => {
|
|
|
58
58
|
// else, if identifier's been exported do nothing
|
|
59
59
|
}
|
|
60
60
|
// Overwrite existing files with fixes
|
|
61
|
-
result.files[
|
|
61
|
+
result.files[normalizedRelativePath] = Object.assign(Object.assign({}, file), { content: sourceFile.getText() });
|
|
62
62
|
});
|
|
63
63
|
};
|
|
64
64
|
exports.fixExistingResolvers = fixExistingResolvers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixExistingResolvers.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/fixExistingResolvers.ts"],"names":[],"mappings":";;;AAAA,2BAAgC;AAChC,uCAAmC;AACnC,6BAA6B;AAGtB,MAAM,oBAAoB,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"fixExistingResolvers.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/fixExistingResolvers.ts"],"names":[],"mappings":";;;AAAA,2BAAgC;AAChC,uCAAmC;AACnC,6BAA6B;AAGtB,MAAM,oBAAoB,GAAG,CAAC,EAAE,MAAM,EAAc,EAAQ,EAAE;IACnE,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAE/D,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;QAC1B,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;YAC1D,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;SACtB;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,OAAO,GAAG,IAAI,kBAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAC7C,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QACjC,MAAM,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAC1C,OAAO,CAAC,GAAG,EAAE,EACb,UAAU,CAAC,WAAW,EAAE,CACzB,CAAC;QACF,MAAM,IAAI,GAAG,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CACb,iCAAiC,sBAAsB,EAAE,CAC1D,CAAC;SACH;QAED,6BAA6B;QAC7B,MAAM;QAEN,4BAA4B;QAC5B,IAAI,+CAA+C,GAAG,KAAK,CAAC;QAC5D,MAAM,uCAAuC,GAC3C,UAAU,CAAC,oBAAoB,CAAC,CAAC,SAAS,EAAE,EAAE;YAC5C,IAAI,qBAAqB,GAAG,KAAK,CAAC;YAClC,SAAS;iBACN,kBAAkB,EAAE;iBACpB,eAAe,EAAE;iBACjB,OAAO,CAAC,CAAC,eAAe,EAAE,EAAE;gBAC3B,IAAI,eAAe,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,oBAAoB,EAAE;oBAC3D,qBAAqB,GAAG,IAAI,CAAC;oBAC7B,IAAI,SAAS,CAAC,UAAU,EAAE,EAAE;wBAC1B,+CAA+C,GAAG,IAAI,CAAC;qBACxD;iBACF;YACH,CAAC,CAAC,CAAC;YAEL,IAAI,CAAC,qBAAqB,EAAE;gBAC1B,OAAO,KAAK,CAAC;aACd;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,uCAAuC,EAAE;YAC5C,6FAA6F;YAC7F,UAAU,CAAC,aAAa,CACtB,0IAA0I,CAC3I,CAAC;YACF,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;SAC/D;aAAM,IACL,uCAAuC;YACvC,CAAC,+CAA+C,EAChD;YACA,qCAAqC;YACrC,kCAAkC;YAClC,MAAM,4BAA4B,GAAG,OAAO,CAC1C,UAAU,CAAC,uBAAuB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CACpE,CAAC;YACF,IAAI,CAAC,4BAA4B,EAAE;gBACjC,uCAAuC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;aAC7D;YACD,iDAAiD;SAClD;QAED,sCAAsC;QACtC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,mCAC/B,IAAI,KACP,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,GAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA9EW,QAAA,oBAAoB,wBA8E/B"}
|
|
@@ -1,27 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.handleGraphQLObjectType = void 0;
|
|
4
|
-
const path = require("path");
|
|
5
4
|
const utils_1 = require("../utils");
|
|
6
|
-
const handleGraphQLObjectType = ({
|
|
7
|
-
const
|
|
8
|
-
if (result.files[fieldFilePath]) {
|
|
9
|
-
throw new Error(`Unexpected duplication in field filename. Type: ${type.name}, file: ${fieldFilePath}`);
|
|
10
|
-
}
|
|
11
|
-
result.dirs[outputDir] = true;
|
|
12
|
-
const resolverTypeName = `${type.name}Resolvers`; // Generated type from typescript-resolvers plugin
|
|
13
|
-
const relativePathToResolverTypes = (0, utils_1.relativeModulePath)(outputDir, resolverTypesPath);
|
|
14
|
-
const pathToResolverModule = (0, utils_1.printImportModule)(relativePathToResolverTypes);
|
|
15
|
-
const resolverVariableStatement = `export const ${type.name}: ${resolverTypeName} = {
|
|
16
|
-
/* Implement ${type.name} resolver logic here */
|
|
17
|
-
};`;
|
|
5
|
+
const handleGraphQLObjectType = ({ fieldFilePath, resolverName, normalizedResolverName, resolversTypeMeta }, { result }) => {
|
|
6
|
+
const resolverVariableStatement = `export const ${resolverName}: ${resolversTypeMeta.typeString} = { /* Implement ${resolverName} resolver logic here */ };`;
|
|
18
7
|
result.files[fieldFilePath] = {
|
|
19
8
|
__filetype: 'resolver',
|
|
20
|
-
content: `
|
|
9
|
+
content: `
|
|
10
|
+
${(0, utils_1.printImportLine)({
|
|
11
|
+
isTypeImport: true,
|
|
12
|
+
module: resolversTypeMeta.module,
|
|
13
|
+
namedImports: [resolversTypeMeta.typeNamedImport],
|
|
14
|
+
})}
|
|
21
15
|
${resolverVariableStatement}`,
|
|
22
|
-
mainImportIdentifier:
|
|
16
|
+
mainImportIdentifier: resolverName,
|
|
23
17
|
meta: {
|
|
24
18
|
belongsToRootObject: null,
|
|
19
|
+
normalizedResolverName,
|
|
25
20
|
resolverVariableStatement,
|
|
26
21
|
},
|
|
27
22
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleGraphQLObjectType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/handleGraphQLObjectType.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"handleGraphQLObjectType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/handleGraphQLObjectType.ts"],"names":[],"mappings":";;;AACA,oCAA2C;AAEpC,MAAM,uBAAuB,GAAuB,CACzD,EAAE,aAAa,EAAE,YAAY,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,EAC1E,EAAE,MAAM,EAAE,EACV,EAAE;IACF,MAAM,yBAAyB,GAAG,gBAAgB,YAAY,KAAK,iBAAiB,CAAC,UAAU,qBAAqB,YAAY,4BAA4B,CAAC;IAE7J,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG;QAC5B,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE;MACP,IAAA,uBAAe,EAAC;YAChB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,iBAAiB,CAAC,MAAM;YAChC,YAAY,EAAE,CAAC,iBAAiB,CAAC,eAAe,CAAC;SAClD,CAAC;MACA,yBAAyB,EAAE;QAC7B,oBAAoB,EAAE,YAAY;QAClC,IAAI,EAAE;YACJ,mBAAmB,EAAE,IAAI;YACzB,sBAAsB;YACtB,yBAAyB;SAC1B;KACF,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,uBAAuB,2BAsBlC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleGraphQLRootObjectTypeField = void 0;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
const handleGraphQLRootObjectTypeField = ({ fieldFilePath, resolverName, belongsToRootObject, normalizedResolverName, resolversTypeMeta, }, { result }) => {
|
|
6
|
+
const resolverVariableStatement = `export const ${resolverName}: ${resolversTypeMeta.typeString} = async (_parent, _arg, _ctx) => { /* Implement ${normalizedResolverName} resolver logic here */ };`;
|
|
7
|
+
result.files[fieldFilePath] = {
|
|
8
|
+
__filetype: 'resolver',
|
|
9
|
+
content: `
|
|
10
|
+
${(0, utils_1.printImportLine)({
|
|
11
|
+
isTypeImport: true,
|
|
12
|
+
module: resolversTypeMeta.module,
|
|
13
|
+
namedImports: [resolversTypeMeta.typeNamedImport],
|
|
14
|
+
})}
|
|
15
|
+
${resolverVariableStatement}`,
|
|
16
|
+
mainImportIdentifier: resolverName,
|
|
17
|
+
meta: {
|
|
18
|
+
belongsToRootObject,
|
|
19
|
+
resolverVariableStatement,
|
|
20
|
+
normalizedResolverName,
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
exports.handleGraphQLRootObjectTypeField = handleGraphQLRootObjectTypeField;
|
|
25
|
+
//# sourceMappingURL=handleGraphQLRootObjectTypeField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleGraphQLRootObjectTypeField.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/handleGraphQLRootObjectTypeField.ts"],"names":[],"mappings":";;;AACA,oCAA2C;AAEpC,MAAM,gCAAgC,GAAuB,CAClE,EACE,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,GAClB,EACD,EAAE,MAAM,EAAE,EACV,EAAE;IACF,MAAM,yBAAyB,GAAG,gBAAgB,YAAY,KAAK,iBAAiB,CAAC,UAAU,oDAAoD,sBAAsB,4BAA4B,CAAC;IAEtM,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG;QAC5B,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE;UACH,IAAA,uBAAe,EAAC;YAChB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,iBAAiB,CAAC,MAAM;YAChC,YAAY,EAAE,CAAC,iBAAiB,CAAC,eAAe,CAAC;SAClD,CAAC;UACA,yBAAyB,EAAE;QACjC,oBAAoB,EAAE,YAAY;QAClC,IAAI,EAAE;YACJ,mBAAmB;YACnB,yBAAyB;YACzB,sBAAsB;SACvB;KACF,CAAC;AACJ,CAAC,CAAC;AA5BW,QAAA,gCAAgC,oCA4B3C"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleGraphQLScalarType = void 0;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
const graphQLScalarType = 'GraphQLScalarType';
|
|
6
|
+
const handleGraphQLScalarType = ({ fieldFilePath, resolverName, normalizedResolverName }, { result }) => {
|
|
7
|
+
const resolverVariableStatement = `export const ${resolverName}: ${graphQLScalarType} = { /* Implement ${resolverName} scalar logic here */ };`;
|
|
8
|
+
result.files[fieldFilePath] = {
|
|
9
|
+
__filetype: 'resolver',
|
|
10
|
+
content: `
|
|
11
|
+
${(0, utils_1.printImportLine)({
|
|
12
|
+
isTypeImport: true,
|
|
13
|
+
module: 'graphql',
|
|
14
|
+
namedImports: [graphQLScalarType],
|
|
15
|
+
})}
|
|
16
|
+
${resolverVariableStatement}`,
|
|
17
|
+
mainImportIdentifier: resolverName,
|
|
18
|
+
meta: {
|
|
19
|
+
belongsToRootObject: null,
|
|
20
|
+
normalizedResolverName,
|
|
21
|
+
resolverVariableStatement,
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
exports.handleGraphQLScalarType = handleGraphQLScalarType;
|
|
26
|
+
//# sourceMappingURL=handleGraphQLScalarType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleGraphQLScalarType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/handleGraphQLScalarType.ts"],"names":[],"mappings":";;;AACA,oCAA2C;AAE3C,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAEvC,MAAM,uBAAuB,GAAuB,CACzD,EAAE,aAAa,EAAE,YAAY,EAAE,sBAAsB,EAAE,EACvD,EAAE,MAAM,EAAE,EACV,EAAE;IACF,MAAM,yBAAyB,GAAG,gBAAgB,YAAY,KAAK,iBAAiB,qBAAqB,YAAY,0BAA0B,CAAC;IAEhJ,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG;QAC5B,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE;MACP,IAAA,uBAAe,EAAC;YAChB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,CAAC,iBAAiB,CAAC;SAClC,CAAC;MACA,yBAAyB,EAAE;QAC7B,oBAAoB,EAAE,YAAY;QAClC,IAAI,EAAE;YACJ,mBAAmB,EAAE,IAAI;YACzB,sBAAsB;YACtB,yBAAyB;SAC1B;KACF,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,uBAAuB,2BAsBlC"}
|
|
@@ -1,26 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.handleGraphQLUninionType = void 0;
|
|
4
|
-
const path = require("path");
|
|
5
4
|
const utils_1 = require("../utils");
|
|
6
|
-
const handleGraphQLUninionType = ({
|
|
7
|
-
const
|
|
8
|
-
const fieldFilePath = path.join(outputDir, `${typeName}.ts`);
|
|
9
|
-
if (result.files[fieldFilePath]) {
|
|
10
|
-
throw new Error(`Unexpected duplication in field filename. Type: ${typeName}, file: ${fieldFilePath}`);
|
|
11
|
-
}
|
|
12
|
-
result.dirs[outputDir] = true;
|
|
13
|
-
const resolverTypeName = `${typeName}Resolvers`; // Generated type from typescript-resolvers plugin
|
|
14
|
-
const relativePathToResolverTypes = (0, utils_1.relativeModulePath)(outputDir, resolverTypesPath);
|
|
15
|
-
const pathToResolverModule = (0, utils_1.printImportModule)(relativePathToResolverTypes);
|
|
16
|
-
const resolverVariableStatement = `export const ${typeName}: ${resolverTypeName} = { __resolveType: (parent) => parent.__typename };`;
|
|
5
|
+
const handleGraphQLUninionType = ({ fieldFilePath, resolverName, normalizedResolverName, resolversTypeMeta }, { result }) => {
|
|
6
|
+
const resolverVariableStatement = `export const ${resolverName}: ${resolversTypeMeta.typeString} = { __resolveType: (parent) => parent.__typename };`;
|
|
17
7
|
result.files[fieldFilePath] = {
|
|
18
8
|
__filetype: 'resolver',
|
|
19
|
-
content: `
|
|
9
|
+
content: `
|
|
10
|
+
${(0, utils_1.printImportLine)({
|
|
11
|
+
isTypeImport: true,
|
|
12
|
+
module: resolversTypeMeta.module,
|
|
13
|
+
namedImports: [resolversTypeMeta.typeNamedImport],
|
|
14
|
+
})}
|
|
20
15
|
${resolverVariableStatement}`,
|
|
21
|
-
mainImportIdentifier:
|
|
16
|
+
mainImportIdentifier: resolverName,
|
|
22
17
|
meta: {
|
|
23
18
|
belongsToRootObject: null,
|
|
19
|
+
normalizedResolverName,
|
|
24
20
|
resolverVariableStatement,
|
|
25
21
|
},
|
|
26
22
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleGraphQLUninionType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/handleGraphQLUninionType.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"handleGraphQLUninionType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/handleGraphQLUninionType.ts"],"names":[],"mappings":";;;AACA,oCAA2C;AAEpC,MAAM,wBAAwB,GAAuB,CAC1D,EAAE,aAAa,EAAE,YAAY,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,EAC1E,EAAE,MAAM,EAAE,EACV,EAAE;IACF,MAAM,yBAAyB,GAAG,gBAAgB,YAAY,KAAK,iBAAiB,CAAC,UAAU,sDAAsD,CAAC;IAEtJ,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG;QAC5B,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE;MACP,IAAA,uBAAe,EAAC;YAChB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,iBAAiB,CAAC,MAAM;YAChC,YAAY,EAAE,CAAC,iBAAiB,CAAC,eAAe,CAAC;SAClD,CAAC;MACA,yBAAyB,EAAE;QAC7B,oBAAoB,EAAE,YAAY;QAClC,IAAI,EAAE;YACJ,mBAAmB,EAAE,IAAI;YACzB,sBAAsB;YACtB,yBAAyB;SAC1B;KACF,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,wBAAwB,4BAsBnC"}
|
package/src/run/run.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const run: (
|
|
1
|
+
import type { RunContext } from '../types';
|
|
2
|
+
export declare const run: (ctx: RunContext) => void;
|
package/src/run/run.js
CHANGED
|
@@ -3,44 +3,58 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.run = void 0;
|
|
4
4
|
const graphql_1 = require("graphql");
|
|
5
5
|
const utils_1 = require("../utils");
|
|
6
|
-
const handleGraphQLRootObjectType_1 = require("./handleGraphQLRootObjectType");
|
|
7
|
-
const handleGraphQLObjectType_1 = require("./handleGraphQLObjectType");
|
|
8
|
-
const handleGraphQLUninionType_1 = require("./handleGraphQLUninionType");
|
|
9
6
|
const addResolversMainFile_1 = require("./addResolversMainFile");
|
|
10
7
|
const fixExistingResolvers_1 = require("./fixExistingResolvers");
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
8
|
+
const handleGraphQLRootObjectTypeField_1 = require("./handleGraphQLRootObjectTypeField");
|
|
9
|
+
const handleGraphQLObjectType_1 = require("./handleGraphQLObjectType");
|
|
10
|
+
const handleGraphQLUninionType_1 = require("./handleGraphQLUninionType");
|
|
11
|
+
const handleGraphQLScalarType_1 = require("./handleGraphQLScalarType");
|
|
12
|
+
const visitNamedType_1 = require("./visitNamedType");
|
|
13
|
+
const run = (ctx) => {
|
|
14
|
+
Object.entries(ctx.config.schema.getTypeMap()).forEach(([schemaType, namedType]) => {
|
|
15
|
+
const isPredefinedScalar = (0, graphql_1.isSpecifiedScalarType)(namedType);
|
|
16
|
+
const isIntrospection = (0, graphql_1.isIntrospectionType)(namedType);
|
|
17
|
+
// Ignore certain types:
|
|
18
|
+
// 1. introspection types i.e. with `__` prefixes
|
|
19
|
+
// 2. base scalars e.g. Boolean, Int, etc.
|
|
20
|
+
// 3. Other natives (mostly base scalars) which was not defined in the schema i.e. no `astNode`
|
|
21
|
+
if (isPredefinedScalar || isIntrospection || !namedType.astNode) {
|
|
20
22
|
return;
|
|
21
23
|
}
|
|
24
|
+
//
|
|
25
|
+
// "Visitor" pattern
|
|
26
|
+
//
|
|
27
|
+
const visitor = {
|
|
28
|
+
RootObjectTypeField: handleGraphQLRootObjectTypeField_1.handleGraphQLRootObjectTypeField,
|
|
29
|
+
ObjectType: handleGraphQLObjectType_1.handleGraphQLObjectType,
|
|
30
|
+
UnionType: handleGraphQLUninionType_1.handleGraphQLUninionType,
|
|
31
|
+
ScalarType: handleGraphQLScalarType_1.handleGraphQLScalarType,
|
|
32
|
+
};
|
|
22
33
|
if ((0, graphql_1.isObjectType)(namedType) && (0, utils_1.isRootObjectType)(schemaType)) {
|
|
23
|
-
(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
if (!locationInfo.isInWhitelistedModule) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
(0, handleGraphQLUninionType_1.handleGraphQLUninionType)({ type: namedType, outputDir: locationInfo.pathToLocation }, config, result);
|
|
34
|
+
Object.entries(namedType.getFields()).forEach(([fieldName, fieldNode]) => {
|
|
35
|
+
var _a;
|
|
36
|
+
return (0, visitNamedType_1.visitNamedType)({
|
|
37
|
+
namedType,
|
|
38
|
+
resolverName: fieldName,
|
|
39
|
+
belongsToRootObject: schemaType,
|
|
40
|
+
location: (_a = fieldNode.astNode) === null || _a === void 0 ? void 0 : _a.loc,
|
|
41
|
+
visitor,
|
|
42
|
+
}, ctx);
|
|
43
|
+
});
|
|
44
|
+
return;
|
|
38
45
|
}
|
|
46
|
+
(0, visitNamedType_1.visitNamedType)({
|
|
47
|
+
namedType,
|
|
48
|
+
resolverName: namedType.name,
|
|
49
|
+
belongsToRootObject: null,
|
|
50
|
+
location: namedType.astNode.loc,
|
|
51
|
+
visitor,
|
|
52
|
+
}, ctx);
|
|
39
53
|
});
|
|
40
54
|
// Check to see which resolver file exists already
|
|
41
|
-
(0, fixExistingResolvers_1.fixExistingResolvers)(
|
|
55
|
+
(0, fixExistingResolvers_1.fixExistingResolvers)(ctx);
|
|
42
56
|
// Put all resolvers into a barrel file (or main file)
|
|
43
|
-
(0, addResolversMainFile_1.addResolversMainFile)(
|
|
57
|
+
(0, addResolversMainFile_1.addResolversMainFile)(ctx);
|
|
44
58
|
};
|
|
45
59
|
exports.run = run;
|
|
46
60
|
//# sourceMappingURL=run.js.map
|
package/src/run/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/run.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/run.ts"],"names":[],"mappings":";;;AAAA,qCAIiB;AAEjB,oCAA4C;AAC5C,iEAA8D;AAC9D,iEAA8D;AAC9D,yFAAsF;AACtF,uEAAoE;AACpE,yEAAsE;AACtE,uEAAoE;AACpE,qDAAwE;AAEjE,MAAM,GAAG,GAAG,CAAC,GAAe,EAAQ,EAAE;IAC3C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CACpD,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE;QAC1B,MAAM,kBAAkB,GAAG,IAAA,+BAAqB,EAAC,SAAS,CAAC,CAAC;QAC5D,MAAM,eAAe,GAAG,IAAA,6BAAmB,EAAC,SAAS,CAAC,CAAC;QAEvD,wBAAwB;QACxB,iDAAiD;QACjD,0CAA0C;QAC1C,+FAA+F;QAC/F,IAAI,kBAAkB,IAAI,eAAe,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YAC/D,OAAO;SACR;QAED,EAAE;QACF,oBAAoB;QACpB,EAAE;QACF,MAAM,OAAO,GAAoC;YAC/C,mBAAmB,EAAE,mEAAgC;YACrD,UAAU,EAAE,iDAAuB;YACnC,SAAS,EAAE,mDAAwB;YACnC,UAAU,EAAE,iDAAuB;SACpC,CAAC;QAEF,IAAI,IAAA,sBAAY,EAAC,SAAS,CAAC,IAAI,IAAA,wBAAgB,EAAC,UAAU,CAAC,EAAE;YAC3D,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAC3C,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE;;gBACzB,OAAA,IAAA,+BAAc,EACZ;oBACE,SAAS;oBACT,YAAY,EAAE,SAAS;oBACvB,mBAAmB,EAAE,UAAU;oBAC/B,QAAQ,EAAE,MAAA,SAAS,CAAC,OAAO,0CAAE,GAAG;oBAChC,OAAO;iBACR,EACD,GAAG,CACJ,CAAA;aAAA,CACJ,CAAC;YACF,OAAO;SACR;QAED,IAAA,+BAAc,EACZ;YACE,SAAS;YACT,YAAY,EAAE,SAAS,CAAC,IAAI;YAC5B,mBAAmB,EAAE,IAAI;YACzB,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG;YAC/B,OAAO;SACR,EACD,GAAG,CACJ,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,kDAAkD;IAClD,IAAA,2CAAoB,EAAC,GAAG,CAAC,CAAC;IAE1B,sDAAsD;IACtD,IAAA,2CAAoB,EAAC,GAAG,CAAC,CAAC;AAC5B,CAAC,CAAC;AA3DW,QAAA,GAAG,OA2Dd"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { GraphQLNamedType, Location } from 'graphql';
|
|
2
|
+
import { GraphQLTypeHandler, RootObjectType, RunContext } from '../types';
|
|
3
|
+
export interface VisitNamedTypeParams {
|
|
4
|
+
namedType: GraphQLNamedType;
|
|
5
|
+
resolverName: string;
|
|
6
|
+
belongsToRootObject: RootObjectType | null;
|
|
7
|
+
visitor: {
|
|
8
|
+
RootObjectTypeField: GraphQLTypeHandler;
|
|
9
|
+
ObjectType: GraphQLTypeHandler;
|
|
10
|
+
ScalarType: GraphQLTypeHandler;
|
|
11
|
+
UnionType: GraphQLTypeHandler;
|
|
12
|
+
};
|
|
13
|
+
location?: Location;
|
|
14
|
+
}
|
|
15
|
+
export declare const visitNamedType: ({ namedType, resolverName, belongsToRootObject, location, visitor, }: VisitNamedTypeParams, ctx: RunContext) => void;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.visitNamedType = void 0;
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const graphql_1 = require("graphql");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
const addExternalResolverImport_1 = require("./addExternalResolverImport");
|
|
8
|
+
const visitNamedType = ({ namedType, resolverName, belongsToRootObject, location, visitor, }, ctx) => {
|
|
9
|
+
const normalizedResolverName = normalizeResolverName(resolverName, belongsToRootObject);
|
|
10
|
+
const externalResolverImportSyntax = ctx.config.externalResolvers[normalizedResolverName];
|
|
11
|
+
if (externalResolverImportSyntax) {
|
|
12
|
+
// If has external resolver, use it
|
|
13
|
+
(0, addExternalResolverImport_1.addExternalResolverImport)({
|
|
14
|
+
normalizedResolverName,
|
|
15
|
+
configImportSyntax: externalResolverImportSyntax,
|
|
16
|
+
}, ctx);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
// Check to see if need to generate resolver files
|
|
20
|
+
const outputDir = parseLocation(belongsToRootObject ? [belongsToRootObject] : [], ctx, location);
|
|
21
|
+
if (!outputDir) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
// Generate resolver files based on its type
|
|
25
|
+
const visitorHandlerParams = validateAndPrepareForGraphQLTypeHandler({ resolverName, normalizedResolverName, outputDir, belongsToRootObject }, ctx);
|
|
26
|
+
if ((0, graphql_1.isObjectType)(namedType)) {
|
|
27
|
+
belongsToRootObject
|
|
28
|
+
? visitor['RootObjectTypeField'](visitorHandlerParams, ctx)
|
|
29
|
+
: visitor['ObjectType'](visitorHandlerParams, ctx);
|
|
30
|
+
}
|
|
31
|
+
else if ((0, graphql_1.isUnionType)(namedType)) {
|
|
32
|
+
visitor['UnionType'](visitorHandlerParams, ctx);
|
|
33
|
+
}
|
|
34
|
+
else if ((0, graphql_1.isScalarType)(namedType)) {
|
|
35
|
+
visitor['ScalarType'](visitorHandlerParams, ctx);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
exports.visitNamedType = visitNamedType;
|
|
39
|
+
const parseLocation = (nestedDirs, { config: { mode, sourcesMap, whitelistedModules, baseOutputDir, relativeTargetDir, }, }, location) => {
|
|
40
|
+
if (!location) {
|
|
41
|
+
throw new Error('Location is invalid');
|
|
42
|
+
}
|
|
43
|
+
// If mode is "merged", there's only one module:
|
|
44
|
+
// - always generate a.k.a it's always whitelisted
|
|
45
|
+
// - put them together at degsinated relativeTargetDir
|
|
46
|
+
if (mode === 'merged') {
|
|
47
|
+
return path.join(baseOutputDir, relativeTargetDir, ...nestedDirs);
|
|
48
|
+
}
|
|
49
|
+
// 2. mode is "modules", each module is the folder containing the schema files
|
|
50
|
+
// This means one or multiple schema files can add up to one module
|
|
51
|
+
const sourceFilename = location.source.name;
|
|
52
|
+
const sourceFile = sourcesMap[sourceFilename];
|
|
53
|
+
if (!sourceFile) {
|
|
54
|
+
throw new Error(`Unable to find ${sourceFilename} in sourcesMap`);
|
|
55
|
+
}
|
|
56
|
+
const isInWhitelistedModule =
|
|
57
|
+
// whitelistedModules is empty a.k.a. all are whitelisted
|
|
58
|
+
whitelistedModules.length === 0
|
|
59
|
+
? true
|
|
60
|
+
: whitelistedModules.includes(sourceFile.moduleName);
|
|
61
|
+
return isInWhitelistedModule
|
|
62
|
+
? path.join(baseOutputDir, sourceFile.moduleName, relativeTargetDir, ...nestedDirs)
|
|
63
|
+
: undefined;
|
|
64
|
+
};
|
|
65
|
+
const validateAndPrepareForGraphQLTypeHandler = ({ resolverName, normalizedResolverName, outputDir, belongsToRootObject, }, { config, result }) => {
|
|
66
|
+
const fieldFilePath = path.join(outputDir, `${resolverName}.ts`);
|
|
67
|
+
if (result.files[fieldFilePath]) {
|
|
68
|
+
throw new Error(`Unexpected duplication in field filename. Type: ${resolverName}, file: ${fieldFilePath}`);
|
|
69
|
+
}
|
|
70
|
+
result.dirs[outputDir] = true;
|
|
71
|
+
// resolverTypeName are generated from typescript-resolvers plugin
|
|
72
|
+
const resolversTypeMetaModule = (0, utils_1.relativeModulePath)(outputDir, config.resolverTypesPath);
|
|
73
|
+
const resolversTypeMeta = belongsToRootObject
|
|
74
|
+
? {
|
|
75
|
+
typeNamedImport: `${belongsToRootObject}Resolvers`,
|
|
76
|
+
module: resolversTypeMetaModule,
|
|
77
|
+
typeString: `${belongsToRootObject}Resolvers['${resolverName}']`,
|
|
78
|
+
}
|
|
79
|
+
: {
|
|
80
|
+
typeNamedImport: `${resolverName}Resolvers`,
|
|
81
|
+
module: resolversTypeMetaModule,
|
|
82
|
+
typeString: `${resolverName}Resolvers`,
|
|
83
|
+
};
|
|
84
|
+
return {
|
|
85
|
+
fieldFilePath,
|
|
86
|
+
resolverName,
|
|
87
|
+
belongsToRootObject,
|
|
88
|
+
normalizedResolverName,
|
|
89
|
+
resolversTypeMeta,
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Function to get format resolver name based on its definition in the schema
|
|
94
|
+
* - Root object type resolver e.g Query.me, Mutation.updateUser
|
|
95
|
+
* - Object type e.g. User, Profile
|
|
96
|
+
*/
|
|
97
|
+
const normalizeResolverName = (name, rootObject) => {
|
|
98
|
+
if (!rootObject) {
|
|
99
|
+
return name;
|
|
100
|
+
}
|
|
101
|
+
return `${rootObject}.${name}`;
|
|
102
|
+
};
|
|
103
|
+
//# sourceMappingURL=visitNamedType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visitNamedType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/visitNamedType.ts"],"names":[],"mappings":"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"}
|
package/src/types.d.ts
CHANGED
|
@@ -13,29 +13,57 @@ export interface ResolverFile extends BaseVirtualFile {
|
|
|
13
13
|
meta: {
|
|
14
14
|
belongsToRootObject: RootObjectType | null;
|
|
15
15
|
resolverVariableStatement: string;
|
|
16
|
+
normalizedResolverName: string;
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
19
|
export declare type SourcesMap = Record<string, {
|
|
19
20
|
source: Source;
|
|
20
21
|
moduleName: string;
|
|
21
22
|
}>;
|
|
22
|
-
export interface
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
whitelistedModules: string[];
|
|
23
|
+
export interface ImportLineMeta {
|
|
24
|
+
isTypeImport: boolean;
|
|
25
|
+
module: string;
|
|
26
|
+
namedImports: (string | {
|
|
27
|
+
propertyName: string;
|
|
28
|
+
identifierName: string;
|
|
29
|
+
})[];
|
|
30
|
+
defaultImport?: string;
|
|
31
31
|
}
|
|
32
|
-
export interface
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
export interface RunContext {
|
|
33
|
+
config: {
|
|
34
|
+
schema: GraphQLSchema;
|
|
35
|
+
sourcesMap: SourcesMap;
|
|
36
|
+
baseOutputDir: string;
|
|
37
|
+
resolverTypesPath: string;
|
|
38
|
+
relativeTargetDir: string;
|
|
39
|
+
mainFile: string;
|
|
40
|
+
mode: 'merged' | 'modules';
|
|
41
|
+
whitelistedModules: string[];
|
|
42
|
+
externalResolvers: Record<string, string>;
|
|
43
|
+
};
|
|
44
|
+
result: {
|
|
45
|
+
dirs: Record<string, true>;
|
|
46
|
+
files: Record<string, StandardFile | ResolverFile>;
|
|
47
|
+
externalImports: Record<string, {
|
|
48
|
+
importLineMeta: ImportLineMeta;
|
|
49
|
+
identifierUsages: {
|
|
50
|
+
identifierName: string;
|
|
51
|
+
normalizedResolverName: string;
|
|
52
|
+
}[];
|
|
53
|
+
}>;
|
|
54
|
+
};
|
|
35
55
|
}
|
|
36
56
|
export declare type RootObjectType = 'Query' | 'Mutation' | 'Subscription';
|
|
37
|
-
export
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
57
|
+
export interface GraphQLTypeHandlerParams {
|
|
58
|
+
fieldFilePath: string;
|
|
59
|
+
resolverName: string;
|
|
60
|
+
belongsToRootObject: RootObjectType | null;
|
|
61
|
+
normalizedResolverName: string;
|
|
62
|
+
resolversTypeMeta: {
|
|
63
|
+
typeNamedImport: `${string}Resolvers`;
|
|
64
|
+
module: string;
|
|
65
|
+
typeString: `${string}Resolvers` | `${RootObjectType}Resolvers['${string}']`;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export declare type GraphQLTypeHandler = (params: GraphQLTypeHandlerParams, ctx: RunContext) => void;
|
|
41
69
|
export {};
|
package/src/utils.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Source } from '@graphql-tools/utils';
|
|
2
|
-
import type { RootObjectType, SourcesMap } from './types';
|
|
3
|
-
export declare const printImportModule: (moduleName: string) => string;
|
|
2
|
+
import type { ImportLineMeta, RootObjectType, SourcesMap } from './types';
|
|
4
3
|
export declare const isRootObjectType: (typeName: string) => typeName is RootObjectType;
|
|
5
4
|
export declare const relativeModulePath: (from: string, to: string) => string;
|
|
5
|
+
export declare const normalizeRelativePath: (path: string) => string;
|
|
6
6
|
export declare function parseSources(sources: Source[]): SourcesMap;
|
|
7
|
+
export declare function printImportLine({ isTypeImport, module, namedImports, defaultImport, }: ImportLineMeta): string;
|
package/src/utils.js
CHANGED
|
@@ -1,26 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseSources = exports.
|
|
3
|
+
exports.printImportLine = exports.parseSources = exports.normalizeRelativePath = exports.relativeModulePath = exports.isRootObjectType = void 0;
|
|
4
4
|
const path = require("path");
|
|
5
|
-
const printImportModule = (moduleName) => {
|
|
6
|
-
if (moduleName.endsWith('.ts')) {
|
|
7
|
-
return moduleName.split('.').slice(0, -1).join('.');
|
|
8
|
-
}
|
|
9
|
-
return moduleName;
|
|
10
|
-
};
|
|
11
|
-
exports.printImportModule = printImportModule;
|
|
12
5
|
const isRootObjectType = (typeName) => typeName === 'Query' ||
|
|
13
6
|
typeName === 'Mutation' ||
|
|
14
7
|
typeName === 'Subscription';
|
|
15
8
|
exports.isRootObjectType = isRootObjectType;
|
|
16
9
|
const relativeModulePath = (from, to) => {
|
|
17
10
|
const rawPath = path.relative(from, to);
|
|
18
|
-
|
|
19
|
-
return `./${rawPath}`;
|
|
20
|
-
}
|
|
21
|
-
return rawPath;
|
|
11
|
+
return (0, exports.normalizeRelativePath)(rawPath);
|
|
22
12
|
};
|
|
23
13
|
exports.relativeModulePath = relativeModulePath;
|
|
14
|
+
const normalizeRelativePath = (path) => {
|
|
15
|
+
if (!path.startsWith('../') || !path.startsWith('./')) {
|
|
16
|
+
return `./${path}`;
|
|
17
|
+
}
|
|
18
|
+
return path;
|
|
19
|
+
};
|
|
20
|
+
exports.normalizeRelativePath = normalizeRelativePath;
|
|
24
21
|
function parseSources(sources) {
|
|
25
22
|
const sourcesMap = {};
|
|
26
23
|
sources.forEach((source) => {
|
|
@@ -39,4 +36,29 @@ function parseSources(sources) {
|
|
|
39
36
|
return sourcesMap;
|
|
40
37
|
}
|
|
41
38
|
exports.parseSources = parseSources;
|
|
39
|
+
function printImportLine({ isTypeImport, module, namedImports, defaultImport, }) {
|
|
40
|
+
const typeImportKeyword = isTypeImport ? 'type' : '';
|
|
41
|
+
const hasDefaultImport = Boolean(defaultImport);
|
|
42
|
+
const hasNamedImports = namedImports.length > 0;
|
|
43
|
+
const namedImportsString = hasNamedImports
|
|
44
|
+
? `{ ${namedImports.map(printNamedImportSpecifier).join(',')} }`
|
|
45
|
+
: '';
|
|
46
|
+
return `import ${typeImportKeyword} ${defaultImport || ''} ${hasDefaultImport && hasNamedImports ? ',' : ''} ${namedImportsString} from '${normalizeModuleExtensionForImport(module)}';`;
|
|
47
|
+
}
|
|
48
|
+
exports.printImportLine = printImportLine;
|
|
49
|
+
const normalizeModuleExtensionForImport = (module) => {
|
|
50
|
+
if (module.endsWith('.ts')) {
|
|
51
|
+
return module.split('.').slice(0, -1).join('.');
|
|
52
|
+
}
|
|
53
|
+
return module;
|
|
54
|
+
};
|
|
55
|
+
const printNamedImportSpecifier = (namedImport) => {
|
|
56
|
+
if (typeof namedImport === 'string') {
|
|
57
|
+
return namedImport;
|
|
58
|
+
}
|
|
59
|
+
if (namedImport.propertyName === namedImport.identifierName) {
|
|
60
|
+
return namedImport.identifierName;
|
|
61
|
+
}
|
|
62
|
+
return `${namedImport.propertyName} as ${namedImport.identifierName}`;
|
|
63
|
+
};
|
|
42
64
|
//# sourceMappingURL=utils.js.map
|
package/src/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../packages/typescript-resolver-files/src/utils.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAItB,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../packages/typescript-resolver-files/src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.handleGraphQLRootObjectType = void 0;
|
|
4
|
-
const path = require("path");
|
|
5
|
-
const utils_1 = require("../utils");
|
|
6
|
-
const parseLocation_1 = require("./parseLocation");
|
|
7
|
-
const handleGraphQLRootObjectType = ({ type }, runConfig, result) => {
|
|
8
|
-
const typeName = type.name;
|
|
9
|
-
if (!(0, utils_1.isRootObjectType)(typeName)) {
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
const fields = type.getFields();
|
|
13
|
-
Object.entries(fields).forEach(([fieldName, fieldNode]) => {
|
|
14
|
-
var _a;
|
|
15
|
-
const locationInfo = (0, parseLocation_1.parseLocation)(runConfig, (_a = fieldNode.astNode) === null || _a === void 0 ? void 0 : _a.loc);
|
|
16
|
-
if (!locationInfo.isInWhitelistedModule) {
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
const outputDir = path.join(locationInfo.pathToLocation, typeName);
|
|
20
|
-
result.dirs[outputDir] = true;
|
|
21
|
-
const fieldFilePath = path.join(outputDir, `${fieldName}.ts`);
|
|
22
|
-
if (result.files[fieldFilePath]) {
|
|
23
|
-
throw new Error(`Unexpected duplication in field filename. Type: ${typeName}, file: ${fieldFilePath}`);
|
|
24
|
-
}
|
|
25
|
-
const resolverTypeName = `${typeName}Resolvers`; // Generated type from typescript-resolvers plugin
|
|
26
|
-
const relativePathToResolverTypes = (0, utils_1.relativeModulePath)(outputDir, runConfig.resolverTypesPath);
|
|
27
|
-
const pathToResolverModule = (0, utils_1.printImportModule)(relativePathToResolverTypes);
|
|
28
|
-
const resolverVariableStatement = `export const ${fieldName}: ${resolverTypeName}['${fieldName}'] = async (_parent, _arg, _ctx) => {
|
|
29
|
-
/* Implement ${typeName}.${fieldName} resolver logic here */
|
|
30
|
-
};`;
|
|
31
|
-
result.files[fieldFilePath] = {
|
|
32
|
-
__filetype: 'resolver',
|
|
33
|
-
content: `import type { ${resolverTypeName} } from '${pathToResolverModule}';
|
|
34
|
-
${resolverVariableStatement}`,
|
|
35
|
-
mainImportIdentifier: fieldName,
|
|
36
|
-
meta: {
|
|
37
|
-
belongsToRootObject: typeName,
|
|
38
|
-
resolverVariableStatement,
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
});
|
|
42
|
-
};
|
|
43
|
-
exports.handleGraphQLRootObjectType = handleGraphQLRootObjectType;
|
|
44
|
-
//# sourceMappingURL=handleGraphQLRootObjectType.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handleGraphQLRootObjectType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/handleGraphQLRootObjectType.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAG7B,oCAIkB;AAClB,mDAAgD;AAEzC,MAAM,2BAA2B,GAGpC,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;IAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;IAC3B,IAAI,CAAC,IAAA,wBAAgB,EAAC,QAAQ,CAAC,EAAE;QAC/B,OAAO;KACR;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAEhC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE;;QACxD,MAAM,YAAY,GAAG,IAAA,6BAAa,EAAC,SAAS,EAAE,MAAA,SAAS,CAAC,OAAO,0CAAE,GAAG,CAAC,CAAC;QACtE,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE;YACvC,OAAO;SACR;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QAE9B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS,KAAK,CAAC,CAAC;QAC9D,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;YAC/B,MAAM,IAAI,KAAK,CACb,mDAAmD,QAAQ,WAAW,aAAa,EAAE,CACtF,CAAC;SACH;QAED,MAAM,gBAAgB,GAAG,GAAG,QAAQ,WAAW,CAAC,CAAC,kDAAkD;QACnG,MAAM,2BAA2B,GAAG,IAAA,0BAAkB,EACpD,SAAS,EACT,SAAS,CAAC,iBAAiB,CAC5B,CAAC;QACF,MAAM,oBAAoB,GAAG,IAAA,yBAAiB,EAAC,2BAA2B,CAAC,CAAC;QAC5E,MAAM,yBAAyB,GAAG,gBAAgB,SAAS,KAAK,gBAAgB,KAAK,SAAS;qBAC7E,QAAQ,IAAI,SAAS;OACnC,CAAC;QAEJ,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG;YAC5B,UAAU,EAAE,UAAU;YACtB,OAAO,EAAE,iBAAiB,gBAAgB,YAAY,oBAAoB;QACxE,yBAAyB,EAAE;YAC7B,oBAAoB,EAAE,SAAS;YAC/B,IAAI,EAAE;gBACJ,mBAAmB,EAAE,QAAQ;gBAC7B,yBAAyB;aAC1B;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAhDW,QAAA,2BAA2B,+BAgDtC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { Location } from 'graphql';
|
|
2
|
-
import { RunConfig } from '../types';
|
|
3
|
-
export declare const parseLocation: ({ mode, sourcesMap, whitelistedModules, baseOutputDir, relativeTargetDir, }: RunConfig, location?: Location) => {
|
|
4
|
-
location: Location;
|
|
5
|
-
isInWhitelistedModule: boolean;
|
|
6
|
-
pathToLocation: string;
|
|
7
|
-
};
|
package/src/run/parseLocation.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseLocation = void 0;
|
|
4
|
-
const path = require("path");
|
|
5
|
-
const parseLocation = ({ mode, sourcesMap, whitelistedModules, baseOutputDir, relativeTargetDir, }, location) => {
|
|
6
|
-
if (!location) {
|
|
7
|
-
throw new Error('Location is invalid');
|
|
8
|
-
}
|
|
9
|
-
// If mode is "merged", there's only one module:
|
|
10
|
-
// - always generate a.k.a it's always whitelisted
|
|
11
|
-
// - put them together at degsinated relativeTargetDir
|
|
12
|
-
if (mode === 'merged') {
|
|
13
|
-
return {
|
|
14
|
-
location,
|
|
15
|
-
isInWhitelistedModule: true,
|
|
16
|
-
pathToLocation: path.join(baseOutputDir, relativeTargetDir),
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
// 2. mode is "modules", each module is the folder containing the schema files
|
|
20
|
-
// This means one or multiple schema files can add up to one module
|
|
21
|
-
const sourceFilename = location.source.name;
|
|
22
|
-
const sourceFile = sourcesMap[sourceFilename];
|
|
23
|
-
if (!sourceFile) {
|
|
24
|
-
throw new Error(`Unable to find ${sourceFilename} in sourcesMap`);
|
|
25
|
-
}
|
|
26
|
-
return {
|
|
27
|
-
location,
|
|
28
|
-
isInWhitelistedModule:
|
|
29
|
-
// whitelistedModules is empty a.k.a. all are whitelisted
|
|
30
|
-
whitelistedModules.length === 0
|
|
31
|
-
? true
|
|
32
|
-
: whitelistedModules.includes(sourceFile.moduleName),
|
|
33
|
-
pathToLocation: path.join(baseOutputDir, sourceFile.moduleName, relativeTargetDir),
|
|
34
|
-
};
|
|
35
|
-
};
|
|
36
|
-
exports.parseLocation = parseLocation;
|
|
37
|
-
//# sourceMappingURL=parseLocation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseLocation.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/parseLocation.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAItB,MAAM,aAAa,GAAG,CAC3B,EACE,IAAI,EACJ,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,iBAAiB,GACP,EACZ,QAAmB,EAKnB,EAAE;IACF,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;KACxC;IAED,gDAAgD;IAChD,qDAAqD;IACrD,wDAAwD;IACxD,IAAI,IAAI,KAAK,QAAQ,EAAE;QACrB,OAAO;YACL,QAAQ;YACR,qBAAqB,EAAE,IAAI;YAC3B,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC;SAC5D,CAAC;KACH;IAED,8EAA8E;IAC9E,mEAAmE;IACnE,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5C,MAAM,UAAU,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,kBAAkB,cAAc,gBAAgB,CAAC,CAAC;KACnE;IAED,OAAO;QACL,QAAQ;QACR,qBAAqB;QACnB,yDAAyD;QACzD,kBAAkB,CAAC,MAAM,KAAK,CAAC;YAC7B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC;QACxD,cAAc,EAAE,IAAI,CAAC,IAAI,CACvB,aAAa,EACb,UAAU,CAAC,UAAU,EACrB,iBAAiB,CAClB;KACF,CAAC;AACJ,CAAC,CAAC;AAlDW,QAAA,aAAa,iBAkDxB"}
|