@ptc-org/nestjs-query-graphql 2.4.0 → 2.5.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 (69) hide show
  1. package/package.json +5 -5
  2. package/src/decorators/filterable-field.decorator.d.ts +2 -2
  3. package/src/decorators/filterable-field.decorator.js.map +1 -1
  4. package/src/decorators/hook-args.decorator.js +11 -5
  5. package/src/decorators/hook-args.decorator.js.map +1 -1
  6. package/src/decorators/hook.decorator.d.ts +10 -10
  7. package/src/decorators/hook.decorator.js +11 -9
  8. package/src/decorators/hook.decorator.js.map +1 -1
  9. package/src/decorators/id-field.decorator.d.ts +2 -2
  10. package/src/decorators/id-field.decorator.js.map +1 -1
  11. package/src/decorators/inject-dataloader-config.decorator.d.ts +1 -0
  12. package/src/decorators/inject-dataloader-config.decorator.js +8 -0
  13. package/src/decorators/inject-dataloader-config.decorator.js.map +1 -0
  14. package/src/decorators/relation.decorator.d.ts +2 -2
  15. package/src/decorators/resolver-method.decorator.d.ts +16 -0
  16. package/src/decorators/resolver-method.decorator.js +10 -1
  17. package/src/decorators/resolver-method.decorator.js.map +1 -1
  18. package/src/decorators/resolver-relation-mutation.decorator.d.ts +10 -0
  19. package/src/decorators/resolver-relation-mutation.decorator.js +21 -0
  20. package/src/decorators/resolver-relation-mutation.decorator.js.map +1 -0
  21. package/src/interceptors/hook.interceptor.d.ts +1 -1
  22. package/src/interceptors/hook.interceptor.js +7 -7
  23. package/src/interceptors/hook.interceptor.js.map +1 -1
  24. package/src/loader/dataloader.factory.d.ts +2 -1
  25. package/src/loader/dataloader.factory.js +4 -2
  26. package/src/loader/dataloader.factory.js.map +1 -1
  27. package/src/module.d.ts +10 -2
  28. package/src/module.js +26 -1
  29. package/src/module.js.map +1 -1
  30. package/src/pipes/inject-data-loader-config.pipe.d.ts +11 -0
  31. package/src/pipes/inject-data-loader-config.pipe.js +29 -0
  32. package/src/pipes/inject-data-loader-config.pipe.js.map +1 -0
  33. package/src/providers/hook.provider.js +21 -14
  34. package/src/providers/hook.provider.js.map +1 -1
  35. package/src/resolvers/aggregate.resolver.js +1 -1
  36. package/src/resolvers/aggregate.resolver.js.map +1 -1
  37. package/src/resolvers/create.resolver.js +2 -2
  38. package/src/resolvers/create.resolver.js.map +1 -1
  39. package/src/resolvers/delete.resolver.js +2 -2
  40. package/src/resolvers/delete.resolver.js.map +1 -1
  41. package/src/resolvers/read.resolver.js +6 -2
  42. package/src/resolvers/read.resolver.js.map +1 -1
  43. package/src/resolvers/relations/aggregate-relations.resolver.js +5 -3
  44. package/src/resolvers/relations/aggregate-relations.resolver.js.map +1 -1
  45. package/src/resolvers/relations/helpers.js +1 -1
  46. package/src/resolvers/relations/helpers.js.map +1 -1
  47. package/src/resolvers/relations/read-relations.resolver.js +11 -8
  48. package/src/resolvers/relations/read-relations.resolver.js.map +1 -1
  49. package/src/resolvers/relations/relations.interface.d.ts +8 -19
  50. package/src/resolvers/relations/remove-relations.resolver.js +13 -12
  51. package/src/resolvers/relations/remove-relations.resolver.js.map +1 -1
  52. package/src/resolvers/relations/update-relations.resolver.js +16 -13
  53. package/src/resolvers/relations/update-relations.resolver.js.map +1 -1
  54. package/src/resolvers/update.resolver.js +2 -2
  55. package/src/resolvers/update.resolver.js.map +1 -1
  56. package/src/types/connection/cursor/page-info.type.js +1 -0
  57. package/src/types/connection/cursor/page-info.type.js.map +1 -1
  58. package/src/types/connection/offset/offset-connection.type.js +1 -0
  59. package/src/types/connection/offset/offset-connection.type.js.map +1 -1
  60. package/src/types/connection/offset/offset-page-info.type.js +1 -0
  61. package/src/types/connection/offset/offset-page-info.type.js.map +1 -1
  62. package/src/types/delete-many-reponse.type.js +1 -0
  63. package/src/types/delete-many-reponse.type.js.map +1 -1
  64. package/src/types/query/field-comparison/field-comparison.factory.d.ts +2 -2
  65. package/src/types/query/filter.type.d.ts +1 -0
  66. package/src/types/query/filter.type.js +60 -29
  67. package/src/types/query/filter.type.js.map +1 -1
  68. package/src/types/update-many-response.type.js +1 -0
  69. package/src/types/update-many-response.type.js.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ptc-org/nestjs-query-graphql",
3
- "version": "2.4.0",
3
+ "version": "2.5.0",
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,15 +39,15 @@
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.4.0",
42
+ "@ptc-org/nestjs-query-core": "2.5.0",
43
43
  "lodash.merge": "4.6.2",
44
44
  "reflect-metadata": "0.1.13"
45
45
  },
