@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.
Files changed (40) hide show
  1. package/README.md +34 -0
  2. package/package.json +8 -8
  3. package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.js +7 -6
  4. package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.js.map +1 -1
  5. package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.d.ts +17 -0
  6. package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.js +58 -0
  7. package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.js.map +1 -0
  8. package/src/generateResolverFiles/handleGraphQLEnumType.js +2 -2
  9. package/src/generateResolverFiles/handleGraphQLEnumType.js.map +1 -1
  10. package/src/generateResolverFiles/handleGraphQLObjectType.js +2 -2
  11. package/src/generateResolverFiles/handleGraphQLObjectType.js.map +1 -1
  12. package/src/generateResolverFiles/postProcessFiles.js +45 -2
  13. package/src/generateResolverFiles/postProcessFiles.js.map +1 -1
  14. package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.d.ts +3 -1
  15. package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js +136 -41
  16. package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.js.map +1 -1
  17. package/src/{utils → getGraphQLObjectTypeResolversToGenerate}/getNodePropertyMap.d.ts +6 -3
  18. package/src/{utils → getGraphQLObjectTypeResolversToGenerate}/getNodePropertyMap.js +14 -5
  19. package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.js.map +1 -0
  20. package/src/parseSources/parseSources.d.ts +6 -1
  21. package/src/parseSources/parseSources.js +15 -3
  22. package/src/parseSources/parseSources.js.map +1 -1
  23. package/src/parseTypeMappers/collectTypeMappersFromSourceFile.d.ts +2 -4
  24. package/src/parseTypeMappers/collectTypeMappersFromSourceFile.js +11 -39
  25. package/src/parseTypeMappers/collectTypeMappersFromSourceFile.js.map +1 -1
  26. package/src/parseTypeMappers/parseTypeMappers.d.ts +8 -6
  27. package/src/parseTypeMappers/parseTypeMappers.js +2 -4
  28. package/src/parseTypeMappers/parseTypeMappers.js.map +1 -1
  29. package/src/preset.js +19 -12
  30. package/src/preset.js.map +1 -1
  31. package/src/utils/index.d.ts +0 -1
  32. package/src/utils/index.js +0 -1
  33. package/src/utils/index.js.map +1 -1
  34. package/src/validatePresetConfig/validatePresetConfig.d.ts +6 -1
  35. package/src/validatePresetConfig/validatePresetConfig.js +28 -1
  36. package/src/validatePresetConfig/validatePresetConfig.js.map +1 -1
  37. package/src/generateResolverFiles/ensureObjectTypeResolversAreGenerated.d.ts +0 -6
  38. package/src/generateResolverFiles/ensureObjectTypeResolversAreGenerated.js +0 -86
  39. package/src/generateResolverFiles/ensureObjectTypeResolversAreGenerated.js.map +0 -1
  40. 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"}