@@ -7,7 +7,9 @@ import { promiseWithResolvers } from '../jsutils/promiseWithResolvers.js';
7
7
import type { GraphQLError } from '../error/GraphQLError.js' ;
8
8
9
9
import type { DeferUsage } from './collectFields.js' ;
10
+ import { DeferredFragmentFactory } from './DeferredFragmentFactory.js' ;
10
11
import type {
12
+ DeferredFragmentRecord ,
11
13
DeliveryGroup ,
12
14
IncrementalDataRecord ,
13
15
IncrementalDataRecordResult ,
@@ -16,72 +18,7 @@ import type {
16
18
StreamRecord ,
17
19
SuccessfulExecutionGroup ,
18
20
} 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' ;
85
22
86
23
/**
87
24
* @internal
0 commit comments