@eddeee888/gcg-typescript-resolver-files 0.17.0 → 0.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +3 -3
- package/{src → dist}/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.d.ts +2 -2
- package/{src → dist}/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.js +11 -17
- package/dist/addVirtualTypesFileToTsMorphProject/index.d.ts +1 -0
- package/dist/addVirtualTypesFileToTsMorphProject/index.js +1 -0
- package/{src → dist}/defineConfig.d.ts +1 -1
- package/{src → dist}/defineConfig.js +4 -10
- package/{src → dist}/generateResolverFiles/addExternalResolverImport.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/addExternalResolverImport.js +3 -8
- package/{src → dist}/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.js +9 -14
- package/{src → dist}/generateResolverFiles/addResolverMainFiles.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/addResolverMainFiles.js +11 -17
- package/{src → dist}/generateResolverFiles/ensureEnumTypeResolversAreGenerated.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/ensureEnumTypeResolversAreGenerated.js +6 -11
- package/{src → dist}/generateResolverFiles/generateResolverFiles.d.ts +1 -1
- package/dist/generateResolverFiles/generateResolverFiles.js +87 -0
- package/{src → dist}/generateResolverFiles/getImportStatementWithExpectedNamedImport.d.ts +1 -1
- package/dist/generateResolverFiles/getImportStatementWithExpectedNamedImport.js +14 -0
- package/{src → dist}/generateResolverFiles/getVariableStatementWithExpectedIdentifier.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/getVariableStatementWithExpectedIdentifier.js +1 -6
- package/{src → dist}/generateResolverFiles/handleGraphQLEnumType.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/handleGraphQLEnumType.js +6 -11
- package/{src → dist}/generateResolverFiles/handleGraphQLInterfaceType.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/handleGraphQLInterfaceType.js +6 -11
- package/{src → dist}/generateResolverFiles/handleGraphQLObjectType.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/handleGraphQLObjectType.js +8 -14
- package/dist/generateResolverFiles/handleGraphQLRootObjectTypeField.d.ts +3 -0
- package/{src → dist}/generateResolverFiles/handleGraphQLRootObjectTypeField.js +8 -13
- package/{src → dist}/generateResolverFiles/handleGraphQLScalarType.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/handleGraphQLScalarType.js +6 -11
- package/{src → dist}/generateResolverFiles/handleGraphQLUnionType.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/handleGraphQLUnionType.js +5 -10
- package/dist/generateResolverFiles/index.d.ts +2 -0
- package/dist/generateResolverFiles/index.js +1 -0
- package/{src → dist}/generateResolverFiles/postProcessFiles.d.ts +1 -1
- package/{src → dist}/generateResolverFiles/postProcessFiles.js +24 -26
- package/{src → dist}/generateResolverFiles/types.d.ts +6 -6
- package/dist/generateResolverFiles/types.js +1 -0
- package/{src → dist}/generateResolverFiles/visitNamedType.d.ts +2 -2
- package/{src → dist}/generateResolverFiles/visitNamedType.js +3 -8
- package/dist/generateTypeDefsFiles/generateTypeDefsContent.js +7 -0
- package/{src → dist}/generateTypeDefsFiles/generateTypeDefsFiles.d.ts +3 -3
- package/{src → dist}/generateTypeDefsFiles/generateTypeDefsFiles.js +7 -13
- package/dist/generateTypeDefsFiles/index.d.ts +1 -0
- package/dist/generateTypeDefsFiles/index.js +1 -0
- package/{src → dist}/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.d.ts +3 -3
- package/{src → dist}/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js +17 -22
- package/{src → dist}/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.js +5 -10
- package/dist/getGraphQLObjectTypeResolversToGenerate/index.d.ts +1 -0
- package/dist/getGraphQLObjectTypeResolversToGenerate/index.js +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/normalizeAddConfigPath/index.d.ts +1 -0
- package/dist/normalizeAddConfigPath/index.js +1 -0
- package/{src → dist}/normalizeAddConfigPath/normalizeAddConfigPath.d.ts +1 -1
- package/{src → dist}/normalizeAddConfigPath/normalizeAddConfigPath.js +2 -8
- package/{src → dist}/parseGraphQLSchema/index.d.ts +2 -2
- package/dist/parseGraphQLSchema/index.js +1 -0
- package/{src → dist}/parseGraphQLSchema/normalizeResolverName.d.ts +1 -1
- package/{src → dist}/parseGraphQLSchema/normalizeResolverName.js +1 -6
- package/{src → dist}/parseGraphQLSchema/parseGraphQLSchema.d.ts +5 -5
- package/{src → dist}/parseGraphQLSchema/parseGraphQLSchema.js +43 -50
- package/{src → dist}/parseGraphQLSchema/parseLocationForOutputDir.d.ts +2 -2
- package/{src → dist}/parseGraphQLSchema/parseLocationForOutputDir.js +4 -10
- package/dist/parseSources/index.d.ts +1 -0
- package/dist/parseSources/index.js +1 -0
- package/{src → dist}/parseSources/parseSources.d.ts +1 -1
- package/{src → dist}/parseSources/parseSources.js +2 -7
- package/{src → dist}/parseTypeMappers/collectTypeMappersFromSourceFile.d.ts +2 -2
- package/{src → dist}/parseTypeMappers/collectTypeMappersFromSourceFile.js +15 -21
- package/dist/parseTypeMappers/index.d.ts +1 -0
- package/dist/parseTypeMappers/index.js +1 -0
- package/{src → dist}/parseTypeMappers/parseTypeMappers.d.ts +2 -2
- package/dist/parseTypeMappers/parseTypeMappers.js +20 -0
- package/{src → dist}/preset.d.ts +1 -1
- package/dist/preset.js +214 -0
- package/dist/utils/cwd.js +7 -0
- package/dist/utils/fmt.js +15 -0
- package/dist/utils/index.d.ts +12 -0
- package/dist/utils/index.js +12 -0
- package/{src → dist}/utils/isMatchResolverNamePattern.js +3 -9
- package/dist/utils/isNativeNamedType.js +13 -0
- package/dist/utils/isRootObjectType.js +3 -0
- package/{src → dist}/utils/isWhitelistedModule.js +1 -6
- package/{src → dist}/utils/logger.d.ts +1 -1
- package/dist/utils/logger.js +13 -0
- package/dist/utils/normalizeImportExtension.js +9 -0
- package/dist/utils/normalizeRelativePath.js +6 -0
- package/{src → dist}/utils/parseLocationForWhitelistedModule.d.ts +1 -1
- package/dist/utils/parseLocationForWhitelistedModule.js +17 -0
- package/{src → dist}/utils/printImportLine.d.ts +1 -1
- package/{src → dist}/utils/printImportLine.js +3 -7
- package/dist/utils/relativeModulePath.js +6 -0
- package/dist/validateAndMergeParsedConfigs/index.d.ts +1 -0
- package/dist/validateAndMergeParsedConfigs/index.js +1 -0
- package/{src → dist}/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.d.ts +2 -2
- package/{src → dist}/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.js +16 -13
- package/dist/validatePresetConfig/index.d.ts +1 -0
- package/dist/validatePresetConfig/index.js +1 -0
- package/{src → dist}/validatePresetConfig/validatePresetConfig.d.ts +2 -2
- package/{src → dist}/validatePresetConfig/validatePresetConfig.js +29 -36
- package/package.json +22 -11
- package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.js.map +0 -1
- package/src/addVirtualTypesFileToTsMorphProject/index.d.ts +0 -1
- package/src/addVirtualTypesFileToTsMorphProject/index.js +0 -5
- package/src/addVirtualTypesFileToTsMorphProject/index.js.map +0 -1
- package/src/defineConfig.js.map +0 -1
- package/src/generateResolverFiles/addExternalResolverImport.js.map +0 -1
- package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.js.map +0 -1
- package/src/generateResolverFiles/addResolverMainFiles.js.map +0 -1
- package/src/generateResolverFiles/ensureEnumTypeResolversAreGenerated.js.map +0 -1
- package/src/generateResolverFiles/generateResolverFiles.js +0 -54
- package/src/generateResolverFiles/generateResolverFiles.js.map +0 -1
- package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.js +0 -20
- package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.js.map +0 -1
- package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.js.map +0 -1
- package/src/generateResolverFiles/handleGraphQLEnumType.js.map +0 -1
- package/src/generateResolverFiles/handleGraphQLInterfaceType.js.map +0 -1
- package/src/generateResolverFiles/handleGraphQLObjectType.js.map +0 -1
- package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.d.ts +0 -3
- package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.js.map +0 -1
- package/src/generateResolverFiles/handleGraphQLScalarType.js.map +0 -1
- package/src/generateResolverFiles/handleGraphQLUnionType.js.map +0 -1
- package/src/generateResolverFiles/index.d.ts +0 -2
- package/src/generateResolverFiles/index.js +0 -6
- package/src/generateResolverFiles/index.js.map +0 -1
- package/src/generateResolverFiles/postProcessFiles.js.map +0 -1
- package/src/generateResolverFiles/types.js +0 -3
- package/src/generateResolverFiles/types.js.map +0 -1
- package/src/generateResolverFiles/visitNamedType.js.map +0 -1
- package/src/generateTypeDefsFiles/generateTypeDefsContent.js +0 -12
- package/src/generateTypeDefsFiles/generateTypeDefsContent.js.map +0 -1
- package/src/generateTypeDefsFiles/generateTypeDefsFiles.js.map +0 -1
- package/src/generateTypeDefsFiles/index.d.ts +0 -1
- package/src/generateTypeDefsFiles/index.js +0 -5
- package/src/generateTypeDefsFiles/index.js.map +0 -1
- package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js.map +0 -1
- package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.js.map +0 -1
- package/src/getGraphQLObjectTypeResolversToGenerate/index.d.ts +0 -1
- package/src/getGraphQLObjectTypeResolversToGenerate/index.js +0 -5
- package/src/getGraphQLObjectTypeResolversToGenerate/index.js.map +0 -1
- package/src/index.d.ts +0 -3
- package/src/index.js +0 -10
- package/src/index.js.map +0 -1
- package/src/normalizeAddConfigPath/index.d.ts +0 -1
- package/src/normalizeAddConfigPath/index.js +0 -5
- package/src/normalizeAddConfigPath/index.js.map +0 -1
- package/src/normalizeAddConfigPath/normalizeAddConfigPath.js.map +0 -1
- package/src/parseGraphQLSchema/index.js +0 -5
- package/src/parseGraphQLSchema/index.js.map +0 -1
- package/src/parseGraphQLSchema/normalizeResolverName.js.map +0 -1
- package/src/parseGraphQLSchema/parseGraphQLSchema.js.map +0 -1
- package/src/parseGraphQLSchema/parseLocationForOutputDir.js.map +0 -1
- package/src/parseSources/index.d.ts +0 -1
- package/src/parseSources/index.js +0 -5
- package/src/parseSources/index.js.map +0 -1
- package/src/parseSources/parseSources.js.map +0 -1
- package/src/parseTypeMappers/collectTypeMappersFromSourceFile.js.map +0 -1
- package/src/parseTypeMappers/index.d.ts +0 -1
- package/src/parseTypeMappers/index.js +0 -5
- package/src/parseTypeMappers/index.js.map +0 -1
- package/src/parseTypeMappers/parseTypeMappers.js +0 -26
- package/src/parseTypeMappers/parseTypeMappers.js.map +0 -1
- package/src/preset.js +0 -214
- package/src/preset.js.map +0 -1
- package/src/utils/cwd.js +0 -13
- package/src/utils/cwd.js.map +0 -1
- package/src/utils/fmt.js +0 -19
- package/src/utils/fmt.js.map +0 -1
- package/src/utils/index.d.ts +0 -12
- package/src/utils/index.js +0 -16
- package/src/utils/index.js.map +0 -1
- package/src/utils/isMatchResolverNamePattern.js.map +0 -1
- package/src/utils/isNativeNamedType.js +0 -18
- package/src/utils/isNativeNamedType.js.map +0 -1
- package/src/utils/isRootObjectType.js +0 -8
- package/src/utils/isRootObjectType.js.map +0 -1
- package/src/utils/isWhitelistedModule.js.map +0 -1
- package/src/utils/logger.js +0 -17
- package/src/utils/logger.js.map +0 -1
- package/src/utils/normalizeImportExtension.js +0 -13
- package/src/utils/normalizeImportExtension.js.map +0 -1
- package/src/utils/normalizeRelativePath.js +0 -11
- package/src/utils/normalizeRelativePath.js.map +0 -1
- package/src/utils/parseLocationForWhitelistedModule.js +0 -22
- package/src/utils/parseLocationForWhitelistedModule.js.map +0 -1
- package/src/utils/printImportLine.js.map +0 -1
- package/src/utils/relativeModulePath.js +0 -12
- package/src/utils/relativeModulePath.js.map +0 -1
- package/src/validateAndMergeParsedConfigs/index.d.ts +0 -1
- package/src/validateAndMergeParsedConfigs/index.js +0 -5
- package/src/validateAndMergeParsedConfigs/index.js.map +0 -1
- package/src/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.js.map +0 -1
- package/src/validatePresetConfig/index.d.ts +0 -1
- package/src/validatePresetConfig/index.js +0 -5
- package/src/validatePresetConfig/index.js.map +0 -1
- package/src/validatePresetConfig/validatePresetConfig.js.map +0 -1
- /package/{src → dist}/generateTypeDefsFiles/generateTypeDefsContent.d.ts +0 -0
- /package/{src → dist}/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.d.ts +0 -0
- /package/{src → dist}/utils/cwd.d.ts +0 -0
- /package/{src → dist}/utils/fmt.d.ts +0 -0
- /package/{src → dist}/utils/isMatchResolverNamePattern.d.ts +0 -0
- /package/{src → dist}/utils/isNativeNamedType.d.ts +0 -0
- /package/{src → dist}/utils/isRootObjectType.d.ts +0 -0
- /package/{src → dist}/utils/isWhitelistedModule.d.ts +0 -0
- /package/{src → dist}/utils/normalizeImportExtension.d.ts +0 -0
- /package/{src → dist}/utils/normalizeRelativePath.d.ts +0 -0
- /package/{src → dist}/utils/relativeModulePath.d.ts +0 -0
|
@@ -1,24 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const path = tslib_1.__importStar(require("path"));
|
|
6
|
-
const ts_morph_1 = require("ts-morph");
|
|
7
|
-
const utils_1 = require("../utils");
|
|
8
|
-
const collectTypeMappersFromSourceFile = ({ typeMappersSourceFile, typeMappersSuffix, resolverTypesPath, emitLegacyCommonJSImports, importExtension, }, result) => {
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import { SyntaxKind } from 'ts-morph';
|
|
3
|
+
import { normalizeRelativePath, normalizeImportExtension, } from '../utils/index.js';
|
|
4
|
+
export const collectTypeMappersFromSourceFile = ({ typeMappersSourceFile, typeMappersSuffix, resolverTypesPath, emitLegacyCommonJSImports, importExtension, }, result) => {
|
|
9
5
|
// Look for interfaces with exported keywords
|
|
10
6
|
typeMappersSourceFile.getInterfaces().forEach((interfaceDeclaration) => {
|
|
11
7
|
if (!interfaceDeclaration.hasExportKeyword()) {
|
|
12
8
|
return;
|
|
13
9
|
}
|
|
14
10
|
addTypeMapperDetailsIfValid({
|
|
15
|
-
kind:
|
|
11
|
+
kind: SyntaxKind.InterfaceDeclaration,
|
|
16
12
|
identifierNode: interfaceDeclaration.getNameNode(),
|
|
17
13
|
typeMappersSuffix,
|
|
18
14
|
typeMappersFilePath: typeMappersSourceFile.getFilePath(),
|
|
19
15
|
resolverTypesPath,
|
|
20
16
|
emitLegacyCommonJSImports,
|
|
21
|
-
importExtension
|
|
17
|
+
importExtension,
|
|
22
18
|
}, result);
|
|
23
19
|
});
|
|
24
20
|
// Look for exported types with exported keywords
|
|
@@ -28,13 +24,13 @@ const collectTypeMappersFromSourceFile = ({ typeMappersSourceFile, typeMappersSu
|
|
|
28
24
|
}
|
|
29
25
|
const identifierNode = typeAlias.getNameNode();
|
|
30
26
|
addTypeMapperDetailsIfValid({
|
|
31
|
-
kind:
|
|
27
|
+
kind: SyntaxKind.TypeAliasDeclaration,
|
|
32
28
|
identifierNode,
|
|
33
29
|
typeMappersSuffix,
|
|
34
30
|
typeMappersFilePath: typeMappersSourceFile.getFilePath(),
|
|
35
31
|
resolverTypesPath,
|
|
36
32
|
emitLegacyCommonJSImports,
|
|
37
|
-
importExtension
|
|
33
|
+
importExtension,
|
|
38
34
|
}, result);
|
|
39
35
|
});
|
|
40
36
|
// Look for named exports e.g.
|
|
@@ -49,13 +45,13 @@ const collectTypeMappersFromSourceFile = ({ typeMappersSourceFile, typeMappersSu
|
|
|
49
45
|
identifierNode = aliasNode;
|
|
50
46
|
}
|
|
51
47
|
addTypeMapperDetailsIfValid({
|
|
52
|
-
kind:
|
|
48
|
+
kind: SyntaxKind.ExportSpecifier,
|
|
53
49
|
identifierNode,
|
|
54
50
|
typeMappersSuffix,
|
|
55
51
|
typeMappersFilePath: typeMappersSourceFile.getFilePath(),
|
|
56
52
|
resolverTypesPath,
|
|
57
53
|
emitLegacyCommonJSImports,
|
|
58
|
-
importExtension
|
|
54
|
+
importExtension,
|
|
59
55
|
}, result);
|
|
60
56
|
});
|
|
61
57
|
});
|
|
@@ -69,18 +65,17 @@ const collectTypeMappersFromSourceFile = ({ typeMappersSourceFile, typeMappersSu
|
|
|
69
65
|
return;
|
|
70
66
|
}
|
|
71
67
|
addTypeMapperDetailsIfValid({
|
|
72
|
-
kind:
|
|
68
|
+
kind: SyntaxKind.ClassDeclaration,
|
|
73
69
|
identifierNode,
|
|
74
70
|
typeMappersSuffix,
|
|
75
71
|
typeMappersFilePath: typeMappersSourceFile.getFilePath(),
|
|
76
72
|
resolverTypesPath,
|
|
77
73
|
emitLegacyCommonJSImports,
|
|
78
|
-
importExtension
|
|
74
|
+
importExtension,
|
|
79
75
|
}, result);
|
|
80
76
|
});
|
|
81
77
|
};
|
|
82
|
-
|
|
83
|
-
const addTypeMapperDetailsIfValid = ({ kind, identifierNode, typeMappersSuffix, typeMappersFilePath, resolverTypesPath, emitLegacyCommonJSImports, importExtension }, result) => {
|
|
78
|
+
const addTypeMapperDetailsIfValid = ({ kind, identifierNode, typeMappersSuffix, typeMappersFilePath, resolverTypesPath, emitLegacyCommonJSImports, importExtension, }, result) => {
|
|
84
79
|
const identifierName = identifierNode.getText();
|
|
85
80
|
if (!identifierName.endsWith(typeMappersSuffix)) {
|
|
86
81
|
return;
|
|
@@ -101,8 +96,8 @@ const addTypeMapperDetailsIfValid = ({ kind, identifierNode, typeMappersSuffix,
|
|
|
101
96
|
.split(path.sep)
|
|
102
97
|
.join(path.posix.sep);
|
|
103
98
|
const parsedRelativePathFromResolverTypesToSourceFile = path.parse(relativePath);
|
|
104
|
-
const relativeImportPathFromResolverTypesToSourceFile =
|
|
105
|
-
const fileExtension =
|
|
99
|
+
const relativeImportPathFromResolverTypesToSourceFile = normalizeRelativePath(path.posix.join(parsedRelativePathFromResolverTypesToSourceFile.dir, parsedRelativePathFromResolverTypesToSourceFile.name));
|
|
100
|
+
const fileExtension = normalizeImportExtension(importExtension, emitLegacyCommonJSImports);
|
|
106
101
|
const configImportPath = `${relativeImportPathFromResolverTypesToSourceFile}${fileExtension}#${identifierName}`;
|
|
107
102
|
if (result[schemaType]) {
|
|
108
103
|
throw new Error(`GraphQL type "${schemaType}" has duplicated "${identifierName}" mappers:\n - ${configImportPath}\n - ${result[schemaType].configImportPath}`);
|
|
@@ -117,4 +112,3 @@ const addTypeMapperDetailsIfValid = ({ kind, identifierNode, typeMappersSuffix,
|
|
|
117
112
|
configImportPath,
|
|
118
113
|
};
|
|
119
114
|
};
|
|
120
|
-
//# sourceMappingURL=collectTypeMappersFromSourceFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './parseTypeMappers.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './parseTypeMappers.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Project, SyntaxKind } from 'ts-morph';
|
|
2
|
-
import type { ParseSourcesResult } from '../parseSources';
|
|
3
|
-
import type { ImportExtension } from '../utils';
|
|
2
|
+
import type { ParseSourcesResult } from '../parseSources/index.js';
|
|
3
|
+
import type { ImportExtension } from '../utils/index.js';
|
|
4
4
|
export interface ParseTypeMappersParams {
|
|
5
5
|
sourceMap: ParseSourcesResult['sourceMap'];
|
|
6
6
|
resolverTypesPath: string;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import { collectTypeMappersFromSourceFile } from './collectTypeMappersFromSourceFile.js';
|
|
3
|
+
export const parseTypeMappers = ({ sourceMap, resolverTypesPath, typeMappersRelativeTargetDir, typeMappersFileExtension, typeMappersSuffix, tsMorphProject, emitLegacyCommonJSImports, importExtension, }) => {
|
|
4
|
+
const result = Object.entries(sourceMap).reduce((res, [_, { sourcePath }]) => {
|
|
5
|
+
const typeMapperFilePath = path.posix.join(sourcePath.dir, typeMappersRelativeTargetDir, `${sourcePath.name}${typeMappersFileExtension}`);
|
|
6
|
+
const typeMappersSourceFile = tsMorphProject.addSourceFileAtPathIfExists(typeMapperFilePath);
|
|
7
|
+
if (!typeMappersSourceFile) {
|
|
8
|
+
return res;
|
|
9
|
+
}
|
|
10
|
+
collectTypeMappersFromSourceFile({
|
|
11
|
+
typeMappersSourceFile,
|
|
12
|
+
typeMappersSuffix,
|
|
13
|
+
resolverTypesPath,
|
|
14
|
+
emitLegacyCommonJSImports,
|
|
15
|
+
importExtension,
|
|
16
|
+
}, res);
|
|
17
|
+
return res;
|
|
18
|
+
}, {});
|
|
19
|
+
return result;
|
|
20
|
+
};
|
package/{src → dist}/preset.d.ts
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type Types } from '@graphql-codegen/plugin-helpers';
|
|
2
|
-
import { type RawPresetConfig } from './validatePresetConfig';
|
|
2
|
+
import { type RawPresetConfig } from './validatePresetConfig/index.js';
|
|
3
3
|
export declare const presetName = "@eddeee888/gcg-typescript-resolver-files";
|
|
4
4
|
export declare const preset: Types.OutputPreset<RawPresetConfig>;
|
package/dist/preset.js
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import * as addPlugin from '@graphql-codegen/add';
|
|
3
|
+
import * as schemaAstPlugin from '@graphql-codegen/schema-ast';
|
|
4
|
+
import * as typeScriptPlugin from '@graphql-codegen/typescript';
|
|
5
|
+
import { plugin as typeScriptResolversPlugin } from '@graphql-codegen/typescript-resolvers';
|
|
6
|
+
import { createNoopProfiler, } from '@graphql-codegen/plugin-helpers';
|
|
7
|
+
import { Project } from 'ts-morph';
|
|
8
|
+
import { defineConfig as defineServerConfig } from '@eddeee888/gcg-server-config';
|
|
9
|
+
import { parseSources } from './parseSources/index.js';
|
|
10
|
+
import { parseGraphQLSchema } from './parseGraphQLSchema/index.js';
|
|
11
|
+
import { generateResolverFiles, } from './generateResolverFiles/index.js';
|
|
12
|
+
import { generateTypeDefsFiles } from './generateTypeDefsFiles/index.js';
|
|
13
|
+
import { getGraphQLObjectTypeResolversToGenerate } from './getGraphQLObjectTypeResolversToGenerate/index.js';
|
|
14
|
+
import { addVirtualTypesFileToTsMorphProject } from './addVirtualTypesFileToTsMorphProject/index.js';
|
|
15
|
+
import { parseTypeMappers } from './parseTypeMappers/index.js';
|
|
16
|
+
import { validatePresetConfig, } from './validatePresetConfig/index.js';
|
|
17
|
+
import { validateAndMergeParsedConfigs } from './validateAndMergeParsedConfigs/index.js';
|
|
18
|
+
import { normalizeAddConfigPath } from './normalizeAddConfigPath/index.js';
|
|
19
|
+
import { logger } from './utils/index.js';
|
|
20
|
+
export const presetName = '@eddeee888/gcg-typescript-resolver-files';
|
|
21
|
+
export const preset = {
|
|
22
|
+
buildGeneratesSection: async ({ schema, schemaAst, presetConfig: rawPresetConfig, baseOutputDir, config: baseConfig, profiler = createNoopProfiler(), }) => {
|
|
23
|
+
if (!schemaAst) {
|
|
24
|
+
throw new Error('Missing schemaAst');
|
|
25
|
+
}
|
|
26
|
+
const sources = schemaAst.extensions.extendedSources;
|
|
27
|
+
if (!Array.isArray(sources) || sources.length === 0) {
|
|
28
|
+
throw new Error('Empty Sources. Make sure schema files are parsed correctly.');
|
|
29
|
+
}
|
|
30
|
+
const { add, resolverTypesPath: relativeResolverTypesPathFromBaseOutputDir, resolverRelativeTargetDir, mappersRelativeTargetDir: typeMappersRelativeTargetDir, mappersFileExtension: typeMappersFileExtension, mappersSuffix: typeMappersSuffix, resolverMainFile, resolverMainFileMode, resolverGeneration, typeDefsFilePath, typeDefsFileMode, mergeSchema, moduleNamingMode, scalarsModule, scalarsOverrides, mode, whitelistedModules, blacklistedModules, externalResolvers, typesPluginsConfig, tsMorphProjectOptions, fixObjectTypeResolvers, emitLegacyCommonJSImports, importExtension, } = validatePresetConfig(rawPresetConfig, baseConfig);
|
|
31
|
+
const resolverTypesPath = path.posix.join(baseOutputDir, relativeResolverTypesPathFromBaseOutputDir);
|
|
32
|
+
const normalizedAdd = normalizeAddConfigPath({ add, baseOutputDir });
|
|
33
|
+
const { sourceMap } = parseSources({
|
|
34
|
+
sources,
|
|
35
|
+
baseOutputDir,
|
|
36
|
+
moduleNamingMode,
|
|
37
|
+
});
|
|
38
|
+
const tsMorphProject = await profiler.run(async () => new Project(tsMorphProjectOptions), createProfilerRunName('Initialising ts-morph project'));
|
|
39
|
+
const typeMappersMap = await profiler.run(async () => parseTypeMappers({
|
|
40
|
+
sourceMap,
|
|
41
|
+
resolverTypesPath,
|
|
42
|
+
typeMappersRelativeTargetDir,
|
|
43
|
+
typeMappersFileExtension,
|
|
44
|
+
typeMappersSuffix,
|
|
45
|
+
tsMorphProject,
|
|
46
|
+
emitLegacyCommonJSImports,
|
|
47
|
+
importExtension,
|
|
48
|
+
}), createProfilerRunName('parseTypeMappers'));
|
|
49
|
+
const generatesSection = [];
|
|
50
|
+
const parsedGraphQLSchemaMeta = await profiler.run(async () => parseGraphQLSchema({
|
|
51
|
+
schemaAst,
|
|
52
|
+
sourceMap,
|
|
53
|
+
resolverTypesPath,
|
|
54
|
+
scalarsModule,
|
|
55
|
+
scalarsOverrides,
|
|
56
|
+
typeMappersMap,
|
|
57
|
+
mode,
|
|
58
|
+
baseOutputDir,
|
|
59
|
+
resolverRelativeTargetDir,
|
|
60
|
+
whitelistedModules,
|
|
61
|
+
blacklistedModules,
|
|
62
|
+
}), createProfilerRunName('parseGraphQLSchema'));
|
|
63
|
+
const mergedConfig = validateAndMergeParsedConfigs({
|
|
64
|
+
unmanagedNonScalarResolvers: externalResolvers,
|
|
65
|
+
parsedGraphQLSchemaMeta,
|
|
66
|
+
});
|
|
67
|
+
// typescript and typescript-resolvers plugins config
|
|
68
|
+
const resolverTypesConfig = defineServerConfig({
|
|
69
|
+
optionalResolveType: true,
|
|
70
|
+
resolversNonOptionalTypename: {
|
|
71
|
+
unionMember: true,
|
|
72
|
+
interfaceImplementingType: true,
|
|
73
|
+
},
|
|
74
|
+
namingConvention: 'keep',
|
|
75
|
+
emitLegacyCommonJSImports,
|
|
76
|
+
...typesPluginsConfig,
|
|
77
|
+
scalars: mergedConfig.scalarTypes,
|
|
78
|
+
mappers: {
|
|
79
|
+
...mergedConfig.typeMappers,
|
|
80
|
+
...typesPluginsConfig.mappers,
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
// typesSourceFile is the virtual `types.generated.ts`
|
|
84
|
+
// This is useful when we need to do static analysis as most types come from this file
|
|
85
|
+
// e.g. comparing mappers field type vs schema object field type
|
|
86
|
+
const { typesSourceFile, meta: generatedTypesFileMeta } = await profiler.run(() => addVirtualTypesFileToTsMorphProject({
|
|
87
|
+
tsMorphProject,
|
|
88
|
+
schemaAst,
|
|
89
|
+
resolverTypesConfig,
|
|
90
|
+
resolverTypesPath,
|
|
91
|
+
addConfig: normalizedAdd?.[resolverTypesPath],
|
|
92
|
+
}), createProfilerRunName('addVirtualTypesFileToTsMorphProject'));
|
|
93
|
+
const graphQLObjectTypeResolversToGenerate = await profiler.run(async () => fixObjectTypeResolvers.object === 'disabled'
|
|
94
|
+
? {}
|
|
95
|
+
: getGraphQLObjectTypeResolversToGenerate({
|
|
96
|
+
mode: fixObjectTypeResolvers.object,
|
|
97
|
+
tsMorphProject,
|
|
98
|
+
typesSourceFile,
|
|
99
|
+
userDefinedSchemaObjectTypeMap: mergedConfig.userDefinedSchemaTypeMap.object,
|
|
100
|
+
typeMappersMap,
|
|
101
|
+
generatedTypesFileMeta,
|
|
102
|
+
}), createProfilerRunName('getGraphQLObjectTypeResolversToGenerate'));
|
|
103
|
+
const resolverTypesFilePlugins = [
|
|
104
|
+
{ typescript: {} },
|
|
105
|
+
{ ['typescript-resolvers']: {} },
|
|
106
|
+
];
|
|
107
|
+
if (normalizedAdd?.[resolverTypesPath]) {
|
|
108
|
+
resolverTypesFilePlugins.push({
|
|
109
|
+
add: normalizedAdd[resolverTypesPath],
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
const resolverTypesFile = {
|
|
113
|
+
filename: resolverTypesPath,
|
|
114
|
+
pluginMap: {
|
|
115
|
+
typescript: typeScriptPlugin,
|
|
116
|
+
'typescript-resolvers': { plugin: typeScriptResolversPlugin },
|
|
117
|
+
add: addPlugin,
|
|
118
|
+
},
|
|
119
|
+
plugins: resolverTypesFilePlugins,
|
|
120
|
+
config: resolverTypesConfig,
|
|
121
|
+
schema,
|
|
122
|
+
documents: [],
|
|
123
|
+
};
|
|
124
|
+
generatesSection.push(resolverTypesFile);
|
|
125
|
+
// typeDefs
|
|
126
|
+
if (typeDefsFilePath) {
|
|
127
|
+
const typeDefsFiles = await profiler.run(async () => {
|
|
128
|
+
return generateTypeDefsFiles({
|
|
129
|
+
baseOutputDir,
|
|
130
|
+
typeDefsFilePath,
|
|
131
|
+
typeDefsFileMode,
|
|
132
|
+
sourceMap,
|
|
133
|
+
whitelistedModules,
|
|
134
|
+
blacklistedModules,
|
|
135
|
+
});
|
|
136
|
+
}, createProfilerRunName('generateTypeDefsFiles'));
|
|
137
|
+
Object.entries(typeDefsFiles).forEach(([filename, meta]) => {
|
|
138
|
+
const typeDefsFile = {
|
|
139
|
+
filename: filename,
|
|
140
|
+
pluginMap: { add: addPlugin },
|
|
141
|
+
plugins: [{ add: { content: meta.content } }],
|
|
142
|
+
config: {},
|
|
143
|
+
schema,
|
|
144
|
+
documents: [],
|
|
145
|
+
};
|
|
146
|
+
generatesSection.push(typeDefsFile);
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
// merge schema
|
|
150
|
+
if (mergeSchema) {
|
|
151
|
+
generatesSection.push({
|
|
152
|
+
filename: path.posix.join(baseOutputDir, mergeSchema.path),
|
|
153
|
+
pluginMap: { ['schema-ast']: schemaAstPlugin },
|
|
154
|
+
plugins: [{ ['schema-ast']: {} }],
|
|
155
|
+
schema,
|
|
156
|
+
documents: [],
|
|
157
|
+
config: mergeSchema.config,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
// resolver files
|
|
161
|
+
const result = {
|
|
162
|
+
files: {},
|
|
163
|
+
externalImports: {},
|
|
164
|
+
};
|
|
165
|
+
await profiler.run(async () => generateResolverFiles({
|
|
166
|
+
config: {
|
|
167
|
+
baseOutputDir,
|
|
168
|
+
resolverTypesPath,
|
|
169
|
+
resolverRelativeTargetDir,
|
|
170
|
+
resolverMainFile,
|
|
171
|
+
resolverMainFileMode,
|
|
172
|
+
resolverGeneration,
|
|
173
|
+
typeMappersMap,
|
|
174
|
+
parsedGraphQLSchemaMeta,
|
|
175
|
+
graphQLObjectTypeResolversToGenerate,
|
|
176
|
+
tsMorph: {
|
|
177
|
+
project: tsMorphProject,
|
|
178
|
+
typesSourceFile,
|
|
179
|
+
},
|
|
180
|
+
fixObjectTypeResolvers,
|
|
181
|
+
unmanagedResolvers: {
|
|
182
|
+
...mergedConfig.unmanagedResolvers,
|
|
183
|
+
},
|
|
184
|
+
emitLegacyCommonJSImports,
|
|
185
|
+
importExtension,
|
|
186
|
+
generatedTypesFileMeta,
|
|
187
|
+
},
|
|
188
|
+
result,
|
|
189
|
+
}), createProfilerRunName('generateResolverFiles'));
|
|
190
|
+
const resultFilesArray = Object.entries(result.files);
|
|
191
|
+
const resolverFilesGenerateOptions = resultFilesArray
|
|
192
|
+
.filter(([_, file]) => {
|
|
193
|
+
// Only generate files that are:
|
|
194
|
+
// 1. `virtual` - because file doesn't exist yet
|
|
195
|
+
// 2. on `filesystem` and with `contentUpdated` - because file content has been updated, so we want to apply the changes
|
|
196
|
+
return (file.filesystem.type === 'virtual' ||
|
|
197
|
+
(file.filesystem.type === 'filesystem' &&
|
|
198
|
+
file.filesystem.contentUpdated === true));
|
|
199
|
+
})
|
|
200
|
+
.map(([filename, { content }]) => {
|
|
201
|
+
return {
|
|
202
|
+
filename,
|
|
203
|
+
pluginMap: { add: addPlugin },
|
|
204
|
+
plugins: [{ add: { content } }],
|
|
205
|
+
config: {},
|
|
206
|
+
schema,
|
|
207
|
+
documents: [],
|
|
208
|
+
};
|
|
209
|
+
});
|
|
210
|
+
logger.debug(`Applying changes to ${resolverFilesGenerateOptions.length}/${resultFilesArray.length} files. (${resultFilesArray.length - resolverFilesGenerateOptions.length} skipped files because they are already on filesystem and are not updated)`);
|
|
211
|
+
return [...resolverFilesGenerateOptions, ...generatesSection];
|
|
212
|
+
},
|
|
213
|
+
};
|
|
214
|
+
const createProfilerRunName = (traceName) => `[${presetName}]: ${traceName}`;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { presetName } from '../preset.js';
|
|
2
|
+
/**
|
|
3
|
+
* Shared message formatter
|
|
4
|
+
*/
|
|
5
|
+
export const fmt = {
|
|
6
|
+
error: (input, type) => {
|
|
7
|
+
return `[${presetName}] \x1b[31mERROR:\x1b[0m ${type} - ${input}`;
|
|
8
|
+
},
|
|
9
|
+
warn: (input) => {
|
|
10
|
+
return `[${presetName}] \x1b[33mWARN:\x1b[0m ${input}`;
|
|
11
|
+
},
|
|
12
|
+
debug: (input) => {
|
|
13
|
+
return `[${presetName}] \x1b[35mDEBUG:\x1b[0m ${input}`;
|
|
14
|
+
},
|
|
15
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from './cwd.js';
|
|
2
|
+
export * from './logger.js';
|
|
3
|
+
export * from './fmt.js';
|
|
4
|
+
export * from './parseLocationForWhitelistedModule.js';
|
|
5
|
+
export * from './isNativeNamedType.js';
|
|
6
|
+
export * from './isRootObjectType.js';
|
|
7
|
+
export * from './isWhitelistedModule.js';
|
|
8
|
+
export * from './printImportLine.js';
|
|
9
|
+
export * from './normalizeRelativePath.js';
|
|
10
|
+
export * from './relativeModulePath.js';
|
|
11
|
+
export * from './isMatchResolverNamePattern.js';
|
|
12
|
+
export * from './normalizeImportExtension.js';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from './cwd.js';
|
|
2
|
+
export * from './logger.js';
|
|
3
|
+
export * from './fmt.js';
|
|
4
|
+
export * from './parseLocationForWhitelistedModule.js';
|
|
5
|
+
export * from './isNativeNamedType.js';
|
|
6
|
+
export * from './isRootObjectType.js';
|
|
7
|
+
export * from './isWhitelistedModule.js';
|
|
8
|
+
export * from './printImportLine.js';
|
|
9
|
+
export * from './normalizeRelativePath.js';
|
|
10
|
+
export * from './relativeModulePath.js';
|
|
11
|
+
export * from './isMatchResolverNamePattern.js';
|
|
12
|
+
export * from './normalizeImportExtension.js';
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isMatchResolverNamePattern = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const micromatch_1 = tslib_1.__importDefault(require("micromatch"));
|
|
1
|
+
import micromatch from 'micromatch';
|
|
6
2
|
/**
|
|
7
3
|
* @description Wrapper function to return true if `value` matches on of the `pattern`s
|
|
8
4
|
*/
|
|
9
|
-
const isMatchResolverNamePattern = ({ pattern, value, }) => {
|
|
5
|
+
export const isMatchResolverNamePattern = ({ pattern, value, }) => {
|
|
10
6
|
const normalizedPatterns = typeof pattern === 'string' ? [pattern] : pattern;
|
|
11
7
|
const nonEmptyNormalizedPatterns = normalizedPatterns.filter(Boolean);
|
|
12
|
-
const matchedValues = (
|
|
8
|
+
const matchedValues = micromatch([value], nonEmptyNormalizedPatterns, {
|
|
13
9
|
// `micromatch` mainly matches filesystems whilst we want this function
|
|
14
10
|
// to match object-like path pattern e.g.
|
|
15
11
|
// - `book.Query.books`
|
|
@@ -20,5 +16,3 @@ const isMatchResolverNamePattern = ({ pattern, value, }) => {
|
|
|
20
16
|
});
|
|
21
17
|
return matchedValues.length > 0;
|
|
22
18
|
};
|
|
23
|
-
exports.isMatchResolverNamePattern = isMatchResolverNamePattern;
|
|
24
|
-
//# sourceMappingURL=isMatchResolverNamePattern.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { isIntrospectionType, isSpecifiedScalarType, } from 'graphql';
|
|
2
|
+
export const isNativeNamedType = (namedType) => {
|
|
3
|
+
// "Native" NamedType in this context means the following:
|
|
4
|
+
// 1. introspection types i.e. with `__` prefixes
|
|
5
|
+
// 2. base scalars e.g. Boolean, Int, etc.
|
|
6
|
+
// 3. Other natives (mostly base scalars) which was not defined in the schema i.e. no `astNode`
|
|
7
|
+
if (isSpecifiedScalarType(namedType) ||
|
|
8
|
+
isIntrospectionType(namedType) ||
|
|
9
|
+
!namedType.astNode) {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
return false;
|
|
13
|
+
};
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isWhitelistedModule = void 0;
|
|
4
|
-
const isWhitelistedModule = ({ moduleName, whitelistedModules, blacklistedModules, }) => {
|
|
1
|
+
export const isWhitelistedModule = ({ moduleName, whitelistedModules, blacklistedModules, }) => {
|
|
5
2
|
if (blacklistedModules.includes(moduleName)) {
|
|
6
3
|
return false;
|
|
7
4
|
}
|
|
@@ -12,5 +9,3 @@ const isWhitelistedModule = ({ moduleName, whitelistedModules, blacklistedModule
|
|
|
12
9
|
: whitelistedModules.includes(moduleName);
|
|
13
10
|
return isInWhitelistedModule;
|
|
14
11
|
};
|
|
15
|
-
exports.isWhitelistedModule = isWhitelistedModule;
|
|
16
|
-
//# sourceMappingURL=isWhitelistedModule.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { presetName } from '../preset.js';
|
|
2
|
+
import { fmt } from './fmt.js';
|
|
3
|
+
export const logger = {
|
|
4
|
+
debug: (...args) => {
|
|
5
|
+
const debugEnvVar = process.env.DEBUG || '';
|
|
6
|
+
if (debugEnvVar.includes(presetName)) {
|
|
7
|
+
console.debug(`\x1b[34m${fmt.debug(...args)}`);
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
warn: (...args) => {
|
|
11
|
+
console.warn(`\x1b[34m${fmt.warn(...args)}`);
|
|
12
|
+
},
|
|
13
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function normalizeImportExtension(importExtension, emitLegacyCommonJSImports) {
|
|
2
|
+
if (importExtension !== undefined) {
|
|
3
|
+
return importExtension;
|
|
4
|
+
}
|
|
5
|
+
if (emitLegacyCommonJSImports !== undefined) {
|
|
6
|
+
return emitLegacyCommonJSImports ? '' : '.js';
|
|
7
|
+
}
|
|
8
|
+
return '';
|
|
9
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Location } from 'graphql';
|
|
2
|
-
import type { ParseSourcesResult, ParsedSource } from '../parseSources';
|
|
2
|
+
import type { ParseSourcesResult, ParsedSource } from '../parseSources/index.js';
|
|
3
3
|
export interface ParseLocationForWhitelistedModule {
|
|
4
4
|
location: Location | undefined;
|
|
5
5
|
sourceMap: ParseSourcesResult['sourceMap'];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { isWhitelistedModule } from './isWhitelistedModule.js';
|
|
2
|
+
export const parseLocationForWhitelistedModule = ({ location, sourceMap, whitelistedModules, blacklistedModules, }) => {
|
|
3
|
+
if (!location) {
|
|
4
|
+
throw new Error('Location is invalid');
|
|
5
|
+
}
|
|
6
|
+
const sourceFilename = location.source.name;
|
|
7
|
+
const sourceFile = sourceMap[sourceFilename];
|
|
8
|
+
if (!sourceFile) {
|
|
9
|
+
throw new Error(`Unable to find ${sourceFilename} in sourceMap`);
|
|
10
|
+
}
|
|
11
|
+
const isWhitelisted = isWhitelistedModule({
|
|
12
|
+
moduleName: sourceFile.moduleName,
|
|
13
|
+
whitelistedModules,
|
|
14
|
+
blacklistedModules,
|
|
15
|
+
});
|
|
16
|
+
return isWhitelisted ? sourceFile : undefined;
|
|
17
|
+
};
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.printImportLine = printImportLine;
|
|
4
|
-
const normalizeImportExtension_1 = require("./normalizeImportExtension");
|
|
5
|
-
function printImportLine({ isTypeImport, module, moduleType, namedImports, defaultImport, emitLegacyCommonJSImports, importExtension, }) {
|
|
1
|
+
import { normalizeImportExtension, } from './normalizeImportExtension.js';
|
|
2
|
+
export function printImportLine({ isTypeImport, module, moduleType, namedImports, defaultImport, emitLegacyCommonJSImports, importExtension, }) {
|
|
6
3
|
const typeImportKeyword = isTypeImport ? 'type' : '';
|
|
7
4
|
const hasDefaultImport = Boolean(defaultImport);
|
|
8
5
|
const hasNamedImports = namedImports.length > 0;
|
|
@@ -13,7 +10,7 @@ function printImportLine({ isTypeImport, module, moduleType, namedImports, defau
|
|
|
13
10
|
if (moduleType !== 'preserve') {
|
|
14
11
|
const isFile = moduleType === 'file';
|
|
15
12
|
if (isFile) {
|
|
16
|
-
fileExt =
|
|
13
|
+
fileExt = normalizeImportExtension(importExtension, emitLegacyCommonJSImports);
|
|
17
14
|
}
|
|
18
15
|
}
|
|
19
16
|
return `import ${typeImportKeyword} ${defaultImport || ''} ${hasDefaultImport && hasNamedImports ? ',' : ''} ${namedImportsString} from '${normalizeModuleExtensionForImport(module)}${fileExt}';`;
|
|
@@ -33,4 +30,3 @@ const printNamedImportSpecifier = (namedImport) => {
|
|
|
33
30
|
}
|
|
34
31
|
return `${namedImport.propertyName} as ${namedImport.identifierName}`;
|
|
35
32
|
};
|
|
36
|
-
//# sourceMappingURL=printImportLine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './validateAndMergeParsedConfigs.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './validateAndMergeParsedConfigs.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ParsedGraphQLSchemaMeta } from '../parseGraphQLSchema';
|
|
2
|
-
import type { ParsedPresetConfig, ScalarsOverridesType } from '../validatePresetConfig';
|
|
1
|
+
import type { ParsedGraphQLSchemaMeta } from '../parseGraphQLSchema/index.js';
|
|
2
|
+
import type { ParsedPresetConfig, ScalarsOverridesType } from '../validatePresetConfig/index.js';
|
|
3
3
|
interface MergedConfig {
|
|
4
4
|
userDefinedSchemaTypeMap: ParsedGraphQLSchemaMeta['userDefinedSchemaTypeMap'];
|
|
5
5
|
scalarTypes: Record<string, ScalarsOverridesType>;
|
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateAndMergeParsedConfigs = void 0;
|
|
4
|
-
const utils_1 = require("../utils");
|
|
1
|
+
import { fmt } from '../utils/index.js';
|
|
5
2
|
/**
|
|
6
3
|
* validateAndMergeParsedConfigs is used to make sure all parsed configs do not incorrectly override each other.
|
|
7
4
|
* Use this to ensure there's only one way of doing something. e.g.
|
|
8
5
|
* - scalarsOverrides must be used over externalResolvers to override scalars
|
|
9
6
|
*/
|
|
10
|
-
const validateAndMergeParsedConfigs = ({ unmanagedNonScalarResolvers, parsedGraphQLSchemaMeta: { userDefinedSchemaTypeMap, pluginsConfig: { scalarsModuleResolvers, unmanagedScalarResolvers, defaultScalarTypesMap, defaultTypeMappers, }, }, }) => {
|
|
7
|
+
export const validateAndMergeParsedConfigs = ({ unmanagedNonScalarResolvers, parsedGraphQLSchemaMeta: { userDefinedSchemaTypeMap, pluginsConfig: { scalarsModuleResolvers, unmanagedScalarResolvers, defaultScalarTypesMap, defaultTypeMappers, }, }, }) => {
|
|
11
8
|
Object.keys(scalarsModuleResolvers).forEach((schemaType) => {
|
|
12
|
-
var _a;
|
|
13
9
|
if (
|
|
14
10
|
// If the scalar is defined on the filesystem, it means user wants to use their custom definition.
|
|
15
11
|
// This means we should use it, instead of importing it from scalar module
|
|
16
|
-
|
|
12
|
+
userDefinedSchemaTypeMap.scalar[schemaType]?.resolverFile.isOnFilesystem) {
|
|
17
13
|
delete scalarsModuleResolvers[schemaType];
|
|
18
14
|
}
|
|
19
15
|
});
|
|
@@ -27,15 +23,22 @@ const validateAndMergeParsedConfigs = ({ unmanagedNonScalarResolvers, parsedGrap
|
|
|
27
23
|
}, {});
|
|
28
24
|
Object.keys(unmanagedNonScalarResolvers).forEach((schemaType) => {
|
|
29
25
|
if (userDefinedSchemaTypeMap.scalar[schemaType]) {
|
|
30
|
-
throw new Error(
|
|
26
|
+
throw new Error(fmt.error(`Scalar "${schemaType}" found in presetConfig.externalResolvers. Use presetConfig.scalarsOverrides to override scalar implementation and type. Remove "${schemaType}" from presetConfig.externalResolvers.`, 'Validation'));
|
|
31
27
|
}
|
|
32
28
|
});
|
|
33
29
|
return {
|
|
34
30
|
userDefinedSchemaTypeMap,
|
|
35
|
-
scalarTypes:
|
|
36
|
-
|
|
37
|
-
|
|
31
|
+
scalarTypes: {
|
|
32
|
+
...defaultScalarTypesMap,
|
|
33
|
+
},
|
|
34
|
+
typeMappers: {
|
|
35
|
+
...schemaEnumTypeMappers,
|
|
36
|
+
...defaultTypeMappers,
|
|
37
|
+
},
|
|
38
|
+
unmanagedResolvers: {
|
|
39
|
+
...unmanagedNonScalarResolvers,
|
|
40
|
+
...scalarsModuleResolvers,
|
|
41
|
+
...unmanagedScalarResolvers,
|
|
42
|
+
},
|
|
38
43
|
};
|
|
39
44
|
};
|
|
40
|
-
exports.validateAndMergeParsedConfigs = validateAndMergeParsedConfigs;
|
|
41
|
-
//# sourceMappingURL=validateAndMergeParsedConfigs.js.map
|