relay-runtime 0.0.0-main-e0f88a3b → 0.0.0-main-2087b512

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 (124) hide show
  1. package/handlers/RelayDefaultHandlerProvider.js.flow +2 -3
  2. package/handlers/connection/ConnectionHandler.js.flow +8 -10
  3. package/handlers/connection/MutationHandlers.js.flow +7 -8
  4. package/index.js +1 -1
  5. package/index.js.flow +29 -31
  6. package/lib/handlers/connection/ConnectionHandler.js +7 -7
  7. package/lib/index.js +45 -45
  8. package/lib/multi-actor-environment/ActorSpecificEnvironment.js +4 -4
  9. package/lib/multi-actor-environment/MultiActorEnvironment.js +8 -8
  10. package/lib/multi-actor-environment/index.js +2 -2
  11. package/lib/mutations/RelayRecordProxy.js +3 -2
  12. package/lib/mutations/RelayRecordSourceMutator.js +3 -2
  13. package/lib/mutations/RelayRecordSourceProxy.js +5 -4
  14. package/lib/mutations/RelayRecordSourceSelectorProxy.js +5 -4
  15. package/lib/mutations/applyOptimisticMutation.js +6 -6
  16. package/lib/mutations/commitMutation.js +10 -10
  17. package/lib/mutations/validateMutation.js +6 -6
  18. package/lib/network/ConvertToExecuteFunction.js +2 -1
  19. package/lib/network/RelayNetwork.js +3 -2
  20. package/lib/network/RelayQueryResponseCache.js +2 -2
  21. package/lib/network/wrapNetworkWithLogObserver.js +2 -1
  22. package/lib/query/GraphQLTag.js +2 -1
  23. package/lib/query/fetchQuery.js +6 -5
  24. package/lib/query/fetchQuery_DEPRECATED.js +2 -1
  25. package/lib/store/ClientID.js +4 -4
  26. package/lib/store/DataChecker.js +15 -15
  27. package/lib/store/OperationExecutor.js +13 -13
  28. package/lib/store/RelayConcreteVariables.js +3 -2
  29. package/lib/store/RelayModernEnvironment.js +11 -11
  30. package/lib/store/RelayModernFragmentSpecResolver.js +8 -8
  31. package/lib/store/RelayModernOperationDescriptor.js +2 -1
  32. package/lib/store/RelayModernRecord.js +12 -11
  33. package/lib/store/RelayModernSelector.js +7 -6
  34. package/lib/store/RelayModernStore.js +13 -13
  35. package/lib/store/RelayPublishQueue.js +4 -4
  36. package/lib/store/RelayReader.js +12 -12
  37. package/lib/store/RelayReferenceMarker.js +9 -9
  38. package/lib/store/RelayResponseNormalizer.js +19 -19
  39. package/lib/store/RelayStoreReactFlightUtils.js +3 -3
  40. package/lib/store/RelayStoreSubscriptions.js +4 -4
  41. package/lib/store/RelayStoreUtils.js +3 -3
  42. package/lib/store/ResolverCache.js +6 -6
  43. package/lib/store/ResolverFragments.js +6 -2
  44. package/lib/store/cloneRelayHandleSourceField.js +5 -4
  45. package/lib/store/cloneRelayScalarHandleSourceField.js +5 -4
  46. package/lib/store/createRelayContext.js +3 -1
  47. package/lib/store/readInlineData.js +6 -2
  48. package/lib/subscription/requestSubscription.js +4 -4
  49. package/lib/util/RelayFeatureFlags.js +1 -0
  50. package/lib/util/StringInterner.js +57 -0
  51. package/lib/util/getFragmentIdentifier.js +10 -10
  52. package/lib/util/getOperation.js +2 -1
  53. package/lib/util/getRelayHandleKey.js +2 -2
  54. package/lib/util/getRequestIdentifier.js +2 -2
  55. package/multi-actor-environment/ActorSpecificEnvironment.js.flow +14 -15
  56. package/multi-actor-environment/ActorUtils.js.flow +2 -2
  57. package/multi-actor-environment/MultiActorEnvironment.js.flow +9 -10
  58. package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +4 -4
  59. package/multi-actor-environment/index.js.flow +1 -2
  60. package/mutations/RelayDeclarativeMutationConfig.js.flow +3 -4
  61. package/mutations/RelayRecordProxy.js.flow +4 -5
  62. package/mutations/RelayRecordSourceMutator.js.flow +4 -6
  63. package/mutations/RelayRecordSourceProxy.js.flow +7 -9
  64. package/mutations/RelayRecordSourceSelectorProxy.js.flow +3 -4
  65. package/mutations/applyOptimisticMutation.js.flow +8 -10
  66. package/mutations/commitLocalUpdate.js.flow +1 -1
  67. package/mutations/commitMutation.js.flow +12 -19
  68. package/mutations/validateMutation.js.flow +14 -16
  69. package/network/ConvertToExecuteFunction.js.flow +2 -2
  70. package/network/RelayNetwork.js.flow +4 -5
  71. package/network/RelayQueryResponseCache.js.flow +3 -3
  72. package/network/wrapNetworkWithLogObserver.js.flow +3 -3
  73. package/package.json +1 -1
  74. package/query/GraphQLTag.js.flow +6 -7
  75. package/query/fetchQuery.js.flow +9 -11
  76. package/query/fetchQueryInternal.js.flow +4 -5
  77. package/query/fetchQuery_DEPRECATED.js.flow +4 -4
  78. package/relay-runtime.js +2 -2
  79. package/relay-runtime.min.js +2 -2
  80. package/store/ClientID.js.flow +8 -6
  81. package/store/DataChecker.js.flow +16 -18
  82. package/store/OperationExecutor.js.flow +24 -26
  83. package/store/RelayConcreteVariables.js.flow +4 -5
  84. package/store/RelayModernEnvironment.js.flow +17 -19
  85. package/store/RelayModernFragmentSpecResolver.js.flow +16 -18
  86. package/store/RelayModernOperationDescriptor.js.flow +10 -11
  87. package/store/RelayModernRecord.js.flow +19 -12
  88. package/store/RelayModernSelector.js.flow +11 -12
  89. package/store/RelayModernStore.js.flow +21 -23
  90. package/store/RelayOperationTracker.js.flow +2 -2
  91. package/store/RelayOptimisticRecordSource.js.flow +2 -2
  92. package/store/RelayPublishQueue.js.flow +8 -9
  93. package/store/RelayReader.js.flow +33 -35
  94. package/store/RelayRecordSource.js.flow +2 -2
  95. package/store/RelayReferenceMarker.js.flow +12 -14
  96. package/store/RelayResponseNormalizer.js.flow +36 -38
  97. package/store/RelayStoreReactFlightUtils.js.flow +3 -4
  98. package/store/RelayStoreSubscriptions.js.flow +7 -8
  99. package/store/RelayStoreTypes.js.flow +9 -3
  100. package/store/RelayStoreUtils.js.flow +7 -8
  101. package/store/ResolverCache.js.flow +11 -13
  102. package/store/ResolverFragments.js.flow +4 -5
  103. package/store/ViewerPattern.js.flow +2 -2
  104. package/store/cloneRelayHandleSourceField.js.flow +5 -6
  105. package/store/cloneRelayScalarHandleSourceField.js.flow +5 -6
  106. package/store/createFragmentSpecResolver.js.flow +3 -4
  107. package/store/createRelayContext.js.flow +2 -2
  108. package/store/normalizeRelayPayload.js.flow +6 -7
  109. package/store/readInlineData.js.flow +3 -4
  110. package/subscription/requestSubscription.js.flow +9 -11
  111. package/util/RelayFeatureFlags.js.flow +2 -0
  112. package/util/RelayReplaySubject.js.flow +2 -3
  113. package/util/StringInterner.js.flow +57 -0
  114. package/util/createPayloadFor3DField.js.flow +3 -3
  115. package/util/getFragmentIdentifier.js.flow +14 -10
  116. package/util/getOperation.js.flow +2 -2
  117. package/util/getPaginationMetadata.js.flow +3 -3
  118. package/util/getPaginationVariables.js.flow +3 -3
  119. package/util/getPendingOperationsForFragment.js.flow +2 -2
  120. package/util/getRefetchMetadata.js.flow +2 -2
  121. package/util/getRelayHandleKey.js.flow +1 -2
  122. package/util/getRequestIdentifier.js.flow +3 -3
  123. package/lib/util/shortString.js +0 -63
  124. package/util/shortString.js.flow +0 -62
