relay-test-utils-internal 0.0.0-main-9556f2ff → 0.0.0-main-82d0f0e9
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/index.js +1 -1
- package/package.json +2 -2
- package/relay-test-utils-internal.js +1 -1
- package/relay-test-utils-internal.min.js +1 -1
- package/AstrologicalSignUtils.js.flow +0 -105
- package/ExampleExternalStateStore.js.flow +0 -61
- package/lib/AstrologicalSignUtils.js +0 -62
- package/lib/ExampleExternalStateStore.js +0 -76
- package/lib/resolvers/AstrologicalSignHouseResolver.js +0 -49
- package/lib/resolvers/AstrologicalSignNameResolver.js +0 -49
- package/lib/resolvers/AstrologicalSignOppositeResolver.js +0 -50
- package/lib/resolvers/AstrologicalSignSelfResolver.js +0 -60
- package/lib/resolvers/CounterPlusOneResolver.js +0 -48
- package/lib/resolvers/CounterSuspendsWhenOdd.js +0 -72
- package/lib/resolvers/LiveCounterResolver.js +0 -63
- package/lib/resolvers/LivePingPongResolver.js +0 -61
- package/lib/resolvers/QueryAllAstrologicalSignsResolver.js +0 -53
- package/lib/resolvers/ResolverThatThrows.js +0 -56
- package/lib/resolvers/ThrowBeforeReadResolver.js +0 -52
- package/lib/resolvers/UndefinedFieldResolver.js +0 -50
- package/lib/resolvers/UserAlwaysThrowsResolver.js +0 -48
- package/lib/resolvers/UserAlwaysThrowsTransitivelyResolver.js +0 -48
- package/lib/resolvers/UserAnotherClientEdgeResolver.js +0 -47
- package/lib/resolvers/UserAstrologicalSignResolver.js +0 -53
- package/lib/resolvers/UserBestFriendGreetingResolver.js +0 -49
- package/lib/resolvers/UserBestFriendShoutedGreetingResolver.js +0 -49
- package/lib/resolvers/UserClientEdgeResolver.js +0 -47
- package/lib/resolvers/UserConstantDependentResolver.js +0 -49
- package/lib/resolvers/UserConstantResolver.js +0 -48
- package/lib/resolvers/UserCustomGreetingResolver.js +0 -51
- package/lib/resolvers/UserGreetingResolver.js +0 -51
- package/lib/resolvers/UserNameAndCounterSuspendsWhenOdd.js +0 -49
- package/lib/resolvers/UserNamePassthroughResolver.js +0 -46
- package/lib/resolvers/UserNullClientEdgeResolver.js +0 -47
- package/lib/resolvers/UserProfilePictureResolver.js +0 -48
- package/lib/resolvers/UserProfilePictureUriSuspendsWhenTheCounterIsOdd.js +0 -71
- package/lib/resolvers/UserProfilePictureWithDefaultValueResolver.js +0 -48
- package/lib/resolvers/UserProfilePictureWithRuntimeArgumentResolver.js +0 -51
- package/lib/resolvers/UserReadsClientEdgeResolver.js +0 -48
- package/lib/resolvers/UserRequiredNameResolver.js +0 -49
- package/lib/resolvers/UserShoutedGreetingResolver.js +0 -49
- package/lib/resolvers/__generated__/AstrologicalSignHouseResolver.graphql.js +0 -63
- package/lib/resolvers/__generated__/AstrologicalSignNameResolver.graphql.js +0 -63
- package/lib/resolvers/__generated__/AstrologicalSignOppositeResolver.graphql.js +0 -63
- package/lib/resolvers/__generated__/AstrologicalSignSelfResolver.graphql.js +0 -64
- package/lib/resolvers/__generated__/ClientEdgeQuery_UserReadsClientEdgeResolver_client_edge.graphql.js +0 -134
- package/lib/resolvers/__generated__/CounterPlusOneResolver.graphql.js +0 -68
- package/lib/resolvers/__generated__/CounterSuspendsWhenOdd.graphql.js +0 -70
- package/lib/resolvers/__generated__/LiveCounterResolver.graphql.js +0 -70
- package/lib/resolvers/__generated__/LivePingPongResolver.graphql.js +0 -70
- package/lib/resolvers/__generated__/QueryAllAstrologicalSignsResolver.graphql.js +0 -67
- package/lib/resolvers/__generated__/RefetchableClientEdgeQuery_UserReadsClientEdgeResolver_client_edge.graphql.js +0 -71
- package/lib/resolvers/__generated__/ResolverThatThrows.graphql.js +0 -61
- package/lib/resolvers/__generated__/ThrowBeforeReadResolver.graphql.js +0 -70
- package/lib/resolvers/__generated__/UndefinedFieldResolver.graphql.js +0 -70
- package/lib/resolvers/__generated__/UserAlwaysThrowsResolver.graphql.js +0 -61
- package/lib/resolvers/__generated__/UserAlwaysThrowsTransitivelyResolver.graphql.js +0 -63
- package/lib/resolvers/__generated__/UserAnotherClientEdgeResolver.graphql.js +0 -61
- package/lib/resolvers/__generated__/UserAstrologicalSignResolver.graphql.js +0 -89
- package/lib/resolvers/__generated__/UserBestFriendGreetingResolver.graphql.js +0 -100
- package/lib/resolvers/__generated__/UserBestFriendShoutedGreetingResolver.graphql.js +0 -107
- package/lib/resolvers/__generated__/UserClientEdgeResolver.graphql.js +0 -56
- package/lib/resolvers/__generated__/UserConstantDependentResolver.graphql.js +0 -63
- package/lib/resolvers/__generated__/UserConstantResolver.graphql.js +0 -56
- package/lib/resolvers/__generated__/UserCustomGreetingResolver.graphql.js +0 -56
- package/lib/resolvers/__generated__/UserGreetingResolver.graphql.js +0 -56
- package/lib/resolvers/__generated__/UserNameAndCounterSuspendsWhenOdd.graphql.js +0 -81
- package/lib/resolvers/__generated__/UserNamePassthroughResolver.graphql.js +0 -56
- package/lib/resolvers/__generated__/UserNullClientEdgeResolver.graphql.js +0 -56
- package/lib/resolvers/__generated__/UserProfilePictureResolver.graphql.js +0 -75
- package/lib/resolvers/__generated__/UserProfilePictureUriSuspendsWhenTheCounterIsOdd.graphql.js +0 -85
- package/lib/resolvers/__generated__/UserProfilePictureWithDefaultValueResolver.graphql.js +0 -75
- package/lib/resolvers/__generated__/UserProfilePictureWithRuntimeArgumentResolver.graphql.js +0 -75
- package/lib/resolvers/__generated__/UserReadsClientEdgeResolver.graphql.js +0 -86
- package/lib/resolvers/__generated__/UserRequiredNameResolver.graphql.js +0 -61
- package/lib/resolvers/__generated__/UserShoutedGreetingResolver.graphql.js +0 -63
- package/resolvers/AstrologicalSignHouseResolver.js.flow +0 -41
- package/resolvers/AstrologicalSignNameResolver.js.flow +0 -41
- package/resolvers/AstrologicalSignOppositeResolver.js.flow +0 -42
- package/resolvers/AstrologicalSignSelfResolver.js.flow +0 -55
- package/resolvers/CounterPlusOneResolver.js.flow +0 -41
- package/resolvers/CounterSuspendsWhenOdd.js.flow +0 -66
- package/resolvers/LiveCounterResolver.js.flow +0 -57
- package/resolvers/LivePingPongResolver.js.flow +0 -58
- package/resolvers/QueryAllAstrologicalSignsResolver.js.flow +0 -48
- package/resolvers/ResolverThatThrows.js.flow +0 -53
- package/resolvers/ThrowBeforeReadResolver.js.flow +0 -49
- package/resolvers/UndefinedFieldResolver.js.flow +0 -46
- package/resolvers/UserAlwaysThrowsResolver.js.flow +0 -41
- package/resolvers/UserAlwaysThrowsTransitivelyResolver.js.flow +0 -43
- package/resolvers/UserAnotherClientEdgeResolver.js.flow +0 -43
- package/resolvers/UserAstrologicalSignResolver.js.flow +0 -50
- package/resolvers/UserBestFriendGreetingResolver.js.flow +0 -49
- package/resolvers/UserBestFriendShoutedGreetingResolver.js.flow +0 -49
- package/resolvers/UserClientEdgeResolver.js.flow +0 -41
- package/resolvers/UserConstantDependentResolver.js.flow +0 -43
- package/resolvers/UserConstantResolver.js.flow +0 -41
- package/resolvers/UserCustomGreetingResolver.js.flow +0 -45
- package/resolvers/UserGreetingResolver.js.flow +0 -42
- package/resolvers/UserNameAndCounterSuspendsWhenOdd.js.flow +0 -45
- package/resolvers/UserNamePassthroughResolver.js.flow +0 -39
- package/resolvers/UserNullClientEdgeResolver.js.flow +0 -43
- package/resolvers/UserProfilePictureResolver.js.flow +0 -42
- package/resolvers/UserProfilePictureUriSuspendsWhenTheCounterIsOdd.js.flow +0 -65
- package/resolvers/UserProfilePictureWithDefaultValueResolver.js.flow +0 -44
- package/resolvers/UserProfilePictureWithRuntimeArgumentResolver.js.flow +0 -47
- package/resolvers/UserReadsClientEdgeResolver.js.flow +0 -45
- package/resolvers/UserRequiredNameResolver.js.flow +0 -41
- package/resolvers/UserShoutedGreetingResolver.js.flow +0 -40
- package/resolvers/__generated__/AstrologicalSignHouseResolver.graphql.js.flow +0 -64
- package/resolvers/__generated__/AstrologicalSignNameResolver.graphql.js.flow +0 -64
- package/resolvers/__generated__/AstrologicalSignOppositeResolver.graphql.js.flow +0 -64
- package/resolvers/__generated__/AstrologicalSignSelfResolver.graphql.js.flow +0 -67
- package/resolvers/__generated__/ClientEdgeQuery_UserReadsClientEdgeResolver_client_edge.graphql.js.flow +0 -141
- package/resolvers/__generated__/CounterPlusOneResolver.graphql.js.flow +0 -69
- package/resolvers/__generated__/CounterSuspendsWhenOdd.graphql.js.flow +0 -75
- package/resolvers/__generated__/LiveCounterResolver.graphql.js.flow +0 -75
- package/resolvers/__generated__/LivePingPongResolver.graphql.js.flow +0 -75
- package/resolvers/__generated__/QueryAllAstrologicalSignsResolver.graphql.js.flow +0 -70
- package/resolvers/__generated__/RefetchableClientEdgeQuery_UserReadsClientEdgeResolver_client_edge.graphql.js.flow +0 -76
- package/resolvers/__generated__/ResolverThatThrows.graphql.js.flow +0 -62
- package/resolvers/__generated__/ThrowBeforeReadResolver.graphql.js.flow +0 -75
- package/resolvers/__generated__/UndefinedFieldResolver.graphql.js.flow +0 -75
- package/resolvers/__generated__/UserAlwaysThrowsResolver.graphql.js.flow +0 -62
- package/resolvers/__generated__/UserAlwaysThrowsTransitivelyResolver.graphql.js.flow +0 -64
- package/resolvers/__generated__/UserAnotherClientEdgeResolver.graphql.js.flow +0 -62
- package/resolvers/__generated__/UserAstrologicalSignResolver.graphql.js.flow +0 -93
- package/resolvers/__generated__/UserBestFriendGreetingResolver.graphql.js.flow +0 -110
- package/resolvers/__generated__/UserBestFriendShoutedGreetingResolver.graphql.js.flow +0 -117
- package/resolvers/__generated__/UserClientEdgeResolver.graphql.js.flow +0 -57
- package/resolvers/__generated__/UserConstantDependentResolver.graphql.js.flow +0 -64
- package/resolvers/__generated__/UserConstantResolver.graphql.js.flow +0 -57
- package/resolvers/__generated__/UserCustomGreetingResolver.graphql.js.flow +0 -57
- package/resolvers/__generated__/UserGreetingResolver.graphql.js.flow +0 -57
- package/resolvers/__generated__/UserNameAndCounterSuspendsWhenOdd.graphql.js.flow +0 -85
- package/resolvers/__generated__/UserNamePassthroughResolver.graphql.js.flow +0 -57
- package/resolvers/__generated__/UserNullClientEdgeResolver.graphql.js.flow +0 -57
- package/resolvers/__generated__/UserProfilePictureResolver.graphql.js.flow +0 -82
- package/resolvers/__generated__/UserProfilePictureUriSuspendsWhenTheCounterIsOdd.graphql.js.flow +0 -91
- package/resolvers/__generated__/UserProfilePictureWithDefaultValueResolver.graphql.js.flow +0 -82
- package/resolvers/__generated__/UserProfilePictureWithRuntimeArgumentResolver.graphql.js.flow +0 -82
- package/resolvers/__generated__/UserReadsClientEdgeResolver.graphql.js.flow +0 -89
- package/resolvers/__generated__/UserRequiredNameResolver.graphql.js.flow +0 -62
- package/resolvers/__generated__/UserShoutedGreetingResolver.graphql.js.flow +0 -64
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and 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
|
-
* @format
|
|
8
|
-
* @flow strict-local
|
|
9
|
-
* @emails oncall+relay
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
'use strict';
|
|
13
|
-
|
|
14
|
-
import type {AstrologicalSignNameResolver$key} from './__generated__/AstrologicalSignNameResolver.graphql';
|
|
15
|
-
|
|
16
|
-
const {graphql} = require('relay-runtime');
|
|
17
|
-
const {readFragment} = require('relay-runtime/store/ResolverFragments');
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* @RelayResolver
|
|
21
|
-
* @fieldName name
|
|
22
|
-
* @rootFragment AstrologicalSignNameResolver
|
|
23
|
-
* @onType AstrologicalSign
|
|
24
|
-
*
|
|
25
|
-
* Re-expose `Name` from our client fat `self` object.
|
|
26
|
-
*/
|
|
27
|
-
function astrologicalSignName(
|
|
28
|
-
rootKey: AstrologicalSignNameResolver$key,
|
|
29
|
-
): string | null {
|
|
30
|
-
const sign = readFragment(
|
|
31
|
-
graphql`
|
|
32
|
-
fragment AstrologicalSignNameResolver on AstrologicalSign {
|
|
33
|
-
self
|
|
34
|
-
}
|
|
35
|
-
`,
|
|
36
|
-
rootKey,
|
|
37
|
-
);
|
|
38
|
-
return sign.self?.name ?? null;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
module.exports = astrologicalSignName;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and 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
|
-
* @format
|
|
8
|
-
* @flow strict-local
|
|
9
|
-
* @emails oncall+relay
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
'use strict';
|
|
13
|
-
|
|
14
|
-
import type {AstrologicalSignOppositeResolver$key} from './__generated__/AstrologicalSignOppositeResolver.graphql';
|
|
15
|
-
|
|
16
|
-
const {graphql} = require('relay-runtime');
|
|
17
|
-
const {readFragment} = require('relay-runtime/store/ResolverFragments');
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* @RelayResolver
|
|
21
|
-
* @fieldName opposite
|
|
22
|
-
* @rootFragment AstrologicalSignOppositeResolver
|
|
23
|
-
* @onType AstrologicalSign
|
|
24
|
-
* @edgeTo AstrologicalSign
|
|
25
|
-
*
|
|
26
|
-
* Expose a sign's opposite as an edge in the graph.
|
|
27
|
-
*/
|
|
28
|
-
function astrologicalSignOpposite(
|
|
29
|
-
rootKey: AstrologicalSignOppositeResolver$key,
|
|
30
|
-
): string | null {
|
|
31
|
-
const sign = readFragment(
|
|
32
|
-
graphql`
|
|
33
|
-
fragment AstrologicalSignOppositeResolver on AstrologicalSign {
|
|
34
|
-
self
|
|
35
|
-
}
|
|
36
|
-
`,
|
|
37
|
-
rootKey,
|
|
38
|
-
);
|
|
39
|
-
return sign.self?.oppositeSignId ?? null;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
module.exports = astrologicalSignOpposite;
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and 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
|
-
* @format
|
|
8
|
-
* @flow strict-local
|
|
9
|
-
* @emails oncall+relay
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
'use strict';
|
|
13
|
-
|
|
14
|
-
import type {
|
|
15
|
-
AstrologicalSignID,
|
|
16
|
-
ClientAstrologicalSignData,
|
|
17
|
-
} from '../AstrologicalSignUtils';
|
|
18
|
-
import type {AstrologicalSignSelfResolver$key} from './__generated__/AstrologicalSignSelfResolver.graphql';
|
|
19
|
-
|
|
20
|
-
const {getHouse, getOpposite} = require('../AstrologicalSignUtils');
|
|
21
|
-
const {graphql} = require('relay-runtime');
|
|
22
|
-
const {readFragment} = require('relay-runtime/store/ResolverFragments');
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* @RelayResolver
|
|
26
|
-
* @fieldName self
|
|
27
|
-
* @rootFragment AstrologicalSignSelfResolver
|
|
28
|
-
* @onType AstrologicalSign
|
|
29
|
-
*
|
|
30
|
-
* Local state knowledge of the user's astological sign.
|
|
31
|
-
*/
|
|
32
|
-
function astrologicalSignSelf(
|
|
33
|
-
rootKey: AstrologicalSignSelfResolver$key,
|
|
34
|
-
): ClientAstrologicalSignData {
|
|
35
|
-
const sign = readFragment(
|
|
36
|
-
graphql`
|
|
37
|
-
fragment AstrologicalSignSelfResolver on AstrologicalSign {
|
|
38
|
-
id @required(action: THROW)
|
|
39
|
-
}
|
|
40
|
-
`,
|
|
41
|
-
rootKey,
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
// id is ID in the schema, but `AstrologicalSignID` in the resolver
|
|
45
|
-
// which actually returns it. This is a typehole we'll need to patch.
|
|
46
|
-
// $FlowFixMe
|
|
47
|
-
const id: AstrologicalSignID = (sign.id: any);
|
|
48
|
-
return {
|
|
49
|
-
name: sign.id, // The id is actually the human readable name.
|
|
50
|
-
oppositeSignId: getOpposite(id),
|
|
51
|
-
house: getHouse(id),
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
module.exports = astrologicalSignSelf;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and 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
|
-
* @format
|
|
8
|
-
* @flow strict-local
|
|
9
|
-
* @emails oncall+relay
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
// flowlint ambiguous-object-type:error
|
|
13
|
-
|
|
14
|
-
'use strict';
|
|
15
|
-
|
|
16
|
-
import type {CounterPlusOneResolver$key} from './__generated__/CounterPlusOneResolver.graphql';
|
|
17
|
-
|
|
18
|
-
const {graphql} = require('relay-runtime');
|
|
19
|
-
const {readFragment} = require('relay-runtime/store/ResolverFragments');
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* @RelayResolver
|
|
23
|
-
* @fieldName counter_plus_one
|
|
24
|
-
* @rootFragment CounterPlusOneResolver
|
|
25
|
-
* @onType Query
|
|
26
|
-
*
|
|
27
|
-
* A resolver which reads a @live resover field (`counter`) to return `counter + 1`.
|
|
28
|
-
*/
|
|
29
|
-
function counterPlusOne(rootKey: CounterPlusOneResolver$key): number {
|
|
30
|
-
const data = readFragment(
|
|
31
|
-
graphql`
|
|
32
|
-
fragment CounterPlusOneResolver on Query {
|
|
33
|
-
counter @required(action: THROW)
|
|
34
|
-
}
|
|
35
|
-
`,
|
|
36
|
-
rootKey,
|
|
37
|
-
);
|
|
38
|
-
return data.counter + 1;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
module.exports = counterPlusOne;
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and 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
|
-
* @format
|
|
8
|
-
* @flow strict-local
|
|
9
|
-
* @emails oncall+relay
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
// flowlint ambiguous-object-type:error
|
|
13
|
-
|
|
14
|
-
'use strict';
|
|
15
|
-
|
|
16
|
-
import type {CounterSuspendsWhenOdd$key} from './__generated__/CounterSuspendsWhenOdd.graphql';
|
|
17
|
-
import type {LiveState} from 'relay-runtime/store/experimental-live-resolvers/LiveResolverStore';
|
|
18
|
-
|
|
19
|
-
const {GLOBAL_STORE, Selectors} = require('../ExampleExternalStateStore');
|
|
20
|
-
const {graphql} = require('relay-runtime');
|
|
21
|
-
const {
|
|
22
|
-
suspenseSentinel,
|
|
23
|
-
} = require('relay-runtime/store/experimental-live-resolvers/LiveResolverSuspenseSentinel');
|
|
24
|
-
const {readFragment} = require('relay-runtime/store/ResolverFragments');
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* @RelayResolver
|
|
28
|
-
* @fieldName counter_suspends_when_odd
|
|
29
|
-
* @rootFragment CounterSuspendsWhenOdd
|
|
30
|
-
* @onType Query
|
|
31
|
-
* @live
|
|
32
|
-
*
|
|
33
|
-
* A Relay Resolver that returns an object implementing the External State
|
|
34
|
-
* Resolver interface.
|
|
35
|
-
*/
|
|
36
|
-
function CounterSuspendsWhenOdd(
|
|
37
|
-
rootKey: CounterSuspendsWhenOdd$key,
|
|
38
|
-
): LiveState<number> {
|
|
39
|
-
readFragment(
|
|
40
|
-
graphql`
|
|
41
|
-
fragment CounterSuspendsWhenOdd on Query {
|
|
42
|
-
me {
|
|
43
|
-
__id
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
`,
|
|
47
|
-
rootKey,
|
|
48
|
-
);
|
|
49
|
-
return {
|
|
50
|
-
read() {
|
|
51
|
-
const number = Selectors.getNumber(GLOBAL_STORE.getState());
|
|
52
|
-
if (number % 2 !== 0) {
|
|
53
|
-
return suspenseSentinel();
|
|
54
|
-
} else {
|
|
55
|
-
return number;
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
subscribe(cb): () => void {
|
|
59
|
-
// Here we could try to run the selector and short-circuit if
|
|
60
|
-
// the value has not changed, but for now we'll over-notify.
|
|
61
|
-
return GLOBAL_STORE.subscribe(cb);
|
|
62
|
-
},
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
module.exports = CounterSuspendsWhenOdd;
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and 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
|
-
* @format
|
|
8
|
-
* @flow strict-local
|
|
9
|
-
* @emails oncall+relay
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
// flowlint ambiguous-object-type:error
|
|
13
|
-
|
|
14
|
-
'use strict';
|
|
15
|
-
|
|
16
|
-
import type {LiveCounterResolver$key} from './__generated__/LiveCounterResolver.graphql';
|
|
17
|
-
import type {LiveState} from 'relay-runtime/store/experimental-live-resolvers/LiveResolverStore';
|
|
18
|
-
|
|
19
|
-
const {GLOBAL_STORE, Selectors} = require('../ExampleExternalStateStore');
|
|
20
|
-
const {graphql} = require('relay-runtime');
|
|
21
|
-
const {readFragment} = require('relay-runtime/store/ResolverFragments');
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* @RelayResolver
|
|
25
|
-
* @fieldName counter
|
|
26
|
-
* @rootFragment LiveCounterResolver
|
|
27
|
-
* @onType Query
|
|
28
|
-
* @live
|
|
29
|
-
*
|
|
30
|
-
* A Relay Resolver that returns an object implementing the External State
|
|
31
|
-
* Resolver interface.
|
|
32
|
-
*/
|
|
33
|
-
function counter(rootKey: LiveCounterResolver$key): LiveState<number> {
|
|
34
|
-
readFragment(
|
|
35
|
-
graphql`
|
|
36
|
-
fragment LiveCounterResolver on Query {
|
|
37
|
-
# We don't need to read any Relay state here, but this works for now
|
|
38
|
-
me {
|
|
39
|
-
__id
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
`,
|
|
43
|
-
rootKey,
|
|
44
|
-
);
|
|
45
|
-
return {
|
|
46
|
-
read() {
|
|
47
|
-
return Selectors.getNumber(GLOBAL_STORE.getState());
|
|
48
|
-
},
|
|
49
|
-
subscribe(cb): () => void {
|
|
50
|
-
// Here we could try to run the selector and short-circut if the value has
|
|
51
|
-
// not changed, but for now we'll over-notify.
|
|
52
|
-
return GLOBAL_STORE.subscribe(cb);
|
|
53
|
-
},
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
module.exports = counter;
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and 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
|
-
* @format
|
|
8
|
-
* @flow strict-local
|
|
9
|
-
* @emails oncall+relay
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
// flowlint ambiguous-object-type:error
|
|
13
|
-
|
|
14
|
-
'use strict';
|
|
15
|
-
|
|
16
|
-
import type {LivePingPongResolver$key} from './__generated__/LivePingPongResolver.graphql';
|
|
17
|
-
import type {LiveState} from 'relay-runtime/store/experimental-live-resolvers/LiveResolverStore';
|
|
18
|
-
|
|
19
|
-
const {graphql} = require('relay-runtime');
|
|
20
|
-
const {readFragment} = require('relay-runtime/store/ResolverFragments');
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* @RelayResolver
|
|
24
|
-
* @fieldName ping
|
|
25
|
-
* @rootFragment LivePingPongResolver
|
|
26
|
-
* @onType Query
|
|
27
|
-
* @live
|
|
28
|
-
*
|
|
29
|
-
* A @live Relay resolver that syncronously triggers an update on initial
|
|
30
|
-
* subscribe. This is intended to exercise an edge case in Relay's handling of
|
|
31
|
-
* Live Resolvers.
|
|
32
|
-
*/
|
|
33
|
-
function pingPong(rootKey: LivePingPongResolver$key): LiveState<string> {
|
|
34
|
-
readFragment(
|
|
35
|
-
graphql`
|
|
36
|
-
fragment LivePingPongResolver on Query {
|
|
37
|
-
# We don't need to read any Relay state here, but this works for now
|
|
38
|
-
me {
|
|
39
|
-
__id
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
`,
|
|
43
|
-
rootKey,
|
|
44
|
-
);
|
|
45
|
-
let value = 'ping';
|
|
46
|
-
return {
|
|
47
|
-
read() {
|
|
48
|
-
return value;
|
|
49
|
-
},
|
|
50
|
-
subscribe(cb): () => void {
|
|
51
|
-
value = 'pong';
|
|
52
|
-
cb();
|
|
53
|
-
return () => {};
|
|
54
|
-
},
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
module.exports = pingPong;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and 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
|
-
* @format
|
|
8
|
-
* @flow strict-local
|
|
9
|
-
* @emails oncall+relay
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
'use strict';
|
|
13
|
-
|
|
14
|
-
import type {AstrologicalSignID} from '../AstrologicalSignUtils';
|
|
15
|
-
import type {QueryAllAstrologicalSignsResolver$key} from './__generated__/QueryAllAstrologicalSignsResolver.graphql';
|
|
16
|
-
|
|
17
|
-
const {HOUSE_ORDER} = require('../AstrologicalSignUtils');
|
|
18
|
-
|
|
19
|
-
const {graphql} = require('relay-runtime');
|
|
20
|
-
const {readFragment} = require('relay-runtime/store/ResolverFragments');
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* @RelayResolver
|
|
24
|
-
* @fieldName all_astrological_signs
|
|
25
|
-
* @rootFragment QueryAllAstrologicalSignsResolver
|
|
26
|
-
* @onType Query
|
|
27
|
-
* @edgeTo [AstrologicalSign]
|
|
28
|
-
*
|
|
29
|
-
* A client edge to a plural client object
|
|
30
|
-
*/
|
|
31
|
-
function astrologicalSignSelf(
|
|
32
|
-
rootKey: QueryAllAstrologicalSignsResolver$key,
|
|
33
|
-
): $ReadOnlyArray<AstrologicalSignID> {
|
|
34
|
-
readFragment(
|
|
35
|
-
graphql`
|
|
36
|
-
fragment QueryAllAstrologicalSignsResolver on Query {
|
|
37
|
-
me {
|
|
38
|
-
__typename
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
`,
|
|
42
|
-
rootKey,
|
|
43
|
-
);
|
|
44
|
-
|
|
45
|
-
return [...HOUSE_ORDER];
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
module.exports = astrologicalSignSelf;
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and 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
|
-
* @format
|
|
8
|
-
* @flow strict-local
|
|
9
|
-
* @emails oncall+relay
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
// flowlint ambiguous-object-type:error
|
|
13
|
-
|
|
14
|
-
'use strict';
|
|
15
|
-
|
|
16
|
-
import type {ResolverThatThrows$key} from './__generated__/ResolverThatThrows.graphql';
|
|
17
|
-
import type {LiveState} from 'relay-runtime/store/experimental-live-resolvers/LiveResolverStore';
|
|
18
|
-
|
|
19
|
-
const {graphql} = require('relay-runtime');
|
|
20
|
-
const {readFragment} = require('relay-runtime/store/ResolverFragments');
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* @RelayResolver
|
|
24
|
-
* @fieldName resolver_that_throws
|
|
25
|
-
* @rootFragment ResolverThatThrows
|
|
26
|
-
* @onType User
|
|
27
|
-
* @live
|
|
28
|
-
*
|
|
29
|
-
* This should always throw.
|
|
30
|
-
*/
|
|
31
|
-
function ResolverThatThrows(rootKey: ResolverThatThrows$key): LiveState<null> {
|
|
32
|
-
readFragment(
|
|
33
|
-
graphql`
|
|
34
|
-
fragment ResolverThatThrows on User {
|
|
35
|
-
username @required(action: THROW)
|
|
36
|
-
}
|
|
37
|
-
`,
|
|
38
|
-
rootKey,
|
|
39
|
-
);
|
|
40
|
-
|
|
41
|
-
return {
|
|
42
|
-
read() {
|
|
43
|
-
throw new Error(
|
|
44
|
-
'The resolver should throw earlier. It should have missing data.',
|
|
45
|
-
);
|
|
46
|
-
},
|
|
47
|
-
subscribe(cb) {
|
|
48
|
-
return () => {};
|
|
49
|
-
},
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
module.exports = ResolverThatThrows;
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and 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
|
-
* @format
|
|
8
|
-
* @flow strict-local
|
|
9
|
-
* @emails oncall+relay
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
// flowlint ambiguous-object-type:error
|
|
13
|
-
|
|
14
|
-
'use strict';
|
|
15
|
-
|
|
16
|
-
import type {ThrowBeforeReadResolver$key} from './__generated__/ThrowBeforeReadResolver.graphql';
|
|
17
|
-
|
|
18
|
-
const {graphql} = require('relay-runtime');
|
|
19
|
-
const {readFragment} = require('relay-runtime/store/ResolverFragments');
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* @RelayResolver
|
|
23
|
-
* @fieldName throw_before_read
|
|
24
|
-
* @rootFragment ThrowBeforeReadResolver
|
|
25
|
-
* @onType Query
|
|
26
|
-
*
|
|
27
|
-
* A resolver that exercises the edge case where a resolver throws before reading.
|
|
28
|
-
*/
|
|
29
|
-
function pingPong(rootKey: ThrowBeforeReadResolver$key): mixed {
|
|
30
|
-
// Trick Flow's unreachable code detection.
|
|
31
|
-
if (true) {
|
|
32
|
-
throw new Error(
|
|
33
|
-
'Purposefully throwing before reading to exercise an edge case.',
|
|
34
|
-
);
|
|
35
|
-
}
|
|
36
|
-
readFragment(
|
|
37
|
-
graphql`
|
|
38
|
-
fragment ThrowBeforeReadResolver on Query {
|
|
39
|
-
# We don't need to read any Relay state here, but this works for now
|
|
40
|
-
me {
|
|
41
|
-
__id
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
`,
|
|
45
|
-
rootKey,
|
|
46
|
-
);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
module.exports = pingPong;
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and 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
|
-
* @format
|
|
8
|
-
* @flow strict-local
|
|
9
|
-
* @emails oncall+relay
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
// flowlint ambiguous-object-type:error
|
|
13
|
-
|
|
14
|
-
'use strict';
|
|
15
|
-
|
|
16
|
-
import type {UndefinedFieldResolver$key} from './__generated__/UndefinedFieldResolver.graphql';
|
|
17
|
-
|
|
18
|
-
const {graphql} = require('relay-runtime');
|
|
19
|
-
const {readFragment} = require('relay-runtime/store/ResolverFragments');
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* @RelayResolver
|
|
23
|
-
* @fieldName undefined_field
|
|
24
|
-
* @rootFragment UndefinedFieldResolver
|
|
25
|
-
* @onType Query
|
|
26
|
-
*
|
|
27
|
-
* A resolver that always returns undefined. This is inteneded to exercise an
|
|
28
|
-
* edge case in Relay Reader where `undefined` is generally interperated as
|
|
29
|
-
* indicating that a field has not been fetched, and thus we should suspend.
|
|
30
|
-
*/
|
|
31
|
-
function pingPong(rootKey: UndefinedFieldResolver$key): void {
|
|
32
|
-
readFragment(
|
|
33
|
-
graphql`
|
|
34
|
-
fragment UndefinedFieldResolver on Query {
|
|
35
|
-
# We don't need to read any Relay state here, but this works for now
|
|
36
|
-
me {
|
|
37
|
-
__id
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
`,
|
|
41
|
-
rootKey,
|
|
42
|
-
);
|
|
43
|
-
return undefined;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
module.exports = pingPong;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and 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
|
-
* @format
|
|
8
|
-
* @flow strict-local
|
|
9
|
-
* @emails oncall+relay
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
// flowlint ambiguous-object-type:error
|
|
13
|
-
|
|
14
|
-
'use strict';
|
|
15
|
-
|
|
16
|
-
import type {UserAlwaysThrowsResolver$key} from './__generated__/UserAlwaysThrowsResolver.graphql';
|
|
17
|
-
|
|
18
|
-
const {graphql} = require('relay-runtime');
|
|
19
|
-
const {readFragment} = require('relay-runtime/store/ResolverFragments');
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* @RelayResolver
|
|
23
|
-
* @fieldName always_throws
|
|
24
|
-
* @rootFragment UserAlwaysThrowsResolver
|
|
25
|
-
* @onType User
|
|
26
|
-
*
|
|
27
|
-
* A Relay Resolver that always throws when evaluated.
|
|
28
|
-
*/
|
|
29
|
-
function userAlwaysThrows(rootKey: UserAlwaysThrowsResolver$key): string {
|
|
30
|
-
readFragment(
|
|
31
|
-
graphql`
|
|
32
|
-
fragment UserAlwaysThrowsResolver on User {
|
|
33
|
-
__typename
|
|
34
|
-
}
|
|
35
|
-
`,
|
|
36
|
-
rootKey,
|
|
37
|
-
);
|
|
38
|
-
throw new Error('I always throw. What did you expect?');
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
module.exports = userAlwaysThrows;
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and 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
|
-
* @format
|
|
8
|
-
* @flow strict-local
|
|
9
|
-
* @emails oncall+relay
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
// flowlint ambiguous-object-type:error
|
|
13
|
-
|
|
14
|
-
'use strict';
|
|
15
|
-
|
|
16
|
-
import type {UserAlwaysThrowsTransitivelyResolver$key} from './__generated__/UserAlwaysThrowsTransitivelyResolver.graphql';
|
|
17
|
-
|
|
18
|
-
const {graphql} = require('relay-runtime');
|
|
19
|
-
const {readFragment} = require('relay-runtime/store/ResolverFragments');
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* @RelayResolver
|
|
23
|
-
* @fieldName always_throws_transitively
|
|
24
|
-
* @rootFragment UserAlwaysThrowsTransitivelyResolver
|
|
25
|
-
* @onType User
|
|
26
|
-
*
|
|
27
|
-
* A Relay Resolver that reads another resolver which will always throw.
|
|
28
|
-
*/
|
|
29
|
-
function userAlwaysThrowsTransitively(
|
|
30
|
-
rootKey: UserAlwaysThrowsTransitivelyResolver$key,
|
|
31
|
-
): ?string {
|
|
32
|
-
const user = readFragment(
|
|
33
|
-
graphql`
|
|
34
|
-
fragment UserAlwaysThrowsTransitivelyResolver on User {
|
|
35
|
-
always_throws
|
|
36
|
-
}
|
|
37
|
-
`,
|
|
38
|
-
rootKey,
|
|
39
|
-
);
|
|
40
|
-
return user.always_throws;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
module.exports = userAlwaysThrowsTransitively;
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and 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
|
-
* @format
|
|
8
|
-
* @flow strict-local
|
|
9
|
-
* @emails oncall+relay
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
// flowlint ambiguous-object-type:error
|
|
13
|
-
|
|
14
|
-
'use strict';
|
|
15
|
-
|
|
16
|
-
import type {UserAnotherClientEdgeResolver$key} from './__generated__/UserAnotherClientEdgeResolver.graphql';
|
|
17
|
-
import type {DataID} from 'relay-runtime';
|
|
18
|
-
|
|
19
|
-
const {graphql} = require('relay-runtime');
|
|
20
|
-
const {readFragment} = require('relay-runtime/store/ResolverFragments');
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* @RelayResolver
|
|
24
|
-
* @fieldName another_client_edge
|
|
25
|
-
* @rootFragment UserAnotherClientEdgeResolver
|
|
26
|
-
* @onType User
|
|
27
|
-
* @edgeTo User
|
|
28
|
-
*/
|
|
29
|
-
function UserAnotherClientEdgeResolver(
|
|
30
|
-
rootKey: UserAnotherClientEdgeResolver$key,
|
|
31
|
-
): DataID {
|
|
32
|
-
readFragment(
|
|
33
|
-
graphql`
|
|
34
|
-
fragment UserAnotherClientEdgeResolver on User {
|
|
35
|
-
__typename
|
|
36
|
-
}
|
|
37
|
-
`,
|
|
38
|
-
rootKey,
|
|
39
|
-
);
|
|
40
|
-
return '1338';
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
module.exports = UserAnotherClientEdgeResolver;
|