@eddeee888/gcg-typescript-resolver-files 0.0.1 → 0.0.3

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 (49) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +10 -10
  3. package/package.json +2 -1
  4. package/src/index.d.ts +1 -1
  5. package/src/index.js +3 -4
  6. package/src/index.js.map +1 -1
  7. package/src/preset.d.ts +11 -0
  8. package/src/preset.js +76 -0
  9. package/src/preset.js.map +1 -0
  10. package/src/run/addExternalResolverImport.d.ts +7 -0
  11. package/src/run/addExternalResolverImport.js +99 -0
  12. package/src/run/addExternalResolverImport.js.map +1 -0
  13. package/src/run/addResolversMainFile.d.ts +2 -8
  14. package/src/run/addResolversMainFile.js +77 -20
  15. package/src/run/addResolversMainFile.js.map +1 -1
  16. package/src/run/fixExistingResolvers.d.ts +2 -2
  17. package/src/run/fixExistingResolvers.js +5 -5
  18. package/src/run/fixExistingResolvers.js.map +1 -1
  19. package/src/run/handleGraphQLObjectType.d.ts +1 -2
  20. package/src/run/handleGraphQLObjectType.js +10 -15
  21. package/src/run/handleGraphQLObjectType.js.map +1 -1
  22. package/src/run/handleGraphQLRootObjectTypeField.d.ts +2 -0
  23. package/src/run/handleGraphQLRootObjectTypeField.js +25 -0
  24. package/src/run/handleGraphQLRootObjectTypeField.js.map +1 -0
  25. package/src/run/handleGraphQLScalarType.d.ts +2 -0
  26. package/src/run/handleGraphQLScalarType.js +26 -0
  27. package/src/run/handleGraphQLScalarType.js.map +1 -0
  28. package/src/run/handleGraphQLUninionType.d.ts +1 -2
  29. package/src/run/handleGraphQLUninionType.js +10 -14
  30. package/src/run/handleGraphQLUninionType.js.map +1 -1
  31. package/src/run/run.d.ts +2 -2
  32. package/src/run/run.js +43 -29
  33. package/src/run/run.js.map +1 -1
  34. package/src/run/visitNamedType.d.ts +15 -0
  35. package/src/run/visitNamedType.js +102 -0
  36. package/src/run/visitNamedType.js.map +1 -0
  37. package/src/types.d.ts +43 -16
  38. package/src/utils.d.ts +3 -2
  39. package/src/utils.js +34 -12
  40. package/src/utils.js.map +1 -1
  41. package/src/plugin.d.ts +0 -18
  42. package/src/plugin.js +0 -64
  43. package/src/plugin.js.map +0 -1
  44. package/src/run/handleGraphQLRootObjectType.d.ts +0 -3
  45. package/src/run/handleGraphQLRootObjectType.js +0 -44
  46. package/src/run/handleGraphQLRootObjectType.js.map +0 -1
  47. package/src/run/parseLocation.d.ts +0 -7
  48. package/src/run/parseLocation.js +0 -37
  49. package/src/run/parseLocation.js.map +0 -1
@@ -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,102 @@
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
+ // resolverTypeName are generated from typescript-resolvers plugin
71
+ const resolversTypeMetaModule = (0, utils_1.relativeModulePath)(outputDir, config.resolverTypesPath);
72
+ const resolversTypeMeta = belongsToRootObject
73
+ ? {
74
+ typeNamedImport: `${belongsToRootObject}Resolvers`,
75
+ module: resolversTypeMetaModule,
76
+ typeString: `${belongsToRootObject}Resolvers['${resolverName}']`,
77
+ }
78
+ : {
79
+ typeNamedImport: `${resolverName}Resolvers`,
80
+ module: resolversTypeMetaModule,
81
+ typeString: `${resolverName}Resolvers`,
82
+ };
83
+ return {
84
+ fieldFilePath,
85
+ resolverName,
86
+ belongsToRootObject,
87
+ normalizedResolverName,
88
+ resolversTypeMeta,
89
+ };
90
+ };
91
+ /**
92
+ * Function to get format resolver name based on its definition in the schema
93
+ * - Root object type resolver e.g Query.me, Mutation.updateUser
94
+ * - Object type e.g. User, Profile
95
+ */
96
+ const normalizeResolverName = (name, rootObject) => {
97
+ if (!rootObject) {
98
+ return name;
99
+ }
100
+ return `${rootObject}.${name}`;
101
+ };
102
+ //# 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,56 @@ 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
+ files: Record<string, StandardFile | ResolverFile>;
46
+ externalImports: Record<string, {
47
+ importLineMeta: ImportLineMeta;
48
+ identifierUsages: {
49
+ identifierName: string;
50
+ normalizedResolverName: string;
51
+ }[];
52
+ }>;
53
+ };
35
54
  }