46
46
  "peerDependencies": {
47
47
  "@apollo/gateway": "^0.44.1 || ^0.46.0 || ^0.48.0 || ^0.49.0 || ^0.50.0 || ^2.0.0",
48
- "@nestjs/common": "^8.0.0 || ^9.0.0",
49
- "@nestjs/core": "^8.0.0 || ^9.0.0",
50
- "@nestjs/graphql": "^9.0.0 || ^10.0.0",
48
+ "@nestjs/common": "^9.0.0",
49
+ "@nestjs/core": "^9.0.0",
50
+ "@nestjs/graphql": "^11.0.0",
51
51
  "class-transformer": "^0.2.3 || 0.3.1 || ^0.5",
52
52
  "class-validator": "^0.14.0",
53
53
  "graphql": "^16.0.0",
@@ -1,4 +1,4 @@
1
- import { FieldOptions, ReturnTypeFunc } from '@nestjs/graphql';
1
+ import { FieldOptions, ReturnTypeFunc, ReturnTypeFuncValue } from '@nestjs/graphql';
2
2
  import { Class, FilterComparisonOperators } from '@ptc-org/nestjs-query-core';
3
3
  export type FilterableFieldOptions = {
4
4
  allowedComparisons?: FilterComparisonOperators<unknown>[];
@@ -8,7 +8,7 @@ export type FilterableFieldOptions = {
8
8
  export interface FilterableFieldDescriptor {
9
9
  propertyName: string;
10
10
  target: Class<unknown>;
11
- returnTypeFunc?: ReturnTypeFunc;
11
+ returnTypeFunc?: ReturnTypeFunc<ReturnTypeFuncValue>;
12
12
  advancedOptions?: FilterableFieldOptions;
13
13
  }
14
14
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"filterable-field.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/filterable-field.decorator.ts"],"names":[],"mappings":";;;AAAA,6CAAqE;AACrE,kEAAgH;AAEhH,2CAAkD;AAElD,MAAM,SAAS,GAAG,IAAI,kCAAc,CAAC,gCAAoB,CAAC,CAAA;AAkD1D,SAAgB,eAAe,CAC7B,uBAAiE,EACjE,YAAqC;IAErC,IAAI,cAA0C,CAAA;IAC9C,IAAI,eAAmD,CAAA;IACvD,IAAI,OAAO,uBAAuB,KAAK,UAAU,EAAE;QACjD,cAAc,GAAG,uBAAuB,CAAA;QACxC,eAAe,GAAG,YAAY,CAAA;KAC/B;SAAM,IAAI,OAAO,uBAAuB,KAAK,QAAQ,EAAE;QACtD,eAAe,GAAG,uBAAuB,CAAA;KAC1C;SAAM,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;QAC3C,eAAe,GAAG,YAAY,CAAA;KAC/B;IACD,OAAO;IACL,wDAAwD;IACxD,MAAc,EACd,YAA6B,EAC7B,UAAsC,EACH,EAAE;QACrC,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAmB,CAAA;QACtF,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,WAA6B,EAAE;YACrD,YAAY,EAAE,YAAY,CAAC,QAAQ,EAAE;YACrC,MAAM,EAAE,GAAG;YACX,cAAc;YACd,eAAe;SAChB,CAAC,CAAA;QAEF,IAAI,eAAe,EAAE,UAAU,EAAE;YAC/B,OAAO,SAAS,CAAA;SACjB;QAED,IAAI,cAAc,EAAE;YAClB,OAAO,IAAA,eAAK,EAAC,cAAc,EAAE,eAAe,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;SAChF;QACD,IAAI,eAAe,EAAE;YACnB,OAAO,IAAA,eAAK,EAAC,eAAe,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;SAChE;QACD,OAAO,IAAA,eAAK,GAAE,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;IAClD,CAAC,CAAA;AACH,CAAC;AAxCD,0CAwCC;AAED,SAAgB,mBAAmB,CAAM,QAAoB;IAC3D,OAAO,IAAA,qCAAiB,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACxD,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;QAC5D,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAqC,GAAG,CAAC,IAAI,EAAE,CAAA;QAC/E,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAA;QACxF,OAAO,CAAC,GAAG,SAAS,EAAE,GAAG,MAAM,CAAC,CAAA;IAClC,CAAC,EAAE,EAAiC,CAAC,CAAA;AACvC,CAAC;AAPD,kDAOC"}
1
+ {"version":3,"file":"filterable-field.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/filterable-field.decorator.ts"],"names":[],"mappings":";;;AAAA,6CAA0F;AAC1F,kEAAgH;AAEhH,2CAAkD;AAElD,MAAM,SAAS,GAAG,IAAI,kCAAc,CAAC,gCAAoB,CAAC,CAAA;AAkD1D,SAAgB,eAAe,CAC7B,uBAAiE,EACjE,YAAqC;IAErC,IAAI,cAA0C,CAAA;IAC9C,IAAI,eAAmD,CAAA;IACvD,IAAI,OAAO,uBAAuB,KAAK,UAAU,EAAE;QACjD,cAAc,GAAG,uBAAuB,CAAA;QACxC,eAAe,GAAG,YAAY,CAAA;KAC/B;SAAM,IAAI,OAAO,uBAAuB,KAAK,QAAQ,EAAE;QACtD,eAAe,GAAG,uBAAuB,CAAA;KAC1C;SAAM,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;QAC3C,eAAe,GAAG,YAAY,CAAA;KAC/B;IACD,OAAO;IACL,wDAAwD;IACxD,MAAc,EACd,YAA6B,EAC7B,UAAsC,EACH,EAAE;QACrC,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAmB,CAAA;QACtF,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,WAA6B,EAAE;YACrD,YAAY,EAAE,YAAY,CAAC,QAAQ,EAAE;YACrC,MAAM,EAAE,GAAG;YACX,cAAc;YACd,eAAe;SAChB,CAAC,CAAA;QAEF,IAAI,eAAe,EAAE,UAAU,EAAE;YAC/B,OAAO,SAAS,CAAA;SACjB;QAED,IAAI,cAAc,EAAE;YAClB,OAAO,IAAA,eAAK,EAAC,cAAc,EAAE,eAAe,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;SAChF;QACD,IAAI,eAAe,EAAE;YACnB,OAAO,IAAA,eAAK,EAAC,eAAe,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;SAChE;QACD,OAAO,IAAA,eAAK,GAAE,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;IAClD,CAAC,CAAA;AACH,CAAC;AAxCD,0CAwCC;AAED,SAAgB,mBAAmB,CAAM,QAAoB;IAC3D,OAAO,IAAA,qCAAiB,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACxD,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;QAC5D,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAqC,GAAG,CAAC,IAAI,EAAE,CAAA;QAC/E,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAA;QACxF,OAAO,CAAC,GAAG,SAAS,EAAE,GAAG,MAAM,CAAC,CAAA;IAClC,CAAC,EAAE,EAAiC,CAAC,CAAA;AACvC,CAAC;AAPD,kDAOC"}
@@ -25,17 +25,23 @@ function createArgsDecorator(fn) {
25
25
  return (0, decorator_utils_1.composeDecorators)((0, graphql_1.Args)(), dec);
26
26
  }
