@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.
Files changed (43) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +8 -7
  3. package/package.json +1 -1
  4. package/src/plugin.d.ts +2 -0
  5. package/src/plugin.js +15 -10
  6. package/src/plugin.js.map +1 -1
  7. package/src/run/addExternalResolverImport.d.ts +7 -0
  8. package/src/run/addExternalResolverImport.js +99 -0
  9. package/src/run/addExternalResolverImport.js.map +1 -0
  10. package/src/run/addResolversMainFile.d.ts +2 -8
  11. package/src/run/addResolversMainFile.js +77 -18
  12. package/src/run/addResolversMainFile.js.map +1 -1
  13. package/src/run/fixExistingResolvers.d.ts +2 -2
  14. package/src/run/fixExistingResolvers.js +5 -5
  15. package/src/run/fixExistingResolvers.js.map +1 -1
  16. package/src/run/handleGraphQLObjectType.d.ts +1 -2
  17. package/src/run/handleGraphQLObjectType.js +10 -15
  18. package/src/run/handleGraphQLObjectType.js.map +1 -1
  19. package/src/run/handleGraphQLRootObjectTypeField.d.ts +2 -0
  20. package/src/run/handleGraphQLRootObjectTypeField.js +25 -0
  21. package/src/run/handleGraphQLRootObjectTypeField.js.map +1 -0
  22. package/src/run/handleGraphQLScalarType.d.ts +2 -0
  23. package/src/run/handleGraphQLScalarType.js +26 -0
  24. package/src/run/handleGraphQLScalarType.js.map +1 -0
  25. package/src/run/handleGraphQLUninionType.d.ts +1 -2
  26. package/src/run/handleGraphQLUninionType.js +10 -14
  27. package/src/run/handleGraphQLUninionType.js.map +1 -1
  28. package/src/run/run.d.ts +2 -2
  29. package/src/run/run.js +43 -29
  30. package/src/run/run.js.map +1 -1
  31. package/src/run/visitNamedType.d.ts +15 -0
  32. package/src/run/visitNamedType.js +103 -0
  33. package/src/run/visitNamedType.js.map +1 -0
  34. package/src/types.d.ts +44 -16
  35. package/src/utils.d.ts +3 -2
  36. package/src/utils.js +34 -12
  37. package/src/utils.js.map +1 -1
  38. package/src/run/handleGraphQLRootObjectType.d.ts +0 -3
  39. package/src/run/handleGraphQLRootObjectType.js +0 -44
  40. package/src/run/handleGraphQLRootObjectType.js.map +0 -1
  41. package/src/run/parseLocation.d.ts +0 -7
  42. package/src/run/parseLocation.js +0 -37
  43. package/src/run/parseLocation.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @eddeee888/gcg-typescript-resolver-files
2
2
 
3
+ ## 0.0.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 0a99233: Implement generating logic for Scalar type
8
+ - b2fe4da: Implement config.externalResolvers
9
+
3
10
  ## 0.0.1
4
11
 
5
12
  ### Patch Changes
package/README.md CHANGED
@@ -33,10 +33,11 @@ generates:
33
33
 
34
34
  ## Config
35
35
 
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. |
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eddeee888/gcg-typescript-resolver-files",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "dependencies": {
5
5
  "@graphql-codegen/plugin-helpers": "^2.7.1",
6
6
  "graphql": "^16.6.0",
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
- schema,
30
- sourcesMap,
31
- baseOutputDir,
32
- resolverTypesPath,
33
- relativeTargetDir,
34
- mainFile,
35
- mode,
36
- whitelistedModules,
37
- }, result);
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":"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"}
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 { RunResult } from '../types';
2
- interface AddResolversMainFileParams {
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
- const pathToModule = (0, utils_1.printImportModule)((0, utils_1.relativeModulePath)(outputDir, filepath));
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.objectTypes.push(file.mainImportIdentifier);
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(file.mainImportIdentifier),
25
- Mutation: () => res.mutationFields.push(file.mainImportIdentifier),
26
- Subscription: () => res.subscriptionFields.push(file.mainImportIdentifier),
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((field) => field)
42
- .join(',\n')} },`
95
+ .map(printObjectMapping)
96
+ .join(',')} },`
43
97
  : '';
44
98
  const mutations = resolversDetails.mutationFields.length > 0