@@ -12,8 +12,6 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const RelayRecordState = require('./RelayRecordState');
16
-
17
15
  import type {DataID} from '../util/RelayRuntimeTypes';
18
16
  import type {RecordState} from './RelayRecordState';
19
17
  import type {
@@ -22,6 +20,8 @@ import type {
22
20
  RecordObjectMap,
23
21
  } from './RelayStoreTypes';
24
22
 
23
+ const RelayRecordState = require('./RelayRecordState');
24
+
25
25
  const {EXISTENT, NONEXISTENT, UNKNOWN} = RelayRecordState;
26
26
 
27
27
  /**
@@ -12,19 +12,6 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const RelayConcreteNode = require('../util/RelayConcreteNode');
16
- const RelayFeatureFlags = require('../util/RelayFeatureFlags');
17
- const RelayModernRecord = require('./RelayModernRecord');
18
- const RelayStoreReactFlightUtils = require('./RelayStoreReactFlightUtils');
19
- const RelayStoreUtils = require('./RelayStoreUtils');
20
-
21
- const cloneRelayHandleSourceField = require('./cloneRelayHandleSourceField');
22
- const getOperation = require('../util/getOperation');
23
- const invariant = require('invariant');
24
-
25
- const {getLocalVariables} = require('./RelayConcreteVariables');
26
- const {generateTypeID} = require('./TypeID');
27
-
28
15
  import type {
29
16
  NormalizationFlightField,
30
17
  NormalizationLinkedField,
@@ -37,11 +24,22 @@ import type {
37
24
  DataIDSet,
38
25
  NormalizationSelector,
39
26
  OperationLoader,
27
+ ReactFlightReachableExecutableDefinitions,
40
28
  Record,
41
29
  RecordSource,
42
- ReactFlightReachableExecutableDefinitions,
43
30
  } from './RelayStoreTypes';
44
31
 
32
+ const getOperation = require('../util/getOperation');
33
+ const RelayConcreteNode = require('../util/RelayConcreteNode');
34
+ const RelayFeatureFlags = require('../util/RelayFeatureFlags');
35
+ const cloneRelayHandleSourceField = require('./cloneRelayHandleSourceField');
36
+ const {getLocalVariables} = require('./RelayConcreteVariables');
37
+ const RelayModernRecord = require('./RelayModernRecord');
38
+ const RelayStoreReactFlightUtils = require('./RelayStoreReactFlightUtils');
39
+ const RelayStoreUtils = require('./RelayStoreUtils');
40
+ const {generateTypeID} = require('./TypeID');
41
+ const invariant = require('invariant');
42
+
45
43
  const {
46
44
  ACTOR_CHANGE,
47
45
  CONDITION,
@@ -12,12 +12,31 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const RelayFeatureFlags = require('../util/RelayFeatureFlags');
16
- const RelayModernRecord = require('./RelayModernRecord');
17
-
18
- const areEqual = require('areEqual');
19
- const invariant = require('invariant');
20
- const warning = require('warning');
15
+ import type {ActorIdentifier} from '../multi-actor-environment/ActorIdentifier';
16
+ import type {PayloadData} from '../network/RelayNetworkTypes';
17
+ import type {
18
+ NormalizationActorChange,
19
+ NormalizationDefer,
20
+ NormalizationFlightField,
21
+ NormalizationLinkedField,
22
+ NormalizationModuleImport,
23
+ NormalizationNode,
24
+ NormalizationScalarField,
25
+ NormalizationStream,
26
+ } from '../util/NormalizationNode';
27
+ import type {DataID, Variables} from '../util/RelayRuntimeTypes';
28
+ import type {
29
+ FollowupPayload,
30
+ HandleFieldPayload,
31
+ IncrementalDataPlaceholder,
32
+ MutableRecordSource,
33
+ NormalizationSelector,
34
+ ReactFlightPayloadDeserializer,
35
+ ReactFlightReachableExecutableDefinitions,
36
+ ReactFlightServerErrorHandler,
37
+ Record,
38
+ RelayResponsePayload,
39
+ } from './RelayStoreTypes';
21
40
 
22
41
  const {
23
42
  ACTOR_IDENTIFIER_FIELD_NAME,
@@ -25,9 +44,9 @@ const {
25
44
  } = require('../multi-actor-environment/ActorUtils');
26
45
  const {
27
46
  ACTOR_CHANGE,
28
- CONDITION,
29
47
  CLIENT_COMPONENT,
30
48
  CLIENT_EXTENSION,
49
+ CONDITION,
31
50
  DEFER,
32
51
  FLIGHT_FIELD,
33
52
  FRAGMENT_SPREAD,
@@ -40,52 +59,31 @@ const {
40
59
  STREAM,
41
60
  TYPE_DISCRIMINATOR,
42
61
  } = require('../util/RelayConcreteNode');
62
+ const RelayFeatureFlags = require('../util/RelayFeatureFlags');
43
63
  const {generateClientID, isClientID} = require('./ClientID');
44
64
  const {getLocalVariables} = require('./RelayConcreteVariables');
65
+ const RelayModernRecord = require('./RelayModernRecord');
45
66
  const {createNormalizationSelector} = require('./RelayModernSelector');
46
67
  const {
47
- refineToReactFlightPayloadData,
48
68
  REACT_FLIGHT_EXECUTABLE_DEFINITIONS_STORAGE_KEY,
49
69
  REACT_FLIGHT_TREE_STORAGE_KEY,
50
70
  REACT_FLIGHT_TYPE_NAME,
71
+ refineToReactFlightPayloadData,
51
72
  } = require('./RelayStoreReactFlightUtils');
52
73
  const {
74
+ ROOT_ID,
75
+ ROOT_TYPE,
76
+ TYPENAME_KEY,
53
77
  getArgumentValues,
54
78
  getHandleStorageKey,
55
79
  getModuleComponentKey,
56
80
  getModuleOperationKey,
57
81
  getStorageKey,
58
- TYPENAME_KEY,
59
- ROOT_ID,
60
- ROOT_TYPE,
61
82
  } = require('./RelayStoreUtils');
62
- const {generateTypeID, TYPE_SCHEMA_TYPE} = require('./TypeID');
63
-
64
- import type {ActorIdentifier} from '../multi-actor-environment/ActorIdentifier';
65
- import type {PayloadData} from '../network/RelayNetworkTypes';
66
- import type {
67
- NormalizationActorChange,
68
- NormalizationDefer,
69
- NormalizationFlightField,
70
- NormalizationLinkedField,
71
- NormalizationModuleImport,
72
- NormalizationNode,
73
- NormalizationScalarField,
74
- NormalizationStream,
75
- } from '../util/NormalizationNode';
76
- import type {DataID, Variables} from '../util/RelayRuntimeTypes';
77
- import type {
78
- FollowupPayload,
79
- HandleFieldPayload,
80
- IncrementalDataPlaceholder,
81
- MutableRecordSource,
82
- NormalizationSelector,
83
- ReactFlightPayloadDeserializer,
84
- ReactFlightReachableExecutableDefinitions,
85
- ReactFlightServerErrorHandler,
86
- Record,
87
- RelayResponsePayload,
88
- } from './RelayStoreTypes';
83
+ const {TYPE_SCHEMA_TYPE, generateTypeID} = require('./TypeID');
84
+ const areEqual = require('areEqual');
85
+ const invariant = require('invariant');
86
+ const warning = require('warning');
89
87
 
90
88
  export type GetDataID = (
91
89
  fieldValue: interface {[string]: mixed},
@@ -12,13 +12,12 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const invariant = require('invariant');
16
-
17
- const {getType} = require('./RelayModernRecord');
18
-
19
15
  import type {ReactFlightPayloadData} from '../network/RelayNetworkTypes';
20
16
  import type {ReactFlightClientResponse, Record} from './RelayStoreTypes';
21
17
 
18
+ const {getType} = require('./RelayModernRecord');
19
+ const invariant = require('invariant');
20
+
22
21
  // Reachable (client) executable definitions encountered while server component
23
22
  // rendering
24
23
  const REACT_FLIGHT_EXECUTABLE_DEFINITIONS_STORAGE_KEY = 'executableDefinitions';
@@ -12,18 +12,11 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const RelayFeatureFlags = require('../util/RelayFeatureFlags');
16
- const RelayReader = require('./RelayReader');
17
-
18
- const deepFreeze = require('../util/deepFreeze');
19
- const hasOverlappingIDs = require('./hasOverlappingIDs');
20
- const recycleNodesInto = require('../util/recycleNodesInto');
21
-
22
15
  import type {Disposable} from '../util/RelayRuntimeTypes';
23
16
  import type {
17
+ DataIDSet,
24
18
  LogFunction,
25
19
  OperationDescriptor,
26
- DataIDSet,
27
20
  RecordSource,
28
21
  RequestDescriptor,
29
22
  Snapshot,
@@ -31,6 +24,12 @@ import type {
31
24
  } from './RelayStoreTypes';
32
25
  import type {ResolverCache} from './ResolverCache';
33
26
 
27
+ const deepFreeze = require('../util/deepFreeze');
28
+ const recycleNodesInto = require('../util/recycleNodesInto');
29
+ const RelayFeatureFlags = require('../util/RelayFeatureFlags');
30
+ const hasOverlappingIDs = require('./hasOverlappingIDs');
31
+ const RelayReader = require('./RelayReader');
32
+
34
33
  type Subscription = {|
35
34
  callback: (snapshot: Snapshot) => void,
36
35
  snapshot: Snapshot,
@@ -21,17 +21,18 @@ import type {
21
21
  INetwork,
22
22
  PayloadData,
23
23
  PayloadError,
24
- ReactFlightServerTree,
25
24
  ReactFlightServerError,
25
+ ReactFlightServerTree,
26
26
  UploadableMap,
27
27
  } from '../network/RelayNetworkTypes';
28
28
  import type RelayObservable from '../network/RelayObservable';
29
+ import type {RequestIdentifier} from '../util/getRequestIdentifier';
29
30
  import type {
31
+ NormalizationArgument,
30
32
  NormalizationLinkedField,
31
33
  NormalizationRootNode,
32
34
  NormalizationScalarField,
33
35
  NormalizationSelectableNode,
34
- NormalizationArgument,
35
36
  } from '../util/NormalizationNode';
36
37
  import type {ReaderFragment} from '../util/ReaderNode';
37
38
  import type {
@@ -45,7 +46,6 @@ import type {
45
46
  RenderPolicy,
46
47
  Variables,
47
48
  } from '../util/RelayRuntimeTypes';
48
- import type {RequestIdentifier} from '../util/getRequestIdentifier';
49
49
  import type {InvalidationState} from './RelayModernStore';
50
50
  import type RelayOperationTracker from './RelayOperationTracker';
51
51
  import type {RecordState} from './RelayRecordState';
@@ -53,6 +53,12 @@ import type {RecordState} from './RelayRecordState';
53
53
  export opaque type FragmentReference = empty;
54
54
  export type OperationTracker = RelayOperationTracker;
55
55
 
56
+ export type MutationParameters = {|
57
+ +response: {...},
58
+ +variables: interface {},
59
+ +rawResponse?: {...},
60
+ |};
61
+
56
62
  /*
57
63
  * An individual cached graph object.
58
64
  */
@@ -12,24 +12,23 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const RelayConcreteNode = require('../util/RelayConcreteNode');
16
-
17
- const getRelayHandleKey = require('../util/getRelayHandleKey');
18
- const invariant = require('invariant');
19
- const stableCopy = require('../util/stableCopy');
20
-
21
15
  import type {
22
- NormalizationHandle,
23
16
  NormalizationArgument,
24
17
  NormalizationField,
18
+ NormalizationHandle,
25
19
  } from '../util/NormalizationNode';
26
20
  import type {
21
+ ReaderActorChange,
27
22
  ReaderArgument,
28
23
  ReaderField,
29
- ReaderActorChange,
30
24
  } from '../util/ReaderNode';
31
25
  import type {Variables} from '../util/RelayRuntimeTypes';
32
26
 
27
+ const getRelayHandleKey = require('../util/getRelayHandleKey');
28
+ const RelayConcreteNode = require('../util/RelayConcreteNode');
29
+ const stableCopy = require('../util/stableCopy');
30
+ const invariant = require('invariant');
31
+
33
32
  export type Arguments = interface {+[string]: mixed};
34
33
 
35
34
  const {VARIABLE, LITERAL, OBJECT_VALUE, LIST_VALUE} = RelayConcreteNode;
@@ -12,27 +12,25 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const RelayModernRecord = require('./RelayModernRecord');
15
+ import type {ReaderRelayResolver} from '../util/ReaderNode';
16
+ import type {DataID, Variables} from '../util/RelayRuntimeTypes';
17
+ import type {
18
+ MutableRecordSource,
19
+ Record,
20
+ SingularReaderSelector,
21
+ } from './RelayStoreTypes';
16
22
 
17
23
  const recycleNodesInto = require('../util/recycleNodesInto');
18
- const warning = require('warning');
19
-
20
24
  const {generateClientID} = require('./ClientID');
25
+ const RelayModernRecord = require('./RelayModernRecord');
21
26
  const {
22
- RELAY_RESOLVER_VALUE_KEY,
23
- RELAY_RESOLVER_INVALIDATION_KEY,
24
27
  RELAY_RESOLVER_INPUTS_KEY,
28
+ RELAY_RESOLVER_INVALIDATION_KEY,
25
29
  RELAY_RESOLVER_READER_SELECTOR_KEY,
30
+ RELAY_RESOLVER_VALUE_KEY,
26
31
  getStorageKey,
27
32
  } = require('./RelayStoreUtils');
28
-
29
- import type {ReaderRelayResolver} from '../util/ReaderNode';
30
- import type {DataID, Variables} from '../util/RelayRuntimeTypes';
31
- import type {
32
- MutableRecordSource,
33
- Record,
34
- SingularReaderSelector,
35
- } from './RelayStoreTypes';
33
+ const warning = require('warning');
36
34
 
37
35
  type ResolverID = string;
38
36
 
@@ -12,17 +12,16 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const invariant = require('invariant');
16
-
17
- const {getFragment} = require('../query/GraphQLTag');
18
- const {getSelector} = require('./RelayModernSelector');
19
-
20
15
  import type {GraphQLTaggedNode} from '../query/GraphQLTag';
21
16
  import type {
22
17
  FragmentReference,
23
18
  SingularReaderSelector,
24
19
  } from './RelayStoreTypes';
25
20
 
21
+ const {getFragment} = require('../query/GraphQLTag');
22
+ const {getSelector} = require('./RelayModernSelector');
23
+ const invariant = require('invariant');
24
+
26
25
  // When we call the user-supplied resolver function, it will in turn call
27
26
  // `readFragment`, but that's a global function -- it needs information
28
27
  // about what resolver is being executed, which is supplied by putting the
@@ -12,11 +12,11 @@
12
12
 
13
13
  'use strict';
14
14
 
15
+ import type {DataID} from 'relay-runtime/util/RelayRuntimeTypes';
16
+
15
17
  const {generateClientID} = require('./ClientID');
16
18
  const {ROOT_ID} = require('./RelayStoreUtils');
17
19
 
18
- import type {DataID} from 'relay-runtime/util/RelayRuntimeTypes';
19
-
20
20
  const VIEWER_ID: DataID = generateClientID(ROOT_ID, 'viewer');
21
21
  const VIEWER_TYPE = 'Viewer';
22
22
 
@@ -12,12 +12,6 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const areEqual = require('areEqual');
16
- const invariant = require('invariant');
17
-
18
- const {LINKED_FIELD} = require('../util/RelayConcreteNode');
19
- const {getHandleStorageKey} = require('./RelayStoreUtils');
20
-
21
15
  import type {
22
16
  NormalizationLinkedField,
23
17
  NormalizationSelection,
@@ -25,6 +19,11 @@ import type {
25
19
  import type {NormalizationLinkedHandle} from '../util/NormalizationNode';
26
20
  import type {Variables} from '../util/RelayRuntimeTypes';
27
21
 
22
+ const {LINKED_FIELD} = require('../util/RelayConcreteNode');
23
+ const {getHandleStorageKey} = require('./RelayStoreUtils');
24
+ const areEqual = require('areEqual');
25
+ const invariant = require('invariant');
26
+
28
27
  /**
29
28
  * @private
30
29
  *
@@ -12,12 +12,6 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const areEqual = require('areEqual');
16
- const invariant = require('invariant');
17
-
18
- const {SCALAR_FIELD} = require('../util/RelayConcreteNode');
19
- const {getHandleStorageKey} = require('./RelayStoreUtils');
20
-
21
15
  import type {
22
16
  NormalizationScalarField,
23
17
  NormalizationSelection,
@@ -25,6 +19,11 @@ import type {
25
19
  import type {NormalizationScalarHandle} from '../util/NormalizationNode';
26
20
  import type {Variables} from '../util/RelayRuntimeTypes';
27
21
 
22
+ const {SCALAR_FIELD} = require('../util/RelayConcreteNode');
23
+ const {getHandleStorageKey} = require('./RelayStoreUtils');
24
+ const areEqual = require('areEqual');
25
+ const invariant = require('invariant');
26
+
28
27
  /**
29
28
  * @private
30
29
  *
@@ -12,10 +12,6 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const RelayModernFragmentSpecResolver = require('./RelayModernFragmentSpecResolver');
16
-
17
- const warning = require('warning');
18
-
19
15
  import type {
20
16
  FragmentMap,
21
17
  FragmentSpecResolver,
@@ -23,6 +19,9 @@ import type {
23
19
  RelayContext,
24
20
  } from './RelayStoreTypes';
25
21
 
22
+ const RelayModernFragmentSpecResolver = require('./RelayModernFragmentSpecResolver');
23
+ const warning = require('warning');
24
+
26
25
  function createFragmentSpecResolver(
27
26
  context: RelayContext,
28
27
  containerName: string,
@@ -12,11 +12,11 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const invariant = require('invariant');
16
-
17
15
  import type {RelayContext} from './RelayStoreTypes.js';
18
16
  import typeof {createContext} from 'react';
19
17
 
18
+ const invariant = require('invariant');
19
+
20
20
  // Ideally, we'd just import the type of the react module, but this causes Flow
21
21
  // problems.
22
22
  type React = {
@@ -12,19 +12,18 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const RelayModernRecord = require('./RelayModernRecord');
16
- const RelayRecordSource = require('./RelayRecordSource');
17
- const RelayResponseNormalizer = require('./RelayResponseNormalizer');
18
-
19
- const {ROOT_TYPE} = require('./RelayStoreUtils');
20
-
21
15
  import type {PayloadData, PayloadError} from '../network/RelayNetworkTypes';
22
16
  import type {NormalizationOptions} from './RelayResponseNormalizer';
23
17
  import type {
24
- RelayResponsePayload,
25
18
  NormalizationSelector,
19
+ RelayResponsePayload,
26
20
  } from './RelayStoreTypes';
27
21
 
22
+ const RelayModernRecord = require('./RelayModernRecord');
23
+ const RelayRecordSource = require('./RelayRecordSource');
24
+ const RelayResponseNormalizer = require('./RelayResponseNormalizer');
25
+ const {ROOT_TYPE} = require('./RelayStoreUtils');
26
+
28
27
  function normalizeRelayPayload(
29
28
  selector: NormalizationSelector,
30
29
  payload: PayloadData,
@@ -12,13 +12,12 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const invariant = require('invariant');
15
+ import type {GraphQLTaggedNode} from '../query/GraphQLTag';
16
+ import type {FragmentReference} from './RelayStoreTypes';
16
17
 
17
18
  const {getInlineDataFragment} = require('../query/GraphQLTag');
18
19
  const {FRAGMENTS_KEY} = require('./RelayStoreUtils');
19
-
20
- import type {GraphQLTaggedNode} from '../query/GraphQLTag';
21
- import type {FragmentReference} from './RelayStoreTypes';
20
+ const invariant = require('invariant');
22
21
 
23
22
  /**
24
23
  * Reads an @inline data fragment that was spread into the parent fragment.
@@ -12,17 +12,6 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const RelayDeclarativeMutationConfig = require('../mutations/RelayDeclarativeMutationConfig');
16
- const RelayFeatureFlags = require('../util/RelayFeatureFlags');
17
-
18
- const warning = require('warning');
19
-
20
- const {getRequest} = require('../query/GraphQLTag');
21
- const {
22
- createOperationDescriptor,
23
- } = require('../store/RelayModernOperationDescriptor');
24
- const {createReaderSelector} = require('../store/RelayModernSelector');
25
-
26
15
  import type {DeclarativeMutationConfig} from '../mutations/RelayDeclarativeMutationConfig';
27
16
  import type {GraphQLTaggedNode} from '../query/GraphQLTag';
28
17
  import type {
@@ -35,6 +24,15 @@ import type {
35
24
  Variables,
36
25
  } from '../util/RelayRuntimeTypes';
37
26
 
27
+ const RelayDeclarativeMutationConfig = require('../mutations/RelayDeclarativeMutationConfig');
28
+ const {getRequest} = require('../query/GraphQLTag');
29
+ const {
30
+ createOperationDescriptor,
31
+ } = require('../store/RelayModernOperationDescriptor');
32
+ const {createReaderSelector} = require('../store/RelayModernSelector');
33
+ const RelayFeatureFlags = require('../util/RelayFeatureFlags');
34
+ const warning = require('warning');
35
+
38
36
  export type SubscriptionParameters = {|
39
37
  +response: {...},
40
38
  +variables: interface {},
@@ -15,6 +15,7 @@
15
15
  import type {Disposable} from '../util/RelayRuntimeTypes';
16
16
 
17
17
  type FeatureFlags = {|
18
+ DELAY_CLEANUP_OF_PENDING_PRELOAD_QUERIES: boolean,
18
19
  ENABLE_VARIABLE_CONNECTION_KEY: boolean,
19
20
  ENABLE_PARTIAL_RENDERING_DEFAULT: boolean,
20
21
  ENABLE_REACT_FLIGHT_COMPONENT_FIELD: boolean,
@@ -33,6 +34,7 @@ type FeatureFlags = {|
33
34
  |};
34
35
 
35
36
  const RelayFeatureFlags: FeatureFlags = {
37
+ DELAY_CLEANUP_OF_PENDING_PRELOAD_QUERIES: false,
36
38
  ENABLE_VARIABLE_CONNECTION_KEY: false,
37
39
  ENABLE_PARTIAL_RENDERING_DEFAULT: true,
38
40
  ENABLE_REACT_FLIGHT_COMPONENT_FIELD: false,
@@ -12,12 +12,11 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const RelayObservable = require('../network/RelayObservable');
15
+ import type {Observer, Sink, Subscription} from '../network/RelayObservable';
16
16
 
17
+ const RelayObservable = require('../network/RelayObservable');
17
18
  const invariant = require('invariant');
18
19
 
19
- import type {Observer, Sink, Subscription} from '../network/RelayObservable';
20
-
21
20
  type Event<T> =
22
21
  | {
23
22
  kind: 'next',
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ * @format
9
+ */
10
+
11
+ 'use strict';
12
+
13
+ const internTable = new Map();
14
+ let nextIndex = 1;
15
+ const digits = new Set('0123456789');
16
+
17
+ // Character used as the prefix for interned strings. The specific character is
18
+ // chosen to reduce the likelihood that non-interned input strings need to be
19
+ // escaped (choosing eg a-Z would increase the likelihood we need to escape)
20
+ const INTERN_PREFIX = '\t';
21
+ // Character used as the prefix of escaped strings. As above, this is also
22
+ // chosen to be unlikely in normal input strings.
23
+ const ESCAPE_PREFIX = '\v';
24
+
25
+ // Escape a string so that it cannot conflict with an interned string
26
+ function escape(str: string): string {
27
+ if (
28
+ // "\t<digit>..." -> "\v\t<digit>..."
29
+ (str[0] === INTERN_PREFIX && digits.has(str[1])) ||
30
+ // "\v..." -> "\v\v..."
31
+ str[0] === ESCAPE_PREFIX
32
+ ) {
33
+ return ESCAPE_PREFIX + str;
34
+ }
35
+ return str;
36
+ }
37
+
38
+ // Interns the input string if its length equals or exceeds the given `limit`,
39
+ // returning a shorter replacement string that is uniquely associated with the
40
+ // input: multiple calls to intern() for the equivalent input strings (and limit)
41
+ // will always return the exact same string.
42
+ // Strings shorter than the limit are not interned but are escaped if they
43
+ // could conflict with interned strings.
44
+ function intern(str: string, limit: ?number): string {
45
+ if (limit == null || str.length < limit) {
46
+ return escape(str);
47
+ }
48
+ let internedString = internTable.get(str);
49
+ if (internedString != null) {
50
+ return internedString;
51
+ }
52
+ internedString = INTERN_PREFIX + nextIndex++;
53
+ internTable.set(str, internedString);
54
+ return internedString;
55
+ }
56
+
57
+ module.exports = {intern};
@@ -13,14 +13,14 @@
13
13
 
14
14
  'use strict';
15
15
 
16
+ import type {JSResourceReference} from 'JSResourceReference';
17
+ import type {NormalizationSplitOperation} from './NormalizationNode';
18
+
16
19
  const {
17
20
  getModuleComponentKey,
18
21
  getModuleOperationKey,
19
22
  } = require('../store/RelayStoreUtils');
20
23
 
21
- import type {NormalizationSplitOperation} from './NormalizationNode';
22
- import type {JSResourceReference} from 'JSResourceReference';
23
-
24
24
  export opaque type Local3DPayload<
25
25
  +DocumentName: string,
26
26
  +Response: {...},