@pothos/plugin-prisma 3.58.0 → 3.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Change Log
2
2
 
3
+ ## 3.59.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 1bbd3d70: update model loader to cache query mappings and batch compatible queries to reduce
8
+ likelyhood of prisma deoptimization
9
+
3
10
  ## 3.58.0
4
11
 
5
12
  ### Minor Changes
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AACxB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,aAAa,EAAE,EACpB,UAAU,EACV,UAAU,EACV,uBAAuB,EAEvB,gBAAgB,EAChB,WAAW,EACZ,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAA0B,MAAM,kBAAkB,CAAC;AAEzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,cAAc,SAAS,CAAC;AAExB,QAAA,MAAM,UAAU,UAAoB,CAAC;AAErC,eAAe,UAAU,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC;AAE3F,MAAM,MAAM,wBAAwB,CAClC,KAAK,SAAS,WAAW,EACzB,WAAW,IACT,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAE7D,eAAO,MAAM,kBAAkB,6IAMvB,MAAM,mIAEoE,CAAC;AAEnF,qBAAa,YAAY,CAAC,KAAK,SAAS,WAAW,CAAE,SAAQ,UAAU,CAAC,KAAK,CAAC;gBAChE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC;IAI3B,YAAY,CAAC,UAAU,EAAE,gBAAgB,GAAG,gBAAgB;IA+B5D,mBAAmB,CAC1B,WAAW,EAAE,uBAAuB,CAAC,KAAK,CAAC,GAC1C,uBAAuB,CAAC,KAAK,CAAC,GAAG,IAAI;IA4B/B,WAAW,CAClB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAC1E,WAAW,EAAE,uBAAuB,CAAC,KAAK,CAAC,GAC1C,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAiE3D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AACxB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,aAAa,EAAE,EACpB,UAAU,EACV,UAAU,EACV,uBAAuB,EAEvB,gBAAgB,EAChB,WAAW,EACZ,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,cAAc,SAAS,CAAC;AAExB,QAAA,MAAM,UAAU,UAAoB,CAAC;AAErC,eAAe,UAAU,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC;AAE3F,MAAM,MAAM,wBAAwB,CAClC,KAAK,SAAS,WAAW,EACzB,WAAW,IACT,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAE7D,eAAO,MAAM,kBAAkB,6IAMvB,MAAM,mIAEoE,CAAC;AAEnF,qBAAa,YAAY,CAAC,KAAK,SAAS,WAAW,CAAE,SAAQ,UAAU,CAAC,KAAK,CAAC;gBAChE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC;IAI3B,YAAY,CAAC,UAAU,EAAE,gBAAgB,GAAG,gBAAgB;IA+B5D,mBAAmB,CAC1B,WAAW,EAAE,uBAAuB,CAAC,KAAK,CAAC,GAC1C,uBAAuB,CAAC,KAAK,CAAC,GAAG,IAAI;IA4B/B,WAAW,CAClB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAC1E,WAAW,EAAE,uBAAuB,CAAC,KAAK,CAAC,GAC1C,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAuD3D"}
@@ -1,15 +1,28 @@
1
+ import { GraphQLResolveInfo } from 'graphql';
1
2
  import { InterfaceRef, ObjectRef, SchemaTypes } from '@pothos/core';
3
+ import { PrismaDelegate, SelectionMap } from './types';
2
4
  import { SelectionState } from './util/selections';
5
+ interface ResolvablePromise<T> {
6
+ promise: Promise<T>;
7
+ resolve: (value: T) => void;
8
+ reject: (err: unknown) => void;
9
+ }
3
10
  export declare class ModelLoader {
4
- model: object;
11
+ context: object;
5
12
  builder: PothosSchemaTypes.SchemaBuilder<never>;
6
13
  findUnique: (model: Record<string, unknown>, ctx: {}) => unknown;
7
14
  modelName: string;
15
+ queryCache: Map<string, {
16
+ selection: SelectionState;
17
+ query: SelectionMap;
18
+ }>;
8
19
  staged: Set<{
9
- promise: Promise<Record<string, unknown>>;
10
20
  state: SelectionState;
21
+ models: Map<object, ResolvablePromise<Record<string, unknown> | null>>;
11
22
  }>;
12
- constructor(model: object, builder: PothosSchemaTypes.SchemaBuilder<never>, modelName: string, findUnique: (model: Record<string, unknown>, ctx: {}) => unknown);
23
+ delegate: PrismaDelegate;
24
+ tick: Promise<void>;
25
+ constructor(context: object, builder: PothosSchemaTypes.SchemaBuilder<never>, modelName: string, findUnique: (model: Record<string, unknown>, ctx: {}) => unknown);
13
26
  static forRef<Types extends SchemaTypes>(ref: ObjectRef<unknown> | InterfaceRef<unknown>, modelName: string, findUnique: ((model: Record<string, unknown>, ctx: {}) => unknown) | undefined, builder: PothosSchemaTypes.SchemaBuilder<Types>): import("@pothos/core").ContextCache<ModelLoader, object, []>;
14
27
  static getFindUnique(findBy: {
15
28
  name: string | null;
@@ -23,7 +36,13 @@ export declare class ModelLoader {
23
36
  static getDefaultIDSelection<Types extends SchemaTypes>(ref: ObjectRef<unknown> | InterfaceRef<unknown>, modelName: string, builder: PothosSchemaTypes.SchemaBuilder<Types>): Record<string, boolean>;
24
37
  static getCursorSelection<Types extends SchemaTypes>(ref: ObjectRef<unknown> | InterfaceRef<unknown>, modelName: string, cursor: string, builder: PothosSchemaTypes.SchemaBuilder<Types>): Record<string, boolean>;
25
38
  static getFindUniqueForField<Types extends SchemaTypes>(ref: ObjectRef<unknown> | InterfaceRef<unknown>, modelName: string, fieldName: string, builder: PothosSchemaTypes.SchemaBuilder<Types>): (model: Record<string, unknown>) => {};
26
- loadSelection(selection: SelectionState, context: object): Promise<Record<string, unknown>>;
27
- initLoad(state: SelectionState, context: {}): Promise<Record<string, unknown>>;
39
+ getSelection(info: GraphQLResolveInfo): {
40
+ selection: SelectionState;
41
+ query: SelectionMap;
42
+ };
43
+ loadSelection(info: GraphQLResolveInfo, model: object): Promise<Record<string, unknown> | null>;
44
+ stageQuery(selection: SelectionState, query: SelectionMap, model: object): Promise<Record<string, unknown> | null>;
45
+ initLoad(state: SelectionState, initialModel: {}): Promise<Record<string, unknown> | null>;
28
46
  }
47
+ export {};
29
48
  //# sourceMappingURL=model-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-loader.d.ts","sourceRoot":"","sources":["../src/model-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-loader.d.ts","sourceRoot":"","sources":["../src/model-loader.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { GraphQLResolveInfo } from 'graphql';
2
2
  import { LoaderMappings } from '../types';
3
- export declare function cacheKey(type: string, path: GraphQLResolveInfo['path'], subPath: string[]): string;
3
+ export declare function cacheKey(type: string, path: GraphQLResolveInfo['path'], subPath?: string[]): string;
4
4
  export declare function setLoaderMappings(ctx: object, info: GraphQLResolveInfo, value: LoaderMappings): void;
5
5
  export declare function getLoaderMapping(ctx: object, path: GraphQLResolveInfo['path'], type: string): LoaderMappings | null;
6
6
  //# sourceMappingURL=loader-map.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader-map.d.ts","sourceRoot":"","sources":["../../src/util/loader-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI1C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAgBzF;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,QAU7F;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,yBAK3F"}
1
+ {"version":3,"file":"loader-map.d.ts","sourceRoot":"","sources":["../../src/util/loader-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI1C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,GAAE,MAAM,EAAO,UAgB9F;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,QAU7F;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,yBAK3F"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AACxB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,aAAa,EAAE,EACpB,UAAU,EACV,UAAU,EACV,uBAAuB,EAEvB,gBAAgB,EAChB,WAAW,EACZ,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAA0B,MAAM,kBAAkB,CAAC;AAEzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,cAAc,SAAS,CAAC;AAExB,QAAA,MAAM,UAAU,UAAoB,CAAC;AAErC,eAAe,UAAU,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC;AAE3F,MAAM,MAAM,wBAAwB,CAClC,KAAK,SAAS,WAAW,EACzB,WAAW,IACT,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAE7D,eAAO,MAAM,kBAAkB,6IAMvB,MAAM,mIAEoE,CAAC;AAEnF,qBAAa,YAAY,CAAC,KAAK,SAAS,WAAW,CAAE,SAAQ,UAAU,CAAC,KAAK,CAAC;gBAChE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC;IAI3B,YAAY,CAAC,UAAU,EAAE,gBAAgB,GAAG,gBAAgB;IA+B5D,mBAAmB,CAC1B,WAAW,EAAE,uBAAuB,CAAC,KAAK,CAAC,GAC1C,uBAAuB,CAAC,KAAK,CAAC,GAAG,IAAI;IA4B/B,WAAW,CAClB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAC1E,WAAW,EAAE,uBAAuB,CAAC,KAAK,CAAC,GAC1C,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAiE3D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AACxB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,aAAa,EAAE,EACpB,UAAU,EACV,UAAU,EACV,uBAAuB,EAEvB,gBAAgB,EAChB,WAAW,EACZ,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,cAAc,SAAS,CAAC;AAExB,QAAA,MAAM,UAAU,UAAoB,CAAC;AAErC,eAAe,UAAU,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC;AAE3F,MAAM,MAAM,wBAAwB,CAClC,KAAK,SAAS,WAAW,EACzB,WAAW,IACT,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAE7D,eAAO,MAAM,kBAAkB,6IAMvB,MAAM,mIAEoE,CAAC;AAEnF,qBAAa,YAAY,CAAC,KAAK,SAAS,WAAW,CAAE,SAAQ,UAAU,CAAC,KAAK,CAAC;gBAChE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC;IAI3B,YAAY,CAAC,UAAU,EAAE,gBAAgB,GAAG,gBAAgB;IA+B5D,mBAAmB,CAC1B,WAAW,EAAE,uBAAuB,CAAC,KAAK,CAAC,GAC1C,uBAAuB,CAAC,KAAK,CAAC,GAAG,IAAI;IA4B/B,WAAW,CAClB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAC1E,WAAW,EAAE,uBAAuB,CAAC,KAAK,CAAC,GAC1C,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAuD3D"}
package/esm/index.js CHANGED
@@ -6,7 +6,7 @@ import { PrismaObjectFieldBuilder as InternalPrismaObjectFieldBuilder } from './
6
6
  import { formatPrismaCursor, parsePrismaCursor } from './util/cursors.js';
7
7
  import { getModel, getRefFromModel } from './util/datamodel.js';
8
8
  import { getLoaderMapping, setLoaderMappings } from './util/loader-map.js';
9
- import { queryFromInfo, selectionStateFromInfo } from './util/map-query.js';
9
+ import { queryFromInfo } from './util/map-query.js';
10
10
  export { prismaConnectionHelpers } from './connection-helpers.js';
11
11
  export { PrismaInterfaceRef } from './interface-ref.js';
12
12
  export { PrismaNodeRef } from './node-ref.js';
@@ -97,14 +97,7 @@ export class PrismaPlugin extends BasePlugin {
97
97
  info
98
98
  }), parent, args, context, info);
99
99
  }
100
- const selectionState = selectionStateFromInfo(context, info);
101
- return loaderCache(parent).loadSelection(selectionState, context).then((result) => {
102
- const mappings = selectionState.mappings[info.path.key];
103
- if (mappings) {
104
- setLoaderMappings(context, info, mappings.mappings);
105
- }
106
- return resolver(result, args, context, info);
107
- });
100
+ return loaderCache(context).loadSelection(info, parent).then((result) => resolver(result, args, context, info));
108
101
  };
109
102
  }
