UNPKG

1.57 kBJavaScriptView Raw
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 *
8 * @format
9 */
10'use strict';
11
12var _objectSpread2 = require("@babel/runtime/helpers/interopRequireDefault")(require("@babel/runtime/helpers/objectSpread"));
13
14function relayFieldHandleTransform(context) {
15 return require("./GraphQLIRTransformer").transform(context, {
16 LinkedField: visitField,
17 MatchField: visitField,
18 ScalarField: visitField
19 });
20}
21/**
22 * @internal
23 */
24
25
26function visitField(field) {
27 if (field.kind === 'LinkedField') {
28 field = this.traverse(field);
29 }
30
31 var handles = field.handles;
32
33 if (!handles || !handles.length) {
34 return field;
35 } // ensure exactly one handle
36
37
38 !(handles.length === 1) ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayFieldHandleTransform: Expected fields to have at most one ' + '"handle" property, got `%s`.', handles.join(', ')) : require("fbjs/lib/invariant")(false) : void 0;
39 var alias = field.alias || field.name;
40 var handle = handles[0];
41
42 var name = require("relay-runtime").getRelayHandleKey(handle.name, handle.key, field.name);
43
44 var filters = handle.filters;
45 var args = filters ? field.args.filter(function (arg) {
46 return filters.indexOf(arg.name) > -1;
47 }) : [];
48 return (0, _objectSpread2["default"])({}, field, {
49 args: args,
50 alias: alias,
51 name: name,
52 handles: null
53 });
54}
55
56module.exports = {
57 transform: relayFieldHandleTransform
58};
\No newline at end of file