45
99
  ? `Mutation: { ${resolversDetails.mutationFields
46
- .map((field) => field)
47
- .join(',\n')} },`
100
+ .map(printObjectMapping)
101
+ .join(',')} },`
48
102
  : '';
49
103
  const suscriptions = resolversDetails.subscriptionFields.length > 0
50
104
  ? `Subscription: { ${resolversDetails.subscriptionFields
51
- .map((field) => field)
52
- .join(',\n')} },`
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
- import type { ${resolversTypeName} } from '${pathToResolverModule}';
58
- ${resolversDetails.importLines.map((line) => line).join(';\n')}
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((type) => type).join(',\n')}
121
+ ${resolversDetails.objectTypes.map(printObjectMapping).join(',\n')}
64
122
  }`,
65
- mainImportIdentifier: 'resolvers',
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":"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"}
1
+ {"version":3,"file":"addResolversMainFile.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/addResolversMainFile.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import type { RunResult } from '../types';
2
- export declare const fixExistingResolvers: (result: RunResult) => void;
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 normalisedRelativePath = path.relative(process.cwd(), sourceFile.getFilePath());
19
- const file = existingResolverFiles[normalisedRelativePath];
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: ${normalisedRelativePath}`);
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[normalisedRelativePath] = Object.assign(Object.assign({}, file), { content: sourceFile.getText() });
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,MAAiB,EAAE,EAAE;IACxD,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
+ {"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,3 +1,2 @@
1
- import type { GraphQLObjectType } from 'graphql';
2
1
  import type { GraphQLTypeHandler } from '../types';
3
- export declare const handleGraphQLObjectType: GraphQLTypeHandler<GraphQLObjectType>;
2
+ export declare const handleGraphQLObjectType: GraphQLTypeHandler;
@@ -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 = ({ type, outputDir }, { resolverTypesPath }, result) => {
7
- const fieldFilePath = path.join(outputDir, `${type.name}.ts`);
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: `import type { ${resolverTypeName} } from '${pathToResolverModule}';
9
+ content: `
10
+ ${(0, utils_1.printImportLine)({
11
+ isTypeImport: true,
12
+ module: resolversTypeMeta.module,
13
+ namedImports: [resolversTypeMeta.typeNamedImport],
14
+ })}
21
15
  ${resolverVariableStatement}`,
22
- mainImportIdentifier: type.name,
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":";;;AAAA,6BAA6B;AAG7B,oCAAiE;AAE1D,MAAM,uBAAuB,GAA0C,CAC5E,EAAE,IAAI,EAAE,SAAS,EAAE,EACnB,EAAE,iBAAiB,EAAE,EACrB,MAAM,EACN,EAAE;IACF,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;IAC9D,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;QAC/B,MAAM,IAAI,KAAK,CACb,mDAAmD,IAAI,CAAC,IAAI,WAAW,aAAa,EAAE,CACvF,CAAC;KACH;IAED,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IAE9B,MAAM,gBAAgB,GAAG,GAAG,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC,kDAAkD;IACpG,MAAM,2BAA2B,GAAG,IAAA,0BAAkB,EACpD,SAAS,EACT,iBAAiB,CAClB,CAAC;IACF,MAAM,oBAAoB,GAAG,IAAA,yBAAiB,EAAC,2BAA2B,CAAC,CAAC;IAC5E,MAAM,yBAAyB,GAAG,gBAAgB,IAAI,CAAC,IAAI,KAAK,gBAAgB;iBACjE,IAAI,CAAC,IAAI;GACvB,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG;QAC5B,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE,iBAAiB,gBAAgB,YAAY,oBAAoB;MACxE,yBAAyB,EAAE;QAC7B,oBAAoB,EAAE,IAAI,CAAC,IAAI;QAC/B,IAAI,EAAE;YACJ,mBAAmB,EAAE,IAAI;YACzB,yBAAyB;SAC1B;KACF,CAAC;AACJ,CAAC,CAAC;AAjCW,QAAA,uBAAuB,2BAiClC"}
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,2 @@
1
+ import type { GraphQLTypeHandler } from '../types';
2
+ export declare const handleGraphQLRootObjectTypeField: GraphQLTypeHandler;
@@ -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,2 @@
1
+ import type { GraphQLTypeHandler } from '../types';
2
+ export declare const handleGraphQLScalarType: GraphQLTypeHandler;
@@ -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,3 +1,2 @@
1
- import type { GraphQLUnionType } from 'graphql';
2
1
  import type { GraphQLTypeHandler } from '../types';
3
- export declare const handleGraphQLUninionType: GraphQLTypeHandler<GraphQLUnionType>;
2
+ export declare const handleGraphQLUninionType: GraphQLTypeHandler;
@@ -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 = ({ type, outputDir }, { resolverTypesPath }, result) => {
7
- const typeName = type.name;
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: `import type { ${resolverTypeName} } from '${pathToResolverModule}';
9
+ content: `
10
+ ${(0, utils_1.printImportLine)({
11
+ isTypeImport: true,
12
+ module: resolversTypeMeta.module,
13
+ namedImports: [resolversTypeMeta.typeNamedImport],
14
+ })}
20
15
  ${resolverVariableStatement}`,
21
- mainImportIdentifier: typeName,
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":";;;AAAA,6BAA6B;AAG7B,oCAAiE;AAE1D,MAAM,wBAAwB,GAAyC,CAC5E,EAAE,IAAI,EAAE,SAAS,EAAE,EACnB,EAAE,iBAAiB,EAAE,EACrB,MAAM,EACN,EAAE;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;IAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;QAC/B,MAAM,IAAI,KAAK,CACb,mDAAmD,QAAQ,WAAW,aAAa,EAAE,CACtF,CAAC;KACH;IAED,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IAE9B,MAAM,gBAAgB,GAAG,GAAG,QAAQ,WAAW,CAAC,CAAC,kDAAkD;IACnG,MAAM,2BAA2B,GAAG,IAAA,0BAAkB,EACpD,SAAS,EACT,iBAAiB,CAClB,CAAC;IACF,MAAM,oBAAoB,GAAG,IAAA,yBAAiB,EAAC,2BAA2B,CAAC,CAAC;IAC5E,MAAM,yBAAyB,GAAG,gBAAgB,QAAQ,KAAK,gBAAgB,sDAAsD,CAAC;IACtI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG;QAC5B,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE,iBAAiB,gBAAgB,YAAY,oBAAoB;MACxE,yBAAyB,EAAE;QAC7B,oBAAoB,EAAE,QAAQ;QAC9B,IAAI,EAAE;YACJ,mBAAmB,EAAE,IAAI;YACzB,yBAAyB;SAC1B;KACF,CAAC;AACJ,CAAC,CAAC;AAhCW,QAAA,wBAAwB,4BAgCnC"}
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 { RunConfig, RunResult } from '../types';
2
- export declare const run: (config: RunConfig, result: RunResult) => void;
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 parseLocation_1 = require("./parseLocation");
12
- const run = (config, result) => {
13
- Object.entries(config.schema.getTypeMap()).forEach(([schemaType, namedType]) => {
14
- // There are a few internal types with `__` prefixes. We don't want them.
15
- if (schemaType.startsWith('__')) {
16
- return;
17
- }
18
- // Types without astNode are natives such as Boolean, Int, etc.
19
- if (!namedType.astNode) {
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
- (0, handleGraphQLRootObjectType_1.handleGraphQLRootObjectType)({ type: namedType, outputDir: null }, config, result);
24
- }
25
- else if ((0, graphql_1.isObjectType)(namedType) && !(0, utils_1.isRootObjectType)(schemaType)) {
26
- const localtionInfo = (0, parseLocation_1.parseLocation)(config, namedType.astNode.loc);
27
- if (!localtionInfo.isInWhitelistedModule) {
28
- return;
29
- }
30
- (0, handleGraphQLObjectType_1.handleGraphQLObjectType)({ type: namedType, outputDir: localtionInfo.pathToLocation }, config, result);
31
- }
32
- else if ((0, graphql_1.isUnionType)(namedType)) {
33
- const locationInfo = (0, parseLocation_1.parseLocation)(config, namedType.astNode.loc);
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)(result);
55
+ (0, fixExistingResolvers_1.fixExistingResolvers)(ctx);
42
56
  // Put all resolvers into a barrel file (or main file)
43
- (0, addResolversMainFile_1.addResolversMainFile)(config, result);
57
+ (0, addResolversMainFile_1.addResolversMainFile)(ctx);
44
58
  };
45
59
  exports.run = run;
46
60
  //# sourceMappingURL=run.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/run.ts"],"names":[],"mappings":";;;AAAA,qCAAoD;AAEpD,oCAA4C;AAC5C,+EAA4E;AAC5E,uEAAoE;AACpE,yEAAsE;AACtE,iEAA8D;AAC9D,iEAA8D;AAC9D,mDAAgD;AAEzC,MAAM,GAAG,GAAG,CAAC,MAAiB,EAAE,MAAiB,EAAQ,EAAE;IAChE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAChD,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE;QAC1B,yEAAyE;QACzE,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YAC/B,OAAO;SACR;QACD,+DAA+D;QAC/D,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACtB,OAAO;SACR;QAED,IAAI,IAAA,sBAAY,EAAC,SAAS,CAAC,IAAI,IAAA,wBAAgB,EAAC,UAAU,CAAC,EAAE;YAC3D,IAAA,yDAA2B,EACzB,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,EACpC,MAAM,EACN,MAAM,CACP,CAAC;SACH;aAAM,IAAI,IAAA,sBAAY,EAAC,SAAS,CAAC,IAAI,CAAC,IAAA,wBAAgB,EAAC,UAAU,CAAC,EAAE;YACnE,MAAM,aAAa,GAAG,IAAA,6BAAa,EAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACnE,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE;gBACxC,OAAO;aACR;YACD,IAAA,iDAAuB,EACrB,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,cAAc,EAAE,EAC5D,MAAM,EACN,MAAM,CACP,CAAC;SACH;aAAM,IAAI,IAAA,qBAAW,EAAC,SAAS,CAAC,EAAE;YACjC,MAAM,YAAY,GAAG,IAAA,6BAAa,EAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAClE,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE;gBACvC,OAAO;aACR;YACD,IAAA,mDAAwB,EACtB,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,cAAc,EAAE,EAC3D,MAAM,EACN,MAAM,CACP,CAAC;SACH;IACH,CAAC,CACF,CAAC;IAEF,kDAAkD;IAClD,IAAA,2CAAoB,EAAC,MAAM,CAAC,CAAC;IAE7B,sDAAsD;IACtD,IAAA,2CAAoB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC;AA/CW,QAAA,GAAG,OA+Cd"}
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 RunConfig {
23
- schema: GraphQLSchema;
24
- sourcesMap: SourcesMap;
25
- baseOutputDir: string;
26
- resolverTypesPath: string;
27
- relativeTargetDir: string;
28
- mainFile: string;
29
- mode: 'merged' | 'modules';
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 RunResult {
33
- dirs: Record<string, true>;
34
- files: Record<string, StandardFile | ResolverFile>;
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 declare type GraphQLTypeHandler<T, O = string> = (params: {
38
- type: T;
39
- outputDir: O;
40
- }, runConfig: RunConfig, result: RunResult) => void;
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.relativeModulePath = exports.isRootObjectType = exports.printImportModule = void 0;
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
- if (!rawPath.startsWith('../') || !rawPath.startsWith('./')) {
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,iBAAiB,GAAG,CAAC,UAAkB,EAAE,EAAE;IACtD,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC9B,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACrD;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AALW,QAAA,iBAAiB,qBAK5B;AAEK,MAAM,gBAAgB,GAAG,CAC9B,QAAgB,EACY,EAAE,CAC9B,QAAQ,KAAK,OAAO;IACpB,QAAQ,KAAK,UAAU;IACvB,QAAQ,KAAK,cAAc,CAAC;AALjB,QAAA,gBAAgB,oBAKC;AAEvB,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,EAAU,EAAE,EAAE;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAExC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QAC3D,OAAO,KAAK,OAAO,EAAE,CAAC;KACvB;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AARW,QAAA,kBAAkB,sBAQ7B;AAEF,SAAgB,YAAY,CAAC,OAAiB;IAC5C,MAAM,UAAU,GAAe,EAAE,CAAC;IAElC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;SAC5C;QAED,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI;aACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;aACxB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;aACf,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEb,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;YAC5B,MAAM;YACN,UAAU;SACX,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC;AApBD,oCAoBC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../packages/typescript-resolver-files/src/utils.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { GraphQLObjectType } from 'graphql';
2
- import type { GraphQLTypeHandler } from '../types';
3
- export declare const handleGraphQLRootObjectType: GraphQLTypeHandler<GraphQLObjectType, null>;
@@ -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
- };
@@ -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"}