@@ -7,7 +7,9 @@ import { promiseWithResolvers } from '../jsutils/promiseWithResolvers.js';
77import type { GraphQLError } from '../error/GraphQLError.js' ;
88
99import type { DeferUsage } from './collectFields.js' ;
10+ import { DeferredFragmentFactory } from './DeferredFragmentFactory.js' ;
1011import type {
12+ DeferredFragmentRecord ,
1113 DeliveryGroup ,
1214 IncrementalDataRecord ,
1315 IncrementalDataRecordResult ,
@@ -16,72 +18,7 @@ import type {
1618 StreamRecord ,
1719 SuccessfulExecutionGroup ,
1820} from './types.js' ;
19- import {
20- DeferredFragmentRecord ,
21- isDeferredFragmentRecord ,
22- isPendingExecutionGroup ,
23- } from './types.js' ;
24-
25- /**
26- * @internal
27- */
28- class DeferredFragmentFactory {
29- private _rootDeferredFragments = new Map <
30- DeferUsage ,
31- DeferredFragmentRecord
32- > ( ) ;
33-
34- get ( deferUsage : DeferUsage , path : Path | undefined ) : DeferredFragmentRecord {
35- const deferUsagePath = this . _pathAtDepth ( path , deferUsage . depth ) ;
36- let deferredFragmentRecords :
37- | Map < DeferUsage , DeferredFragmentRecord >
38- | undefined ;
39- if ( deferUsagePath === undefined ) {
40- deferredFragmentRecords = this . _rootDeferredFragments ;
41- } else {
42- deferredFragmentRecords = (
43- deferUsagePath as unknown as {
44- deferredFragmentRecords : Map < DeferUsage , DeferredFragmentRecord > ;
45- }
46- ) . deferredFragmentRecords ;
47- if ( deferredFragmentRecords === undefined ) {
48- deferredFragmentRecords = new Map ( ) ;
49- (
50- deferUsagePath as unknown as {
51- deferredFragmentRecords : Map < DeferUsage , DeferredFragmentRecord > ;
52- }
53- ) . deferredFragmentRecords = deferredFragmentRecords ;
54- }
55- }
56- let deferredFragmentRecord = deferredFragmentRecords . get ( deferUsage ) ;
57- if ( deferredFragmentRecord === undefined ) {
58- const { label, parentDeferUsage } = deferUsage ;
59- deferredFragmentRecord = new DeferredFragmentRecord (
60- deferUsagePath ,
61- label ,
62- parentDeferUsage ,
63- ) ;
64- deferredFragmentRecords . set ( deferUsage , deferredFragmentRecord ) ;
65- }
66- return deferredFragmentRecord ;
67- }
68-
69- private _pathAtDepth (
70- path : Path | undefined ,
71- depth : number ,
72- ) : Path | undefined {
73- if ( depth === 0 ) {
74- return ;
75- }
76- const stack : Array < Path > = [ ] ;
77- let currentPath = path ;
78- while ( currentPath !== undefined ) {
79- stack . unshift ( currentPath ) ;
80- currentPath = currentPath . prev ;
81- }
82- return stack [ depth - 1 ] ;
83- }
84- }
21+ import { isDeferredFragmentRecord , isPendingExecutionGroup } from './types.js' ;
8522
8623/**
8724 * @internal
0 commit comments