@eddeee888/gcg-typescript-resolver-files 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -0
- package/package.json +8 -8
- package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.js +7 -6
- package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.js.map +1 -1
- package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.d.ts +17 -0
- package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.js +58 -0
- package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.js.map +1 -0
- package/src/generateResolverFiles/handleGraphQLEnumType.js +2 -2
- package/src/generateResolverFiles/handleGraphQLEnumType.js.map +1 -1
- package/src/generateResolverFiles/handleGraphQLObjectType.js +2 -2
- package/src/generateResolverFiles/handleGraphQLObjectType.js.map +1 -1
- package/src/generateResolverFiles/postProcessFiles.js +45 -2
- package/src/generateResolverFiles/postProcessFiles.js.map +1 -1
- package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.d.ts +3 -1
- package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js +136 -41
- package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js.map +1 -1
- package/src/{utils → getGraphQLObjectTypeResolversToGenerate}/getNodePropertyMap.d.ts +6 -3
- package/src/{utils → getGraphQLObjectTypeResolversToGenerate}/getNodePropertyMap.js +14 -5
- package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.js.map +1 -0
- package/src/parseSources/parseSources.d.ts +6 -1
- package/src/parseSources/parseSources.js +15 -3
- package/src/parseSources/parseSources.js.map +1 -1
- package/src/parseTypeMappers/collectTypeMappersFromSourceFile.d.ts +2 -4
- package/src/parseTypeMappers/collectTypeMappersFromSourceFile.js +11 -39
- package/src/parseTypeMappers/collectTypeMappersFromSourceFile.js.map +1 -1
- package/src/parseTypeMappers/parseTypeMappers.d.ts +8 -6
- package/src/parseTypeMappers/parseTypeMappers.js +2 -4
- package/src/parseTypeMappers/parseTypeMappers.js.map +1 -1
- package/src/preset.js +19 -12
- package/src/preset.js.map +1 -1
- package/src/utils/index.d.ts +0 -1
- package/src/utils/index.js +0 -1
- package/src/utils/index.js.map +1 -1
- package/src/validatePresetConfig/validatePresetConfig.d.ts +6 -1
- package/src/validatePresetConfig/validatePresetConfig.js +28 -1
- package/src/validatePresetConfig/validatePresetConfig.js.map +1 -1
- package/src/generateResolverFiles/ensureObjectTypeResolversAreGenerated.d.ts +0 -6
- package/src/generateResolverFiles/ensureObjectTypeResolversAreGenerated.js +0 -86
- package/src/generateResolverFiles/ensureObjectTypeResolversAreGenerated.js.map +0 -1
- package/src/utils/getNodePropertyMap.js.map +0 -1
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { type SourceFile } from 'ts-morph';
|
|
2
|
-
import type { ObjectTypeFile } from './types';
|
|
3
|
-
/**
|
|
4
|
-
* Ensure objectTypeResolver files have all the resolvers due to mismatched types
|
|
5
|
-
*/
|
|
6
|
-
export declare const ensureObjectTypeResolversAreGenerated: (sourceFile: SourceFile, resolverFile: ObjectTypeFile) => void;
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ensureObjectTypeResolversAreGenerated = void 0;
|
|
4
|
-
const ts_morph_1 = require("ts-morph");
|
|
5
|
-
const getVariableStatementWithExpectedIdentifier_1 = require("./getVariableStatementWithExpectedIdentifier");
|
|
6
|
-
/**
|
|
7
|
-
* Ensure objectTypeResolver files have all the resolvers due to mismatched types
|
|
8
|
-
*/
|
|
9
|
-
const ensureObjectTypeResolversAreGenerated = (sourceFile, resolverFile) => {
|
|
10
|
-
const resolversToGenerate = resolverFile.meta.resolversToGenerate || {};
|
|
11
|
-
if (!Object.keys(resolversToGenerate).length) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
const { variableStatement } = (0, getVariableStatementWithExpectedIdentifier_1.getVariableStatementWithExpectedIdentifier)(sourceFile, resolverFile);
|
|
15
|
-
if (!variableStatement) {
|
|
16
|
-
throw new Error('Missing variableStatement in ensureObjectTypeResolversAreGenerated.');
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* FIXME: TS API does not expose `.isAssignable(Type, Type)` so we cannot use it to compare a field's type in schema type vs mapper type
|
|
20
|
-
*
|
|
21
|
-
* In this workaround, we try to put the type together and use TS's diagnostic tool to see if there's error:
|
|
22
|
-
* 1. If there's error, it means the mapper field cannot be safely mapped to schema field using GraphQL's default behaviour i.e. there will be runtime error
|
|
23
|
-
* In this case, we leave the resolver function as-is. There should be an error message from the parsing phrase explaining the types cannot be mapped.
|
|
24
|
-
* 2. If there's no error, it means we can safely remove the resolver and let GraphQL handle the mapping.
|
|
25
|
-
*
|
|
26
|
-
* Note: this only looks at fields that's not declared by the user. If it's already declared, we assume TS will report naturally if there's an error.
|
|
27
|
-
*/
|
|
28
|
-
// 1. Check to see which generated to-be-generated resolvers are implemented
|
|
29
|
-
const resolversData = Object.assign({}, resolversToGenerate);
|
|
30
|
-
variableStatement
|
|
31
|
-
.getDescendantsOfKind(ts_morph_1.SyntaxKind.PropertyAssignment)
|
|
32
|
-
.forEach((propertyAssignment) => {
|
|
33
|
-
const resolverName = propertyAssignment.getName();
|
|
34
|
-
if (resolversData[resolverName]) {
|
|
35
|
-
resolversData[resolverName].implemented = true;
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
variableStatement
|
|
39
|
-
.getDescendantsOfKind(ts_morph_1.SyntaxKind.MethodDeclaration)
|
|
40
|
-
.forEach((methodDeclaration) => {
|
|
41
|
-
const resolverName = methodDeclaration.getName();
|
|
42
|
-
if (resolversData[resolverName]) {
|
|
43
|
-
resolversData[resolverName].implemented = true;
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
// 2. Add missing resolver properties if they haven't been implemented
|
|
47
|
-
const addedPropertyAssignmentNodes = [];
|
|
48
|
-
Object.values(resolversData).forEach(({ resolverName, resolverDeclaration, implemented }) => {
|
|
49
|
-
if (implemented) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
const addedNode = variableStatement
|
|
53
|
-
.getDescendantsOfKind(ts_morph_1.SyntaxKind.ObjectLiteralExpression)[0]
|
|
54
|
-
.addPropertyAssignment({
|
|
55
|
-
name: resolverName,
|
|
56
|
-
initializer: resolverDeclaration,
|
|
57
|
-
});
|
|
58
|
-
addedPropertyAssignmentNodes[addedNode.getStartLineNumber()] = {
|
|
59
|
-
node: addedNode,
|
|
60
|
-
__toBeRemoved: true,
|
|
61
|
-
};
|
|
62
|
-
});
|
|
63
|
-
// 3. Check to see if there's error at the newly added properties:
|
|
64
|
-
// a. If there's error, leave it as user needs to manually map mapper type to schema type
|
|
65
|
-
// b. If there's no error, remove the node because GraphQL default mapping behaviour should work
|
|
66
|
-
sourceFile.getPreEmitDiagnostics().forEach((d) => {
|
|
67
|
-
const lineNumberWithError = d.getLineNumber();
|
|
68
|
-
// If erroring on a recently added line, do not remove as user needs to implement it
|
|
69
|
-
if (lineNumberWithError &&
|
|
70
|
-
addedPropertyAssignmentNodes[lineNumberWithError]) {
|
|
71
|
-
addedPropertyAssignmentNodes[lineNumberWithError].__toBeRemoved = false;
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
Object.values(addedPropertyAssignmentNodes).forEach(({ node, __toBeRemoved }) => {
|
|
75
|
-
if (__toBeRemoved) {
|
|
76
|
-
node.remove();
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
// If found a property assignment that cannot be removed i.e. incompatible types between mapper vs schema types
|
|
80
|
-
// Then we must mark the content as updated to be added to generate list
|
|
81
|
-
resolverFile.filesystem.contentUpdated = true;
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
};
|
|
85
|
-
exports.ensureObjectTypeResolversAreGenerated = ensureObjectTypeResolversAreGenerated;
|
|
86
|
-
//# sourceMappingURL=ensureObjectTypeResolversAreGenerated.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ensureObjectTypeResolversAreGenerated.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/generateResolverFiles/ensureObjectTypeResolversAreGenerated.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getNodePropertyMap.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/utils/getNodePropertyMap.ts"],"names":[],"mappings":";;;AAAA,uCAKkB;AAIlB;;;GAGG;AACI,MAAM,kBAAkB,GAAG,CAAC,EACjC,IAAI,EACJ,cAAc,GAIf,EAAmB,EAAE;IACpB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,CAAC,cAAc,EAAE,CAAC;IAEpD,MAAM,UAAU,GAAG,CAAC,GAAa,EAAE;QACjC,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,0BAA0B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACzC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,WAAW;aACf,iBAAiB,CAAC,IAAI,CAAC;aACvB,aAAa,EAAE;aACf,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CACvC,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE;QACpB,GAAG,CAAC,YAAY,CAAC,GAAG;YAClB,IAAI,EAAE,YAAY;SACnB,CAAC;QACF,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAAE,CACH,CAAC;IAEF,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AArCW,QAAA,kBAAkB,sBAqC7B;AAEF,MAAM,0BAA0B,GAAG,CACjC,SAA2B,EAC3B,MAAgB,EACV,EAAE;IACR,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;IAC3C,IAAI,SAAS,EAAE,CAAC;QACd,0BAA0B,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,SAAS,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACjD,IACE,IAAI,CAAC,WAAW,CAAC,qBAAU,CAAC,cAAc,CAAC;YAC3C,IAAI,CAAC,WAAW,CAAC,qBAAU,CAAC,gBAAgB,CAAC,EAC7C,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,uCAAuC;YACvC,OAAO;QACT,CAAC;QACD,IAAI,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAC7C,oBAAoB;YACpB,OAAO;QACT,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|