1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 | 'use strict';
|
11 |
|
12 | var _objectSpread2 = require("@babel/runtime/helpers/interopRequireDefault")(require("@babel/runtime/helpers/objectSpread"));
|
13 |
|
14 | var RELAY = 'relay';
|
15 | var SCHEMA_EXTENSION = "\ndirective @relay(\n # Marks a connection field as containing nodes without 'id' fields.\n # This is used to silence the warning when diffing connections.\n isConnectionWithoutNodeID: Boolean,\n\n # Marks a fragment as intended for pattern matching (as opposed to fetching).\n # Used in Classic only.\n pattern: Boolean,\n\n # Marks a fragment as being backed by a GraphQLList.\n plural: Boolean,\n\n # Marks a fragment spread which should be unmasked if provided false\n mask: Boolean = true,\n\n # Selectively pass variables down into a fragment. Only used in Classic.\n variables: [String!],\n) on FRAGMENT_DEFINITION | FRAGMENT_SPREAD | INLINE_FRAGMENT | FIELD\n";
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 | function relayRelayDirectiveTransform(context) {
|
22 | return require("./GraphQLIRTransformer").transform(context, {
|
23 | Fragment: visitRelayMetadata(fragmentMetadata),
|
24 | FragmentSpread: visitRelayMetadata(fragmentSpreadMetadata)
|
25 | });
|
26 | }
|
27 |
|
28 | function visitRelayMetadata(metadataFn) {
|
29 | return function (node) {
|
30 | var relayDirective = node.directives.find(function (_ref) {
|
31 | var name = _ref.name;
|
32 | return name === RELAY;
|
33 | });
|
34 |
|
35 | if (!relayDirective) {
|
36 | return this.traverse(node);
|
37 | }
|
38 |
|
39 | var argValues = require("./getLiteralArgumentValues")(relayDirective.args);
|
40 |
|
41 | var metadata = metadataFn(argValues);
|
42 | return this.traverse((0, _objectSpread2["default"])({}, node, {
|
43 | directives: node.directives.filter(function (directive) {
|
44 | return directive !== relayDirective;
|
45 | }),
|
46 | metadata: (0, _objectSpread2["default"])({}, node.metadata || {}, metadata)
|
47 | }));
|
48 | };
|
49 | }
|
50 |
|
51 | function fragmentMetadata(_ref2) {
|
52 | var mask = _ref2.mask,
|
53 | plural = _ref2.plural;
|
54 | !(plural === undefined || typeof plural === 'boolean') ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRelayDirectiveTransform: Expected the "plural" argument to @relay ' + 'to be a boolean literal if specified.') : require("fbjs/lib/invariant")(false) : void 0;
|
55 | !(mask === undefined || typeof mask === 'boolean') ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRelayDirectiveTransform: Expected the "mask" argument to @relay ' + 'to be a boolean literal if specified.') : require("fbjs/lib/invariant")(false) : void 0;
|
56 | return {
|
57 | mask: mask,
|
58 | plural: plural
|
59 | };
|
60 | }
|
61 |
|
62 | function fragmentSpreadMetadata(_ref3) {
|
63 | var mask = _ref3.mask;
|
64 | !(mask === undefined || typeof mask === 'boolean') ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRelayDirectiveTransform: Expected the "mask" argument to @relay ' + 'to be a boolean literal if specified.') : require("fbjs/lib/invariant")(false) : void 0;
|
65 | return {
|
66 | mask: mask
|
67 | };
|
68 | }
|
69 |
|
70 | module.exports = {
|
71 | RELAY: RELAY,
|
72 | SCHEMA_EXTENSION: SCHEMA_EXTENSION,
|
73 | transform: relayRelayDirectiveTransform
|
74 | }; |
\ | No newline at end of file |