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,12 +12,11 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const RelayFeatureFlags = require('../util/RelayFeatureFlags');
16
-
17
- const {shorten} = require('../util/shortString');
18
-
19
15
  import type {DataID} from '../util/RelayRuntimeTypes';
20
16
 
17
+ const RelayFeatureFlags = require('../util/RelayFeatureFlags');
18
+ const {intern} = require('../util/StringInterner');
19
+
21
20
  const PREFIX = 'client:';
22
21
 
23
22
  function generateClientID(
@@ -25,8 +24,11 @@ function generateClientID(
25
24
  storageKey: string,
26
25
  index?: number,
27
26
  ): DataID {
28
- const sid = RelayFeatureFlags.STRING_INTERN_LEVEL <= 0 ? id : shorten(id);
29
- let key = sid + ':' + storageKey;
27
+ const internedId =
28
+ RelayFeatureFlags.STRING_INTERN_LEVEL <= 0
29
+ ? id
30
+ : intern(id, RelayFeatureFlags.MAX_DATA_ID_LENGTH);
31
+ let key = internedId + ':' + storageKey;
30
32
  if (index != null) {
31
33
  key += ':' + index;
32
34
  }
@@ -13,24 +13,6 @@
13
13
 
14
14
  'use strict';
15
15
 
16
- const RelayConcreteNode = require('../util/RelayConcreteNode');
17
- const RelayFeatureFlags = require('../util/RelayFeatureFlags');
18
- const RelayModernRecord = require('./RelayModernRecord');
19
- const RelayRecordSourceMutator = require('../mutations/RelayRecordSourceMutator');
20
- const RelayRecordSourceProxy = require('../mutations/RelayRecordSourceProxy');
21
- const RelayStoreReactFlightUtils = require('./RelayStoreReactFlightUtils');
22
- const RelayStoreUtils = require('./RelayStoreUtils');
23
-
24
- const cloneRelayHandleSourceField = require('./cloneRelayHandleSourceField');
25
- const cloneRelayScalarHandleSourceField = require('./cloneRelayScalarHandleSourceField');
26
- const getOperation = require('../util/getOperation');
27
- const invariant = require('invariant');
28
-
29
- const {isClientID} = require('./ClientID');
30
- const {getLocalVariables} = require('./RelayConcreteVariables');
31
- const {EXISTENT, UNKNOWN} = require('./RelayRecordState');
32
- const {generateTypeID} = require('./TypeID');
33
-
34
16
  import type {ActorIdentifier} from '../multi-actor-environment/ActorIdentifier';
35
17
  import type {
36
18
  NormalizationField,
@@ -53,6 +35,22 @@ import type {
53
35
  RecordSource,
54
36
  } from './RelayStoreTypes';
55
37
 
38
+ const RelayRecordSourceMutator = require('../mutations/RelayRecordSourceMutator');
39
+ const RelayRecordSourceProxy = require('../mutations/RelayRecordSourceProxy');
40
+ const getOperation = require('../util/getOperation');
41
+ const RelayConcreteNode = require('../util/RelayConcreteNode');
42
+ const RelayFeatureFlags = require('../util/RelayFeatureFlags');
43
+ const {isClientID} = require('./ClientID');
44
+ const cloneRelayHandleSourceField = require('./cloneRelayHandleSourceField');
45
+ const cloneRelayScalarHandleSourceField = require('./cloneRelayScalarHandleSourceField');
46
+ const {getLocalVariables} = require('./RelayConcreteVariables');
47
+ const RelayModernRecord = require('./RelayModernRecord');
48
+ const {EXISTENT, UNKNOWN} = require('./RelayRecordState');
49
+ const RelayStoreReactFlightUtils = require('./RelayStoreReactFlightUtils');
50
+ const RelayStoreUtils = require('./RelayStoreUtils');
51
+ const {generateTypeID} = require('./TypeID');
52
+ const invariant = require('invariant');
53
+
56
54
  export type Availability = {|
57
55
  +status: 'available' | 'missing',
58
56
  +mostRecentlyInvalidatedAt: ?number,
@@ -13,40 +13,17 @@
13
13
 
14
14
  'use strict';
15
15
 
16
- const RelayError = require('../util/RelayError');
17
- const RelayFeatureFlags = require('../util/RelayFeatureFlags');
18
- const RelayModernRecord = require('./RelayModernRecord');
19
- const RelayObservable = require('../network/RelayObservable');
20
- const RelayRecordSource = require('./RelayRecordSource');
21
- const RelayResponseNormalizer = require('./RelayResponseNormalizer');
22
-
23
- const generateID = require('../util/generateID');
24
- const getOperation = require('../util/getOperation');
25
- const invariant = require('invariant');
26
- const stableCopy = require('../util/stableCopy');
27
- const warning = require('warning');
28
- const withDuration = require('../util/withDuration');
29
-
30
- const {generateClientID, generateUniqueClientID} = require('./ClientID');
31
- const {getLocalVariables} = require('./RelayConcreteVariables');
32
- const {
33
- createNormalizationSelector,
34
- createReaderSelector,
35
- } = require('./RelayModernSelector');
36
- const {ROOT_TYPE, TYPENAME_KEY, getStorageKey} = require('./RelayStoreUtils');
37
-
38
16
  import type {ActorIdentifier} from '../multi-actor-environment/ActorIdentifier';
39
17
  import type {
40
18
  GraphQLResponse,
41
- GraphQLSingularResponse,
42
19
  GraphQLResponseWithData,
20
+ GraphQLSingularResponse,
43
21
  ReactFlightServerTree,
44
22
  } from '../network/RelayNetworkTypes';
45
23
  import type {Sink, Subscription} from '../network/RelayObservable';
46
24
  import type {
47
25
  DeferPlaceholder,
48
26
  FollowupPayload,
49
- RequestDescriptor,
50
27
  HandleFieldPayload,
51
28
  IncrementalDataPlaceholder,
52
29
  LogFunction,
@@ -58,11 +35,12 @@ import type {
58
35
  OptimisticResponseConfig,
59
36
  OptimisticUpdate,
60
37
  PublishQueue,
38
+ ReactFlightClientResponse,
61
39
  ReactFlightPayloadDeserializer,
62
40
  ReactFlightServerErrorHandler,
63
- ReactFlightClientResponse,
64
41
  Record,
65
42
  RelayResponsePayload,
43
+ RequestDescriptor,
66
44
  SelectorStoreUpdater,
67
45
  Store,
68
46
  StreamPlaceholder,
@@ -74,10 +52,30 @@ import type {
74
52
  NormalizationSelectableNode,
75
53
  NormalizationSplitOperation,
76
54
  } from '../util/NormalizationNode';
77
- import type {DataID, Variables, Disposable} from '../util/RelayRuntimeTypes';
55
+ import type {DataID, Disposable, Variables} from '../util/RelayRuntimeTypes';
78
56
  import type {GetDataID} from './RelayResponseNormalizer';
79
57
  import type {NormalizationOptions} from './RelayResponseNormalizer';
80
58
 
59
+ const RelayObservable = require('../network/RelayObservable');
60
+ const generateID = require('../util/generateID');
61
+ const getOperation = require('../util/getOperation');
62
+ const RelayError = require('../util/RelayError');
63
+ const RelayFeatureFlags = require('../util/RelayFeatureFlags');
64
+ const stableCopy = require('../util/stableCopy');
65
+ const withDuration = require('../util/withDuration');
66
+ const {generateClientID, generateUniqueClientID} = require('./ClientID');
67
+ const {getLocalVariables} = require('./RelayConcreteVariables');
68
+ const RelayModernRecord = require('./RelayModernRecord');
69
+ const {
70
+ createNormalizationSelector,
71
+ createReaderSelector,
72
+ } = require('./RelayModernSelector');
73
+ const RelayRecordSource = require('./RelayRecordSource');
74
+ const RelayResponseNormalizer = require('./RelayResponseNormalizer');
75
+ const {ROOT_TYPE, TYPENAME_KEY, getStorageKey} = require('./RelayStoreUtils');
76
+ const invariant = require('invariant');
77
+ const warning = require('warning');
78
+
81
79
  export type ExecuteConfig = {|
82
80
  +actorIdentifier: ActorIdentifier,
83
81
  +getDataID: GetDataID,
@@ -12,18 +12,17 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const invariant = require('invariant');
16
-
17
- const {getArgumentValues} = require('./RelayStoreUtils');
18
-
19
15
  import type {
20
- NormalizationLocalArgumentDefinition,
21
16
  NormalizationArgument,
17
+ NormalizationLocalArgumentDefinition,
22
18
  NormalizationOperation,
23
19
  } from '../util/NormalizationNode';
24
20
  import type {ReaderFragment} from '../util/ReaderNode';
25
21
  import type {Variables} from '../util/RelayRuntimeTypes';
26
22
 
23
+ const {getArgumentValues} = require('./RelayStoreUtils');
24
+ const invariant = require('invariant');
25
+
27
26
  /**
28
27
  * Determines the variables that are in scope for a fragment given the variables
29
28
  * in scope at the root query as well as any arguments applied at the fragment
@@ -13,25 +13,6 @@
13
13
 
14
14
  'use strict';
15
15
 
16
- const OperationExecutor = require('./OperationExecutor');
17
- const RelayDefaultHandlerProvider = require('../handlers/RelayDefaultHandlerProvider');
18
- const RelayFeatureFlags = require('../util/RelayFeatureFlags');
19
- const RelayObservable = require('../network/RelayObservable');
20
- const RelayOperationTracker = require('../store/RelayOperationTracker');
21
- const RelayPublishQueue = require('./RelayPublishQueue');
22
- const RelayRecordSource = require('./RelayRecordSource');
23
-
24
- const defaultGetDataID = require('./defaultGetDataID');
25
- const defaultRequiredFieldLogger = require('./defaultRequiredFieldLogger');
26
- const invariant = require('invariant');
27
- const registerEnvironmentWithDevTools = require('../util/registerEnvironmentWithDevTools');
28
- const wrapNetworkWithLogObserver = require('../network/wrapNetworkWithLogObserver');
29
-
30
- const {
31
- INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE,
32
- assertInternalActorIndentifier,
33
- } = require('../multi-actor-environment/ActorIdentifier');
34
-
35
16
  import type {HandlerProvider} from '../handlers/RelayDefaultHandlerProvider';
36
17
  import type {ActorIdentifier} from '../multi-actor-environment/ActorIdentifier';
37
18
  import type {
@@ -64,6 +45,23 @@ import type {
64
45
  StoreUpdater,
65
46
  } from './RelayStoreTypes';
66
47
 
48
+ const RelayDefaultHandlerProvider = require('../handlers/RelayDefaultHandlerProvider');
49
+ const {
50
+ INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE,
51
+ assertInternalActorIndentifier,
52
+ } = require('../multi-actor-environment/ActorIdentifier');
53
+ const RelayObservable = require('../network/RelayObservable');
54
+ const wrapNetworkWithLogObserver = require('../network/wrapNetworkWithLogObserver');
55
+ const RelayOperationTracker = require('../store/RelayOperationTracker');
56
+ const registerEnvironmentWithDevTools = require('../util/registerEnvironmentWithDevTools');
57
+ const RelayFeatureFlags = require('../util/RelayFeatureFlags');
58
+ const defaultGetDataID = require('./defaultGetDataID');
59
+ const defaultRequiredFieldLogger = require('./defaultRequiredFieldLogger');
60
+ const OperationExecutor = require('./OperationExecutor');
61
+ const RelayPublishQueue = require('./RelayPublishQueue');
62
+ const RelayRecordSource = require('./RelayRecordSource');
63
+ const invariant = require('invariant');
64
+
67
65
  export type EnvironmentConfig = {|
68
66
  +configName?: string,
69
67
  +handlerProvider?: ?HandlerProvider,
@@ -12,30 +12,13 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const RelayFeatureFlags = require('../util/RelayFeatureFlags');
16
-
17
- const areEqual = require('areEqual');
18
- const getPendingOperationsForFragment = require('../util/getPendingOperationsForFragment');
19
- const invariant = require('invariant');
20
- const isScalarAndEqual = require('../util/isScalarAndEqual');
21
- const recycleNodesInto = require('../util/recycleNodesInto');
22
- const reportMissingRequiredFields = require('../util/reportMissingRequiredFields');
23
- const warning = require('warning');
24
-
25
- const {createRequestDescriptor} = require('./RelayModernOperationDescriptor');
26
- const {
27
- areEqualSelectors,
28
- createReaderSelector,
29
- getSelectorsFromObject,
30
- } = require('./RelayModernSelector');
31
-
32
15
  import type {ConcreteRequest} from '../util/RelayConcreteNode';
33
16
  import type {Disposable, Variables} from '../util/RelayRuntimeTypes';
34
17
  import type {
35
- IEnvironment,
36
18
  FragmentMap,
37
19
  FragmentSpecResolver,
38
20
  FragmentSpecResults,
21
+ IEnvironment,
39
22
  MissingRequiredFields,
40
23
  PluralReaderSelector,
41
24
  RelayContext,
@@ -44,6 +27,21 @@ import type {
44
27
  Snapshot,
45
28
  } from './RelayStoreTypes';
46
29
 
30
+ const getPendingOperationsForFragment = require('../util/getPendingOperationsForFragment');
31
+ const isScalarAndEqual = require('../util/isScalarAndEqual');
32
+ const recycleNodesInto = require('../util/recycleNodesInto');
33
+ const RelayFeatureFlags = require('../util/RelayFeatureFlags');
34
+ const reportMissingRequiredFields = require('../util/reportMissingRequiredFields');
35
+ const {createRequestDescriptor} = require('./RelayModernOperationDescriptor');
36
+ const {
37
+ areEqualSelectors,
38
+ createReaderSelector,
39
+ getSelectorsFromObject,
40
+ } = require('./RelayModernSelector');
41
+ const areEqual = require('areEqual');
42
+ const invariant = require('invariant');
43
+ const warning = require('warning');
44
+
47
45
  type Props = {[key: string]: mixed, ...};
48
46
  type Resolvers = {
49
47
  [key: string]: ?(SelectorListResolver | SelectorResolver),
@@ -12,26 +12,25 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const deepFreeze = require('../util/deepFreeze');
16
- const getRequestIdentifier = require('../util/getRequestIdentifier');
17
-
18
- const {getOperationVariables} = require('./RelayConcreteVariables');
19
- const {
20
- createNormalizationSelector,
21
- createReaderSelector,
22
- } = require('./RelayModernSelector');
23
- const {ROOT_ID} = require('./RelayStoreUtils');
24
-
25
15
  import type {ConcreteRequest} from '../util/RelayConcreteNode';
26
16
  import type {
27
17
  CacheConfig,
28
18
  DataID,
19
+ OperationType,
29
20
  Variables,
30
21
  VariablesOf,
31
- OperationType,
32
22
  } from '../util/RelayRuntimeTypes';
33
23
  import type {OperationDescriptor, RequestDescriptor} from './RelayStoreTypes';
34
24
 
25
+ const deepFreeze = require('../util/deepFreeze');
26
+ const getRequestIdentifier = require('../util/getRequestIdentifier');
27
+ const {getOperationVariables} = require('./RelayConcreteVariables');
28
+ const {
29
+ createNormalizationSelector,
30
+ createReaderSelector,
31
+ } = require('./RelayModernSelector');
32
+ const {ROOT_ID} = require('./RelayStoreUtils');
33
+
35
34
  /**
36
35
  * Creates an instance of the `OperationDescriptor` type defined in
37
36
  * `RelayStoreTypes` given an operation and some variables. The input variables
@@ -12,25 +12,24 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const areEqual = require('areEqual');
16
- const deepFreeze = require('../util/deepFreeze');
17
- const invariant = require('invariant');
18
- const warning = require('warning');
15
+ import type {ActorIdentifier} from '../multi-actor-environment/ActorIdentifier';
16
+ import type {DataID} from '../util/RelayRuntimeTypes';
17
+ import type {Record} from './RelayStoreTypes';
19
18
 
19
+ const deepFreeze = require('../util/deepFreeze');
20
20
  const {isClientID} = require('./ClientID');
21
21
  const {
22
22
  ACTOR_IDENTIFIER_KEY,
23
23
  ID_KEY,
24
+ INVALIDATED_AT_KEY,
24
25
  REF_KEY,
25
26
  REFS_KEY,
26
- TYPENAME_KEY,
27
- INVALIDATED_AT_KEY,
28
27
  ROOT_ID,
28
+ TYPENAME_KEY,
29
29
  } = require('./RelayStoreUtils');
30
-
31
- import type {ActorIdentifier} from '../multi-actor-environment/ActorIdentifier';
32
- import type {DataID} from '../util/RelayRuntimeTypes';
33
- import type {Record} from './RelayStoreTypes';
30
+ const areEqual = require('areEqual');
31
+ const invariant = require('invariant');
32
+ const warning = require('warning');
34
33
 
35
34
  /**
36
35
  * @public
@@ -174,10 +173,14 @@ function getLinkedRecordID(record: Record, storageKey: string): ?DataID {
174
173
  invariant(
175
174
  typeof link === 'object' && link && typeof link[REF_KEY] === 'string',
176
175
  'RelayModernRecord.getLinkedRecordID(): Expected `%s.%s` to be a linked ID, ' +
177
- 'was `%s`.',
176
+ 'was `%s`.%s',
178
177
  record[ID_KEY],
179
178
  storageKey,
180
179
  JSON.stringify(link),
180
+ typeof link === 'object' && link[REFS_KEY] !== undefined
181
+ ? ' It appears to be a plural linked record: did you mean to call ' +
182
+ 'getLinkedRecords() instead of getLinkedRecord()?'
183
+ : '',
181
184
  );
182
185
  return link[REF_KEY];
183
186
  }
@@ -199,10 +202,14 @@ function getLinkedRecordIDs(
199
202
  invariant(
200
203
  typeof links === 'object' && Array.isArray(links[REFS_KEY]),
201
204
  'RelayModernRecord.getLinkedRecordIDs(): Expected `%s.%s` to contain an array ' +
202
- 'of linked IDs, got `%s`.',
205
+ 'of linked IDs, got `%s`.%s',
203
206
  record[ID_KEY],
204
207
  storageKey,
205
208
  JSON.stringify(links),
209
+ typeof links === 'object' && links[REF_KEY] !== undefined
210
+ ? ' It appears to be a singular linked record: did you mean to call ' +
211
+ 'getLinkedRecord() instead of getLinkedRecords()?'
212
+ : '',
206
213
  );
207
214
  // assume items of the array are ids
208
215
  return (links[REFS_KEY]: any);
@@ -12,18 +12,6 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const areEqual = require('areEqual');
16
- const invariant = require('invariant');
17
- const warning = require('warning');
18
-
19
- const {getFragmentVariables} = require('./RelayConcreteVariables');
20
- const {
21
- FRAGMENT_OWNER_KEY,
22
- FRAGMENTS_KEY,
23
- ID_KEY,
24
- IS_WITHIN_UNMATCHED_TYPE_REFINEMENT,
25
- } = require('./RelayStoreUtils');
26
-
27
15
  import type {NormalizationSelectableNode} from '../util/NormalizationNode';
28
16
  import type {ReaderFragment} from '../util/ReaderNode';
29
17
  import type {DataID, Variables} from '../util/RelayRuntimeTypes';
@@ -35,6 +23,17 @@ import type {
35
23
  SingularReaderSelector,
36
24
  } from './RelayStoreTypes';
37
25
 
26
+ const {getFragmentVariables} = require('./RelayConcreteVariables');
27
+ const {
28
+ FRAGMENT_OWNER_KEY,
29
+ FRAGMENTS_KEY,
30
+ ID_KEY,
31
+ IS_WITHIN_UNMATCHED_TYPE_REFINEMENT,
32
+ } = require('./RelayStoreUtils');
33
+ const areEqual = require('areEqual');
34
+ const invariant = require('invariant');
35
+ const warning = require('warning');
36
+
38
37
  /**
39
38
  * @public
40
39
  *
@@ -12,34 +12,13 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const DataChecker = require('./DataChecker');
16
- const RelayFeatureFlags = require('../util/RelayFeatureFlags');
17
- const RelayModernRecord = require('./RelayModernRecord');
18
- const RelayOptimisticRecordSource = require('./RelayOptimisticRecordSource');
19
- const RelayReader = require('./RelayReader');
20
- const RelayReferenceMarker = require('./RelayReferenceMarker');
21
- const RelayStoreReactFlightUtils = require('./RelayStoreReactFlightUtils');
22
- const RelayStoreSubscriptions = require('./RelayStoreSubscriptions');
23
- const RelayStoreUtils = require('./RelayStoreUtils');
24
-
25
- const deepFreeze = require('../util/deepFreeze');
26
- const defaultGetDataID = require('./defaultGetDataID');
27
- const invariant = require('invariant');
28
- const resolveImmediate = require('../util/resolveImmediate');
29
-
30
- const {
31
- INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE,
32
- assertInternalActorIndentifier,
33
- } = require('../multi-actor-environment/ActorIdentifier');
34
- const {ROOT_ID, ROOT_TYPE} = require('./RelayStoreUtils');
35
- const {RecordResolverCache} = require('./ResolverCache');
36
-
37
15
  import type {ActorIdentifier} from '../multi-actor-environment/ActorIdentifier';
38
16
  import type {DataID, Disposable} from '../util/RelayRuntimeTypes';
39
17
  import type {Availability} from './DataChecker';
40
18
  import type {GetDataID} from './RelayResponseNormalizer';
41
19
  import type {
42
20
  CheckOptions,
21
+ DataIDSet,
43
22
  LogFunction,
44
23
  MutableRecordSource,
45
24
  OperationAvailability,
@@ -52,10 +31,29 @@ import type {
52
31
  Snapshot,
53
32
  Store,
54
33
  StoreSubscriptions,
55
- DataIDSet,
56
34
  } from './RelayStoreTypes';
57
35
  import type {ResolverCache} from './ResolverCache';
58
36
 
37
+ const {
38
+ INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE,
39
+ assertInternalActorIndentifier,
40
+ } = require('../multi-actor-environment/ActorIdentifier');
41
+ const deepFreeze = require('../util/deepFreeze');
42
+ const RelayFeatureFlags = require('../util/RelayFeatureFlags');
43
+ const resolveImmediate = require('../util/resolveImmediate');
44
+ const DataChecker = require('./DataChecker');
45
+ const defaultGetDataID = require('./defaultGetDataID');
46
+ const RelayModernRecord = require('./RelayModernRecord');
47
+ const RelayOptimisticRecordSource = require('./RelayOptimisticRecordSource');
48
+ const RelayReader = require('./RelayReader');
49
+ const RelayReferenceMarker = require('./RelayReferenceMarker');
50
+ const RelayStoreReactFlightUtils = require('./RelayStoreReactFlightUtils');
51
+ const RelayStoreSubscriptions = require('./RelayStoreSubscriptions');
52
+ const RelayStoreUtils = require('./RelayStoreUtils');
53
+ const {ROOT_ID, ROOT_TYPE} = require('./RelayStoreUtils');
54
+ const {RecordResolverCache} = require('./ResolverCache');
55
+ const invariant = require('invariant');
56
+
59
57
  export opaque type InvalidationState = {|
60
58
  dataIDs: $ReadOnlyArray<DataID>,
61
59
  invalidations: Map<DataID, ?number>,
@@ -12,10 +12,10 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const invariant = require('invariant');
16
-
17
15
  import type {RequestDescriptor} from './RelayStoreTypes';
18
16
 
17
+ const invariant = require('invariant');
18
+
19
19
  class RelayOperationTracker {
20
20
  _ownersToPendingOperations: Map<string, Map<string, RequestDescriptor>>;
21
21
  _pendingOperationsToOwners: Map<string, Set<string>>;
@@ -12,8 +12,6 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const RelayRecordSource = require('./RelayRecordSource');
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
  RecordSource,
23
21
  } from './RelayStoreTypes';
24
22
 
23
+ const RelayRecordSource = require('./RelayRecordSource');
24
+
25
25
  const UNPUBLISH_RECORD_SENTINEL = Object.freeze({
26
26
  __UNPUBLISH_RECORD_SENTINEL: true,
27
27
  });
@@ -12,15 +12,6 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const RelayReader = require('./RelayReader');
16
- const RelayRecordSource = require('./RelayRecordSource');
17
- const RelayRecordSourceMutator = require('../mutations/RelayRecordSourceMutator');
18
- const RelayRecordSourceProxy = require('../mutations/RelayRecordSourceProxy');
19
- const RelayRecordSourceSelectorProxy = require('../mutations/RelayRecordSourceSelectorProxy');
20
-
21
- const invariant = require('invariant');
22
- const warning = require('warning');
23
-
24
15
  import type {HandlerProvider} from '../handlers/RelayDefaultHandlerProvider';
25
16
  import type {Disposable} from '../util/RelayRuntimeTypes';
26
17
  import type {GetDataID} from './RelayResponseNormalizer';
@@ -38,6 +29,14 @@ import type {
38
29
  StoreUpdater,
39
30
  } from './RelayStoreTypes';
40
31
 
32
+ const RelayRecordSourceMutator = require('../mutations/RelayRecordSourceMutator');
33
+ const RelayRecordSourceProxy = require('../mutations/RelayRecordSourceProxy');
34
+ const RelayRecordSourceSelectorProxy = require('../mutations/RelayRecordSourceSelectorProxy');
35
+ const RelayReader = require('./RelayReader');
36
+ const RelayRecordSource = require('./RelayRecordSource');
37
+ const invariant = require('invariant');
38
+ const warning = require('warning');
39
+
41
40
  type PendingCommit = PendingRelayPayload | PendingRecordSource | PendingUpdater;
42
41
  type PendingRelayPayload = {|
43
42
  +kind: 'payload',
@@ -12,11 +12,32 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const ClientID = require('./ClientID');
16
- const RelayFeatureFlags = require('../util/RelayFeatureFlags');
17
- const RelayModernRecord = require('./RelayModernRecord');
18
-
19
- const invariant = require('invariant');
15
+ import type {
16
+ ReaderActorChange,
17
+ ReaderFlightField,
18
+ ReaderFragment,
19
+ ReaderFragmentSpread,
20
+ ReaderInlineDataFragmentSpread,
21
+ ReaderLinkedField,
22
+ ReaderModuleImport,
23
+ ReaderNode,
24
+ ReaderRelayResolver,
25
+ ReaderRequiredField,
26
+ ReaderScalarField,
27
+ ReaderSelection,
28
+ } from '../util/ReaderNode';
29
+ import type {DataID, Variables} from '../util/RelayRuntimeTypes';
30
+ import type {
31
+ DataIDSet,
32
+ MissingRequiredFields,
33
+ Record,
34
+ RecordSource,
35
+ RequestDescriptor,
36
+ SelectorData,
37
+ SingularReaderSelector,
38
+ Snapshot,
39
+ } from './RelayStoreTypes';
40
+ import type {ResolverCache} from './ResolverCache';
20
41
 
21
42
  const {
22
43
  ACTOR_CHANGE,
@@ -29,54 +50,31 @@ const {
29
50
  INLINE_FRAGMENT,
30
51
  LINKED_FIELD,
31
52
  MODULE_IMPORT,
32
- REQUIRED_FIELD,
33
53
  RELAY_RESOLVER,
54
+ REQUIRED_FIELD,
34
55
  SCALAR_FIELD,
35
56
  STREAM,
36
57
  } = require('../util/RelayConcreteNode');
58
+ const RelayFeatureFlags = require('../util/RelayFeatureFlags');
59
+ const ClientID = require('./ClientID');
60
+ const RelayModernRecord = require('./RelayModernRecord');
37
61
  const {getReactFlightClientResponse} = require('./RelayStoreReactFlightUtils');
38
62
  const {
39
- FRAGMENTS_KEY,
40
63
  FRAGMENT_OWNER_KEY,
41
64
  FRAGMENT_PROP_NAME_KEY,
65
+ FRAGMENTS_KEY,
42
66
  ID_KEY,
43
67
  IS_WITHIN_UNMATCHED_TYPE_REFINEMENT,
44
68
  MODULE_COMPONENT_KEY,
45
69
  ROOT_ID,
46
70
  getArgumentValues,
47
- getStorageKey,
48
71
  getModuleComponentKey,
72
+ getStorageKey,
49
73
  } = require('./RelayStoreUtils');
50
74
  const {NoopResolverCache} = require('./ResolverCache');
51
75
  const {withResolverContext} = require('./ResolverFragments');
52
76
  const {generateTypeID} = require('./TypeID');
53
-
54
- import type {
55
- ReaderFlightField,
56
- ReaderFragment,
57
- ReaderFragmentSpread,
58
- ReaderInlineDataFragmentSpread,
59
- ReaderLinkedField,
60
- ReaderActorChange,
61
- ReaderModuleImport,
62
- ReaderNode,
63
- ReaderRelayResolver,
64
- ReaderRequiredField,
65
- ReaderScalarField,
66
- ReaderSelection,
67
- } from '../util/ReaderNode';
68
- import type {DataID, Variables} from '../util/RelayRuntimeTypes';
69
- import type {
70
- Record,
71
- RecordSource,
72
- RequestDescriptor,
73
- SelectorData,
74
- SingularReaderSelector,
75
- Snapshot,
76
- MissingRequiredFields,
77
- DataIDSet,
78
- } from './RelayStoreTypes';
79
- import type {ResolverCache} from './ResolverCache';
77
+ const invariant = require('invariant');
80
78
 
81
79
  function read(
82
80
  recordSource: RecordSource,