@ptc-org/nestjs-query-graphql 2.2.0 → 2.3.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ptc-org/nestjs-query-graphql",
3
- "version": "2.2.0",
3
+ "version": "2.3.1",
4
4
  "description": "Nestjs graphql query adapter",
5
5
  "author": "doug-martin <doug@dougamartin.com>",
6
6
  "homepage": "https://github.com/tripss/nestjs-query#readme",
@@ -39,7 +39,7 @@
39
39
  "pluralize": "^8.0.0",
40
40
  "tslib": "^2.4.0",
41
41
  "upper-case-first": "^2.0.2",
42
- "@ptc-org/nestjs-query-core": "2.2.0",
42
+ "@ptc-org/nestjs-query-core": "2.3.1",
43
43
  "lodash.merge": "4.6.2",
44
44
  "reflect-metadata": "0.1.13"
45
45
  },
@@ -0,0 +1,5 @@
1
+ import type { Class } from '@ptc-org/nestjs-query-core';
2
+ /**
3
+ * @internal this implementation is not final and subjected to change! Use at own risk!
4
+ */
5
+ export declare const GraphQLLookAheadRelations: <DTO>(DTOClass: Class<DTO>) => ParameterDecorator;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GraphQLLookAheadRelations = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const graphql_1 = require("@nestjs/graphql");
6
+ const graphql_resolve_info_utils_1 = require("./graphql-resolve-info.utils");
7
+ const relation_decorator_1 = require("./relation.decorator");
8
+ function createLookAheadInfo(relations, simpleResolveInfo) {
9
+ return relations
10
+ .map((relation) => {
11
+ if (relation.name in simpleResolveInfo.fields) {
12
+ return {
13
+ name: relation.name,
14
+ query: simpleResolveInfo.fields[relation.name].args || {}
15
+ };
16
+ }
17
+ return false;
18
+ })
19
+ .filter(Boolean);
20
+ }
21
+ /**
22
+ * @internal this implementation is not final and subjected to change! Use at own risk!
23
+ */
24
+ const GraphQLLookAheadRelations = (DTOClass) => {
25
+ // Get all relations that have look ahead enabled
26
+ const relations = (0, relation_decorator_1.getRelationsDescriptors)(DTOClass).filter((relation) => relation.relationOpts.enableLookAhead && !relation.isMany);
27
+ if (relations.length === 0) {
28
+ return () => [];
29
+ }
30
+ return (0, common_1.createParamDecorator)((data, ctx) => {
31
+ const info = graphql_1.GqlExecutionContext.create(ctx).getInfo();
32
+ return createLookAheadInfo(relations, (0, graphql_resolve_info_utils_1.simplifyResolveInfo)(info));
33
+ })();
34
+ };
35
+ exports.GraphQLLookAheadRelations = GraphQLLookAheadRelations;
36
+ //# sourceMappingURL=graphql-look-ahead-relations.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-look-ahead-relations.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/graphql-look-ahead-relations.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAuE;AACvE,6CAAqD;AAKrD,6EAAoF;AACpF,6DAAkF;AAElF,SAAS,mBAAmB,CAC1B,SAAwC,EACxC,iBAAwC;IAExC,OAAO,SAAS;SACb,GAAG,CAAC,CAAC,QAAQ,EAAiC,EAAE;QAC/C,IAAI,QAAQ,CAAC,IAAI,IAAI,iBAAiB,CAAC,MAAM,EAAE;YAC7C,OAAO;gBACL,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,KAAK,EAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAA2B,CAAC,IAAI,IAAI,EAAE;aACrF,CAAA;SACF;QAED,OAAO,KAAK,CAAA;IACd,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAA0B,CAAA;AAC7C,CAAC;AAED;;GAEG;AACI,MAAM,yBAAyB,GAAG,CAAM,QAAoB,EAAsB,EAAE;IACzF,iDAAiD;IACjD,MAAM,SAAS,GAAG,IAAA,4CAAuB,EAAC,QAAQ,CAAC,CAAC,MAAM,CACxD,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,IAAI,CAAC,QAAQ,CAAC,MAAM,CACxE,CAAA;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1B,OAAO,GAAG,EAAE,CAAC,EAAE,CAAA;KAChB;IAED,OAAO,IAAA,6BAAoB,EAAC,CAAC,IAAa,EAAE,GAAqB,EAAyB,EAAE;QAC1F,MAAM,IAAI,GAAG,6BAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAe,CAAA;QACnE,OAAO,mBAAmB,CAAM,SAAS,EAAE,IAAA,gDAAmB,EAAC,IAAI,CAAC,CAAC,CAAA;IACvE,CAAC,CAAC,EAAE,CAAA;AACN,CAAC,CAAA;AAdY,QAAA,yBAAyB,6BAcrC"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @internal this implementation is not final and subjected to change! Use at own risk!
3
+ */
4
+ export declare function GraphQLResolveInfo<DTO>(simplify?: boolean): ParameterDecorator;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GraphQLResolveInfo = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const graphql_1 = require("@nestjs/graphql");
6
+ const graphql_resolve_info_utils_1 = require("./graphql-resolve-info.utils");
7
+ /**
8
+ * @internal this implementation is not final and subjected to change! Use at own risk!
9
+ */
10
+ function GraphQLResolveInfo(simplify = true) {
11
+ return (0, common_1.createParamDecorator)((data, ctx) => {
12
+ const resolveInfo = graphql_1.GqlExecutionContext.create(ctx).getInfo();
13
+ if (simplify) {
14
+ return (0, graphql_resolve_info_utils_1.simplifyResolveInfo)(resolveInfo);
15
+ }
16
+ return resolveInfo;
17
+ })();
18
+ }
19
+ exports.GraphQLResolveInfo = GraphQLResolveInfo;
20
+ //# sourceMappingURL=graphql-resolve-info.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-resolve-info.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/graphql-resolve-info.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAuE;AACvE,6CAAqD;AAIrD,6EAAoF;AAEpF;;GAEG;AACH,SAAgB,kBAAkB,CAAM,QAAQ,GAAG,IAAI;IACrD,OAAO,IAAA,6BAAoB,EAAC,CAAC,IAAa,EAAE,GAAqB,EAAuC,EAAE;QACxG,MAAM,WAAW,GAAG,6BAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAe,CAAA;QAE1E,IAAI,QAAQ,EAAE;YACZ,OAAO,IAAA,gDAAmB,EAAM,WAAW,CAAC,CAAA;SAC7C;QAED,OAAO,WAAW,CAAA;IACpB,CAAC,CAAC,EAAE,CAAA;AACN,CAAC;AAVD,gDAUC"}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.simplifyResolveInfo = void 0;
4
4
  const graphql_1 = require("graphql");