110
103
  constructor(cache) {
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["SchemaBuilder","BasePlugin","PothosSchemaError","PrismaObjectFieldBuilder","InternalPrismaObjectFieldBuilder","formatPrismaCursor","parsePrismaCursor","getModel","getRefFromModel","getLoaderMapping","setLoaderMappings","queryFromInfo","selectionStateFromInfo","prismaConnectionHelpers","PrismaInterfaceRef","PrismaNodeRef","PrismaObjectRef","pluginName","ObjectFieldBuilder","PrismaPlugin","onTypeConfig","typeConfig","kind","model","extensions","pothosPrismaModel","interfaces","forEach","iface","interfaceModel","buildCache","getTypeConfig","name","onOutputFieldConfig","fieldConfig","pothosOptions","select","pothosPrismaSelect","args","ctx","nestedQuery","wrapResolve","resolver","parentConfig","parentType","loadedCheck","pothosPrismaLoaded","loaderCache","pothosPrismaLoader","fallback","pothosPrismaFallback","parentTypes","Set","interfaceConfig","add","parent","context","info","mapping","path","selectionState","loadSelection","then","result","mappings","key","constructor","cache","registerPlugin"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["SchemaBuilder","BasePlugin","PothosSchemaError","PrismaObjectFieldBuilder","InternalPrismaObjectFieldBuilder","formatPrismaCursor","parsePrismaCursor","getModel","getRefFromModel","getLoaderMapping","setLoaderMappings","queryFromInfo","prismaConnectionHelpers","PrismaInterfaceRef","PrismaNodeRef","PrismaObjectRef","pluginName","ObjectFieldBuilder","PrismaPlugin","onTypeConfig","typeConfig","kind","model","extensions","pothosPrismaModel","interfaces","forEach","iface","interfaceModel","buildCache","getTypeConfig","name","onOutputFieldConfig","fieldConfig","pothosOptions","select","pothosPrismaSelect","args","ctx","nestedQuery","wrapResolve","resolver","parentConfig","parentType","loadedCheck","pothosPrismaLoaded","loaderCache","pothosPrismaLoader","fallback","pothosPrismaFallback","parentTypes","Set","interfaceConfig","add","parent","context","info","mapping","path","loadSelection","then","result","constructor","cache","registerPlugin"],"mappings":"AAAA,OAAO,iBAAiB;AACxB,OAAO,mBAAmB;AAC1B,OAAO,kBAAkB;AAEzB,OAAOA,iBACLC,UAAU,EAGVC,iBAAiB,QAGZ,eAAe;AAEtB,SAASC,4BAA4BC,gCAAgC,QAAQ,yBAAyB;AAEtG,SAASC,kBAAkB,EAAEC,iBAAiB,QAAQ,iBAAiB;AACvE,SAASC,QAAQ,EAAEC,eAAe,QAAQ,mBAAmB;AAC7D,SAASC,gBAAgB,EAAEC,iBAAiB,QAAQ,oBAAoB;AACxE,SAASC,aAAa,QAAQ,mBAAmB;AAEjD,SAASC,uBAAuB,QAAQ,uBAAuB;AAC/D,SAASC,kBAAkB,QAAQ,kBAAkB;AACrD,SAASC,aAAa,QAAQ,aAAa;AAC3C,SAASC,eAAe,QAAQ,eAAe;AAC/C,cAAc,UAAU;AAExB,MAAMC,aAAa;AAEnB,eAAeA,WAAW;AAE1B,SAASX,kBAAkB,EAAEE,QAAQ,EAAEC,eAAe,EAAEF,iBAAiB,EAAEK,aAAa,GAAG;AAO3F,OAAO,MAAMM,qBAAqBb,iCAQiD;AAEnF,OAAO,MAAMc,qBAAgDjB;IAKlDkB,aAAaC,UAA4B,EAAoB;YAKxDA;QAJZ,IAAIA,WAAWC,IAAI,KAAK,YAAYD,WAAWC,IAAI,KAAK,aAAa;YACnE,OAAOD;QACT;QAEA,IAAIE,SAAQF,yBAAAA,WAAWG,UAAU,cAArBH,6CAAAA,uBAAuBI,iBAAiB;QAEpDJ,WAAWK,UAAU,CAACC,OAAO,CAAC,CAACC;gBACN;YAAvB,MAAMC,kBAAiB,4CAAA,IAAI,CAACC,UAAU,CAACC,aAAa,CAACH,OAAO,aAAaJ,UAAU,cAA5D,gEAAA,0CACnBC,iBAAiB;YAErB,IAAII,gBAAgB;gBAClB,IAAIN,SAASA,UAAUM,gBAAgB;oBACrC,MAAM,IAAI1B,kBACR,CAAC,0FAA0F,EAAEkB,WAAWW,IAAI,CAAC,MAAM,EAAET,MAAM,KAAK,EAAEK,MAAMI,IAAI,CAAC,MAAM,EAAEH,eAAe,CAAC;gBAEzK;gBAEAN,QAAQM;YACV;QACF;QAEA,OAAO;YACL,GAAGR,UAAU;YACbG,YAAY;gBACV,GAAGH,WAAWG,UAAU;gBACxBC,mBAAmBF;YACrB;QACF;IACF;IAESU,oBACPC,WAA2C,EACJ;QACvC,IAAIA,YAAYZ,IAAI,KAAK,kBAAkBY,YAAYC,aAAa,CAACC,MAAM,EAAE;YAC3E,MAAM,EAAEA,MAAM,EAAE,GAAGF,YAAYC,aAAa;YAC5C,OAAO;gBACL,GAAGD,WAAW;gBACdV,YAAY;oBACV,GAAGU,YAAYV,UAAU;oBACzBa,oBACE,OAAOD,WAAW,aACd,CACEE,MACAC,KACAC,cACI,CAAA;4BACJJ,QAAQ,AAACA,OACPE,MACAC,KACAC;wBAEJ,CAAA,IACAJ;gBACR;YACF;QACF;QAEA,OAAOF;IACT;IAESO,YACPC,QAA0E,EAC1ER,WAA2C,EACc;YACbA,yBAKxBA,0BAGAS,0BAIHT;QAZjB,IAAIA,YAAYZ,IAAI,KAAK,kBAAkB,GAACY,0BAAAA,YAAYV,UAAU,cAAtBU,8CAAAA,wBAAwBG,kBAAkB,GAAE;YACtF,OAAOK;QACT;QAEA,MAAMC,eAAe,IAAI,CAACb,UAAU,CAACC,aAAa,CAACG,YAAYU,UAAU;QACzE,MAAMC,eAAcX,2BAAAA,YAAYV,UAAU,cAAtBU,+CAAAA,yBAAwBY,kBAAkB;QAG9D,MAAMC,eAAcJ,2BAAAA,aAAanB,UAAU,cAAvBmB,+CAAAA,yBAAyBK,kBAAkB;QAI/D,MAAMC,YAAWf,2BAAAA,YAAYV,UAAU,cAAtBU,+CAAAA,yBAAwBgB,oBAAoB;QAI7D,MAAMC,cAAc,IAAIC,IAAI;YAAClB,YAAYU,UAAU;SAAC;QAEpD,IAAID,aAAarB,IAAI,KAAK,eAAeqB,aAAarB,IAAI,KAAK,UAAU;YACvEqB,aAAajB,UAAU,CAACC,OAAO,CAAC,CAACC;oBAE3ByB;gBADJ,MAAMA,kBAAkB,IAAI,CAACvB,UAAU,CAACC,aAAa,CAACH,OAAO;gBAC7D,KAAIyB,8BAAAA,gBAAgB7B,UAAU,cAA1B6B,kDAAAA,4BAA4B5B,iBAAiB,EAAE;oBACjD0B,YAAYG,GAAG,CAACD,gBAAgBrB,IAAI;gBACtC;YACF;QACF;QAEA,OAAO,CAACuB,QAAQjB,MAAMkB,SAASC;YAC7B,IAAIC,UAAUhD,iBAAiB8C,SAASC,KAAKE,IAAI,EAAEF,KAAKb,UAAU,CAACZ,IAAI;YAEvE,IAAI,CAAC0B,SAAS;gBACZ,KAAK,MAAMd,cAAcO,YAAa;oBACpCO,UAAUhD,iBAAiB8C,SAASC,KAAKE,IAAI,EAAEf;oBAC/C,IAAIc,SAAS;wBACX;oBACF;gBACF;YACF;YAEA,IAAI,AAAC,CAAA,CAACb,eAAeA,YAAYU,OAAM,KAAMG,SAAS;gBACpD/C,kBAAkB6C,SAASC,MAAMC;gBAEjC,OAAOhB,SAASa,QAAQjB,MAAMkB,SAASC;YACzC;YAEA,IAAIR,UAAU;gBACZ,OAAOA,SAASrC,cAAc;oBAAE4C;oBAASC;gBAAK,IAAIF,QAAQjB,MAAMkB,SAASC;YAC3E;YAEA,OAAOV,YAAYS,SAChBI,aAAa,CAACH,MAAMF,QACpBM,IAAI,CAAC,CAACC,SAAWpB,SAASoB,QAAQxB,MAAMkB,SAASC;QACtD;IACF;IA1HAM,YAAYC,KAAwB,CAAE;QACpC,KAAK,CAACA,OAAO/C;IACf;AAyHF;AAEAhB,cAAcgE,cAAc,CAAChD,YAAYE"}
@@ -1,15 +1,28 @@
1
+ import { GraphQLResolveInfo } from 'graphql';
1
2
  import { InterfaceRef, ObjectRef, SchemaTypes } from '@pothos/core';
3
+ import { PrismaDelegate, SelectionMap } from './types.js';
2
4
  import { SelectionState } from './util/selections.js';
5
+ interface ResolvablePromise<T> {
6
+ promise: Promise<T>;
7
+ resolve: (value: T) => void;
8
+ reject: (err: unknown) => void;
9
+ }
3
10
  export declare class ModelLoader {
4
- model: object;
11
+ context: object;
5
12
  builder: PothosSchemaTypes.SchemaBuilder<never>;
6
13
  findUnique: (model: Record<string, unknown>, ctx: {}) => unknown;
7
14
  modelName: string;
15
+ queryCache: Map<string, {
16
+ selection: SelectionState;
17
+ query: SelectionMap;
18
+ }>;
8
19
  staged: Set<{
9
- promise: Promise<Record<string, unknown>>;
10
20
  state: SelectionState;
21
+ models: Map<object, ResolvablePromise<Record<string, unknown> | null>>;
11
22
  }>;
12
- constructor(model: object, builder: PothosSchemaTypes.SchemaBuilder<never>, modelName: string, findUnique: (model: Record<string, unknown>, ctx: {}) => unknown);
23
+ delegate: PrismaDelegate;
24
+ tick: Promise<void>;
25
+ constructor(context: object, builder: PothosSchemaTypes.SchemaBuilder<never>, modelName: string, findUnique: (model: Record<string, unknown>, ctx: {}) => unknown);
13
26
  static forRef<Types extends SchemaTypes>(ref: ObjectRef<unknown> | InterfaceRef<unknown>, modelName: string, findUnique: ((model: Record<string, unknown>, ctx: {}) => unknown) | undefined, builder: PothosSchemaTypes.SchemaBuilder<Types>): import("@pothos/core").ContextCache<ModelLoader, object, [
14
27
  ]>;
15
28
  static getFindUnique(findBy: {
@@ -24,7 +37,13 @@ export declare class ModelLoader {
24
37
  static getDefaultIDSelection<Types extends SchemaTypes>(ref: ObjectRef<unknown> | InterfaceRef<unknown>, modelName: string, builder: PothosSchemaTypes.SchemaBuilder<Types>): Record<string, boolean>;
25
38
  static getCursorSelection<Types extends SchemaTypes>(ref: ObjectRef<unknown> | InterfaceRef<unknown>, modelName: string, cursor: string, builder: PothosSchemaTypes.SchemaBuilder<Types>): Record<string, boolean>;
26
39
  static getFindUniqueForField<Types extends SchemaTypes>(ref: ObjectRef<unknown> | InterfaceRef<unknown>, modelName: string, fieldName: string, builder: PothosSchemaTypes.SchemaBuilder<Types>): (model: Record<string, unknown>) => {};
27
- loadSelection(selection: SelectionState, context: object): Promise<Record<string, unknown>>;
28
- initLoad(state: SelectionState, context: {}): Promise<Record<string, unknown>>;
40
+ getSelection(info: GraphQLResolveInfo): {
41
+ selection: SelectionState;
42
+ query: SelectionMap;
43
+ };
44
+ loadSelection(info: GraphQLResolveInfo, model: object): Promise<Record<string, unknown> | null>;
45
+ stageQuery(selection: SelectionState, query: SelectionMap, model: object): Promise<Record<string, unknown> | null>;
46
+ initLoad(state: SelectionState, initialModel: {}): Promise<Record<string, unknown> | null>;
29
47
  }
48
+ export {};
30
49
  //# sourceMappingURL=model-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-loader.d.ts","sourceRoot":"","sources":["../src/model-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-loader.d.ts","sourceRoot":"","sources":["../src/model-loader.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,8 @@ function _define_property(obj, key, value) {
15
15
  import { createContextCache, PothosSchemaError } from '@pothos/core';
16
16
  import { getDelegateFromModel, getModel } from './util/datamodel.js';
17
17
  import { getClient } from './util/get-client.js';
18
+ import { cacheKey, setLoaderMappings } from './util/loader-map.js';
19
+ import { selectionStateFromInfo } from './util/map-query.js';
18
20
  import { mergeSelection, selectionCompatible, selectionToQuery } from './util/selections.js';
19
21
  export class ModelLoader {
20
22
  static forRef(ref, modelName, findUnique, builder) {
@@ -125,52 +127,105 @@ export class ModelLoader {
125
127
  }
126
128
  return this.getFindUnique(findBy);
127
129
  }
128
- async loadSelection(selection, context) {
129
- const query = selectionToQuery(selection);
130
+ getSelection(info) {
131
+ const key = cacheKey(info.parentType.name, info.path);
132
+ if (!this.queryCache.has(key)) {
133
+ const selection = selectionStateFromInfo(this.context, info);
134
+ this.queryCache.set(key, {
135
+ selection,
136
+ query: selectionToQuery(selection)
137
+ });
138
+ }
139
+ return this.queryCache.get(key);
140
+ }
141
+ async loadSelection(info, model) {
142
+ const { selection, query } = this.getSelection(info);
143
+ const result = await this.stageQuery(selection, query, model);
144
+ if (result) {
145
+ const mappings = selection.mappings[info.path.key];
146
+ if (mappings) {
147
+ setLoaderMappings(this.context, info, mappings.mappings);
148
+ }
149
+ }
150
+ return result;
151
+ }
152
+ async stageQuery(selection, query, model) {
130
153
  for (const entry of this.staged) {
131
154
  if (selectionCompatible(entry.state, query)) {
132
155
  mergeSelection(entry.state, query);
133
- return entry.promise;
156
+ if (!entry.models.has(model)) {
157
+ entry.models.set(model, createResolvablePromise());
158
+ }
159
+ return entry.models.get(model).promise;
134
160
  }
135
161
  }
136
- return this.initLoad(selection, context);
162
+ return this.initLoad(selection, model);
137
163
  }
138
- async initLoad(state, context) {
164
+ async initLoad(state, initialModel) {
165
+ const models = new Map();
166
+ const promise = createResolvablePromise();
167
+ models.set(initialModel, promise);
139
168
  const entry = {
140
- promise: Promise.resolve().then(() => {
141
- this.staged.delete(entry);
142
- const delegate = getDelegateFromModel(getClient(this.builder, context), this.modelName);
143
- if (delegate.findUniqueOrThrow) {
144
- return delegate.findUniqueOrThrow({
169
+ models,
170
+ state
171
+ };
172
+ this.staged.add(entry);
173
+ const nextTick = createResolvablePromise();
174
+ void this.tick.then(() => {
175
+ this.staged.delete(entry);
176
+ for (const [model, { resolve, reject }] of entry.models) {
177
+ if (this.delegate.findUniqueOrThrow) {
178
+ void this.delegate.findUniqueOrThrow({
145
179
  ...selectionToQuery(state),
146
180
  where: {
147
- ...this.findUnique(this.model, context)
181
+ ...this.findUnique(model, this.context)
148
182
  }
149
- });
183
+ }) // eslint-disable-next-line promise/no-nesting
184
+ .then(resolve, reject);
150
185
  }
151
- return delegate.findUnique({
152
- rejectOnNotFound: true,
153
- ...selectionToQuery(state),
154
- where: {
155
- ...this.findUnique(this.model, context)
156
- }
157
- });
158
- }),
159
- state
160
- };
161
- this.staged.add(entry);
162
- return entry.promise;
186
+ else {
187
+ void this.delegate.findUnique({
188
+ rejectOnNotFound: true,
189
+ ...selectionToQuery(state),
190
+ where: {
191
+ ...this.findUnique(model, this.context)
192
+ }
193
+ }) // eslint-disable-next-line promise/no-nesting
194
+ .then(resolve, reject);
195
+ }
196
+ }
197
+ });
198
+ setTimeout(() => void nextTick.resolve(), 0);
199
+ this.tick = nextTick.promise;
200
+ return promise.promise;
163
201
  }
164
- constructor(model, builder, modelName, findUnique) {
165
- _define_property(this, "model", void 0);
202
+ constructor(context, builder, modelName, findUnique) {
203
+ _define_property(this, "context", void 0);
166
204
  _define_property(this, "builder", void 0);
167
205
  _define_property(this, "findUnique", void 0);
168
206
  _define_property(this, "modelName", void 0);
207
+ _define_property(this, "queryCache", new Map());
169
208
  _define_property(this, "staged", new Set());
170
- this.model = model;
209
+ _define_property(this, "delegate", void 0);
210
+ _define_property(this, "tick", Promise.resolve());
211
+ this.context = context;
171
212
  this.builder = builder;
172
213
  this.findUnique = findUnique;
173
214
  this.modelName = modelName;
215
+ this.delegate = getDelegateFromModel(getClient(this.builder, this.context), this.modelName);
174
216
  }
175
217
  }
218
+ function createResolvablePromise() {
219
+ let resolveFn;
220
+ let rejectFn;
221
+ const promise = new Promise((resolve, reject) => {
222
+ resolveFn = resolve;
223
+ rejectFn = reject;
224
+ });
225
+ return {
226
+ promise,
227
+ resolve: resolveFn,
228
+ reject: rejectFn
229
+ };
230
+ }
176
231
  //# sourceMappingURL=model-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/model-loader.ts"],"names":["createContextCache","PothosSchemaError","getDelegateFromModel","getModel","getClient","mergeSelection","selectionCompatible","selectionToQuery","ModelLoader","forRef","ref","modelName","findUnique","builder","model","name","getDefaultFindUnique","getFindUnique","findBy","parent","fields","primaryKeyName","primaryKey","key","join","getDefaultFindBy","idField","find","field","isId","uniqueField","isRequired","isUnique","uniqueIndex","uniqueIndexes","idx","every","f","getDefaultIDSelection","result","getCursorSelection","cursor","index","filter","Boolean","selection","column","getFindUniqueForField","fieldName","some","loadSelection","context","query","entry","staged","state","promise","initLoad","Promise","resolve","then","delete","delegate","findUniqueOrThrow","where","rejectOnNotFound","add","constructor","Set"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/model-loader.ts"],"names":["createContextCache","PothosSchemaError","getDelegateFromModel","getModel","getClient","cacheKey","setLoaderMappings","selectionStateFromInfo","mergeSelection","selectionCompatible","selectionToQuery","ModelLoader","forRef","ref","modelName","findUnique","builder","model","name","getDefaultFindUnique","getFindUnique","findBy","parent","fields","primaryKeyName","primaryKey","key","join","getDefaultFindBy","idField","find","field","isId","uniqueField","isRequired","isUnique","uniqueIndex","uniqueIndexes","idx","every","f","getDefaultIDSelection","result","getCursorSelection","cursor","index","filter","Boolean","selection","column","getFindUniqueForField","fieldName","some","getSelection","info","parentType","path","queryCache","has","context","set","query","get","loadSelection","stageQuery","mappings","entry","staged","state","models","createResolvablePromise","promise","initLoad","initialModel","Map","add","nextTick","tick","then","delete","resolve","reject","delegate","findUniqueOrThrow","where","rejectOnNotFound","setTimeout","constructor","Set","Promise","resolveFn","rejectFn"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { GraphQLResolveInfo } from 'graphql';
2
2
  import { LoaderMappings } from '../types.js';
3
- export declare function cacheKey(type: string, path: GraphQLResolveInfo["path"], subPath: string[]): string;
3
+ export declare function cacheKey(type: string, path: GraphQLResolveInfo["path"], subPath?: string[]): string;
4
4
  export declare function setLoaderMappings(ctx: object, info: GraphQLResolveInfo, value: LoaderMappings): void;
5
5
  export declare function getLoaderMapping(ctx: object, path: GraphQLResolveInfo["path"], type: string): LoaderMappings | null;
6
6
  //# sourceMappingURL=loader-map.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader-map.d.ts","sourceRoot":"","sources":["../../src/util/loader-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI1C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAgBzF;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,QAU7F;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,yBAK3F"}
1
+ {"version":3,"file":"loader-map.d.ts","sourceRoot":"","sources":["../../src/util/loader-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI1C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,GAAE,MAAM,EAAO,UAgB9F;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,QAU7F;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,yBAK3F"}
@@ -1,6 +1,6 @@
1
1
  import { createContextCache } from '@pothos/core';
2
2
  const cache = createContextCache((ctx) => new Map());
3
- export function cacheKey(type, path, subPath) {
3
+ export function cacheKey(type, path, subPath = []) {
4
4
  let key = "";
5
5
  let current = path;
6
6
  while (current) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/util/loader-map.ts"],"names":["createContextCache","cache","ctx","Map","cacheKey","type","path","subPath","key","current","prev","entry","setLoaderMappings","info","value","Object","keys","forEach","field","map","mapping","indirectPath","set","mappings","getLoaderMapping","get"],"mappings":"AACA,SAASA,kBAAkB,QAAQ,eAAe;AAGlD,MAAMC,QAAQD,mBAAmB,CAACE,MAAQ,IAAIC;AAE9C,OAAO,SAASC,SAASC,IAAY,EAAEC,IAAgC,EAAEC,OAAiB;IACxF,IAAIC,MAAM;IACV,IAAIC,UAAkDH;IAEtD,MAAOG,QAAS;QACd,IAAI,OAAOA,QAAQD,GAAG,KAAK,UAAU;YACnCA,MAAMA,MAAM,CAAC,EAAEC,QAAQD,GAAG,CAAC,CAAC,EAAEA,IAAI,CAAC,GAAGC,QAAQD,GAAG;QACnD;QACAC,UAAUA,QAAQC,IAAI;IACxB;IAEA,KAAK,MAAMC,SAASJ,QAAS;QAC3BC,MAAM,CAAC,EAAEA,IAAI,CAAC,EAAEG,MAAM,CAAC;IACzB;IAEA,OAAO,CAAC,EAAEN,KAAK,CAAC,EAAEG,IAAI,CAAC;AACzB;AAEA,OAAO,SAASI,kBAAkBV,GAAW,EAAEW,IAAwB,EAAEC,KAAqB;IAC5FC,OAAOC,IAAI,CAACF,OAAOG,OAAO,CAAC,CAACC;QAC1B,MAAMC,MAAMlB,MAAMC;QAElB,MAAMkB,UAAUN,KAAK,CAACI,MAAM;QAC5B,MAAMX,UAAU;eAAIa,QAAQC,YAAY;YAAEH;SAAM;QAChD,MAAMV,MAAMJ,SAASgB,QAAQf,IAAI,EAAEQ,KAAKP,IAAI,EAAEC;QAE9CY,IAAIG,GAAG,CAACd,KAAKY,QAAQG,QAAQ;IAC/B;AACF;AAEA,OAAO,SAASC,iBAAiBtB,GAAW,EAAEI,IAAgC,EAAED,IAAY;IAC1F,MAAMc,MAAMlB,MAAMC;IAClB,MAAMM,MAAMJ,SAASC,MAAMC,MAAM,EAAE;QAE5Ba;IAAP,OAAOA,CAAAA,WAAAA,IAAIM,GAAG,CAACjB,kBAARW,sBAAAA,WAAgB;AACzB"}
1
+ {"version":3,"sources":["../../src/util/loader-map.ts"],"names":["createContextCache","cache","ctx","Map","cacheKey","type","path","subPath","key","current","prev","entry","setLoaderMappings","info","value","Object","keys","forEach","field","map","mapping","indirectPath","set","mappings","getLoaderMapping","get"],"mappings":"AACA,SAASA,kBAAkB,QAAQ,eAAe;AAGlD,MAAMC,QAAQD,mBAAmB,CAACE,MAAQ,IAAIC;AAE9C,OAAO,SAASC,SAASC,IAAY,EAAEC,IAAgC,EAAEC,UAAoB,EAAE;IAC7F,IAAIC,MAAM;IACV,IAAIC,UAAkDH;IAEtD,MAAOG,QAAS;QACd,IAAI,OAAOA,QAAQD,GAAG,KAAK,UAAU;YACnCA,MAAMA,MAAM,CAAC,EAAEC,QAAQD,GAAG,CAAC,CAAC,EAAEA,IAAI,CAAC,GAAGC,QAAQD,GAAG;QACnD;QACAC,UAAUA,QAAQC,IAAI;IACxB;IAEA,KAAK,MAAMC,SAASJ,QAAS;QAC3BC,MAAM,CAAC,EAAEA,IAAI,CAAC,EAAEG,MAAM,CAAC;IACzB;IAEA,OAAO,CAAC,EAAEN,KAAK,CAAC,EAAEG,IAAI,CAAC;AACzB;AAEA,OAAO,SAASI,kBAAkBV,GAAW,EAAEW,IAAwB,EAAEC,KAAqB;IAC5FC,OAAOC,IAAI,CAACF,OAAOG,OAAO,CAAC,CAACC;QAC1B,MAAMC,MAAMlB,MAAMC;QAElB,MAAMkB,UAAUN,KAAK,CAACI,MAAM;QAC5B,MAAMX,UAAU;eAAIa,QAAQC,YAAY;YAAEH;SAAM;QAChD,MAAMV,MAAMJ,SAASgB,QAAQf,IAAI,EAAEQ,KAAKP,IAAI,EAAEC;QAE9CY,IAAIG,GAAG,CAACd,KAAKY,QAAQG,QAAQ;IAC/B;AACF;AAEA,OAAO,SAASC,iBAAiBtB,GAAW,EAAEI,IAAgC,EAAED,IAAY;IAC1F,MAAMc,MAAMlB,MAAMC;IAClB,MAAMM,MAAMJ,SAASC,MAAMC,MAAM,EAAE;QAE5Ba;IAAP,OAAOA,CAAAA,WAAAA,IAAIM,GAAG,CAACjB,kBAARW,sBAAAA,WAAgB;AACzB"}
package/lib/index.js CHANGED
@@ -196,14 +196,7 @@ class PrismaPlugin extends _core.BasePlugin {
196
196
  info
197
197
  }), parent, args, context, info);
198
198
  }
199
- const selectionState = (0, _mapquery.selectionStateFromInfo)(context, info);
200
- return loaderCache(parent).loadSelection(selectionState, context).then((result)=>{
201
- const mappings = selectionState.mappings[info.path.key];
202
- if (mappings) {
203
- (0, _loadermap.setLoaderMappings)(context, info, mappings.mappings);
204
- }
205
- return resolver(result, args, context, info);
206
- });
199
+ return loaderCache(context).loadSelection(info, parent).then((result)=>resolver(result, args, context, info));
207
200
  };
208
201
  }
209
202
  constructor(cache){
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["prismaConnectionHelpers","PrismaInterfaceRef","PrismaNodeRef","PrismaObjectRef","formatPrismaCursor","getModel","getRefFromModel","parsePrismaCursor","queryFromInfo","ObjectFieldBuilder","PrismaPlugin","pluginName","InternalPrismaObjectFieldBuilder","BasePlugin","onTypeConfig","typeConfig","kind","model","extensions","pothosPrismaModel","interfaces","forEach","iface","interfaceModel","buildCache","getTypeConfig","PothosSchemaError","name","onOutputFieldConfig","fieldConfig","pothosOptions","select","pothosPrismaSelect","args","ctx","nestedQuery","wrapResolve","resolver","parentConfig","parentType","loadedCheck","pothosPrismaLoaded","loaderCache","pothosPrismaLoader","fallback","pothosPrismaFallback","parentTypes","Set","interfaceConfig","add","parent","context","info","mapping","getLoaderMapping","path","setLoaderMappings","selectionState","selectionStateFromInfo","loadSelection","then","result","mappings","key","constructor","cache","SchemaBuilder","registerPlugin"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["prismaConnectionHelpers","PrismaInterfaceRef","PrismaNodeRef","PrismaObjectRef","formatPrismaCursor","getModel","getRefFromModel","parsePrismaCursor","queryFromInfo","ObjectFieldBuilder","PrismaPlugin","pluginName","InternalPrismaObjectFieldBuilder","BasePlugin","onTypeConfig","typeConfig","kind","model","extensions","pothosPrismaModel","interfaces","forEach","iface","interfaceModel","buildCache","getTypeConfig","PothosSchemaError","name","onOutputFieldConfig","fieldConfig","pothosOptions","select","pothosPrismaSelect","args","ctx","nestedQuery","wrapResolve","resolver","parentConfig","parentType","loadedCheck","pothosPrismaLoaded","loaderCache","pothosPrismaLoader","fallback","pothosPrismaFallback","parentTypes","Set","interfaceConfig","add","parent","context","info","mapping","getLoaderMapping","path","setLoaderMappings","loadSelection","then","result","constructor","cache","SchemaBuilder","registerPlugin"],"mappings":"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"}
@@ -11,6 +11,8 @@ Object.defineProperty(exports, "ModelLoader", {
11
11
  const _core = require("@pothos/core");
12
12
  const _datamodel = require("./util/datamodel");
13
13
  const _getclient = require("./util/get-client");
14
+ const _loadermap = require("./util/loader-map");
15
+ const _mapquery = require("./util/map-query");
14
16
  const _selections = require("./util/selections");
15
17
  function _define_property(obj, key, value) {
16
18
  if (key in obj) {
@@ -129,53 +131,105 @@ class ModelLoader {
129
131
  }
130
132
  return this.getFindUnique(findBy);
131
133
  }
132
- async loadSelection(selection, context) {
133
- const query = (0, _selections.selectionToQuery)(selection);
134
+ getSelection(info) {
135
+ const key = (0, _loadermap.cacheKey)(info.parentType.name, info.path);
136
+ if (!this.queryCache.has(key)) {
137
+ const selection = (0, _mapquery.selectionStateFromInfo)(this.context, info);
138
+ this.queryCache.set(key, {
139
+ selection,
140
+ query: (0, _selections.selectionToQuery)(selection)
141
+ });
142
+ }
143
+ return this.queryCache.get(key);
144
+ }
145
+ async loadSelection(info, model) {
146
+ const { selection, query } = this.getSelection(info);
147
+ const result = await this.stageQuery(selection, query, model);
148
+ if (result) {
149
+ const mappings = selection.mappings[info.path.key];
150
+ if (mappings) {
151
+ (0, _loadermap.setLoaderMappings)(this.context, info, mappings.mappings);
152
+ }
153
+ }
154
+ return result;
155
+ }
156
+ async stageQuery(selection, query, model) {
134
157
  for (const entry of this.staged){
135
158
  if ((0, _selections.selectionCompatible)(entry.state, query)) {
136
159
  (0, _selections.mergeSelection)(entry.state, query);
137
- return entry.promise;
160
+ if (!entry.models.has(model)) {
161
+ entry.models.set(model, createResolvablePromise());
162
+ }
163
+ return entry.models.get(model).promise;
138
164
  }
139
165
  }
140
- return this.initLoad(selection, context);
166
+ return this.initLoad(selection, model);
141
167
  }
142
- async initLoad(state, context) {
168
+ async initLoad(state, initialModel) {
169
+ const models = new Map();
170
+ const promise = createResolvablePromise();
171
+ models.set(initialModel, promise);
143
172
  const entry = {
144
- promise: Promise.resolve().then(()=>{
145
- this.staged.delete(entry);
146
- const delegate = (0, _datamodel.getDelegateFromModel)((0, _getclient.getClient)(this.builder, context), this.modelName);
147
- if (delegate.findUniqueOrThrow) {
148
- return delegate.findUniqueOrThrow({
173
+ models,
174
+ state
175
+ };
176
+ this.staged.add(entry);
177
+ const nextTick = createResolvablePromise();
178
+ void this.tick.then(()=>{
179
+ this.staged.delete(entry);
180
+ for (const [model, { resolve, reject }] of entry.models){
181
+ if (this.delegate.findUniqueOrThrow) {
182
+ void this.delegate.findUniqueOrThrow({
149
183
  ...(0, _selections.selectionToQuery)(state),
150
184
  where: {
151
- ...this.findUnique(this.model, context)
185
+ ...this.findUnique(model, this.context)
152
186
  }
153
- });
187
+ })// eslint-disable-next-line promise/no-nesting
188
+ .then(resolve, reject);
189
+ } else {
190
+ void this.delegate.findUnique({
191
+ rejectOnNotFound: true,
192
+ ...(0, _selections.selectionToQuery)(state),
193
+ where: {
194
+ ...this.findUnique(model, this.context)
195
+ }
196
+ })// eslint-disable-next-line promise/no-nesting
197
+ .then(resolve, reject);
154
198
  }
155
- return delegate.findUnique({
156
- rejectOnNotFound: true,
157
- ...(0, _selections.selectionToQuery)(state),
158
- where: {
159
- ...this.findUnique(this.model, context)
160
- }
161
- });
162
- }),
163
- state
164
- };
165
- this.staged.add(entry);
166
- return entry.promise;
199
+ }
200
+ });
201
+ setTimeout(()=>void nextTick.resolve(), 0);
202
+ this.tick = nextTick.promise;
203
+ return promise.promise;
167
204
  }
168
- constructor(model, builder, modelName, findUnique){
169
- _define_property(this, "model", void 0);
205
+ constructor(context, builder, modelName, findUnique){
206
+ _define_property(this, "context", void 0);
170
207
  _define_property(this, "builder", void 0);
171
208
  _define_property(this, "findUnique", void 0);
172
209
  _define_property(this, "modelName", void 0);
210
+ _define_property(this, "queryCache", new Map());
173
211
  _define_property(this, "staged", new Set());
174
- this.model = model;
212
+ _define_property(this, "delegate", void 0);
213
+ _define_property(this, "tick", Promise.resolve());
214
+ this.context = context;
175
215
  this.builder = builder;
176
216
  this.findUnique = findUnique;
177
217
  this.modelName = modelName;
218
+ this.delegate = (0, _datamodel.getDelegateFromModel)((0, _getclient.getClient)(this.builder, this.context), this.modelName);
178
219
  }
179
220
  }
221
+ function createResolvablePromise() {
222
+ let resolveFn;
223
+ let rejectFn;
224
+ const promise = new Promise((resolve, reject)=>{
225
+ resolveFn = resolve;
226
+ rejectFn = reject;
227
+ });
228
+ return {
229
+ promise,
230
+ resolve: resolveFn,
231
+ reject: rejectFn
232
+ };
233
+ }
180
234
 
181
235
  //# sourceMappingURL=model-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/model-loader.ts"],"names":["ModelLoader","forRef","ref","modelName","findUnique","builder","createContextCache","model","PothosSchemaError","name","getDefaultFindUnique","getFindUnique","findBy","parent","fields","primaryKeyName","primaryKey","key","join","getDefaultFindBy","getModel","idField","find","field","isId","uniqueField","isRequired","isUnique","uniqueIndex","uniqueIndexes","idx","every","f","getDefaultIDSelection","result","getCursorSelection","cursor","index","filter","Boolean","selection","column","getFindUniqueForField","fieldName","some","loadSelection","context","query","selectionToQuery","entry","staged","selectionCompatible","state","mergeSelection","promise","initLoad","Promise","resolve","then","delete","delegate","getDelegateFromModel","getClient","findUniqueOrThrow","where","rejectOnNotFound","add","constructor","Set"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/model-loader.ts"],"names":["ModelLoader","forRef","ref","modelName","findUnique","builder","createContextCache","model","PothosSchemaError","name","getDefaultFindUnique","getFindUnique","findBy","parent","fields","primaryKeyName","primaryKey","key","join","getDefaultFindBy","getModel","idField","find","field","isId","uniqueField","isRequired","isUnique","uniqueIndex","uniqueIndexes","idx","every","f","getDefaultIDSelection","result","getCursorSelection","cursor","index","filter","Boolean","selection","column","getFindUniqueForField","fieldName","some","getSelection","info","cacheKey","parentType","path","queryCache","has","selectionStateFromInfo","context","set","query","selectionToQuery","get","loadSelection","stageQuery","mappings","setLoaderMappings","entry","staged","selectionCompatible","state","mergeSelection","models","createResolvablePromise","promise","initLoad","initialModel","Map","add","nextTick","tick","then","delete","resolve","reject","delegate","findUniqueOrThrow","where","rejectOnNotFound","setTimeout","constructor","Set","Promise","getDelegateFromModel","getClient","resolveFn","rejectFn"],"mappings":"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"}
@@ -21,7 +21,7 @@ _export(exports, {
21
21
  });
22
22
  const _core = require("@pothos/core");
23
23
  const cache = (0, _core.createContextCache)((ctx)=>new Map());
24
- function cacheKey(type, path, subPath) {
24
+ function cacheKey(type, path, subPath = []) {
25
25
  let key = '';
26
26
  let current = path;
27
27
  while(current){
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/util/loader-map.ts"],"names":["cacheKey","setLoaderMappings","getLoaderMapping","cache","createContextCache","ctx","Map","type","path","subPath","key","current","prev","entry","info","value","Object","keys","forEach","field","map","mapping","indirectPath","set","mappings","get"],"mappings":";;;;;;;;;;;IAMgBA,QAAQ;eAARA;;IAkBAC,iBAAiB;eAAjBA;;IAYAC,gBAAgB;eAAhBA;;;sBAnCmB;AAGnC,MAAMC,QAAQC,IAAAA,wBAAkB,EAAC,CAACC,MAAQ,IAAIC;AAEvC,SAASN,SAASO,IAAY,EAAEC,IAAgC,EAAEC,OAAiB;IACxF,IAAIC,MAAM;IACV,IAAIC,UAAkDH;IAEtD,MAAOG,QAAS;QACd,IAAI,OAAOA,QAAQD,GAAG,KAAK,UAAU;YACnCA,MAAMA,MAAM,CAAC,EAAEC,QAAQD,GAAG,CAAC,CAAC,EAAEA,IAAI,CAAC,GAAGC,QAAQD,GAAG;QACnD;QACAC,UAAUA,QAAQC,IAAI;IACxB;IAEA,KAAK,MAAMC,SAASJ,QAAS;QAC3BC,MAAM,CAAC,EAAEA,IAAI,CAAC,EAAEG,MAAM,CAAC;IACzB;IAEA,OAAO,CAAC,EAAEN,KAAK,CAAC,EAAEG,IAAI,CAAC;AACzB;AAEO,SAAST,kBAAkBI,GAAW,EAAES,IAAwB,EAAEC,KAAqB;IAC5FC,OAAOC,IAAI,CAACF,OAAOG,OAAO,CAAC,CAACC;QAC1B,MAAMC,MAAMjB,MAAME;QAElB,MAAMgB,UAAUN,KAAK,CAACI,MAAM;QAC5B,MAAMV,UAAU;eAAIY,QAAQC,YAAY;YAAEH;SAAM;QAChD,MAAMT,MAAMV,SAASqB,QAAQd,IAAI,EAAEO,KAAKN,IAAI,EAAEC;QAE9CW,IAAIG,GAAG,CAACb,KAAKW,QAAQG,QAAQ;IAC/B;AACF;AAEO,SAAStB,iBAAiBG,GAAW,EAAEG,IAAgC,EAAED,IAAY;IAC1F,MAAMa,MAAMjB,MAAME;IAClB,MAAMK,MAAMV,SAASO,MAAMC,MAAM,EAAE;QAE5BY;IAAP,OAAOA,CAAAA,WAAAA,IAAIK,GAAG,CAACf,kBAARU,sBAAAA,WAAgB;AACzB"}
1
+ {"version":3,"sources":["../../src/util/loader-map.ts"],"names":["cacheKey","setLoaderMappings","getLoaderMapping","cache","createContextCache","ctx","Map","type","path","subPath","key","current","prev","entry","info","value","Object","keys","forEach","field","map","mapping","indirectPath","set","mappings","get"],"mappings":";;;;;;;;;;;IAMgBA,QAAQ;eAARA;;IAkBAC,iBAAiB;eAAjBA;;IAYAC,gBAAgB;eAAhBA;;;sBAnCmB;AAGnC,MAAMC,QAAQC,IAAAA,wBAAkB,EAAC,CAACC,MAAQ,IAAIC;AAEvC,SAASN,SAASO,IAAY,EAAEC,IAAgC,EAAEC,UAAoB,EAAE;IAC7F,IAAIC,MAAM;IACV,IAAIC,UAAkDH;IAEtD,MAAOG,QAAS;QACd,IAAI,OAAOA,QAAQD,GAAG,KAAK,UAAU;YACnCA,MAAMA,MAAM,CAAC,EAAEC,QAAQD,GAAG,CAAC,CAAC,EAAEA,IAAI,CAAC,GAAGC,QAAQD,GAAG;QACnD;QACAC,UAAUA,QAAQC,IAAI;IACxB;IAEA,KAAK,MAAMC,SAASJ,QAAS;QAC3BC,MAAM,CAAC,EAAEA,IAAI,CAAC,EAAEG,MAAM,CAAC;IACzB;IAEA,OAAO,CAAC,EAAEN,KAAK,CAAC,EAAEG,IAAI,CAAC;AACzB;AAEO,SAAST,kBAAkBI,GAAW,EAAES,IAAwB,EAAEC,KAAqB;IAC5FC,OAAOC,IAAI,CAACF,OAAOG,OAAO,CAAC,CAACC;QAC1B,MAAMC,MAAMjB,MAAME;QAElB,MAAMgB,UAAUN,KAAK,CAACI,MAAM;QAC5B,MAAMV,UAAU;eAAIY,QAAQC,YAAY;YAAEH;SAAM;QAChD,MAAMT,MAAMV,SAASqB,QAAQd,IAAI,EAAEO,KAAKN,IAAI,EAAEC;QAE9CW,IAAIG,GAAG,CAACb,KAAKW,QAAQG,QAAQ;IAC/B;AACF;AAEO,SAAStB,iBAAiBG,GAAW,EAAEG,IAAgC,EAAED,IAAY;IAC1F,MAAMa,MAAMjB,MAAME;IAClB,MAAMK,MAAMV,SAASO,MAAMC,MAAM,EAAE;QAE5BY;IAAP,OAAOA,CAAAA,WAAAA,IAAIK,GAAG,CAACf,kBAARU,sBAAAA,WAAgB;AACzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pothos/plugin-prisma",
3
- "version": "3.58.0",
3
+ "version": "3.59.0",
4
4
  "description": "A Pothos plugin for more efficient integration with prisma",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./dts/index.d.ts",
@@ -69,7 +69,7 @@
69
69
  "graphql-scalars": "^1.22.2",
70
70
  "graphql-tag": "^2.12.6",
71
71
  "prisma": "^5.0.0",
72
- "@pothos/core": "3.33.0",
72
+ "@pothos/core": "3.33.1",
73
73
  "@pothos/plugin-complexity": "3.13.0",
74
74
  "@pothos/plugin-errors": "3.11.1",
75
75
  "@pothos/plugin-relay": "3.43.1",
package/src/index.ts CHANGED
@@ -16,7 +16,7 @@ import { PrismaModelTypes } from './types';
16
16
  import { formatPrismaCursor, parsePrismaCursor } from './util/cursors';
17
17
  import { getModel, getRefFromModel } from './util/datamodel';
18
18
  import { getLoaderMapping, setLoaderMappings } from './util/loader-map';
19
- import { queryFromInfo, selectionStateFromInfo } from './util/map-query';
19
+ import { queryFromInfo } from './util/map-query';
20
20
 
21
21
  export { prismaConnectionHelpers } from './connection-helpers';
22
22
  export { PrismaInterfaceRef } from './interface-ref';
@@ -164,19 +164,9 @@ export class PrismaPlugin<Types extends SchemaTypes> extends BasePlugin<Types> {
164
164
  return fallback(queryFromInfo({ context, info }), parent, args, context, info);
165
165
  }
166
166
 
167
- const selectionState = selectionStateFromInfo(context, info);
168
-
169
- return loaderCache(parent)
170
- .loadSelection(selectionState, context)
171
- .then((result) => {
172
- const mappings = selectionState.mappings[info.path.key];
173
-
174
- if (mappings) {
175
- setLoaderMappings(context, info, mappings.mappings);
176
- }
177
-
178
- return resolver(result, args, context, info);
179
- });
167
+ return loaderCache(context)
168
+ .loadSelection(info, parent as object)
169
+ .then((result) => resolver(result, args, context, info));
180
170
  };
181
171
  }
182
172
  }
@@ -1,3 +1,4 @@
1
+ import { GraphQLResolveInfo } from 'graphql';
1
2
  import {
2
3
  createContextCache,
3
4
  InterfaceRef,
@@ -5,8 +6,11 @@ import {
5
6
  PothosSchemaError,
6
7
  SchemaTypes,
7
8
  } from '@pothos/core';
9
+ import { PrismaDelegate, SelectionMap } from './types';
8
10
  import { getDelegateFromModel, getModel } from './util/datamodel';
9
11
  import { getClient } from './util/get-client';
12
+ import { cacheKey, setLoaderMappings } from './util/loader-map';
13
+ import { selectionStateFromInfo } from './util/map-query';
10
14
  import {
11
15
  mergeSelection,
12
16
  selectionCompatible,
@@ -14,27 +18,38 @@ import {
14
18
  selectionToQuery,
15
19
  } from './util/selections';
16
20
 
21
+ interface ResolvablePromise<T> {
22
+ promise: Promise<T>;
23
+ resolve: (value: T) => void;
24
+ reject: (err: unknown) => void;
25
+ }
17
26
  export class ModelLoader {
18
- model: object;
27
+ context: object;
19
28
  builder: PothosSchemaTypes.SchemaBuilder<never>;
20
29
  findUnique: (model: Record<string, unknown>, ctx: {}) => unknown;
21
30
  modelName: string;
22
-
31
+ queryCache = new Map<string, { selection: SelectionState; query: SelectionMap }>();
23
32
  staged = new Set<{
24
- promise: Promise<Record<string, unknown>>;
25
33
  state: SelectionState;
34
+ models: Map<object, ResolvablePromise<Record<string, unknown> | null>>;
26
35
  }>();
36
+ delegate: PrismaDelegate;
37
+ tick = Promise.resolve();
27
38
 
28
39
  constructor(
29
- model: object,
40
+ context: object,
30
41
  builder: PothosSchemaTypes.SchemaBuilder<never>,
31
42
  modelName: string,
32
43
  findUnique: (model: Record<string, unknown>, ctx: {}) => unknown,
33
44
  ) {
34
- this.model = model;
45
+ this.context = context;
35
46
  this.builder = builder;
36
47
  this.findUnique = findUnique;
37
48
  this.modelName = modelName;
49
+ this.delegate = getDelegateFromModel(
50
+ getClient(this.builder, this.context as never),
51
+ this.modelName,
52
+ );
38
53
  }
39
54
 
40
55
  static forRef<Types extends SchemaTypes>(
@@ -217,48 +232,103 @@ export class ModelLoader {
217
232
  return this.getFindUnique(findBy);
218
233
  }
219
234
 
220
- async loadSelection(selection: SelectionState, context: object) {
221
- const query = selectionToQuery(selection);
235
+ getSelection(info: GraphQLResolveInfo) {
236
+ const key = cacheKey(info.parentType.name, info.path);
237
+ if (!this.queryCache.has(key)) {
238
+ const selection = selectionStateFromInfo(this.context, info);
239
+ this.queryCache.set(key, {
240
+ selection,
241
+ query: selectionToQuery(selection),
242
+ });
243
+ }
244
+
245
+ return this.queryCache.get(key)!;
246
+ }
247
+
248
+ async loadSelection(info: GraphQLResolveInfo, model: object) {
249
+ const { selection, query } = this.getSelection(info);
222
250
 
251
+ const result = await this.stageQuery(selection, query, model);
252
+
253
+ if (result) {
254
+ const mappings = selection.mappings[info.path.key];
255
+
256
+ if (mappings) {
257
+ setLoaderMappings(this.context, info, mappings.mappings);
258
+ }
259
+ }
260
+
261
+ return result;
262
+ }
263
+
264
+ async stageQuery(selection: SelectionState, query: SelectionMap, model: object) {
223
265
  for (const entry of this.staged) {
224
266
  if (selectionCompatible(entry.state, query)) {
225
267
  mergeSelection(entry.state, query);
226
268
 
227
- return entry.promise;
269
+ if (!entry.models.has(model)) {
270
+ entry.models.set(model, createResolvablePromise<Record<string, unknown> | null>());
271
+ }
272
+
273
+ return entry.models.get(model)!.promise;
228
274
  }
229
275
  }
230
276
 
231
- return this.initLoad(selection, context);
277
+ return this.initLoad(selection, model);
232
278
  }
233
279
 
234
- async initLoad(state: SelectionState, context: {}) {
235
- const entry = {
236
- promise: Promise.resolve().then(() => {
237
- this.staged.delete(entry);
238
-
239
- const delegate = getDelegateFromModel(
240
- getClient(this.builder, context as never),
241
- this.modelName,
242
- );
243
-
244
- if (delegate.findUniqueOrThrow) {
245
- return delegate.findUniqueOrThrow({
246
- ...selectionToQuery(state),
247
- where: { ...(this.findUnique(this.model as Record<string, unknown>, context) as {}) },
248
- } as never) as Promise<Record<string, unknown>>;
249
- }
280
+ async initLoad(state: SelectionState, initialModel: {}) {
281
+ const models = new Map<object, ResolvablePromise<Record<string, unknown> | null>>();
282
+
283
+ const promise = createResolvablePromise<Record<string, unknown> | null>();
284
+ models.set(initialModel, promise);
250
285
 
251
- return delegate.findUnique({
252
- rejectOnNotFound: true,
253
- ...selectionToQuery(state),
254
- where: { ...(this.findUnique(this.model as Record<string, unknown>, context) as {}) },
255
- } as never) as Promise<Record<string, unknown>>;
256
- }),
286
+ const entry = {
287
+ models,
257
288
  state,
258
289
  };
259
290
 
260
291
  this.staged.add(entry);
261
292
 
262
- return entry.promise;
293
+ const nextTick = createResolvablePromise<void>();
294
+ void this.tick.then(() => {
295
+ this.staged.delete(entry);
296
+
297
+ for (const [model, { resolve, reject }] of entry.models) {
298
+ if (this.delegate.findUniqueOrThrow) {
299
+ void this.delegate
300
+ .findUniqueOrThrow({
301
+ ...selectionToQuery(state),
302
+ where: { ...(this.findUnique(model as Record<string, unknown>, this.context) as {}) },
303
+ } as never)
304
+ // eslint-disable-next-line promise/no-nesting
305
+ .then(resolve as () => {}, reject);
306
+ } else {
307
+ void this.delegate
308
+ .findUnique({
309
+ rejectOnNotFound: true,
310
+ ...selectionToQuery(state),
311
+ where: { ...(this.findUnique(model as Record<string, unknown>, this.context) as {}) },
312
+ } as never)
313
+ // eslint-disable-next-line promise/no-nesting
314
+ .then(resolve as () => {}, reject);
315
+ }
316
+ }
317
+ });
318
+ setTimeout(() => void nextTick.resolve(), 0);
319
+ this.tick = nextTick.promise;
320
+
321
+ return promise.promise;
263
322
  }
264
323
  }
324
+
325
+ function createResolvablePromise<T = unknown>(): ResolvablePromise<T> {
326
+ let resolveFn!: (value: T) => void;
327
+ let rejectFn!: (reason?: unknown) => void;
328
+ const promise = new Promise<T>((resolve, reject) => {
329
+ resolveFn = resolve;
330
+ rejectFn = reject;
331
+ });
332
+
333
+ return { promise, resolve: resolveFn, reject: rejectFn };
334
+ }
@@ -4,7 +4,7 @@ import { LoaderMappings } from '../types';
4
4
 
5
5
  const cache = createContextCache((ctx) => new Map<string, LoaderMappings>());
6
6
 
7
- export function cacheKey(type: string, path: GraphQLResolveInfo['path'], subPath: string[]) {
7
+ export function cacheKey(type: string, path: GraphQLResolveInfo['path'], subPath: string[] = []) {
8
8
  let key = '';
9
9
  let current: GraphQLResolveInfo['path'] | undefined = path;
10
10