diff --git a/packages/relay-runtime/store/RelayReader.js b/packages/relay-runtime/store/RelayReader.js index 0ec170d225e29..540be087bcd39 100644 --- a/packages/relay-runtime/store/RelayReader.js +++ b/packages/relay-runtime/store/RelayReader.js @@ -28,7 +28,6 @@ const { LINKED_FIELD, MODULE_IMPORT, REQUIRED_FIELD, - RELAY_RESOLVER, SCALAR_FIELD, STREAM, } = require('../util/RelayConcreteNode'); @@ -328,16 +327,6 @@ class RelayReader { } break; } - case RELAY_RESOLVER: { - if (!RelayFeatureFlags.ENABLE_RELAY_RESOLVERS) { - throw new Error('Relay Resolver fields are not yet supported.'); - } - const {name, alias, resolverModule} = selection; - // TODO: Create the key - const key = ({}: any); // flowlint-line unclear-type:off - data[alias ?? name] = resolverModule(key); - break; - } case FRAGMENT_SPREAD: this._createFragmentPointer(selection, record, data); break; diff --git a/packages/relay-runtime/store/__tests__/RelayReader-Resolver-test.js b/packages/relay-runtime/store/__tests__/RelayReader-Resolver-test.js deleted file mode 100644 index 70c414f6f3390..0000000000000 --- a/packages/relay-runtime/store/__tests__/RelayReader-Resolver-test.js +++ /dev/null @@ -1,96 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @format - * @emails oncall+relay - */ - -'use strict'; - -const RelayRecordSource = require('../RelayRecordSource'); - -const {graphql} = require('../../query/GraphQLTag'); -const { - createOperationDescriptor, -} = require('../RelayModernOperationDescriptor'); -const {read} = require('../RelayReader'); -const {RelayFeatureFlags} = require('relay-runtime'); - -beforeEach(() => { - RelayFeatureFlags.ENABLE_RELAY_RESOLVERS = true; -}); - -afterEach(() => { - RelayFeatureFlags.ENABLE_RELAY_RESOLVERS = false; -}); - -describe('Relay Resolver', () => { - it('returns the result of the resolver function', () => { - const source = RelayRecordSource.create({ - 'client:root': { - __id: 'client:root', - __typename: '__Root', - me: {__ref: '1'}, - }, - '1': { - __id: '1', - id: '1', - __typename: 'User', - name: 'Alice', - }, - }); - - const FooQuery = graphql` - query RelayReaderResolverTest1Query { - me { - greeting - } - } - `; - - const operation = createOperationDescriptor(FooQuery, {id: '1'}); - - const {data} = read(source, operation.fragment); - - expect(data).toEqual({ - me: {greeting: 'Hello '}, - }); - }); - - it('errors if the ENABLE_RELAY_RESOLVERS feature flag is not enabled', () => { - RelayFeatureFlags.ENABLE_RELAY_RESOLVERS = false; - - const source = RelayRecordSource.create({ - 'client:root': { - __id: 'client:root', - __typename: '__Root', - me: {__ref: '1'}, - }, - '1': { - __id: '1', - id: '1', - __typename: 'User', - name: 'Alice', - }, - }); - - const FooQuery = graphql` - query RelayReaderResolverTest2Query { - me { - greeting - } - } - `; - - const operation = createOperationDescriptor(FooQuery, {id: '1'}); - - expect(() => { - read(source, operation.fragment); - }).toThrowErrorMatchingInlineSnapshot( - '"Relay Resolver fields are not yet supported."', - ); - }); -}); diff --git a/packages/relay-runtime/store/__tests__/__generated__/RelayReaderResolverTest1Query.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RelayReaderResolverTest1Query.graphql.js deleted file mode 100644 index e0b5e24e9416c..0000000000000 --- a/packages/relay-runtime/store/__tests__/__generated__/RelayReaderResolverTest1Query.graphql.js +++ /dev/null @@ -1,112 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @generated SignedSource<<41aed5792b9d557c810652ee8a9087c2>> - * @flow - * @lightSyntaxTransform - * @nogrep - */ - -/* eslint-disable */ - -'use strict'; - -/*:: -import type { ConcreteRequest } from 'relay-runtime'; -import type { ResolvedValueType as UserGreetingResolverReturnType } from "../../../../relay-test-utils-internal/relay-resolvers/UserGreeting.js"; -export type RelayReaderResolverTest1QueryVariables = {||}; -export type RelayReaderResolverTest1QueryResponse = {| - +me: ?{| - +greeting: UserGreetingResolverReturnType, - |}, -|}; -export type RelayReaderResolverTest1Query = {| - variables: RelayReaderResolverTest1QueryVariables, - response: RelayReaderResolverTest1QueryResponse, -|}; -*/ - -var node/*: ConcreteRequest*/ = { - "fragment": { - "argumentDefinitions": [], - "kind": "Fragment", - "metadata": null, - "name": "RelayReaderResolverTest1Query", - "selections": [ - { - "alias": null, - "args": null, - "concreteType": "User", - "kind": "LinkedField", - "name": "me", - "plural": false, - "selections": [ - { - "alias": null, - "fragment": { - "args": null, - "kind": "FragmentSpread", - "name": "UserGreeting" - }, - "kind": "RelayResolver", - "name": "greeting", - "resolverModule": require('./../../../../relay-test-utils-internal/relay-resolvers/UserGreeting.js') - } - ], - "storageKey": null - } - ], - "type": "Query", - "abstractKey": null - }, - "kind": "Request", - "operation": { - "argumentDefinitions": [], - "kind": "Operation", - "name": "RelayReaderResolverTest1Query", - "selections": [ - { - "alias": null, - "args": null, - "concreteType": "User", - "kind": "LinkedField", - "name": "me", - "plural": false, - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "name", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "id", - "storageKey": null - } - ], - "storageKey": null - } - ] - }, - "params": { - "cacheID": "ae2ec139b6683ab99b8b240826038a6d", - "id": null, - "metadata": {}, - "name": "RelayReaderResolverTest1Query", - "operationKind": "query", - "text": "query RelayReaderResolverTest1Query {\n me {\n ...UserGreeting\n id\n }\n}\n\nfragment UserGreeting on User {\n name\n}\n" - } -}; - -if (__DEV__) { - (node/*: any*/).hash = "bdcddda7a9b9b6926a9fa0787d74a8f2"; -} - -module.exports = node; diff --git a/packages/relay-runtime/store/__tests__/__generated__/RelayReaderResolverTest2Query.graphql.js b/packages/relay-runtime/store/__tests__/__generated__/RelayReaderResolverTest2Query.graphql.js deleted file mode 100644 index b069395feaed8..0000000000000 --- a/packages/relay-runtime/store/__tests__/__generated__/RelayReaderResolverTest2Query.graphql.js +++ /dev/null @@ -1,112 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @generated SignedSource<<1224c0f84832dca1fa9d35913fb4bf84>> - * @flow - * @lightSyntaxTransform - * @nogrep - */ - -/* eslint-disable */ - -'use strict'; - -/*:: -import type { ConcreteRequest } from 'relay-runtime'; -import type { ResolvedValueType as UserGreetingResolverReturnType } from "../../../../relay-test-utils-internal/relay-resolvers/UserGreeting.js"; -export type RelayReaderResolverTest2QueryVariables = {||}; -export type RelayReaderResolverTest2QueryResponse = {| - +me: ?{| - +greeting: UserGreetingResolverReturnType, - |}, -|}; -export type RelayReaderResolverTest2Query = {| - variables: RelayReaderResolverTest2QueryVariables, - response: RelayReaderResolverTest2QueryResponse, -|}; -*/ - -var node/*: ConcreteRequest*/ = { - "fragment": { - "argumentDefinitions": [], - "kind": "Fragment", - "metadata": null, - "name": "RelayReaderResolverTest2Query", - "selections": [ - { - "alias": null, - "args": null, - "concreteType": "User", - "kind": "LinkedField", - "name": "me", - "plural": false, - "selections": [ - { - "alias": null, - "fragment": { - "args": null, - "kind": "FragmentSpread", - "name": "UserGreeting" - }, - "kind": "RelayResolver", - "name": "greeting", - "resolverModule": require('./../../../../relay-test-utils-internal/relay-resolvers/UserGreeting.js') - } - ], - "storageKey": null - } - ], - "type": "Query", - "abstractKey": null - }, - "kind": "Request", - "operation": { - "argumentDefinitions": [], - "kind": "Operation", - "name": "RelayReaderResolverTest2Query", - "selections": [ - { - "alias": null, - "args": null, - "concreteType": "User", - "kind": "LinkedField", - "name": "me", - "plural": false, - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "name", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "id", - "storageKey": null - } - ], - "storageKey": null - } - ] - }, - "params": { - "cacheID": "300294a315d742d16ba41899dfe6e8e3", - "id": null, - "metadata": {}, - "name": "RelayReaderResolverTest2Query", - "operationKind": "query", - "text": "query RelayReaderResolverTest2Query {\n me {\n ...UserGreeting\n id\n }\n}\n\nfragment UserGreeting on User {\n name\n}\n" - } -}; - -if (__DEV__) { - (node/*: any*/).hash = "97a73e89bf2a408ad6fb173669b1a765"; -} - -module.exports = node; diff --git a/packages/relay-runtime/util/ReaderNode.js b/packages/relay-runtime/util/ReaderNode.js index f819d5d4f658b..80c5b187d8204 100644 --- a/packages/relay-runtime/util/ReaderNode.js +++ b/packages/relay-runtime/util/ReaderNode.js @@ -206,18 +206,6 @@ export type ReaderRequiredField = {| +path: string, |}; -export type ReaderRelayResolver = {| - +kind: 'RelayResolver', - +alias: ?string, - +name: string, - +fragment: ReaderFragmentSpread, - +resolverModule: (rootKey: { - +$data?: any, // flowlint-line unclear-type:off - +$fragmentRefs: any, // flowlint-line unclear-type:off - ... - }) => mixed, -|}; - export type ReaderSelection = | ReaderCondition | ReaderClientExtension @@ -229,8 +217,7 @@ export type ReaderSelection = | ReaderInlineFragment | ReaderModuleImport | ReaderStream - | ReaderRequiredField - | ReaderRelayResolver; + | ReaderRequiredField; export type ReaderVariableArgument = {| +kind: 'Variable', diff --git a/packages/relay-runtime/util/RelayConcreteNode.js b/packages/relay-runtime/util/RelayConcreteNode.js index 9942850afa90c..60810ab321f69 100644 --- a/packages/relay-runtime/util/RelayConcreteNode.js +++ b/packages/relay-runtime/util/RelayConcreteNode.js @@ -84,7 +84,6 @@ const RelayConcreteNode = { LIST_VALUE: 'ListValue', LOCAL_ARGUMENT: 'LocalArgument', MODULE_IMPORT: 'ModuleImport', - RELAY_RESOLVER: 'RelayResolver', REQUIRED_FIELD: 'RequiredField', OBJECT_VALUE: 'ObjectValue', OPERATION: 'Operation', diff --git a/packages/relay-runtime/util/RelayFeatureFlags.js b/packages/relay-runtime/util/RelayFeatureFlags.js index d93a841e72cf7..2c6d50c23e6b7 100644 --- a/packages/relay-runtime/util/RelayFeatureFlags.js +++ b/packages/relay-runtime/util/RelayFeatureFlags.js @@ -19,7 +19,6 @@ type FeatureFlags = {| ENABLE_PRECISE_TYPE_REFINEMENT: boolean, ENABLE_REACT_FLIGHT_COMPONENT_FIELD: boolean, ENABLE_REQUIRED_DIRECTIVES: boolean | string, - ENABLE_RELAY_RESOLVERS: boolean, ENABLE_GETFRAGMENTIDENTIFIER_OPTIMIZATION: boolean, ENABLE_FRIENDLY_QUERY_NAME_GQL_URL: boolean, ENABLE_STORE_SUBSCRIPTIONS_REFACTOR: boolean, @@ -37,7 +36,6 @@ const RelayFeatureFlags: FeatureFlags = { ENABLE_PRECISE_TYPE_REFINEMENT: false, ENABLE_REACT_FLIGHT_COMPONENT_FIELD: false, ENABLE_REQUIRED_DIRECTIVES: false, - ENABLE_RELAY_RESOLVERS: false, ENABLE_GETFRAGMENTIDENTIFIER_OPTIMIZATION: false, ENABLE_FRIENDLY_QUERY_NAME_GQL_URL: false, ENABLE_STORE_SUBSCRIPTIONS_REFACTOR: false, diff --git a/packages/relay-test-utils-internal/relay-resolvers/UserGreeting.js b/packages/relay-test-utils-internal/relay-resolvers/UserGreeting.js deleted file mode 100644 index d9a6012d65f2c..0000000000000 --- a/packages/relay-test-utils-internal/relay-resolvers/UserGreeting.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @format - * @flow - * @emails oncall+relay - */ - -'use strict'; - -const {graphql} = require('../../relay-runtime/query/GraphQLTag'); - -import type {UserGreeting$key} from './__generated__/UserGreeting.graphql.js'; - -export type ResolvedValueType = string; - -// Eventually our schema definition will be derived from this function. For now, it's `../schema-extensions/User.graphql` -function userGreeting(rootKey: UserGreeting$key): string { - graphql` - fragment UserGreeting on User { - name - } - `; - - return 'Hello '; -} - -module.exports = userGreeting; diff --git a/packages/relay-test-utils-internal/relay-resolvers/__generated__/UserGreeting.graphql.js b/packages/relay-test-utils-internal/relay-resolvers/__generated__/UserGreeting.graphql.js deleted file mode 100644 index 1aec33de2d827..0000000000000 --- a/packages/relay-test-utils-internal/relay-resolvers/__generated__/UserGreeting.graphql.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @generated SignedSource<<8fb69835f068423df0141bb11b19ab0c>> - * @flow - * @lightSyntaxTransform - * @nogrep - */ - -/* eslint-disable */ - -'use strict'; - -/*:: -import type { ReaderFragment } from 'relay-runtime'; -import type { FragmentReference } from "relay-runtime"; -declare export opaque type UserGreeting$ref: FragmentReference; -declare export opaque type UserGreeting$fragmentType: UserGreeting$ref; -export type UserGreeting = {| - +name: ?string, - +$refType: UserGreeting$ref, -|}; -export type UserGreeting$data = UserGreeting; -export type UserGreeting$key = { - +$data?: UserGreeting$data, - +$fragmentRefs: UserGreeting$ref, - ... -}; -*/ - -var node/*: ReaderFragment*/ = { - "argumentDefinitions": [], - "kind": "Fragment", - "metadata": null, - "name": "UserGreeting", - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "name", - "storageKey": null - } - ], - "type": "User", - "abstractKey": null -}; - -if (__DEV__) { - (node/*: any*/).hash = "ce926cff7d9f8ebc6ac8e03f220da358"; -} - -module.exports = node; diff --git a/packages/relay-test-utils-internal/schema-extensions/User.graphql b/packages/relay-test-utils-internal/schema-extensions/User.graphql index ef1239a431f1c..e3ed5aadf5c66 100644 --- a/packages/relay-test-utils-internal/schema-extensions/User.graphql +++ b/packages/relay-test-utils-internal/schema-extensions/User.graphql @@ -10,11 +10,3 @@ extend type User { client_name: String client_code: Int } - -extend type User { - greeting: Int - @relay_resolver( - fragment_name: "UserGreeting" - import_path: "../../../../relay-test-utils-internal/relay-resolvers/UserGreeting.js" - ) -}