5
5
  function getFieldFromAST(fieldNode, parentType) {
6
- if (fieldNode.kind === 'Field') {
6
+ if (fieldNode.kind === graphql_1.Kind.FIELD) {
7
7
  if (!(parentType instanceof graphql_1.GraphQLUnionType)) {
8
8
  // eslint-disable-next-line @typescript-eslint/no-unsafe-return
9
9
  return parentType.getFields()[fieldNode.name.value];
@@ -14,6 +14,30 @@ function getFieldFromAST(fieldNode, parentType) {
14
14
  }
15
15
  return undefined;
16
16
  }
17
+ function getDirectiveValue(directive, info) {
18
+ const arg = directive.arguments[0]; // only arg on an include or skip directive is "if"
19
+ if (arg.value.kind !== graphql_1.Kind.VARIABLE) {
20
+ // eslint-disable-next-line
21
+ return !!arg.value['value'];
22
+ }
23
+ return info.variableValues[arg.value.name.value];
24
+ }
25
+ function getDirectiveResults(fieldNode, info) {
26
+ const directiveResult = {
27
+ shouldInclude: true,
28
+ shouldSkip: false
29
+ };
30
+ return fieldNode.directives.reduce((result, directive) => {
31
+ switch (directive.name.value) {
32
+ case 'include':
33
+ return { ...result, shouldInclude: getDirectiveValue(directive, info) };
34
+ case 'skip':
35
+ return { ...result, shouldSkip: getDirectiveValue(directive, info) };
36
+ default:
37
+ return result;
38
+ }
39
+ }, directiveResult);
40
+ }
17
41
  function parseFieldNodes(inASTs, resolveInfo, initTree, parentType) {
18
42
  const asts = Array.isArray(inASTs) ? inASTs : [inASTs];
19
43
  return asts.reduce((tree, fieldNode) => {
@@ -26,6 +50,14 @@ function parseFieldNodes(inASTs, resolveInfo, initTree, parentType) {
26
50
  if (!fieldGqlTypeOrUndefined) {
27
51
  return tree;
28
52
  }
53
+ if (fieldNode.directives && fieldNode.directives.length) {
54
+ const { shouldInclude, shouldSkip } = getDirectiveResults(fieldNode, resolveInfo);
55
+ // field/fragment is not included if either the @skip condition is true or the @include condition is false
56
+ // https://facebook.github.io/graphql/draft/#sec--include
57
+ if (shouldSkip || !shouldInclude) {
58
+ return tree;
59
+ }
60
+ }
29
61
  const parsedField = {
30
62
  name: fieldNode.name.value,
31
63
  alias,
@@ -1 +1 @@
1
- {"version":3,"file":"graphql-resolve-info.utils.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/graphql-resolve-info.utils.ts"],"names":[],"mappings":";;;AAAA,qCAA8H;AAoB9H,SAAS,eAAe,CACtB,SAAkB,EAClB,UAAgC;IAEhC,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE;QAC9B,IAAI,CAAC,CAAC,UAAU,YAAY,0BAAgB,CAAC,EAAE;YAC7C,+DAA+D;YAC/D,OAAO,UAAU,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;SACpD;aAAM;YACL,qCAAqC;SACtC;KACF;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,eAAe,CACtB,MAAoD,EACpD,WAAwB,EACxB,QAAwC,EACxC,UAAgC;IAEhC,MAAM,IAAI,GAA6B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAEhF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QACrC,MAAM,KAAK,GAAW,SAAS,EAAE,KAAK,EAAE,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAA;QAErE,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;QACpD,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,OAAO,IAAI,CAAA;SACZ;QACD,MAAM,uBAAuB,GAAG,IAAA,sBAAY,EAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACxD,IAAI,CAAC,uBAAuB,EAAE;YAC5B,OAAO,IAAI,CAAA;SACZ;QAED,MAAM,WAAW,GAAG;YAClB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK;YAC1B,KAAK;YACL,IAAI,EAAE,IAAA,2BAAiB,EAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,cAAc,CAAC;YAErE,MAAM,EACJ,SAAS,CAAC,YAAY,IAAI,IAAA,yBAAe,EAAC,uBAAuB,CAAC;gBAChE,CAAC,CAAC,eAAe,CACb,SAAS,CAAC,YAAY,CAAC,UAAU,EACjC,WAAW,EACX,EAA6B,EAC7B,uBAAuB,CACxB;gBACH,CAAC,CAAC,EAAE;SACgB,CAAA;QAE1B,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,OAAO,WAAW,CAAA;SACnB;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,GAAG,WAAW,CAAA;SAC1B;QAED,OAAO,IAAI,CAAA;IACb,CAAC,EAAE,QAAQ,CAAC,CAAA;AACd,CAAC;AAED,SAAS,cAAc,CAAM,IAAa;IACxC,OAAO,OAAQ,IAAoD,CAAC,MAAM,CAAC,KAAK,KAAK,WAAW,CAAA;AAClG,CAAC;AAED,SAAS,cAAc,CAAM,IAAa;IACxC,OAAO,OAAQ,IAAoD,CAAC,MAAM,CAAC,KAAK,KAAK,WAAW,CAAA;AAClG,CAAC;AAED,SAAgB,mBAAmB,CAAM,WAAwB;IAC/D,MAAM,UAAU,GAAG,eAAe,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,UAAU,CAGrD,CAAA;IAE/C,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE;QAC9B,OAAO,UAAU,CAAC,MAAM,CAAC,KAA8B,CAAA;KACxD;SAAM,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE;QACrC,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAA6B,CAAA;KACpE;IAED,OAAO,UAAmC,CAAA;AAC5C,CAAC;AAbD,kDAaC"}
1
+ {"version":3,"file":"graphql-resolve-info.utils.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/graphql-resolve-info.utils.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@ export * from './authorize-filter.decorator';
3
3
  export * from './authorizer.decorator';
4
4
  export * from './decorator.utils';
5
5
  export { FilterableField, FilterableFieldDescriptor, FilterableFieldOptions, getFilterableFields } from './filterable-field.decorator';
6
+ export * from './graphql-look-ahead-relations.decorator';
7
+ export * from './graphql-resolve-info.decorator';
6
8
  export * from './hook.decorator';
7
9
  export * from './hook-args.decorator';
8
10
  export * from './id-field.decorator';
@@ -9,6 +9,8 @@ tslib_1.__exportStar(require("./decorator.utils"), exports);
9
9
  var filterable_field_decorator_1 = require("./filterable-field.decorator");
10
10
  Object.defineProperty(exports, "FilterableField", { enumerable: true, get: function () { return filterable_field_decorator_1.FilterableField; } });
11
11
  Object.defineProperty(exports, "getFilterableFields", { enumerable: true, get: function () { return filterable_field_decorator_1.getFilterableFields; } });
12
+ tslib_1.__exportStar(require("./graphql-look-ahead-relations.decorator"), exports);
13
+ tslib_1.__exportStar(require("./graphql-resolve-info.decorator"), exports);
12
14
  tslib_1.__exportStar(require("./hook.decorator"), exports);
13
15
  tslib_1.__exportStar(require("./hook-args.decorator"), exports);
14
16
  tslib_1.__exportStar(require("./id-field.decorator"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/index.ts"],"names":[],"mappings":";;;;AAAA,4EAAiD;AACjD,uEAA4C;AAC5C,iEAAsC;AACtC,4DAAiC;AACjC,2EAKqC;AAJnC,6HAAA,eAAe,OAAA;AAGf,iIAAA,mBAAmB,OAAA;AAErB,2DAAgC;AAChC,gEAAqC;AACrC,+DAAoC;AACpC,wEAA6C;AAC7C,+EAAoD;AACpD,uEAAyD;AAAhD,wHAAA,YAAY,OAAA;AACrB,8DAAmC;AACnC,+DAAoC;AACpC,oEAAyC;AACzC,6DAA4F;AAAnF,gHAAA,SAAS,OAAA;AAClB,2DAY6B;AAX3B,sHAAA,gBAAgB,OAAA;AAChB,gIAAA,0BAA0B,OAAA;AAC1B,gIAAA,0BAA0B,OAAA;AAC1B,wHAAA,kBAAkB,OAAA;AAClB,+HAAA,yBAAyB,OAAA;AACzB,kHAAA,YAAY,OAAA;AACZ,sHAAA,gBAAgB,OAAA;AAChB,8GAAA,QAAQ,OAAA;AAGR,qHAAA,eAAe,OAAA;AAEjB,qEAA0C;AAE1C,wEAA6C;AAC7C,qEAA0C;AAC1C,qFAAwG;AAA/F,uIAAA,oBAAoB,OAAA;AAC7B,8DAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/index.ts"],"names":[],"mappings":";;;;AAAA,4EAAiD;AACjD,uEAA4C;AAC5C,iEAAsC;AACtC,4DAAiC;AACjC,2EAKqC;AAJnC,6HAAA,eAAe,OAAA;AAGf,iIAAA,mBAAmB,OAAA;AAErB,mFAAwD;AACxD,2EAAgD;AAChD,2DAAgC;AAChC,gEAAqC;AACrC,+DAAoC;AACpC,wEAA6C;AAC7C,+EAAoD;AACpD,uEAAyD;AAAhD,wHAAA,YAAY,OAAA;AACrB,8DAAmC;AACnC,+DAAoC;AACpC,oEAAyC;AACzC,6DAA4F;AAAnF,gHAAA,SAAS,OAAA;AAClB,2DAY6B;AAX3B,sHAAA,gBAAgB,OAAA;AAChB,gIAAA,0BAA0B,OAAA;AAC1B,gIAAA,0BAA0B,OAAA;AAC1B,wHAAA,kBAAkB,OAAA;AAClB,+HAAA,yBAAyB,OAAA;AACzB,kHAAA,YAAY,OAAA;AACZ,sHAAA,gBAAgB,OAAA;AAChB,8GAAA,QAAQ,OAAA;AAGR,qHAAA,eAAe,OAAA;AAEjB,qEAA0C;AAE1C,wEAA6C;AAC7C,qEAA0C;AAC1C,qFAAwG;AAA/F,uIAAA,oBAAoB,OAAA;AAC7B,8DAAmC"}
@@ -1,5 +1,5 @@
1
1
  import { ArrayReflector, Class } from '@ptc-org/nestjs-query-core';
2
- import { RelationsOpts } from '../resolvers/relations';
2
+ import { RelationsOpts, ResolverRelation } from '../resolvers/relations';
3
3
  import { ResolverManyRelation, ResolverOneRelation } from '../resolvers/relations/relations.interface';
4
4
  import { BaseResolverOptions } from './resolver-method.decorator';
5
5
  export declare const reflector: ArrayReflector;
@@ -7,6 +7,13 @@ export type RelationOneDecoratorOpts<Relation> = Omit<ResolverOneRelation<Relati
7
7
  export type RelationManyDecoratorOpts<Relation> = Omit<ResolverManyRelation<Relation>, 'DTO' | 'allowFiltering'>;
8
8
  export type RelationTypeFunc<Relation> = () => Class<Relation>;
9
9
  export type RelationClassDecorator<DTO> = <Cls extends Class<DTO>>(DTOClass: Cls) => Cls | void;
10
+ export interface RelationDescriptor<Relation> {
11
+ name: string;
12
+ relationTypeFunc: RelationTypeFunc<Relation>;
13
+ isMany: boolean;
14
+ relationOpts?: Omit<ResolverRelation<Relation>, 'DTO'>;
15
+ }
16
+ export declare function getRelationsDescriptors<DTO>(DTOClass: Class<DTO>): RelationDescriptor<unknown>[];
10
17
  export declare function getRelations<DTO>(DTOClass: Class<DTO>, opts?: BaseResolverOptions): RelationsOpts;
11
18
  export declare const Relation: <DTO, Relation>(name: string, relationTypeFunc: RelationTypeFunc<Relation>, options?: RelationOneDecoratorOpts<Relation>) => RelationClassDecorator<DTO>;
12
19
  export declare const FilterableRelation: <DTO, Relation>(name: string, relationTypeFunc: RelationTypeFunc<Relation>, options?: RelationOneDecoratorOpts<Relation>) => RelationClassDecorator<DTO>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FilterableCursorConnection = exports.CursorConnection = exports.FilterableOffsetConnection = exports.OffsetConnection = exports.FilterableUnPagedRelation = exports.UnPagedRelation = exports.FilterableRelation = exports.Relation = exports.getRelations = exports.reflector = void 0;
3
+ exports.FilterableCursorConnection = exports.CursorConnection = exports.FilterableOffsetConnection = exports.OffsetConnection = exports.FilterableUnPagedRelation = exports.UnPagedRelation = exports.FilterableRelation = exports.Relation = exports.getRelations = exports.getRelationsDescriptors = exports.reflector = void 0;
4
4
  const nestjs_query_core_1 = require("@ptc-org/nestjs-query-core");
5
5
  const common_1 = require("../common");
6
6
  const paging_1 = require("../types/query/paging");
@@ -14,6 +14,7 @@ function getRelationsDescriptors(DTOClass) {
14
14
  return [...inheritedRelations, ...relations];
15
15
  }, []);
16
16
  }
17
+ exports.getRelationsDescriptors = getRelationsDescriptors;
17
18
  function convertRelationsToOpts(relations, baseOpts) {
18
19
  const relationOpts = {};
19
20
  relations.forEach((relation) => {
@@ -1 +1 @@
1
- {"version":3,"file":"relation.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/relation.decorator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relation.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/relation.decorator.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { Class, FindRelationOptions, QueryService } from '@ptc-org/nestjs-query-core';
1
+ import { Class, FindRelationOptions, QueryService, SelectRelations } from '@ptc-org/nestjs-query-core';
2
2
  import { NestjsQueryDataloader } from './relations.loader';
3
3
  export type FindRelationsArgs<DTO, Relation> = {
4
4
  dto: DTO;
5
- } & FindRelationOptions<Relation>;
5
+ } & FindRelationOptions<Relation> & SelectRelations<Relation>;
6
6
  type FindRelationsOpts<Relation> = Omit<FindRelationOptions<Relation>, 'filter'>;
7
7
  export declare class FindRelationsLoader<DTO, Relation> implements NestjsQueryDataloader<DTO, FindRelationsArgs<DTO, Relation>, Relation | undefined | Error> {
8
8
  readonly RelationDTO: Class<Relation>;
@@ -15,9 +15,9 @@ class FindRelationsLoader {
15
15
  async loadResults(service, findRelationsMap) {
16
16
  const results = [];
17
17
  await Promise.all([...findRelationsMap.values()].map(async (args) => {
18
- const { filter, withDeleted } = args[0];
18
+ const { filter, withDeleted, lookedAhead } = args[0];
19
19
  const dtos = args.map((a) => a.dto);
20
- const opts = { filter, withDeleted };
20
+ const opts = { filter, withDeleted, lookedAhead };
21
21
  const relationResults = await service.findRelation(this.RelationDTO, this.relationName, dtos, opts);
22
22
  const dtoRelations = dtos.map((dto) => relationResults.get(dto));
23
23
  dtoRelations.forEach((relation, index) => {
@@ -1 +1 @@
1
- {"version":3,"file":"find-relations.loader.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/loader/find-relations.loader.ts"],"names":[],"mappings":";;;AAQA,MAAa,mBAAmB;IAG9B,YAAqB,WAA4B,EAAW,YAAoB;QAA3D,gBAAW,GAAX,WAAW,CAAiB;QAAW,iBAAY,GAAZ,YAAY,CAAQ;IAAG,CAAC;IAE7E,YAAY,CAAC,OAA4C,EAAE,IAAkC;QAClG,OAAO,KAAK,EAAE,IAAqD,EAA6C,EAAE;YAChH,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAC3C,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC3C,CAAC,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,OAA4C,EAC5C,gBAAiD;QAEjD,MAAM,OAAO,GAA6B,EAAE,CAAA;QAC5C,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAChD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YACnC,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;YACpC,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACnG,MAAM,YAAY,GAA6B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YAC1F,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;gBACvC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAA;YACvC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CACH,CAAA;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,UAAU,CAChB,SAA0D,EAC1D,IAAkC;QAElC,QAAQ;QACR,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;YAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;gBACxB,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;aACxB;YACD,oEAAoE;YACpE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;YACtD,OAAO,GAAG,CAAA;QACZ,CAAC,EAAE,IAAI,GAAG,EAAoE,CAAC,CAAA;IACjF,CAAC;CACF;AA/CD,kDA+CC"}
1
+ {"version":3,"file":"find-relations.loader.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/loader/find-relations.loader.ts"],"names":[],"mappings":";;;AAQA,MAAa,mBAAmB;IAG9B,YAAqB,WAA4B,EAAW,YAAoB;QAA3D,gBAAW,GAAX,WAAW,CAAiB;QAAW,iBAAY,GAAZ,YAAY,CAAQ;IAAG,CAAC;IAE7E,YAAY,CAAC,OAA4C,EAAE,IAAkC;QAClG,OAAO,KAAK,EAAE,IAAqD,EAA6C,EAAE;YAChH,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAC3C,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC3C,CAAC,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,OAA4C,EAC5C,gBAAiD;QAEjD,MAAM,OAAO,GAA6B,EAAE,CAAA;QAC5C,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAChD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YACpD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YACnC,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,CAAA;YACjD,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACnG,MAAM,YAAY,GAA6B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YAC1F,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;gBACvC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAA;YACvC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CACH,CAAA;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,UAAU,CAChB,SAA0D,EAC1D,IAAkC;QAElC,QAAQ;QACR,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;YAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;gBACxB,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;aACxB;YACD,oEAAoE;YACpE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;YACtD,OAAO,GAAG,CAAA;QACZ,CAAC,EAAE,IAAI,GAAG,EAAoE,CAAC,CAAA;IACjF,CAAC;CACF;AA/CD,kDA+CC"}
@@ -1,4 +1,4 @@
1
- import { Class, Filter, QueryService } from '@ptc-org/nestjs-query-core';
1
+ import { Class, Filter, QueryService, SelectRelation } from '@ptc-org/nestjs-query-core';
2
2
  import { ConnectionOptions, FindOneArgsType, InferConnectionTypeFromStrategy, PagingStrategies, QueryArgsTypeOpts } from '../types';
3
3
  import { CursorQueryArgsTypeOpts, QueryType, StaticQueryType } from '../types/query';
4
4
  import { ExtractPagingStrategy, ResolverClass, ResolverOpts, ServiceResolver } from './resolver.interface';
@@ -7,8 +7,8 @@ export type ReadResolverOpts<DTO> = {
7
7
  QueryArgs?: StaticQueryType<DTO, PagingStrategies>;
8
8
  } & ResolverOpts & QueryArgsTypeOpts<DTO> & Pick<ConnectionOptions, 'enableTotalCount'>;
9
9
  export interface ReadResolver<DTO, PS extends PagingStrategies, QS extends QueryService<DTO, unknown, unknown>> extends ServiceResolver<DTO, QS> {
10
- queryMany(query: QueryType<DTO, PagingStrategies>, authorizeFilter?: Filter<DTO>): Promise<InferConnectionTypeFromStrategy<DTO, PS>>;
11
- findById(id: FindOneArgsType, authorizeFilter?: Filter<DTO>): Promise<DTO | undefined>;
10
+ queryMany(query: QueryType<DTO, PagingStrategies>, authorizeFilter?: Filter<DTO>, selectRelations?: SelectRelation<DTO>[]): Promise<InferConnectionTypeFromStrategy<DTO, PS>>;
11
+ findById(id: FindOneArgsType, authorizeFilter?: Filter<DTO>, selectRelations?: SelectRelation<DTO>[]): Promise<DTO | undefined>;
12
12
  }
13
13
  /**
14
14
  * @internal
@@ -34,11 +34,15 @@ const Readable = (DTOClass, opts) => (BaseClass) => {
34
34
  (0, graphql_1.ArgsType)()
35
35
  ], FO);
36
36
  let ReadResolverBase = class ReadResolverBase extends BaseClass {
37
- async findById(input, authorizeFilter) {
38
- return this.service.getById(input.id, { filter: authorizeFilter, withDeleted: opts?.one?.withDeleted });
37
+ async findById(input, authorizeFilter, relations) {
38
+ return this.service.getById(input.id, {
39
+ filter: authorizeFilter,
40
+ withDeleted: opts?.one?.withDeleted,
41
+ relations
42
+ });
39
43
  }
40
- async queryMany(query, authorizeFilter) {
41
- return ConnectionType.createFromPromise((q) => this.service.query(q), (0, nestjs_query_core_1.mergeQuery)(query, { filter: authorizeFilter }), (filter) => this.service.count(filter));
44
+ async queryMany(query, authorizeFilter, relations) {
45
+ return ConnectionType.createFromPromise((q) => this.service.query(q), (0, nestjs_query_core_1.mergeQuery)(query, { filter: authorizeFilter, relations }), (filter) => this.service.count(filter));
42
46
  }
43
47
  };
44
48
  tslib_1.__decorate([
@@ -48,8 +52,9 @@ const Readable = (DTOClass, opts) => (BaseClass) => {
48
52
  operationGroup: auth_1.OperationGroup.READ,
49
53
  many: false
50
54
  })),
55
+ tslib_1.__param(2, (0, decorators_1.GraphQLLookAheadRelations)(DTOClass)),
51
56
  tslib_1.__metadata("design:type", Function),
52
- tslib_1.__metadata("design:paramtypes", [FO, Object]),
57
+ tslib_1.__metadata("design:paramtypes", [FO, Object, Array]),
53
58
  tslib_1.__metadata("design:returntype", Promise)
54
59
  ], ReadResolverBase.prototype, "findById", null);
55
60
  tslib_1.__decorate([
@@ -59,8 +64,9 @@ const Readable = (DTOClass, opts) => (BaseClass) => {
59
64
  operationGroup: auth_1.OperationGroup.READ,
60
65
  many: true
61
66
  })),
67
+ tslib_1.__param(2, (0, decorators_1.GraphQLLookAheadRelations)(DTOClass)),
62
68
  tslib_1.__metadata("design:type", Function),
63
- tslib_1.__metadata("design:paramtypes", [QA, Object]),
69
+ tslib_1.__metadata("design:paramtypes", [QA, Object, Array]),
64
70
  tslib_1.__metadata("design:returntype", Promise)
65
71
  ], ReadResolverBase.prototype, "queryMany", null);
66
72
  ReadResolverBase = tslib_1.__decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"read.resolver.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/resolvers/read.resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read.resolver.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/resolvers/read.resolver.ts"],"names":[],"mappings":"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"}
@@ -25,10 +25,14 @@ const ReadOneRelationMixin = (DTOClass, relation) => (Base) => {
25
25
  const loaderName = `load${baseName}For${DTOClass.name}`;
26
26
  const findLoader = new loader_1.FindRelationsLoader(relationDTO, relationName);
27
27
  let ReadOneMixin = class ReadOneMixin extends Base {
28
- async [_a = `find${baseName}`](dto, context, authFilter) {
29
- return loader_1.DataLoaderFactory.getOrCreateLoader(context, loaderName, findLoader.createLoader(this.service, { withDeleted: relation.withDeleted })).load({
28
+ async [_a = `find${baseName}`](dto, context, authFilter, relations) {
29
+ return loader_1.DataLoaderFactory.getOrCreateLoader(context, loaderName, findLoader.createLoader(this.service, {
30
+ withDeleted: relation.withDeleted,
31
+ lookedAhead: relation.enableLookAhead
32
+ })).load({
30
33
  dto,
31
- filter: authFilter
34
+ filter: authFilter,
35
+ relations
32
36
  });
33
37
  }
34
38
  };
@@ -40,8 +44,9 @@ const ReadOneRelationMixin = (DTOClass, relation) => (Base) => {
40
44
  operationGroup: auth_1.OperationGroup.READ,
41
45
  many: false
42
46
  })),
47
+ tslib_1.__param(3, (0, decorators_1.GraphQLLookAheadRelations)(DTOClass)),
43
48
  tslib_1.__metadata("design:type", Function),
44
- tslib_1.__metadata("design:paramtypes", [Object, Object, Object]),
49
+ tslib_1.__metadata("design:paramtypes", [Object, Object, Object, Array]),
45
50
  tslib_1.__metadata("design:returntype", Promise)
46
51
  ], ReadOneMixin.prototype, _a, null);
47
52
  ReadOneMixin = tslib_1.__decorate([
@@ -76,11 +81,11 @@ const ReadManyRelationMixin = (DTOClass, relation) => (Base) => {
76
81
  // disable keyset pagination for relations otherwise recursive paging will not work
77
82
  const { ConnectionType: CT } = RelationQA;
78
83
  let ReadManyMixin = class ReadManyMixin extends Base {
79
- async [_a = `query${pluralBaseName}`](dto, q, context, relationFilter) {
84
+ async [_a = `query${pluralBaseName}`](dto, q, context, relationFilter, relations) {
80
85
  const relationQuery = await (0, helpers_1.transformAndValidate)(RelationQA, q);
81
86
  const relationLoader = loader_1.DataLoaderFactory.getOrCreateLoader(context, relationLoaderName, queryLoader.createLoader(this.service));
82
87
  const relationCountLoader = loader_1.DataLoaderFactory.getOrCreateLoader(context, countRelationLoaderName, countLoader.createLoader(this.service));
83
- return CT.createFromPromise((query) => relationLoader.load({ dto, query }), (0, nestjs_query_core_1.mergeQuery)(relationQuery, { filter: relationFilter }), (filter) => relationCountLoader.load({ dto, filter }));
88
+ return CT.createFromPromise((query) => relationLoader.load({ dto, query }), (0, nestjs_query_core_1.mergeQuery)(relationQuery, { filter: relationFilter, relations }), (filter) => relationCountLoader.load({ dto, filter }));
84
89
  }
85
90
  };
86
91
  tslib_1.__decorate([
@@ -92,8 +97,9 @@ const ReadManyRelationMixin = (DTOClass, relation) => (Base) => {
92
97
  operationGroup: auth_1.OperationGroup.READ,
93
98
  many: true
94
99
  })),
100
+ tslib_1.__param(4, (0, decorators_1.GraphQLLookAheadRelations)(relationDTO)),
95
101
  tslib_1.__metadata("design:type", Function),
96
- tslib_1.__metadata("design:paramtypes", [Object, RelationQA, Object, Object]),
102
+ tslib_1.__metadata("design:paramtypes", [Object, RelationQA, Object, Object, Array]),
97
103
  tslib_1.__metadata("design:returntype", Promise)
98
104
  ], ReadManyMixin.prototype, _a, null);
99
105
  ReadManyMixin = tslib_1.__decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"read-relations.resolver.js","sourceRoot":"","sources":["../../../../../../packages/query-graphql/src/resolvers/relations/read-relations.resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read-relations.resolver.js","sourceRoot":"","sources":["../../../../../../packages/query-graphql/src/resolvers/relations/read-relations.resolver.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,10 @@ export type ResolverRelation<Relation> = {
51
51
  * Enable aggregation queries.
52
52
  */
53
53
  enableAggregate?: boolean;
54
+ /**
55
+ * Enable look ahead mode, will join and select the relation when queried.
56
+ */
57
+ enableLookAhead?: boolean;
54
58
  /**
55
59
  * Indicates if soft-deleted rows should be included in relation result.
56
60
  */
@@ -70,7 +74,7 @@ export type ResolverRelation<Relation> = {
70
74
  } & DTONamesOpts & ResolverMethodOpts & QueryArgsTypeOpts<Relation> & Pick<ConnectionOptions, 'enableTotalCount'>;
71
75
  export type RelationTypeMap<RT> = Record<string, RT>;
72
76
  export type ResolverOneRelation<Relation> = Omit<ResolverRelation<Relation>, 'disableFilter' | 'disableSort'>;
73
- export type ResolverManyRelation<Relation> = ResolverRelation<Relation>;
77
+ export type ResolverManyRelation<Relation> = Omit<ResolverRelation<Relation>, 'enableLookAhead'>;
74
78
  export type RelationsOpts<Relation = unknown> = {
75
79
  /**
76
80
  * All relations that are a single record