27
27
  const HookArgs = () => createArgsDecorator(async (data, context) => {
28
- if (context.hook) {
29
- const hookedArgs = await context.hook.run(data, context);
28
+ if (context.hooks && context.hooks.length > 0) {
29
+ let hookedArgs = data;
30
+ for (const hook of context.hooks) {
31
+ hookedArgs = (await hook.run(hookedArgs, context));
32
+ }
30
33
  return hookedArgs;
31
34
  }
32
35
  return data;
33
36
  });
34
37
  exports.HookArgs = HookArgs;
35
38
  const MutationHookArgs = () => createArgsDecorator(async (data, context) => {
36
- if (context.hook) {
37
- const { input } = data;
38
- return { input: await context.hook.run(input, context) };
39
+ if (context.hooks && context.hooks.length > 0) {
40
+ let hookedArgs = data.input;
41
+ for (const hook of context.hooks) {
42
+ hookedArgs = (await hook.run(hookedArgs, context));
43
+ }
44
+ return { input: hookedArgs };
39
45
  }
40
46
  return data;
41
47
  });
@@ -1 +1 @@
1
- {"version":3,"file":"hook-args.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/hook-args.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAuE;AACvE,6CAA2D;AAE3D,yDAAgD;AAKhD,uDAAqD;AAErD,SAAS,cAAc,CAAI,KAAQ,EAAE,IAAe;IAClD,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,EAAE;QACpC,OAAO,IAAA,gCAAY,EAAa,IAAI,EAAE,KAAK,CAAC,CAAA;KAC7C;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,mBAAmB,CAAiB,EAA0C;IACrF,MAAM,GAAG,GAAG,CAAC,MAAsB,EAAE,UAAkB,EAAE,UAAkB,EAAQ,EAAE;QACnF,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,EAAE,UAAU,CAAe,CAAA;QACzF,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;QAClC,OAAO,IAAA,6BAAoB,EAAC,KAAK,EAAE,IAAa,EAAE,gBAAkC,EAAE,EAAE;YACtF,MAAM,mBAAmB,GAAG,6BAAmB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;YACxE,MAAM,UAAU,GAAG,mBAAmB,CAAC,UAAU,EAAK,CAAA;YACtD,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,EAAK,CAAA;YAC7C,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAA;QACtD,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;IACtC,CAAC,CAAA;IACD,OAAO,IAAA,mCAAiB,EAAC,IAAA,cAAI,GAAE,EAAE,GAAyB,CAAC,CAAA;AAC7D,CAAC;AAEM,MAAM,QAAQ,GAAG,GAA0B,EAAE,CAClD,mBAAmB,CAAC,KAAK,EAAE,IAAO,EAAE,OAAmC,EAAE,EAAE;IACzE,IAAI,OAAO,CAAC,IAAI,EAAE;QAChB,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACxD,OAAO,UAAe,CAAA;KACvB;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAC,CAAA;AAPS,QAAA,QAAQ,YAOjB;AAEG,MAAM,gBAAgB,GAAG,GAA4D,EAAE,CAC5F,mBAAmB,CAAC,KAAK,EAAE,IAAO,EAAE,OAAmC,EAAE,EAAE;IACzE,IAAI,OAAO,CAAC,IAAI,EAAE;QAChB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;QACtB,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,EAAO,CAAA;KAC9D;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAC,CAAA;AAPS,QAAA,gBAAgB,oBAOzB"}
1
+ {"version":3,"file":"hook-args.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/hook-args.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAuE;AACvE,6CAA2D;AAE3D,yDAAgD;AAKhD,uDAAqD;AAErD,SAAS,cAAc,CAAI,KAAQ,EAAE,IAAe;IAClD,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,EAAE;QACpC,OAAO,IAAA,gCAAY,EAAa,IAAI,EAAE,KAAK,CAAC,CAAA;KAC7C;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,mBAAmB,CAAiB,EAA0C;IACrF,MAAM,GAAG,GAAG,CAAC,MAAsB,EAAE,UAAkB,EAAE,UAAkB,EAAQ,EAAE;QACnF,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,EAAE,UAAU,CAAe,CAAA;QACzF,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;QAClC,OAAO,IAAA,6BAAoB,EAAC,KAAK,EAAE,IAAa,EAAE,gBAAkC,EAAE,EAAE;YACtF,MAAM,mBAAmB,GAAG,6BAAmB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;YACxE,MAAM,UAAU,GAAG,mBAAmB,CAAC,UAAU,EAAK,CAAA;YACtD,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,EAAK,CAAA;YAC7C,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAA;QACtD,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;IACtC,CAAC,CAAA;IACD,OAAO,IAAA,mCAAiB,EAAC,IAAA,cAAI,GAAE,EAAE,GAAyB,CAAC,CAAA;AAC7D,CAAC;AAEM,MAAM,QAAQ,GAAG,GAA0B,EAAE,CAClD,mBAAmB,CAAC,KAAK,EAAE,IAAO,EAAE,OAAmC,EAAE,EAAE;IACzE,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QAC7C,IAAI,UAAU,GAAG,IAAI,CAAA;QACrB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE;YAChC,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAM,CAAA;SACxD;QACD,OAAO,UAAU,CAAA;KAClB;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAC,CAAA;AAVS,QAAA,QAAQ,YAUjB;AAEG,MAAM,gBAAgB,GAAG,GAA4D,EAAE,CAC5F,mBAAmB,CAAC,KAAK,EAAE,IAAO,EAAE,OAAmC,EAAE,EAAE;IACzE,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QAC7C,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAA;QAC3B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE;YAChC,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAM,CAAA;SACxD;QACD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;KAC7B;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAC,CAAA;AAVS,QAAA,gBAAgB,oBAUzB"}
@@ -1,13 +1,13 @@
1
1
  import { Class, MetaValue } from '@ptc-org/nestjs-query-core';
2
2
  import { BeforeCreateManyHook, BeforeCreateOneHook, BeforeDeleteManyHook, BeforeDeleteOneHook, BeforeFindOneHook, BeforeQueryManyHook, BeforeUpdateManyHook, BeforeUpdateOneHook, Hook, HookTypes } from '../hooks';
3
- export type HookMetaValue<H extends Hook<unknown>> = MetaValue<Class<H>>;
3
+ export type HookMetaValue<H extends Hook<unknown>> = MetaValue<Class<H>[]>;
4
4
  export type HookDecoratorArg<H extends Hook<unknown>> = Class<H> | H['run'];
5
- export declare const BeforeCreateOne: (data: HookDecoratorArg<BeforeCreateOneHook<any, any>>) => (target: Function) => void;
6
- export declare const BeforeCreateMany: (data: HookDecoratorArg<BeforeCreateManyHook<any, any>>) => (target: Function) => void;
7
- export declare const BeforeUpdateOne: (data: HookDecoratorArg<BeforeUpdateOneHook<any, any>>) => (target: Function) => void;
8
- export declare const BeforeUpdateMany: (data: HookDecoratorArg<BeforeUpdateManyHook<any, any, any>>) => (target: Function) => void;
9
- export declare const BeforeDeleteOne: (data: HookDecoratorArg<BeforeDeleteOneHook<any>>) => (target: Function) => void;
10
- export declare const BeforeDeleteMany: (data: HookDecoratorArg<BeforeDeleteManyHook<any, any>>) => (target: Function) => void;
11
- export declare const BeforeQueryMany: (data: HookDecoratorArg<BeforeQueryManyHook<any, any>>) => (target: Function) => void;
12
- export declare const BeforeFindOne: (data: HookDecoratorArg<BeforeFindOneHook<any>>) => (target: Function) => void;
13
- export declare const getHookForType: <H extends Hook<unknown, any>>(hookType: HookTypes, DTOClass: Class<unknown>) => Class<H>;
5
+ export declare const BeforeCreateOne: (...data: HookDecoratorArg<BeforeCreateOneHook<any, any>>[]) => (target: Function) => void;
6
+ export declare const BeforeCreateMany: (...data: HookDecoratorArg<BeforeCreateManyHook<any, any>>[]) => (target: Function) => void;
7
+ export declare const BeforeUpdateOne: (...data: HookDecoratorArg<BeforeUpdateOneHook<any, any>>[]) => (target: Function) => void;
8
+ export declare const BeforeUpdateMany: (...data: HookDecoratorArg<BeforeUpdateManyHook<any, any, any>>[]) => (target: Function) => void;
9
+ export declare const BeforeDeleteOne: (...data: HookDecoratorArg<BeforeDeleteOneHook<any>>[]) => (target: Function) => void;
10
+ export declare const BeforeDeleteMany: (...data: HookDecoratorArg<BeforeDeleteManyHook<any, any>>[]) => (target: Function) => void;
11
+ export declare const BeforeQueryMany: (...data: HookDecoratorArg<BeforeQueryManyHook<any, any>>[]) => (target: Function) => void;
12
+ export declare const BeforeFindOne: (...data: HookDecoratorArg<BeforeFindOneHook<any>>[]) => (target: Function) => void;
13
+ export declare const getHooksForType: <H extends Hook<unknown, any>>(hookType: HookTypes, DTOClass: Class<unknown>) => Class<H>[];
@@ -1,21 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getHookForType = exports.BeforeFindOne = exports.BeforeQueryMany = exports.BeforeDeleteMany = exports.BeforeDeleteOne = exports.BeforeUpdateMany = exports.BeforeUpdateOne = exports.BeforeCreateMany = exports.BeforeCreateOne = void 0;
3
+ exports.getHooksForType = exports.BeforeFindOne = exports.BeforeQueryMany = exports.BeforeDeleteMany = exports.BeforeDeleteOne = exports.BeforeUpdateMany = exports.BeforeUpdateOne = exports.BeforeCreateMany = exports.BeforeCreateOne = void 0;
4
4
  /* eslint-disable @typescript-eslint/no-explicit-any */
5
5
  const nestjs_query_core_1 = require("@ptc-org/nestjs-query-core");
6
6
  const hooks_1 = require("../hooks");
7
7
  const hookMetaDataKey = (hookType) => `nestjs-query:${hookType}`;
8
8
  const hookDecorator = (hookType) => {
9
9
  const key = hookMetaDataKey(hookType);
10
+ const getHook = (hook) => {
11
+ if ((0, hooks_1.isHookClass)(hook)) {
12
+ return hook;
13
+ }
14
+ return (0, hooks_1.createDefaultHook)(hook);
15
+ };
10
16
  // eslint-disable-next-line @typescript-eslint/ban-types
11
- return (data) =>
17
+ return (...data) =>
12
18
  // eslint-disable-next-line @typescript-eslint/ban-types
13
19
  (target) => {
14
- if ((0, hooks_1.isHookClass)(data)) {
15
- return Reflect.defineMetadata(key, data, target);
16
- }
17
- const hook = (0, hooks_1.createDefaultHook)(data);
18
- return Reflect.defineMetadata(key, hook, target);
20
+ return Reflect.defineMetadata(key, data.map((d) => getHook(d)), target);
19
21
  };
20
22
  };
21
23
  exports.BeforeCreateOne = hookDecorator(hooks_1.HookTypes.BEFORE_CREATE_ONE);
@@ -26,6 +28,6 @@ exports.BeforeDeleteOne = hookDecorator(hooks_1.HookTypes.BEFORE_DELETE_ONE);
26
28
  exports.BeforeDeleteMany = hookDecorator(hooks_1.HookTypes.BEFORE_DELETE_MANY);
27
29
  exports.BeforeQueryMany = hookDecorator(hooks_1.HookTypes.BEFORE_QUERY_MANY);
28
30
  exports.BeforeFindOne = hookDecorator(hooks_1.HookTypes.BEFORE_FIND_ONE);
29
- const getHookForType = (hookType, DTOClass) => (0, nestjs_query_core_1.getClassMetadata)(DTOClass, hookMetaDataKey(hookType), true);
30
- exports.getHookForType = getHookForType;
31
+ const getHooksForType = (hookType, DTOClass) => (0, nestjs_query_core_1.getClassMetadata)(DTOClass, hookMetaDataKey(hookType), true);
32
+ exports.getHooksForType = getHooksForType;
31
33
  //# sourceMappingURL=hook.decorator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hook.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/hook.decorator.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,kEAA+E;AAE/E,oCAaiB;AAMjB,MAAM,eAAe,GAAG,CAAC,QAAmB,EAAU,EAAE,CAAC,gBAAgB,QAAQ,EAAE,CAAA;AAEnF,MAAM,aAAa,GAAG,CAA0B,QAAmB,EAAE,EAAE;IACrE,MAAM,GAAG,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;IACrC,wDAAwD;IACxD,OAAO,CAAC,IAAyB,EAAE,EAAE;IACnC,wDAAwD;IACxD,CAAC,MAAgB,EAAQ,EAAE;QACzB,IAAI,IAAA,mBAAW,EAAC,IAAI,CAAC,EAAE;YACrB,OAAO,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;SACjD;QACD,MAAM,IAAI,GAAG,IAAA,yBAAiB,EAAC,IAAI,CAAC,CAAA;QACpC,OAAO,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAClD,CAAC,CAAA;AACL,CAAC,CAAA;AAEY,QAAA,eAAe,GAAG,aAAa,CAA2B,iBAAS,CAAC,iBAAiB,CAAC,CAAA;AACtF,QAAA,gBAAgB,GAAG,aAAa,CAA4B,iBAAS,CAAC,kBAAkB,CAAC,CAAA;AACzF,QAAA,eAAe,GAAG,aAAa,CAA2B,iBAAS,CAAC,iBAAiB,CAAC,CAAA;AACtF,QAAA,gBAAgB,GAAG,aAAa,CAAiC,iBAAS,CAAC,kBAAkB,CAAC,CAAA;AAC9F,QAAA,eAAe,GAAG,aAAa,CAAsB,iBAAS,CAAC,iBAAiB,CAAC,CAAA;AACjF,QAAA,gBAAgB,GAAG,aAAa,CAA4B,iBAAS,CAAC,kBAAkB,CAAC,CAAA;AACzF,QAAA,eAAe,GAAG,aAAa,CAA2B,iBAAS,CAAC,iBAAiB,CAAC,CAAA;AACtF,QAAA,aAAa,GAAG,aAAa,CAAoB,iBAAS,CAAC,eAAe,CAAC,CAAA;AAEjF,MAAM,cAAc,GAAG,CAA0B,QAAmB,EAAE,QAAwB,EAAoB,EAAE,CACzH,IAAA,oCAAgB,EAAC,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;AADhD,QAAA,cAAc,kBACkC"}
1
+ {"version":3,"file":"hook.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/hook.decorator.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,kEAA+E;AAE/E,oCAaiB;AAMjB,MAAM,eAAe,GAAG,CAAC,QAAmB,EAAU,EAAE,CAAC,gBAAgB,QAAQ,EAAE,CAAA;AAEnF,MAAM,aAAa,GAAG,CAA0B,QAAmB,EAAE,EAAE;IACrE,MAAM,GAAG,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;IAErC,MAAM,OAAO,GAAG,CAAC,IAAyB,EAAE,EAAE;QAC5C,IAAI,IAAA,mBAAW,EAAC,IAAI,CAAC,EAAE;YACrB,OAAO,IAAI,CAAA;SACZ;QACD,OAAO,IAAA,yBAAiB,EAAC,IAAI,CAAC,CAAA;IAChC,CAAC,CAAA;IAED,wDAAwD;IACxD,OAAO,CAAC,GAAG,IAA2B,EAAE,EAAE;IACxC,wDAAwD;IACxD,CAAC,MAAgB,EAAQ,EAAE;QACzB,OAAO,OAAO,CAAC,cAAc,CAC3B,GAAG,EACH,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAC3B,MAAM,CACP,CAAA;IACH,CAAC,CAAA;AACL,CAAC,CAAA;AAEY,QAAA,eAAe,GAAG,aAAa,CAA2B,iBAAS,CAAC,iBAAiB,CAAC,CAAA;AACtF,QAAA,gBAAgB,GAAG,aAAa,CAA4B,iBAAS,CAAC,kBAAkB,CAAC,CAAA;AACzF,QAAA,eAAe,GAAG,aAAa,CAA2B,iBAAS,CAAC,iBAAiB,CAAC,CAAA;AACtF,QAAA,gBAAgB,GAAG,aAAa,CAAiC,iBAAS,CAAC,kBAAkB,CAAC,CAAA;AAC9F,QAAA,eAAe,GAAG,aAAa,CAAsB,iBAAS,CAAC,iBAAiB,CAAC,CAAA;AACjF,QAAA,gBAAgB,GAAG,aAAa,CAA4B,iBAAS,CAAC,kBAAkB,CAAC,CAAA;AACzF,QAAA,eAAe,GAAG,aAAa,CAA2B,iBAAS,CAAC,iBAAiB,CAAC,CAAA;AACtF,QAAA,aAAa,GAAG,aAAa,CAAoB,iBAAS,CAAC,eAAe,CAAC,CAAA;AAEjF,MAAM,eAAe,GAAG,CAA0B,QAAmB,EAAE,QAAwB,EAAoB,EAAE,CAC1H,IAAA,oCAAgB,EAAC,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;AADhD,QAAA,eAAe,mBACiC"}
@@ -1,4 +1,4 @@
1
- import { FieldOptions, ReturnTypeFunc } from '@nestjs/graphql';
1
+ import { FieldOptions, ReturnTypeFunc, ReturnTypeFuncValue } from '@nestjs/graphql';
2
2
  import { Class, MetaValue } from '@ptc-org/nestjs-query-core';
3
3
  import { FilterableFieldOptions } from './filterable-field.decorator';
4
4
  type NoFilterIDFieldOptions = {
@@ -7,7 +7,7 @@ type NoFilterIDFieldOptions = {
7
7
  export type IDFieldOptions = FilterableFieldOptions | NoFilterIDFieldOptions;
8
8
  export interface IDFieldDescriptor {
9
9
  propertyName: string;
10
- returnTypeFunc: ReturnTypeFunc;
10
+ returnTypeFunc: ReturnTypeFunc<ReturnTypeFuncValue>;
11
11
  }
12
12
  /**
13
13
  * Decorator for Fields that should be filterable through a [[FilterType]]
@@ -1 +1 @@
1
- {"version":3,"file":"id-field.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/id-field.decorator.ts"],"names":[],"mappings":";;;AAAA,6CAAqE;AACrE,kEAA6E;AAE7E,2CAA0C;AAC1C,6EAAsF;AAEtF,MAAM,SAAS,GAAG,IAAI,kCAAc,CAAC,wBAAY,CAAC,CAAA;AAWlD;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,OAAO,CAAC,cAA8B,EAAE,OAAwB;IAC9E,OAAO;IACL,wDAAwD;IACxD,MAAc,EACd,YAA6B,EAC7B,UAAuC,EACJ,EAAE;QACrC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,WAA6B,EAAE;YAClD,YAAY,EAAE,YAAY,CAAC,QAAQ,EAAE;YACrC,cAAc;SACf,CAAC,CAAA;QACF,MAAM,aAAa,GAAG,OAAO,IAAI,eAAe,IAAI,OAAO,CAAA;QAC3D,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,eAAK,CAAC,CAAC,CAAC,4CAAe,CAAA;QAC9D,IAAI,UAAU,EAAE;YACd,OAAO,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;SACjF;QACD,OAAO,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACtE,CAAC,CAAA;AACH,CAAC;AAlBD,0BAkBC;AAED,SAAgB,UAAU,CAAM,QAAoB;IAClD,OAAO,SAAS,CAAC,GAAG,CAAyB,QAAQ,EAAE,IAAI,CAAC,CAAA;AAC9D,CAAC;AAFD,gCAEC"}
1
+ {"version":3,"file":"id-field.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/id-field.decorator.ts"],"names":[],"mappings":";;;AAAA,6CAA0F;AAC1F,kEAA6E;AAE7E,2CAA0C;AAC1C,6EAAsF;AAEtF,MAAM,SAAS,GAAG,IAAI,kCAAc,CAAC,wBAAY,CAAC,CAAA;AAWlD;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,OAAO,CAAC,cAA8B,EAAE,OAAwB;IAC9E,OAAO;IACL,wDAAwD;IACxD,MAAc,EACd,YAA6B,EAC7B,UAAuC,EACJ,EAAE;QACrC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,WAA6B,EAAE;YAClD,YAAY,EAAE,YAAY,CAAC,QAAQ,EAAE;YACrC,cAAc;SACf,CAAC,CAAA;QACF,MAAM,aAAa,GAAG,OAAO,IAAI,eAAe,IAAI,OAAO,CAAA;QAC3D,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,eAAK,CAAC,CAAC,CAAC,4CAAe,CAAA;QAC9D,IAAI,UAAU,EAAE;YACd,OAAO,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;SACjF;QACD,OAAO,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACtE,CAAC,CAAA;AACH,CAAC;AAlBD,0BAkBC;AAED,SAAgB,UAAU,CAAM,QAAoB;IAClD,OAAO,SAAS,CAAC,GAAG,CAAyB,QAAQ,EAAE,IAAI,CAAC,CAAA;AAC9D,CAAC;AAFD,gCAEC"}
@@ -0,0 +1 @@
1
+ export declare const InjectDataLoaderConfig: () => ParameterDecorator;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InjectDataLoaderConfig = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const inject_data_loader_config_pipe_1 = require("../pipes/inject-data-loader-config.pipe");
6
+ const InjectDataLoaderConfig = () => (0, common_1.createParamDecorator)(() => null)(inject_data_loader_config_pipe_1.InjectDataLoaderConfigPipe);
7
+ exports.InjectDataLoaderConfig = InjectDataLoaderConfig;
8
+ //# sourceMappingURL=inject-dataloader-config.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject-dataloader-config.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/inject-dataloader-config.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAqD;AAErD,4FAAoF;AAE7E,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC,IAAA,6BAAoB,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,2DAA0B,CAAC,CAAA;AAA3F,QAAA,sBAAsB,0BAAqE"}
@@ -3,8 +3,8 @@ 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;
6
- export type RelationOneDecoratorOpts<Relation> = Omit<ResolverOneRelation<Relation>, 'DTO' | 'allowFiltering'>;
7
- export type RelationManyDecoratorOpts<Relation> = Omit<ResolverManyRelation<Relation>, 'DTO' | 'allowFiltering'>;
6
+ export type RelationOneDecoratorOpts<Relation> = Omit<ResolverOneRelation<Relation>, 'DTO' | 'allowFiltering' | 'filterDepth'>;
7
+ export type RelationManyDecoratorOpts<Relation> = Omit<ResolverManyRelation<Relation>, 'DTO' | 'allowFiltering' | 'filterDepth'>;
8
8
  export type RelationTypeFunc<Relation> = () => Class<Relation>;
9
9
  export type RelationClassDecorator<DTO> = <Cls extends Class<DTO>>(DTOClass: Cls) => Cls | void;
10
10
  export interface RelationDescriptor<Relation> {
@@ -1,4 +1,5 @@
1
1
  import { CanActivate, ExceptionFilter, NestInterceptor, PipeTransform } from '@nestjs/common';
2
+ import { Complexity } from '@nestjs/graphql';
2
3
  import { Class } from '@ptc-org/nestjs-query-core';
3
4
  export interface BaseResolverOptions {
4
5
  /** An array of `nestjs` guards to apply to a graphql endpoint */
@@ -18,6 +19,15 @@ export interface BaseResolverOptions {
18
19
  export interface ResolverMethodOpts extends BaseResolverOptions {
19
20
  /** Set to true to disable the endpoint */
20
21
  disabled?: boolean;
22
+ complexity?: Complexity;
23
+ }
24
+ /**
25
+ * Options for relation resolver methods.
26
+ */
27
+ export interface ResolverRelationMethodOpts extends BaseResolverOptions {
28
+ /** Set to true to enable the endpoint */
29
+ enabled?: boolean;
30
+ complexity?: Complexity;
21
31
  }
22
32
  /**
23
33
  * @internal
@@ -25,6 +35,12 @@ export interface ResolverMethodOpts extends BaseResolverOptions {
25
35
  * @param opts - The array of [[ResolverMethodOpts]] to check.
26
36
  */
27
37
  export declare function isDisabled(opts: ResolverMethodOpts[]): boolean;
38
+ /**
39
+ * @internal
40
+ * Returns true if any of the [[ResolverRelationMethodOpts]] are disabled.
41
+ * @param opts - The array of [[ResolverRelationMethodOpts]] to check.
42
+ */
43
+ export declare function isEnabled(opts: ResolverRelationMethodOpts[]): boolean;
28
44
  /**
29
45
  * @internal
30
46
  * Decorator for all ResolverMethods
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ResolverMethod = exports.isDisabled = void 0;
3
+ exports.ResolverMethod = exports.isEnabled = exports.isDisabled = void 0;
4
4
  /* eslint-disable @typescript-eslint/no-explicit-any */
5
5
  const common_1 = require("@nestjs/common");
6
6
  /**
@@ -22,6 +22,15 @@ function isDisabled(opts) {
22
22
  return !!opts.find((o) => o.disabled);
23
23
  }
24
24
  exports.isDisabled = isDisabled;
25
+ /**
26
+ * @internal
27
+ * Returns true if any of the [[ResolverRelationMethodOpts]] are disabled.
28
+ * @param opts - The array of [[ResolverRelationMethodOpts]] to check.
29
+ */
30
+ function isEnabled(opts) {
31
+ return opts.some((o) => o.enabled);
32
+ }
33
+ exports.isEnabled = isEnabled;
25
34
  /**
26
35
  * @internal
27
36
  * Decorator for all ResolverMethods
@@ -1 +1 @@
1
- {"version":3,"file":"resolver-method.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/resolver-method.decorator.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,2CAUuB;AAwBvB;;;;GAIG;AACH,6DAA6D;AAC7D,SAAS,cAAc,CAAI,GAAG,IAAW;IACvC,MAAM,GAAG,GAAW,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAM,CAAC,GAAQ,EAAE,GAAQ,EAAO,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IAChG,OAAO,CAAC,GAAG,GAAG,CAAC,CAAA;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,IAA0B;IACnD,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;AACvC,CAAC;AAFD,gCAEC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,GAAG,IAA0B;IAC1D,OAAO,IAAA,wBAAe,EACpB,IAAA,kBAAS,EAAC,GAAG,cAAc,CAAmC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAClG,IAAA,wBAAe,EAAC,GAAG,cAAc,CAAyB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,EACpG,IAAA,iBAAQ,EAAC,GAAG,cAAc,CAAuB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EACpF,IAAA,mBAAU,EAAC,GAAG,cAAc,CAAyB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,EAC1F,GAAG,cAAc,CAAsC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAC/F,CAAA;AACH,CAAC;AARD,wCAQC"}
1
+ {"version":3,"file":"resolver-method.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/resolver-method.decorator.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,2CAUuB;AAmCvB;;;;GAIG;AACH,6DAA6D;AAC7D,SAAS,cAAc,CAAI,GAAG,IAAW;IACvC,MAAM,GAAG,GAAW,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAM,CAAC,GAAQ,EAAE,GAAQ,EAAO,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IAChG,OAAO,CAAC,GAAG,GAAG,CAAC,CAAA;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,IAA0B;IACnD,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;AACvC,CAAC;AAFD,gCAEC;AAED;;;;GAIG;AACH,SAAgB,SAAS,CAAC,IAAkC;IAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;AACpC,CAAC;AAFD,8BAEC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,GAAG,IAA0B;IAC1D,OAAO,IAAA,wBAAe,EACpB,IAAA,kBAAS,EAAC,GAAG,cAAc,CAAmC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAClG,IAAA,wBAAe,EAAC,GAAG,cAAc,CAAyB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,EACpG,IAAA,iBAAQ,EAAC,GAAG,cAAc,CAAuB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EACpF,IAAA,mBAAU,EAAC,GAAG,cAAc,CAAyB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,EAC1F,GAAG,cAAc,CAAsC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAC/F,CAAA;AACH,CAAC;AARD,wCAQC"}
@@ -0,0 +1,10 @@
1
+ import { MutationOptions, ReturnTypeFunc } from '@nestjs/graphql';
2
+ import { ResolverRelationMethodOpts } from './resolver-method.decorator';
3
+ /**
4
+ * @internal
5
+ * Decorator for a graphql `mutation` endpoint.
6
+ * @param typeFunc - A function that returns the return type for the mutation.
7
+ * @param options - `@nestjs/graphql` options to apply to the mutation.
8
+ * @param opts - [[ResolverRelationMethodOpts]] to apply to the mutation
9
+ */
10
+ export declare function ResolverRelationMutation(typeFunc: ReturnTypeFunc, options?: MutationOptions, ...opts: ResolverRelationMethodOpts[]): MethodDecorator;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResolverRelationMutation = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const graphql_1 = require("@nestjs/graphql");
6
+ const resolver_method_decorator_1 = require("./resolver-method.decorator");
7
+ /**
8
+ * @internal
9
+ * Decorator for a graphql `mutation` endpoint.
10
+ * @param typeFunc - A function that returns the return type for the mutation.
11
+ * @param options - `@nestjs/graphql` options to apply to the mutation.
12
+ * @param opts - [[ResolverRelationMethodOpts]] to apply to the mutation
13
+ */
14
+ function ResolverRelationMutation(typeFunc, options, ...opts) {
15
+ if (!(0, resolver_method_decorator_1.isEnabled)(opts)) {
16
+ return () => { };
17
+ }
18
+ return (0, common_1.applyDecorators)((0, graphql_1.Mutation)(typeFunc, options), (0, resolver_method_decorator_1.ResolverMethod)(...opts));
19
+ }
20
+ exports.ResolverRelationMutation = ResolverRelationMutation;
21
+ //# sourceMappingURL=resolver-relation-mutation.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver-relation-mutation.decorator.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/decorators/resolver-relation-mutation.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAgD;AAChD,6CAA2E;AAE3E,2EAAmG;AAEnG;;;;;;GAMG;AACH,SAAgB,wBAAwB,CACtC,QAAwB,EACxB,OAAyB,EACzB,GAAG,IAAkC;IAErC,IAAI,CAAC,IAAA,qCAAS,EAAC,IAAI,CAAC,EAAE;QACpB,OAAO,GAAS,EAAE,GAAE,CAAC,CAAA;KACtB;IACD,OAAO,IAAA,wBAAe,EAAC,IAAA,kBAAQ,EAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,IAAA,0CAAc,EAAC,GAAG,IAAI,CAAC,CAAC,CAAA;AAC9E,CAAC;AATD,4DASC"}
@@ -2,6 +2,6 @@ import { NestInterceptor } from '@nestjs/common';
2
2
  import { Class } from '@ptc-org/nestjs-query-core';
3
3
  import { Hook, HookTypes } from '../hooks';
4
4
  export type HookContext<H extends Hook<unknown>> = {
5
- hook?: H;
5
+ hooks?: H[];
6
6
  };
7
7
  export declare function HookInterceptor(type: HookTypes, ...DTOClasses: Class<unknown>[]): Class<NestInterceptor>;
@@ -12,26 +12,26 @@ class DefaultHookInterceptor {
12
12
  }
13
13
  }
14
14
  function HookInterceptor(type, ...DTOClasses) {
15
- const HookedClass = DTOClasses.find((Cls) => (0, decorators_1.getHookForType)(type, Cls));
16
- if (!HookedClass) {
15
+ const HookedClasses = DTOClasses.find((Cls) => (0, decorators_1.getHooksForType)(type, Cls));
16
+ if (!HookedClasses) {
17
17
  return DefaultHookInterceptor;
18
18
  }
19
- const hookToken = (0, hooks_1.getHookToken)(type, HookedClass);
19
+ const hookToken = (0, hooks_1.getHookToken)(type, HookedClasses);
20
20
  let Interceptor = class Interceptor {
21
- constructor(hook) {
22
- this.hook = hook;
21
+ constructor(hooks) {
22
+ this.hooks = hooks;
23
23
  }
24
24
  intercept(context, next) {
25
25
  const gqlContext = graphql_1.GqlExecutionContext.create(context);
26
26
  const ctx = gqlContext.getContext();
27
- ctx.hook = this.hook;
27
+ ctx.hooks = this.hooks;
28
28
  return next.handle();
29
29
  }
30
30
  };
31
31
  Interceptor = tslib_1.__decorate([
32
32
  (0, common_1.Injectable)(),
33
33
  tslib_1.__param(0, (0, common_1.Inject)(hookToken)),
34
- tslib_1.__metadata("design:paramtypes", [Object])
34
+ tslib_1.__metadata("design:paramtypes", [Array])
35
35
  ], Interceptor);
36
36
  Object.defineProperty(Interceptor, 'name', {
37
37
  writable: false,
@@ -1 +1 @@
1
- {"version":3,"file":"hook.interceptor.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/interceptors/hook.interceptor.ts"],"names":[],"mappings":";;;;AAAA,2CAAmG;AACnG,6CAAqD;AAGrD,8CAA8C;AAC9C,oCAAwD;AAIxD,MAAM,sBAAsB;IAC1B,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAA;IACtB,CAAC;CACF;AAED,SAAgB,eAAe,CAAC,IAAe,EAAE,GAAG,UAA4B;IAC9E,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,2BAAc,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;IACvE,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,sBAAsB,CAAA;KAC9B;IACD,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAEjD,IACM,WAAW,GADjB,MACM,WAAW;QACf,YAAwC,IAA8B;YAA9B,SAAI,GAAJ,IAAI,CAA0B;QAAG,CAAC;QAE1E,SAAS,CAAC,OAAyB,EAAE,IAAiB;YACpD,MAAM,UAAU,GAAG,6BAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACtD,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,EAA8B,CAAA;YAC/D,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YACpB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAA;QACtB,CAAC;KACF,CAAA;IATK,WAAW;QADhB,IAAA,mBAAU,GAAE;QAEE,mBAAA,IAAA,eAAM,EAAC,SAAS,CAAC,CAAA;;OAD1B,WAAW,CAShB;IAED,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE;QACzC,QAAQ,EAAE,KAAK;QACf,+EAA+E;QAC/E,KAAK,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,iBAAiB;KACrD,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC;AA1BD,0CA0BC"}
1
+ {"version":3,"file":"hook.interceptor.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/interceptors/hook.interceptor.ts"],"names":[],"mappings":";;;;AAAA,2CAAmG;AACnG,6CAAqD;AAGrD,8CAA+C;AAC/C,oCAAwD;AAIxD,MAAM,sBAAsB;IAC1B,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAA;IACtB,CAAC;CACF;AAED,SAAgB,eAAe,CAAC,IAAe,EAAE,GAAG,UAA4B;IAC9E,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,4BAAe,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;IAC1E,IAAI,CAAC,aAAa,EAAE;QAClB,OAAO,sBAAsB,CAAA;KAC9B;IACD,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,IAAI,EAAE,aAAa,CAAC,CAAA;IAEnD,IACM,WAAW,GADjB,MACM,WAAW;QACf,YAAwC,KAAmC;YAAnC,UAAK,GAAL,KAAK,CAA8B;QAAG,CAAC;QAE/E,SAAS,CAAC,OAAyB,EAAE,IAAiB;YACpD,MAAM,UAAU,GAAG,6BAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACtD,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,EAA8B,CAAA;YAC/D,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;YACtB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAA;QACtB,CAAC;KACF,CAAA;IATK,WAAW;QADhB,IAAA,mBAAU,GAAE;QAEE,mBAAA,IAAA,eAAM,EAAC,SAAS,CAAC,CAAA;;OAD1B,WAAW,CAShB;IAED,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE;QACzC,QAAQ,EAAE,KAAK;QACf,+EAA+E;QAC/E,KAAK,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,iBAAiB;KACrD,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC;AA1BD,0CA0BC"}
@@ -1,9 +1,10 @@
1
1
  import { ExecutionContext } from '@nestjs/common';
2
2
  import Dataloader from 'dataloader';
3
+ import { DataLoaderOptions } from '../pipes/inject-data-loader-config.pipe';
3
4
  export interface NestjsQueryExecutionContext extends ExecutionContext {
4
5
  nestjsQueryLoaders?: Record<string, Dataloader<unknown, unknown>>;
5
6
  }
6
7
  export declare class DataLoaderFactory {
7
8
  private static initializeContext;
8
- static getOrCreateLoader<K, V>(context: NestjsQueryExecutionContext, name: string, handler: Dataloader.BatchLoadFn<K, V>): Dataloader<K, V>;
9
+ static getOrCreateLoader<K, V>(context: NestjsQueryExecutionContext, name: string, createHandler: () => Dataloader.BatchLoadFn<K, V>, options?: DataLoaderOptions): Dataloader<K, V>;
9
10
  }
@@ -14,11 +14,13 @@ class DataLoaderFactory {
14
14
  }
15
15
  return context.nestjsQueryLoaders;
16
16
  }
17
- static getOrCreateLoader(context, name, handler) {
17
+ static getOrCreateLoader(context, name, createHandler, options) {
18
18
  const nestjsQueryLoaders = this.initializeContext(context);
19
19
  if (!nestjsQueryLoaders[name]) {
20
+ const handler = createHandler();
21
+ const dataLoaderOptions = { cacheKeyFn, ...options };
20
22
  // eslint-disable-next-line no-param-reassign
21
- nestjsQueryLoaders[name] = new dataloader_1.default(handler, { cacheKeyFn });
23
+ nestjsQueryLoaders[name] = new dataloader_1.default(handler, dataLoaderOptions);
22
24
  }
23
25
  return nestjsQueryLoaders[name];
24
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dataloader.factory.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/loader/dataloader.factory.ts"],"names":[],"mappings":";;;;AACA,oEAAmC;AAEnC,MAAM,UAAU,GAAG,CAAI,GAAM,EAAU,EAAE;AACvC,+DAA+D;AAC/D,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAM3E,MAAa,iBAAiB;IACpB,MAAM,CAAC,iBAAiB,CAAC,OAAoC;QACnE,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;YAC/B,6CAA6C;YAC7C,OAAO,CAAC,kBAAkB,GAAG,EAAE,CAAA;SAChC;QACD,OAAO,OAAO,CAAC,kBAAkB,CAAA;IACnC,CAAC;IAED,MAAM,CAAC,iBAAiB,CACtB,OAAoC,EACpC,IAAY,EACZ,OAAqC;QAErC,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;QAC1D,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE;YAC7B,6CAA6C;YAC7C,kBAAkB,CAAC,IAAI,CAAC,GAAG,IAAI,oBAAU,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;SACnE;QACD,OAAO,kBAAkB,CAAC,IAAI,CAAqB,CAAA;IACrD,CAAC;CACF;AArBD,8CAqBC"}
1
+ {"version":3,"file":"dataloader.factory.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/loader/dataloader.factory.ts"],"names":[],"mappings":";;;;AACA,oEAAmC;AAInC,MAAM,UAAU,GAAG,CAAI,GAAM,EAAU,EAAE;AACvC,+DAA+D;AAC/D,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAM3E,MAAa,iBAAiB;IACpB,MAAM,CAAC,iBAAiB,CAAC,OAAoC;QACnE,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;YAC/B,6CAA6C;YAC7C,OAAO,CAAC,kBAAkB,GAAG,EAAE,CAAA;SAChC;QAED,OAAO,OAAO,CAAC,kBAAkB,CAAA;IACnC,CAAC;IAED,MAAM,CAAC,iBAAiB,CACtB,OAAoC,EACpC,IAAY,EACZ,aAAiD,EACjD,OAA2B;QAE3B,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;QAE1D,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE;YAC7B,MAAM,OAAO,GAAG,aAAa,EAAE,CAAA;YAC/B,MAAM,iBAAiB,GAAG,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,CAAA;YAEpD,6CAA6C;YAC7C,kBAAkB,CAAC,IAAI,CAAC,GAAG,IAAI,oBAAU,CAAe,OAAO,EAAE,iBAAiB,CAAC,CAAA;SACpF;QAED,OAAO,kBAAkB,CAAC,IAAI,CAAqB,CAAA;IACrD,CAAC;CACF;AA5BD,8CA4BC"}
package/src/module.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { DynamicModule, ForwardReference, Provider } from '@nestjs/common';
2
2
  import { Assembler, Class } from '@ptc-org/nestjs-query-core';
3
+ import { DataLoaderOptions } from './pipes/inject-data-loader-config.pipe';
3
4
  import { AutoResolverOpts } from './providers';
4
5
  import { ReadResolverOpts } from './resolvers';
5
6
  import { GraphQLPubSub } from './subscription';
@@ -9,7 +10,10 @@ interface DTOModuleOpts<DTO> {
9
10
  CreateDTOClass?: Class<DTO>;
10
11
  UpdateDTOClass?: Class<DTO>;
11
12
  }
12
- export interface NestjsQueryGraphqlModuleOpts {
13
+ export interface NestjsQueryGraphqlModuleRootOpts {
14
+ dataLoader?: DataLoaderOptions;
15
+ }
16
+ export interface NestjsQueryGraphqlModuleFeatureOpts {
13
17
  imports?: Array<Class<any> | DynamicModule | Promise<DynamicModule> | ForwardReference>;
14
18
  services?: Provider[];
15
19
  assemblers?: Class<Assembler<any, any, any, any, any, any>>[];
@@ -17,8 +21,12 @@ export interface NestjsQueryGraphqlModuleOpts {
17
21
  dtos?: DTOModuleOpts<unknown>[];
18
22
  pubSub?: Provider<GraphQLPubSub>;
19
23
  }
24
+ export declare class NestjsQueryGraphQLCoreModule {
25
+ static forRoot(opts: NestjsQueryGraphqlModuleRootOpts): DynamicModule;
26
+ }
20
27
  export declare class NestjsQueryGraphQLModule {
21
- static forFeature(opts: NestjsQueryGraphqlModuleOpts): DynamicModule;
28
+ static forRoot(opts: NestjsQueryGraphqlModuleRootOpts): DynamicModule;
29
+ static forFeature(opts: NestjsQueryGraphqlModuleFeatureOpts): DynamicModule;
22
30
  static defaultPubSubProvider(): Provider<GraphQLPubSub>;
23
31
  private static getCoreModule;
24
32
  private static getProviders;
package/src/module.js CHANGED
@@ -1,10 +1,35 @@
1
1
  "use strict";
2
+ var NestjsQueryGraphQLCoreModule_1;
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NestjsQueryGraphQLModule = void 0;
4
+ exports.NestjsQueryGraphQLModule = exports.NestjsQueryGraphQLCoreModule = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const common_1 = require("@nestjs/common");
4
7
  const nestjs_query_core_1 = require("@ptc-org/nestjs-query-core");
8
+ const inject_data_loader_config_pipe_1 = require("./pipes/inject-data-loader-config.pipe");
5
9
  const providers_1 = require("./providers");
6
10
  const subscription_1 = require("./subscription");
11
+ let NestjsQueryGraphQLCoreModule = NestjsQueryGraphQLCoreModule_1 = class NestjsQueryGraphQLCoreModule {
12
+ static forRoot(opts) {
13
+ const providers = [{ provide: inject_data_loader_config_pipe_1.dataLoaderOptionsToken, useValue: opts.dataLoader ?? {} }];
14
+ return {
15
+ module: NestjsQueryGraphQLCoreModule_1,
16
+ providers,
17
+ exports: providers
18
+ };
19
+ }
20
+ };
21
+ NestjsQueryGraphQLCoreModule = NestjsQueryGraphQLCoreModule_1 = tslib_1.__decorate([
22
+ (0, common_1.Global)(),
23
+ (0, common_1.Module)({})
24
+ ], NestjsQueryGraphQLCoreModule);
25
+ exports.NestjsQueryGraphQLCoreModule = NestjsQueryGraphQLCoreModule;
7
26
  class NestjsQueryGraphQLModule {
27
+ static forRoot(opts) {
28
+ return {
29
+ module: NestjsQueryGraphQLModule,
30
+ imports: [NestjsQueryGraphQLCoreModule.forRoot(opts)]
31
+ };
32
+ }
8
33
  static forFeature(opts) {
9
34
  const coreModule = this.getCoreModule(opts);
10
35
  const providers = this.getProviders(opts);
package/src/module.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../packages/query-graphql/src/module.ts"],"names":[],"mappings":";;;AACA,kEAAoF;AAEpF,2CAA+G;AAE/G,iDAA0E;AAqB1E,MAAa,wBAAwB;IAC5B,MAAM,CAAC,UAAU,CAAC,IAAkC;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAA;QAElC,OAAO;YACL,MAAM,EAAE,wBAAwB;YAChC,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,UAAU,CAAC;YACjC,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC;YACzB,OAAO,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,OAAO,EAAE,UAAU,CAAC;SAChD,CAAA;IACH,CAAC;IAEM,MAAM,CAAC,qBAAqB;QACjC,OAAO,EAAE,OAAO,EAAE,IAAA,0BAAW,GAAE,EAAE,QAAQ,EAAE,IAAA,4BAAa,GAAE,EAAE,CAAA;IAC9D,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,IAAkC;QAC7D,OAAO,yCAAqB,CAAC,UAAU,CAAC;YACtC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;SAC5B,CAAC,CAAA;IACJ,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,IAAkC;QAC5D,OAAO;YACL,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAClC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAChC,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;YACpC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAC9B,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;SACnC,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,IAAkC;QAClE,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAA;IACtD,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,IAAkC;QACpE,OAAO,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAA;IAC5B,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,IAAkC;QACpE,OAAO,IAAA,2BAAe,EAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;IAC9C,CAAC;IAEO,MAAM,CAAC,sBAAsB,CAAC,IAAkC;QACtE,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QACpD,OAAO,IAAA,qCAAyB,EAAC,CAAC,GAAG,YAAY,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA;IAC9D,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,IAAkC;QAChE,OAAO,IAAA,+BAAmB,EAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAC/E,CAAC;CACF;AAxDD,4DAwDC"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../packages/query-graphql/src/module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { PipeTransform } from '@nestjs/common';
2
+ import { ModuleRef } from '@nestjs/core';
3
+ import { Options } from 'dataloader';
4
+ export declare const dataLoaderOptionsToken: "DATALOADER_OPTIONS";
5
+ export type DataLoaderOptions = Options<any, any, any>;
6
+ export declare class InjectDataLoaderConfigPipe implements PipeTransform {
7
+ private moduleRef;
8
+ private readonly options;
9
+ constructor(moduleRef: ModuleRef);
10
+ transform(): DataLoaderOptions;
11
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InjectDataLoaderConfigPipe = exports.dataLoaderOptionsToken = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const core_1 = require("@nestjs/core");
7
+ exports.dataLoaderOptionsToken = 'DATALOADER_OPTIONS';
8
+ let InjectDataLoaderConfigPipe = class InjectDataLoaderConfigPipe {
9
+ constructor(moduleRef) {
10
+ this.moduleRef = moduleRef;
11
+ this.options = {};
12
+ try {
13
+ this.options = this.moduleRef.get(exports.dataLoaderOptionsToken, { strict: false });
14
+ }
15
+ catch (error) {
16
+ //
17
+ }
18
+ }
19
+ transform() {
20
+ return this.options;
21
+ }
22
+ };
23
+ InjectDataLoaderConfigPipe = tslib_1.__decorate([
24
+ (0, common_1.Injectable)(),
25
+ tslib_1.__param(0, (0, common_1.Inject)(core_1.ModuleRef)),
26
+ tslib_1.__metadata("design:paramtypes", [core_1.ModuleRef])
27
+ ], InjectDataLoaderConfigPipe);
28
+ exports.InjectDataLoaderConfigPipe = InjectDataLoaderConfigPipe;
29
+ //# sourceMappingURL=inject-data-loader-config.pipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject-data-loader-config.pipe.js","sourceRoot":"","sources":["../../../../../packages/query-graphql/src/pipes/inject-data-loader-config.pipe.ts"],"names":[],"mappings":";;;;AAAA,2CAAkE;AAClE,uCAAwC;AAG3B,QAAA,sBAAsB,GAAG,oBAA6B,CAAA;AAK5D,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IAGrC,YAEU,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;QAJb,YAAO,GAAsB,EAAE,CAAA;QAM9C,IAAI;YACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,8BAAsB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;SAC7E;QAAC,OAAO,KAAK,EAAE;YACd,EAAE;SACH;IACH,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;CACF,CAAA;AAjBY,0BAA0B;IADtC,IAAA,mBAAU,GAAE;IAKR,mBAAA,IAAA,eAAM,EAAC,gBAAS,CAAC,CAAA;6CACC,gBAAS;GALnB,0BAA0B,CAiBtC;AAjBY,gEAA0B"}
@@ -5,27 +5,34 @@ const decorators_1 = require("../decorators");
5
5
  const hooks_1 = require("../hooks");
6
6
  function createHookProvider(hookType, ...DTOClass) {
7
7
  return DTOClass.reduce((p, cls) => {
8
- if (p) {
8
+ if (p && p.length > 0) {
9
9
  return p;
10
10
  }
11
- const maybeHook = (0, decorators_1.getHookForType)(hookType, cls);
12
- if (maybeHook) {
13
- return { provide: (0, hooks_1.getHookToken)(hookType, cls), useClass: maybeHook };
11
+ const maybeHooks = (0, decorators_1.getHooksForType)(hookType, cls);
12
+ if (maybeHooks) {
13
+ return [
14
+ ...maybeHooks,
15
+ {
16
+ provide: (0, hooks_1.getHookToken)(hookType, cls),
17
+ useFactory: (...providers) => providers,
18
+ inject: maybeHooks
19
+ }
20
+ ];
14
21
  }
15
- return undefined;
16
- }, undefined);
22
+ return [];
23
+ }, []);
17
24
  }
18
25
  function getHookProviders(opts) {
19
26
  const { DTOClass, CreateDTOClass = DTOClass, UpdateDTOClass = DTOClass } = opts;
20
27
  return [
21
- createHookProvider(hooks_1.HookTypes.BEFORE_CREATE_ONE, CreateDTOClass, DTOClass),
22
- createHookProvider(hooks_1.HookTypes.BEFORE_CREATE_MANY, CreateDTOClass, DTOClass),
23
- createHookProvider(hooks_1.HookTypes.BEFORE_UPDATE_ONE, UpdateDTOClass, DTOClass),
24
- createHookProvider(hooks_1.HookTypes.BEFORE_UPDATE_MANY, UpdateDTOClass, DTOClass),
25
- createHookProvider(hooks_1.HookTypes.BEFORE_DELETE_ONE, DTOClass),
26
- createHookProvider(hooks_1.HookTypes.BEFORE_DELETE_MANY, DTOClass),
27
- createHookProvider(hooks_1.HookTypes.BEFORE_QUERY_MANY, DTOClass),
28
- createHookProvider(hooks_1.HookTypes.BEFORE_FIND_ONE, DTOClass)
28
+ ...createHookProvider(hooks_1.HookTypes.BEFORE_CREATE_ONE, CreateDTOClass, DTOClass),
29
+ ...createHookProvider(hooks_1.HookTypes.BEFORE_CREATE_MANY, CreateDTOClass, DTOClass),
30
+ ...createHookProvider(hooks_1.HookTypes.BEFORE_UPDATE_ONE, UpdateDTOClass, DTOClass),
31
+ ...createHookProvider(hooks_1.HookTypes.BEFORE_UPDATE_MANY, UpdateDTOClass, DTOClass),
32
+ ...createHookProvider(hooks_1.HookTypes.BEFORE_DELETE_ONE, DTOClass),
33
+ ...createHookProvider(hooks_1.HookTypes.BEFORE_DELETE_MANY, DTOClass),
34
+ ...createHookProvider(hooks_1.HookTypes.BEFORE_QUERY_MANY, DTOClass),
35
+ ...createHookProvider(hooks_1.HookTypes.BEFORE_FIND_ONE, DTOClass)
29
36
  ].filter((p) => !!p);
30
37
  }
31
38
  const createHookProviders = (opts) => opts.reduce((ps, opt) => [...ps, ...getHookProviders(opt)], []);