36
55
  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;
56
+ export interface GraphQLTypeHandlerParams {
57
+ fieldFilePath: string;
58
+ resolverName: string;
59
+ belongsToRootObject: RootObjectType | null;
60
+ normalizedResolverName: string;
61
+ resolversTypeMeta: {
62
+ typeNamedImport: `${string}Resolvers`;
63
+ module: string;
64
+ typeString: `${string}Resolvers` | `${RootObjectType}Resolvers['${string}']`;
65
+ };
66
+ }
67
+ export declare type GraphQLTypeHandler = (params: GraphQLTypeHandlerParams, ctx: RunContext) => void;
41
68
  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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"}
package/src/plugin.d.ts DELETED
@@ -1,18 +0,0 @@
1
- import { PluginFunction, PluginValidateFn } from '@graphql-codegen/plugin-helpers';
2
- interface PluginConfig {
3
- resolverTypesPath: string;
4
- relativeTargetDir?: string;
5
- mainFile?: string;
6
- mode?: 'merged' | 'modules';
7
- whitelistedModules?: string[];
8
- }
9
- export declare const plugin: PluginFunction<PluginConfig>;
10
- interface RawPluginConfig {
11
- resolverTypesPath?: string;
12
- relativeTargetDir?: string;
13
- mainFile?: string;
14
- mode?: string;
15
- whitelistedModules?: string[];
16
- }
17
- export declare const validate: PluginValidateFn<RawPluginConfig>;
18
- export {};
package/src/plugin.js DELETED
@@ -1,64 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validate = exports.plugin = void 0;
4
- const tslib_1 = require("tslib");
5
- const path = require("path");
6
- const promises_1 = require("fs/promises");
7
- const run_1 = require("./run");
8
- const utils_1 = require("./utils");
9
- const pluginName = '@eddeee888/gcg-typescript-resolver-files';
10
- const configDefaultMode = 'modules';
11
- const plugin = (schema, _documents, config, info) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
12
- // TODO: check if there's a better way to handle output dir
13
- const baseOutputDir = info === null || info === void 0 ? void 0 : info.outputFile;
14
- if (!baseOutputDir) {
15
- throw new Error('Output folder is invalid');
16
- }
17
- const sources = schema.extensions.extendedSources;
18
- if (!Array.isArray(sources) || sources.length === 0) {
19
- throw new Error('Empty Sources. Make sure schema files are parsed correctly.');
20
- }
21
- const sourcesMap = (0, utils_1.parseSources)(sources);
22
- const { resolverTypesPath: relativeResolverTypesPathFromBaseOutputDir, relativeTargetDir = '', mainFile = 'index.ts', mode = configDefaultMode, whitelistedModules = [], } = config;
23
- const resolverTypesPath = path.join(baseOutputDir, relativeResolverTypesPathFromBaseOutputDir);
24
- const result = {
25
- dirs: {},
26
- files: {},
27
- };
28
- (0, run_1.run)({
29
- schema,
30
- sourcesMap,
31
- baseOutputDir,
32
- resolverTypesPath,
33
- relativeTargetDir,
34
- mainFile,
35
- mode,
36
- whitelistedModules,
37
- }, result);
38
- // Write dirs and files
39
- 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
- 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); })));
41
- return { content: '' };
42
- });
43
- exports.plugin = plugin;
44
- const validate = (_schema, _documents, { resolverTypesPath, mainFile, mode = configDefaultMode, whitelistedModules }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
45
- if (!resolverTypesPath) {
46
- throw new Error(`Validation Error - ${pluginName} - config.resolverTypesPath is required`);
47
- }
48
- if (mainFile && path.extname(mainFile) === '') {
49
- throw new Error(`Validation Error - ${pluginName} - config.mainFile must be a valid file name`);
50
- }
51
- if (mode !== 'merged' && mode !== 'modules') {
52
- throw new Error(`Validation Error - ${pluginName} - config.mode must be "merged" or "modules" (default is "modules")`);
53
- }
54
- if (whitelistedModules) {
55
- if (!Array.isArray(whitelistedModules)) {
56
- throw new Error(`Validation Error - ${pluginName} - config.whitelistedModules must be an array if provided`);
57
- }
58
- if (mode !== 'modules') {
59
- throw new Error(`Validation Error - ${pluginName} - config.whitelistedModules can only be used with config.mode == "modules"`);
60
- }
61
- }
62
- });
63
- exports.validate = validate;
64
- //# sourceMappingURL=plugin.js.map
package/src/plugin.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../../packages/typescript-resolver-files/src/plugin.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"}