@graphitation/apollo-react-relay-duct-tape-compiler 1.0.0-alpha.1

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 (109) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/README.md +3 -0
  3. package/lib/cli.d.ts +3 -0
  4. package/lib/cli.d.ts.map +1 -0
  5. package/lib/cli.js +185 -0
  6. package/lib/cli.js.map +7 -0
  7. package/lib/cli.mjs +166 -0
  8. package/lib/cli.mjs.map +7 -0
  9. package/lib/compilerTransforms/annotateFragmentReferenceTransform.d.ts +13 -0
  10. package/lib/compilerTransforms/annotateFragmentReferenceTransform.d.ts.map +1 -0
  11. package/lib/compilerTransforms/annotateFragmentReferenceTransform.js +98 -0
  12. package/lib/compilerTransforms/annotateFragmentReferenceTransform.js.map +7 -0
  13. package/lib/compilerTransforms/annotateFragmentReferenceTransform.mjs +82 -0
  14. package/lib/compilerTransforms/annotateFragmentReferenceTransform.mjs.map +7 -0
  15. package/lib/compilerTransforms/emitApolloClientConnectionTransform.d.ts +12 -0
  16. package/lib/compilerTransforms/emitApolloClientConnectionTransform.d.ts.map +1 -0
  17. package/lib/compilerTransforms/emitApolloClientConnectionTransform.js +116 -0
  18. package/lib/compilerTransforms/emitApolloClientConnectionTransform.js.map +7 -0
  19. package/lib/compilerTransforms/emitApolloClientConnectionTransform.mjs +107 -0
  20. package/lib/compilerTransforms/emitApolloClientConnectionTransform.mjs.map +7 -0
  21. package/lib/compilerTransforms/enableNodeWatchQueryTransform.d.ts +9 -0
  22. package/lib/compilerTransforms/enableNodeWatchQueryTransform.d.ts.map +1 -0
  23. package/lib/compilerTransforms/enableNodeWatchQueryTransform.js +78 -0
  24. package/lib/compilerTransforms/enableNodeWatchQueryTransform.js.map +7 -0
  25. package/lib/compilerTransforms/enableNodeWatchQueryTransform.mjs +62 -0
  26. package/lib/compilerTransforms/enableNodeWatchQueryTransform.mjs.map +7 -0
  27. package/lib/compilerTransforms/retainConnectionDirectiveTransform.d.ts +13 -0
  28. package/lib/compilerTransforms/retainConnectionDirectiveTransform.d.ts.map +1 -0
  29. package/lib/compilerTransforms/retainConnectionDirectiveTransform.js +83 -0
  30. package/lib/compilerTransforms/retainConnectionDirectiveTransform.js.map +7 -0
  31. package/lib/compilerTransforms/retainConnectionDirectiveTransform.mjs +67 -0
  32. package/lib/compilerTransforms/retainConnectionDirectiveTransform.mjs.map +7 -0
  33. package/lib/compilerTransforms/utils.d.ts +3 -0
  34. package/lib/compilerTransforms/utils.d.ts.map +1 -0
  35. package/lib/compilerTransforms/utils.js +43 -0
  36. package/lib/compilerTransforms/utils.js.map +7 -0
  37. package/lib/compilerTransforms/utils.mjs +14 -0
  38. package/lib/compilerTransforms/utils.mjs.map +7 -0
  39. package/lib/findGraphQLTags.d.ts +8 -0
  40. package/lib/findGraphQLTags.d.ts.map +1 -0
  41. package/lib/findGraphQLTags.js +90 -0
  42. package/lib/findGraphQLTags.js.map +7 -0
  43. package/lib/findGraphQLTags.mjs +61 -0
  44. package/lib/findGraphQLTags.mjs.map +7 -0
  45. package/lib/formatModule.d.ts +10 -0
  46. package/lib/formatModule.d.ts.map +1 -0
  47. package/lib/formatModule.js +121 -0
  48. package/lib/formatModule.js.map +7 -0
  49. package/lib/formatModule.mjs +93 -0
  50. package/lib/formatModule.mjs.map +7 -0
  51. package/lib/formatModuleTransforms/extractMetadataTransform.d.ts +33 -0
  52. package/lib/formatModuleTransforms/extractMetadataTransform.d.ts.map +1 -0
  53. package/lib/formatModuleTransforms/extractMetadataTransform.js +208 -0
  54. package/lib/formatModuleTransforms/extractMetadataTransform.js.map +7 -0
  55. package/lib/formatModuleTransforms/extractMetadataTransform.mjs +182 -0
  56. package/lib/formatModuleTransforms/extractMetadataTransform.mjs.map +7 -0
  57. package/lib/formatModuleTransforms/reduceNodeWatchQueryTransform.d.ts +14 -0
  58. package/lib/formatModuleTransforms/reduceNodeWatchQueryTransform.d.ts.map +1 -0
  59. package/lib/formatModuleTransforms/reduceNodeWatchQueryTransform.js +101 -0
  60. package/lib/formatModuleTransforms/reduceNodeWatchQueryTransform.js.map +7 -0
  61. package/lib/formatModuleTransforms/reduceNodeWatchQueryTransform.mjs +79 -0
  62. package/lib/formatModuleTransforms/reduceNodeWatchQueryTransform.mjs.map +7 -0
  63. package/lib/formatModuleTransforms/stripFragmentReferenceFieldSelectionTransform.d.ts +10 -0
  64. package/lib/formatModuleTransforms/stripFragmentReferenceFieldSelectionTransform.d.ts.map +1 -0
  65. package/lib/formatModuleTransforms/stripFragmentReferenceFieldSelectionTransform.js +41 -0
  66. package/lib/formatModuleTransforms/stripFragmentReferenceFieldSelectionTransform.js.map +7 -0
  67. package/lib/formatModuleTransforms/stripFragmentReferenceFieldSelectionTransform.mjs +22 -0
  68. package/lib/formatModuleTransforms/stripFragmentReferenceFieldSelectionTransform.mjs.map +7 -0
  69. package/lib/index.d.ts +3 -0
  70. package/lib/index.d.ts.map +1 -0
  71. package/lib/index.js +19 -0
  72. package/lib/index.js.map +7 -0
  73. package/lib/index.mjs +3 -0
  74. package/lib/index.mjs.map +7 -0
  75. package/lib/relayCompilerLanguagePlugin.d.ts +4 -0
  76. package/lib/relayCompilerLanguagePlugin.d.ts.map +1 -0
  77. package/lib/relayCompilerLanguagePlugin.js +91 -0
  78. package/lib/relayCompilerLanguagePlugin.js.map +7 -0
  79. package/lib/relayCompilerLanguagePlugin.mjs +65 -0
  80. package/lib/relayCompilerLanguagePlugin.mjs.map +7 -0
  81. package/lib/rewriteGraphitationDirectives.d.ts +15 -0
  82. package/lib/rewriteGraphitationDirectives.d.ts.map +1 -0
  83. package/lib/rewriteGraphitationDirectives.js +105 -0
  84. package/lib/rewriteGraphitationDirectives.js.map +7 -0
  85. package/lib/rewriteGraphitationDirectives.mjs +83 -0
  86. package/lib/rewriteGraphitationDirectives.mjs.map +7 -0
  87. package/lib/typeGenerator.d.ts +3 -0
  88. package/lib/typeGenerator.d.ts.map +1 -0
  89. package/lib/typeGenerator.js +30 -0
  90. package/lib/typeGenerator.js.map +7 -0
  91. package/lib/typeGenerator.mjs +11 -0
  92. package/lib/typeGenerator.mjs.map +7 -0
  93. package/lib/types.d.ts +9 -0
  94. package/lib/types.d.ts.map +1 -0
  95. package/lib/types.js +16 -0
  96. package/lib/types.js.map +7 -0
  97. package/lib/types.mjs +0 -0
  98. package/lib/types.mjs.map +7 -0
  99. package/lib/typescriptTransforms/createImportDocumentsTransform.d.ts +10 -0
  100. package/lib/typescriptTransforms/createImportDocumentsTransform.d.ts.map +1 -0
  101. package/lib/typescriptTransforms/createImportDocumentsTransform.js +161 -0
  102. package/lib/typescriptTransforms/createImportDocumentsTransform.js.map +7 -0
  103. package/lib/typescriptTransforms/createImportDocumentsTransform.mjs +134 -0
  104. package/lib/typescriptTransforms/createImportDocumentsTransform.mjs.map +7 -0
  105. package/lib/typings.d.js +1 -0
  106. package/lib/typings.d.js.map +7 -0
  107. package/lib/typings.d.mjs +0 -0
  108. package/lib/typings.d.mjs.map +7 -0
  109. package/package.json +55 -0
@@ -0,0 +1,82 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+
21
+ // src/compilerTransforms/annotateFragmentReferenceTransform.ts
22
+ import { visit } from "relay-compiler/lib/core/IRVisitor";
23
+ import { implementsNodeInterface } from "./utils.mjs";
24
+ var FRAGMENTS_SELECTION = {
25
+ kind: "ScalarField",
26
+ name: "__fragments",
27
+ alias: "__fragments",
28
+ type: "String!",
29
+ directives: [
30
+ {
31
+ kind: "Directive",
32
+ name: "client",
33
+ args: [],
34
+ loc: { kind: "Generated" },
35
+ metadata: void 0
36
+ }
37
+ ],
38
+ args: [],
39
+ loc: { kind: "Generated" },
40
+ metadata: void 0
41
+ };
42
+ var FRAGMENTS_ON_NODE_SELECTION = {
43
+ kind: "InlineFragment",
44
+ typeCondition: "Node",
45
+ selections: [FRAGMENTS_SELECTION],
46
+ directives: [],
47
+ loc: { kind: "Generated" },
48
+ metadata: void 0
49
+ };
50
+ var annotateFragmentReferenceTransform = (context) => {
51
+ const visitor = visitNodeWithSelections.bind(null, context);
52
+ let nextContext = context;
53
+ context.forEachDocument((document) => {
54
+ const nextDocument = visit(document, {
55
+ Root: visitor,
56
+ Fragment: visitor,
57
+ InlineFragment: visitor,
58
+ LinkedField: visitor
59
+ });
60
+ nextContext = nextContext.replace(nextDocument);
61
+ });
62
+ return nextContext;
63
+ };
64
+ function visitNodeWithSelections(context, node) {
65
+ for (const selection of node.selections) {
66
+ if (selection.kind === "FragmentSpread") {
67
+ const fragment = context.getFragment(selection.name);
68
+ if (implementsNodeInterface(context, fragment)) {
69
+ return __spreadProps(__spreadValues({}, node), {
70
+ selections: [...node.selections, FRAGMENTS_ON_NODE_SELECTION]
71
+ });
72
+ } else if (fragment.type === context.getSchema().getQueryType()) {
73
+ return __spreadProps(__spreadValues({}, node), {
74
+ selections: [...node.selections, FRAGMENTS_SELECTION]
75
+ });
76
+ }
77
+ }
78
+ }
79
+ }
80
+ export {
81
+ annotateFragmentReferenceTransform
82
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/compilerTransforms/annotateFragmentReferenceTransform.ts"],
4
+ "sourcesContent": ["import {\n CompilerContext,\n Fragment,\n InlineFragment,\n LinkedField,\n Root,\n ScalarField,\n} from \"relay-compiler\";\nimport { IRTransform } from \"relay-compiler/lib/core/CompilerContext\";\nimport { visit } from \"relay-compiler/lib/core/IRVisitor\";\nimport { implementsNodeInterface } from \"./utils\";\n\nconst FRAGMENTS_SELECTION: ScalarField = {\n kind: \"ScalarField\",\n name: \"__fragments\",\n alias: \"__fragments\",\n type: \"String!\",\n directives: [\n {\n kind: \"Directive\",\n name: \"client\",\n args: [],\n loc: { kind: \"Generated\" },\n metadata: undefined,\n },\n ],\n args: [],\n loc: { kind: \"Generated\" },\n metadata: undefined,\n};\n\nconst FRAGMENTS_ON_NODE_SELECTION: InlineFragment = {\n kind: \"InlineFragment\",\n typeCondition: \"Node\",\n selections: [FRAGMENTS_SELECTION],\n directives: [],\n loc: { kind: \"Generated\" },\n metadata: undefined,\n};\n\n/**\n * Inserts a `__fragments` selection at the place where a fragment reference\n * boundary exists. This is either done in a `Node` inline fragment or directly\n * on the `Query` type.\n *\n * This field, which is an Apollo Client client-side field as declared with the\n * `@client` directive, will be used to pass context between the `use*Fragment`\n * hooks. (Currently this is limited to request variables.) The data for this\n * field is resolved by the `fragmentReferencesFieldPolicy` function.\n */\nexport const annotateFragmentReferenceTransform: IRTransform = (context) => {\n const visitor = visitNodeWithSelections.bind(null, context);\n let nextContext = context;\n\n context.forEachDocument((document) => {\n const nextDocument = visit(document, {\n Root: visitor,\n Fragment: visitor,\n InlineFragment: visitor,\n LinkedField: visitor,\n });\n nextContext = nextContext.replace(nextDocument);\n });\n\n return nextContext;\n};\n\nfunction visitNodeWithSelections(\n context: CompilerContext,\n node: Root | Fragment | InlineFragment | LinkedField\n): Root | Fragment | InlineFragment | LinkedField | undefined {\n for (const selection of node.selections) {\n if (selection.kind === \"FragmentSpread\") {\n const fragment = context.getFragment(selection.name);\n if (implementsNodeInterface(context, fragment)) {\n return {\n ...node,\n selections: [...node.selections, FRAGMENTS_ON_NODE_SELECTION],\n };\n } else if (fragment.type === context.getSchema().getQueryType()) {\n return {\n ...node,\n selections: [...node.selections, FRAGMENTS_SELECTION],\n };\n }\n }\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;AASA,SAAS,aAAa;AACtB,SAAS,+BAA+B;AAExC,IAAM,sBAAmC;AAAA,EACvC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,MACP,KAAK,EAAE,MAAM,YAAY;AAAA,MACzB,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,MAAM,CAAC;AAAA,EACP,KAAK,EAAE,MAAM,YAAY;AAAA,EACzB,UAAU;AACZ;AAEA,IAAM,8BAA8C;AAAA,EAClD,MAAM;AAAA,EACN,eAAe;AAAA,EACf,YAAY,CAAC,mBAAmB;AAAA,EAChC,YAAY,CAAC;AAAA,EACb,KAAK,EAAE,MAAM,YAAY;AAAA,EACzB,UAAU;AACZ;AAYO,IAAM,qCAAkD,CAAC,YAAY;AAC1E,QAAM,UAAU,wBAAwB,KAAK,MAAM,OAAO;AAC1D,MAAI,cAAc;AAElB,UAAQ,gBAAgB,CAAC,aAAa;AACpC,UAAM,eAAe,MAAM,UAAU;AAAA,MACnC,MAAM;AAAA,MACN,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,aAAa;AAAA,IACf,CAAC;AACD,kBAAc,YAAY,QAAQ,YAAY;AAAA,EAChD,CAAC;AAED,SAAO;AACT;AAEA,SAAS,wBACP,SACA,MAC4D;AAC5D,aAAW,aAAa,KAAK,YAAY;AACvC,QAAI,UAAU,SAAS,kBAAkB;AACvC,YAAM,WAAW,QAAQ,YAAY,UAAU,IAAI;AACnD,UAAI,wBAAwB,SAAS,QAAQ,GAAG;AAC9C,eAAO,iCACF,OADE;AAAA,UAEL,YAAY,CAAC,GAAG,KAAK,YAAY,2BAA2B;AAAA,QAC9D;AAAA,MACF,WAAW,SAAS,SAAS,QAAQ,UAAU,EAAE,aAAa,GAAG;AAC/D,eAAO,iCACF,OADE;AAAA,UAEL,YAAY,CAAC,GAAG,KAAK,YAAY,mBAAmB;AAAA,QACtD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,12 @@
1
+ import { IRTransform } from "relay-compiler/lib/core/CompilerContext";
2
+ /**
3
+ * Finds connection client-handles that relay-compiler emits and replaces
4
+ * them with a version of the `@connection` directive that Apollo Client uses;
5
+ * which is identical to relay's version, except the `filters` parameter is
6
+ * named `filter` (singular).
7
+ *
8
+ * @param wrappedConnectionTransform
9
+ * relay-compiler's connection client-handle transform
10
+ */
11
+ export declare function emitApolloClientConnectionTransform(wrappedConnectionTransform: IRTransform): IRTransform;
12
+ //# sourceMappingURL=emitApolloClientConnectionTransform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitApolloClientConnectionTransform.d.ts","sourceRoot":"","sources":["../../src/compilerTransforms/emitApolloClientConnectionTransform.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAMtE;;;;;;;;GAQG;AACH,wBAAgB,mCAAmC,CACjD,0BAA0B,EAAE,WAAW,GACtC,WAAW,CA6Eb"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __spreadValues = (a, b) => {
12
+ for (var prop in b || (b = {}))
13
+ if (__hasOwnProp.call(b, prop))
14
+ __defNormalProp(a, prop, b[prop]);
15
+ if (__getOwnPropSymbols)
16
+ for (var prop of __getOwnPropSymbols(b)) {
17
+ if (__propIsEnum.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ }
20
+ return a;
21
+ };
22
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
+ var __export = (target, all) => {
24
+ for (var name in all)
25
+ __defProp(target, name, { get: all[name], enumerable: true });
26
+ };
27
+ var __copyProps = (to, from, except, desc) => {
28
+ if (from && typeof from === "object" || typeof from === "function") {
29
+ for (let key of __getOwnPropNames(from))
30
+ if (!__hasOwnProp.call(to, key) && key !== except)
31
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
32
+ }
33
+ return to;
34
+ };
35
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
36
+ var emitApolloClientConnectionTransform_exports = {};
37
+ __export(emitApolloClientConnectionTransform_exports, {
38
+ emitApolloClientConnectionTransform: () => emitApolloClientConnectionTransform
39
+ });
40
+ module.exports = __toCommonJS(emitApolloClientConnectionTransform_exports);
41
+ var import_IRVisitor = require("relay-compiler/lib/core/IRVisitor");
42
+ const SchemaUtils = require("relay-compiler/lib/core/SchemaUtils");
43
+ function emitApolloClientConnectionTransform(wrappedConnectionTransform) {
44
+ const connectionTransformWrapper = (context) => {
45
+ const schema = context.getSchema();
46
+ let nextContext = wrappedConnectionTransform(context);
47
+ nextContext.forEachDocument((document) => {
48
+ const nextDocument = (0, import_IRVisitor.visit)(document, {
49
+ LinkedField(linkedFieldNode) {
50
+ var _a, _b;
51
+ const connectionHandle = (_a = linkedFieldNode.handles) == null ? void 0 : _a.find(
52
+ (handle) => handle.name === "connection"
53
+ );
54
+ if (connectionHandle) {
55
+ const args = [
56
+ {
57
+ kind: "Argument",
58
+ name: "key",
59
+ type: SchemaUtils.getNonNullStringInput(schema),
60
+ value: {
61
+ kind: "Literal",
62
+ value: connectionHandle.key,
63
+ loc: { kind: "Generated" }
64
+ },
65
+ loc: { kind: "Generated" },
66
+ metadata: void 0
67
+ }
68
+ ];
69
+ if (connectionHandle.filters) {
70
+ args.push({
71
+ kind: "Argument",
72
+ name: "filter",
73
+ type: schema.assertInputType(
74
+ schema.expectTypeFromString("[String!]")
75
+ ),
76
+ value: {
77
+ kind: "ListValue",
78
+ items: connectionHandle.filters.map(
79
+ (filter) => ({
80
+ kind: "Literal",
81
+ value: filter,
82
+ loc: { kind: "Generated" }
83
+ })
84
+ ),
85
+ loc: { kind: "Generated" },
86
+ metadata: void 0
87
+ },
88
+ loc: { kind: "Generated" },
89
+ metadata: void 0
90
+ });
91
+ }
92
+ const nextLinkedFieldNode = __spreadProps(__spreadValues({}, linkedFieldNode), {
93
+ handles: (_b = linkedFieldNode.handles) == null ? void 0 : _b.filter(
94
+ (handle) => handle.name !== "connection"
95
+ ),
96
+ directives: [
97
+ ...linkedFieldNode.directives,
98
+ {
99
+ kind: "Directive",
100
+ name: "connection",
101
+ args,
102
+ loc: { kind: "Generated" },
103
+ metadata: void 0
104
+ }
105
+ ]
106
+ });
107
+ return nextLinkedFieldNode;
108
+ }
109
+ }
110
+ });
111
+ nextContext = nextContext.replace(nextDocument);
112
+ });
113
+ return nextContext;
114
+ };
115
+ return connectionTransformWrapper;
116
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/compilerTransforms/emitApolloClientConnectionTransform.ts"],
4
+ "sourcesContent": ["import invariant from \"invariant\";\nimport { Argument, ArgumentValue, LinkedField } from \"relay-compiler\";\nimport { IRTransform } from \"relay-compiler/lib/core/CompilerContext\";\nimport { visit } from \"relay-compiler/lib/core/IRVisitor\";\n\n// TODO: Add typings for this\nconst SchemaUtils = require(\"relay-compiler/lib/core/SchemaUtils\");\n\n/**\n * Finds connection client-handles that relay-compiler emits and replaces\n * them with a version of the `@connection` directive that Apollo Client uses;\n * which is identical to relay's version, except the `filters` parameter is\n * named `filter` (singular).\n *\n * @param wrappedConnectionTransform\n * relay-compiler's connection client-handle transform\n */\nexport function emitApolloClientConnectionTransform(\n wrappedConnectionTransform: IRTransform,\n): IRTransform {\n const connectionTransformWrapper: IRTransform = (context) => {\n const schema = context.getSchema();\n let nextContext = wrappedConnectionTransform(context);\n\n // Replaces the field handle created by the wrapped connection transform\n // with the @connection directive that Apollo Client expects\n nextContext.forEachDocument((document) => {\n const nextDocument = visit(document, {\n LinkedField(linkedFieldNode) {\n const connectionHandle = linkedFieldNode.handles?.find(\n (handle) => handle.name === \"connection\",\n );\n if (connectionHandle) {\n const args: Argument[] = [\n {\n kind: \"Argument\",\n name: \"key\",\n type: SchemaUtils.getNonNullStringInput(schema),\n value: {\n kind: \"Literal\",\n value: connectionHandle.key,\n loc: { kind: \"Generated\" },\n },\n loc: { kind: \"Generated\" },\n metadata: undefined,\n },\n ];\n if (connectionHandle.filters) {\n args.push({\n kind: \"Argument\",\n name: \"filter\",\n type: schema.assertInputType(\n schema.expectTypeFromString(\"[String!]\"),\n ),\n value: {\n kind: \"ListValue\",\n items: connectionHandle.filters.map<ArgumentValue>(\n (filter) => ({\n kind: \"Literal\",\n value: filter,\n loc: { kind: \"Generated\" },\n }),\n ),\n loc: { kind: \"Generated\" },\n metadata: undefined,\n },\n loc: { kind: \"Generated\" },\n metadata: undefined,\n });\n }\n const nextLinkedFieldNode: LinkedField = {\n ...linkedFieldNode,\n handles: linkedFieldNode.handles?.filter(\n (handle) => handle.name !== \"connection\",\n ),\n directives: [\n ...linkedFieldNode.directives,\n {\n kind: \"Directive\",\n name: \"connection\",\n args,\n loc: { kind: \"Generated\" },\n metadata: undefined,\n },\n ],\n };\n return nextLinkedFieldNode;\n }\n },\n });\n nextContext = nextContext.replace(nextDocument);\n });\n\n return nextContext;\n };\n return connectionTransformWrapper;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,uBAAsB;AAGtB,MAAM,cAAc,QAAQ,qCAAqC;AAW1D,SAAS,oCACd,4BACa;AACb,QAAM,6BAA0C,CAAC,YAAY;AAC3D,UAAM,SAAS,QAAQ,UAAU;AACjC,QAAI,cAAc,2BAA2B,OAAO;AAIpD,gBAAY,gBAAgB,CAAC,aAAa;AACxC,YAAM,mBAAe,wBAAM,UAAU;AAAA,QACnC,YAAY,iBAAiB;AA5BrC;AA6BU,gBAAM,oBAAmB,qBAAgB,YAAhB,mBAAyB;AAAA,YAChD,CAAC,WAAW,OAAO,SAAS;AAAA;AAE9B,cAAI,kBAAkB;AACpB,kBAAM,OAAmB;AAAA,cACvB;AAAA,gBACE,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,MAAM,YAAY,sBAAsB,MAAM;AAAA,gBAC9C,OAAO;AAAA,kBACL,MAAM;AAAA,kBACN,OAAO,iBAAiB;AAAA,kBACxB,KAAK,EAAE,MAAM,YAAY;AAAA,gBAC3B;AAAA,gBACA,KAAK,EAAE,MAAM,YAAY;AAAA,gBACzB,UAAU;AAAA,cACZ;AAAA,YACF;AACA,gBAAI,iBAAiB,SAAS;AAC5B,mBAAK,KAAK;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,MAAM,OAAO;AAAA,kBACX,OAAO,qBAAqB,WAAW;AAAA,gBACzC;AAAA,gBACA,OAAO;AAAA,kBACL,MAAM;AAAA,kBACN,OAAO,iBAAiB,QAAQ;AAAA,oBAC9B,CAAC,YAAY;AAAA,sBACX,MAAM;AAAA,sBACN,OAAO;AAAA,sBACP,KAAK,EAAE,MAAM,YAAY;AAAA,oBAC3B;AAAA,kBACF;AAAA,kBACA,KAAK,EAAE,MAAM,YAAY;AAAA,kBACzB,UAAU;AAAA,gBACZ;AAAA,gBACA,KAAK,EAAE,MAAM,YAAY;AAAA,gBACzB,UAAU;AAAA,cACZ,CAAC;AAAA,YACH;AACA,kBAAM,sBAAmC,iCACpC,kBADoC;AAAA,cAEvC,UAAS,qBAAgB,YAAhB,mBAAyB;AAAA,gBAChC,CAAC,WAAW,OAAO,SAAS;AAAA;AAAA,cAE9B,YAAY;AAAA,gBACV,GAAG,gBAAgB;AAAA,gBACnB;AAAA,kBACE,MAAM;AAAA,kBACN,MAAM;AAAA,kBACN;AAAA,kBACA,KAAK,EAAE,MAAM,YAAY;AAAA,kBACzB,UAAU;AAAA,gBACZ;AAAA,cACF;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF,CAAC;AACD,oBAAc,YAAY,QAAQ,YAAY;AAAA,IAChD,CAAC;AAED,WAAO;AAAA,EACT;AACA,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,107 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
21
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
22
+ }) : x)(function(x) {
23
+ if (typeof require !== "undefined")
24
+ return require.apply(this, arguments);
25
+ throw new Error('Dynamic require of "' + x + '" is not supported');
26
+ });
27
+
28
+ // src/compilerTransforms/emitApolloClientConnectionTransform.ts
29
+ import { visit } from "relay-compiler/lib/core/IRVisitor";
30
+ var SchemaUtils = __require("relay-compiler/lib/core/SchemaUtils");
31
+ function emitApolloClientConnectionTransform(wrappedConnectionTransform) {
32
+ const connectionTransformWrapper = (context) => {
33
+ const schema = context.getSchema();
34
+ let nextContext = wrappedConnectionTransform(context);
35
+ nextContext.forEachDocument((document) => {
36
+ const nextDocument = visit(document, {
37
+ LinkedField(linkedFieldNode) {
38
+ var _a, _b;
39
+ const connectionHandle = (_a = linkedFieldNode.handles) == null ? void 0 : _a.find(
40
+ (handle) => handle.name === "connection"
41
+ );
42
+ if (connectionHandle) {
43
+ const args = [
44
+ {
45
+ kind: "Argument",
46
+ name: "key",
47
+ type: SchemaUtils.getNonNullStringInput(schema),
48
+ value: {
49
+ kind: "Literal",
50
+ value: connectionHandle.key,
51
+ loc: { kind: "Generated" }
52
+ },
53
+ loc: { kind: "Generated" },
54
+ metadata: void 0
55
+ }
56
+ ];
57
+ if (connectionHandle.filters) {
58
+ args.push({
59
+ kind: "Argument",
60
+ name: "filter",
61
+ type: schema.assertInputType(
62
+ schema.expectTypeFromString("[String!]")
63
+ ),
64
+ value: {
65
+ kind: "ListValue",
66
+ items: connectionHandle.filters.map(
67
+ (filter) => ({
68
+ kind: "Literal",
69
+ value: filter,
70
+ loc: { kind: "Generated" }
71
+ })
72
+ ),
73
+ loc: { kind: "Generated" },
74
+ metadata: void 0
75
+ },
76
+ loc: { kind: "Generated" },
77
+ metadata: void 0
78
+ });
79
+ }
80
+ const nextLinkedFieldNode = __spreadProps(__spreadValues({}, linkedFieldNode), {
81
+ handles: (_b = linkedFieldNode.handles) == null ? void 0 : _b.filter(
82
+ (handle) => handle.name !== "connection"
83
+ ),
84
+ directives: [
85
+ ...linkedFieldNode.directives,
86
+ {
87
+ kind: "Directive",
88
+ name: "connection",
89
+ args,
90
+ loc: { kind: "Generated" },
91
+ metadata: void 0
92
+ }
93
+ ]
94
+ });
95
+ return nextLinkedFieldNode;
96
+ }
97
+ }
98
+ });
99
+ nextContext = nextContext.replace(nextDocument);
100
+ });
101
+ return nextContext;
102
+ };
103
+ return connectionTransformWrapper;
104
+ }
105
+ export {
106
+ emitApolloClientConnectionTransform
107
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/compilerTransforms/emitApolloClientConnectionTransform.ts"],
4
+ "sourcesContent": ["import invariant from \"invariant\";\nimport { Argument, ArgumentValue, LinkedField } from \"relay-compiler\";\nimport { IRTransform } from \"relay-compiler/lib/core/CompilerContext\";\nimport { visit } from \"relay-compiler/lib/core/IRVisitor\";\n\n// TODO: Add typings for this\nconst SchemaUtils = require(\"relay-compiler/lib/core/SchemaUtils\");\n\n/**\n * Finds connection client-handles that relay-compiler emits and replaces\n * them with a version of the `@connection` directive that Apollo Client uses;\n * which is identical to relay's version, except the `filters` parameter is\n * named `filter` (singular).\n *\n * @param wrappedConnectionTransform\n * relay-compiler's connection client-handle transform\n */\nexport function emitApolloClientConnectionTransform(\n wrappedConnectionTransform: IRTransform,\n): IRTransform {\n const connectionTransformWrapper: IRTransform = (context) => {\n const schema = context.getSchema();\n let nextContext = wrappedConnectionTransform(context);\n\n // Replaces the field handle created by the wrapped connection transform\n // with the @connection directive that Apollo Client expects\n nextContext.forEachDocument((document) => {\n const nextDocument = visit(document, {\n LinkedField(linkedFieldNode) {\n const connectionHandle = linkedFieldNode.handles?.find(\n (handle) => handle.name === \"connection\",\n );\n if (connectionHandle) {\n const args: Argument[] = [\n {\n kind: \"Argument\",\n name: \"key\",\n type: SchemaUtils.getNonNullStringInput(schema),\n value: {\n kind: \"Literal\",\n value: connectionHandle.key,\n loc: { kind: \"Generated\" },\n },\n loc: { kind: \"Generated\" },\n metadata: undefined,\n },\n ];\n if (connectionHandle.filters) {\n args.push({\n kind: \"Argument\",\n name: \"filter\",\n type: schema.assertInputType(\n schema.expectTypeFromString(\"[String!]\"),\n ),\n value: {\n kind: \"ListValue\",\n items: connectionHandle.filters.map<ArgumentValue>(\n (filter) => ({\n kind: \"Literal\",\n value: filter,\n loc: { kind: \"Generated\" },\n }),\n ),\n loc: { kind: \"Generated\" },\n metadata: undefined,\n },\n loc: { kind: \"Generated\" },\n metadata: undefined,\n });\n }\n const nextLinkedFieldNode: LinkedField = {\n ...linkedFieldNode,\n handles: linkedFieldNode.handles?.filter(\n (handle) => handle.name !== \"connection\",\n ),\n directives: [\n ...linkedFieldNode.directives,\n {\n kind: \"Directive\",\n name: \"connection\",\n args,\n loc: { kind: \"Generated\" },\n metadata: undefined,\n },\n ],\n };\n return nextLinkedFieldNode;\n }\n },\n });\n nextContext = nextContext.replace(nextDocument);\n });\n\n return nextContext;\n };\n return connectionTransformWrapper;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,SAAS,aAAa;AAGtB,IAAM,cAAc,UAAQ,qCAAqC;AAW1D,SAAS,oCACd,4BACa;AACb,QAAM,6BAA0C,CAAC,YAAY;AAC3D,UAAM,SAAS,QAAQ,UAAU;AACjC,QAAI,cAAc,2BAA2B,OAAO;AAIpD,gBAAY,gBAAgB,CAAC,aAAa;AACxC,YAAM,eAAe,MAAM,UAAU;AAAA,QACnC,YAAY,iBAAiB;AA5BrC;AA6BU,gBAAM,oBAAmB,qBAAgB,YAAhB,mBAAyB;AAAA,YAChD,CAAC,WAAW,OAAO,SAAS;AAAA;AAE9B,cAAI,kBAAkB;AACpB,kBAAM,OAAmB;AAAA,cACvB;AAAA,gBACE,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,MAAM,YAAY,sBAAsB,MAAM;AAAA,gBAC9C,OAAO;AAAA,kBACL,MAAM;AAAA,kBACN,OAAO,iBAAiB;AAAA,kBACxB,KAAK,EAAE,MAAM,YAAY;AAAA,gBAC3B;AAAA,gBACA,KAAK,EAAE,MAAM,YAAY;AAAA,gBACzB,UAAU;AAAA,cACZ;AAAA,YACF;AACA,gBAAI,iBAAiB,SAAS;AAC5B,mBAAK,KAAK;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,MAAM,OAAO;AAAA,kBACX,OAAO,qBAAqB,WAAW;AAAA,gBACzC;AAAA,gBACA,OAAO;AAAA,kBACL,MAAM;AAAA,kBACN,OAAO,iBAAiB,QAAQ;AAAA,oBAC9B,CAAC,YAAY;AAAA,sBACX,MAAM;AAAA,sBACN,OAAO;AAAA,sBACP,KAAK,EAAE,MAAM,YAAY;AAAA,oBAC3B;AAAA,kBACF;AAAA,kBACA,KAAK,EAAE,MAAM,YAAY;AAAA,kBACzB,UAAU;AAAA,gBACZ;AAAA,gBACA,KAAK,EAAE,MAAM,YAAY;AAAA,gBACzB,UAAU;AAAA,cACZ,CAAC;AAAA,YACH;AACA,kBAAM,sBAAmC,iCACpC,kBADoC;AAAA,cAEvC,UAAS,qBAAgB,YAAhB,mBAAyB;AAAA,gBAChC,CAAC,WAAW,OAAO,SAAS;AAAA;AAAA,cAE9B,YAAY;AAAA,gBACV,GAAG,gBAAgB;AAAA,gBACnB;AAAA,kBACE,MAAM;AAAA,kBACN,MAAM;AAAA,kBACN;AAAA,kBACA,KAAK,EAAE,MAAM,YAAY;AAAA,kBACzB,UAAU;AAAA,gBACZ;AAAA,cACF;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF,CAAC;AACD,oBAAc,YAAY,QAAQ,YAAY;AAAA,IAChD,CAAC;AAED,WAAO;AAAA,EACT;AACA,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,9 @@
1
+ import { IRTransform } from "relay-compiler/lib/core/CompilerContext";
2
+ /**
3
+ * Uses relay-compiler's `@refetchable` directive to emit a query operation for
4
+ * a single fragment (on the `Node` interface or `Query` type). This operation
5
+ * is used by the `use*Fragment` hooks to observe the Apollo Client store for
6
+ * changes to _just_ that data selected in the fragment.
7
+ */
8
+ export declare const enableNodeWatchQueryTransform: IRTransform;
9
+ //# sourceMappingURL=enableNodeWatchQueryTransform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enableNodeWatchQueryTransform.d.ts","sourceRoot":"","sources":["../../src/compilerTransforms/enableNodeWatchQueryTransform.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAGtE;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,EAAE,WAoB3C,CAAC"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __spreadValues = (a, b) => {
12
+ for (var prop in b || (b = {}))
13
+ if (__hasOwnProp.call(b, prop))
14
+ __defNormalProp(a, prop, b[prop]);
15
+ if (__getOwnPropSymbols)
16
+ for (var prop of __getOwnPropSymbols(b)) {
17
+ if (__propIsEnum.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ }
20
+ return a;
21
+ };
22
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
+ var __export = (target, all) => {
24
+ for (var name in all)
25
+ __defProp(target, name, { get: all[name], enumerable: true });
26
+ };
27
+ var __copyProps = (to, from, except, desc) => {
28
+ if (from && typeof from === "object" || typeof from === "function") {
29
+ for (let key of __getOwnPropNames(from))
30
+ if (!__hasOwnProp.call(to, key) && key !== except)
31
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
32
+ }
33
+ return to;
34
+ };
35
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
36
+ var enableNodeWatchQueryTransform_exports = {};
37
+ __export(enableNodeWatchQueryTransform_exports, {
38
+ enableNodeWatchQueryTransform: () => enableNodeWatchQueryTransform
39
+ });
40
+ module.exports = __toCommonJS(enableNodeWatchQueryTransform_exports);
41
+ var import_utils = require("./utils");
42
+ const enableNodeWatchQueryTransform = (context) => {
43
+ let nextContext = context;
44
+ context.forEachDocument((document) => {
45
+ if (document.kind === "Fragment" && (document.type === context.getSchema().getQueryType() || (0, import_utils.implementsNodeInterface)(context, document))) {
46
+ nextContext = nextContext.replace(__spreadProps(__spreadValues({}, document), {
47
+ directives: [
48
+ ...document.directives,
49
+ emitRefetchableDirective(document)
50
+ ]
51
+ }));
52
+ }
53
+ });
54
+ return nextContext;
55
+ };
56
+ function emitRefetchableDirective(fragmentDefinition) {
57
+ const fragmentName = fragmentDefinition.name;
58
+ const fragmentBaseName = fragmentName.replace(/Fragment$/, "");
59
+ return {
60
+ kind: "Directive",
61
+ name: "refetchable",
62
+ args: [
63
+ {
64
+ kind: "Argument",
65
+ name: "queryName",
66
+ value: {
67
+ kind: "Literal",
68
+ value: `${fragmentBaseName}WatchNodeQuery`,
69
+ loc: { kind: "Generated" }
70
+ },
71
+ loc: { kind: "Generated" },
72
+ metadata: void 0
73
+ }
74
+ ],
75
+ loc: { kind: "Generated" },
76
+ metadata: void 0
77
+ };
78
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/compilerTransforms/enableNodeWatchQueryTransform.ts"],
4
+ "sourcesContent": ["import { Directive, Fragment } from \"relay-compiler\";\nimport { IRTransform } from \"relay-compiler/lib/core/CompilerContext\";\nimport { implementsNodeInterface } from \"./utils\";\n\n/**\n * Uses relay-compiler's `@refetchable` directive to emit a query operation for\n * a single fragment (on the `Node` interface or `Query` type). This operation\n * is used by the `use*Fragment` hooks to observe the Apollo Client store for\n * changes to _just_ that data selected in the fragment.\n */\nexport const enableNodeWatchQueryTransform: IRTransform = (context) => {\n let nextContext = context;\n\n context.forEachDocument((document) => {\n if (\n document.kind === \"Fragment\" &&\n (document.type === context.getSchema().getQueryType() ||\n implementsNodeInterface(context, document))\n ) {\n nextContext = nextContext.replace({\n ...document,\n directives: [\n ...document.directives,\n emitRefetchableDirective(document),\n ],\n });\n }\n });\n\n return nextContext;\n};\n\nfunction emitRefetchableDirective(fragmentDefinition: Fragment): Directive {\n const fragmentName = fragmentDefinition.name;\n const fragmentBaseName = fragmentName.replace(/Fragment$/, \"\");\n return {\n kind: \"Directive\",\n name: \"refetchable\",\n args: [\n {\n kind: \"Argument\",\n name: \"queryName\",\n value: {\n kind: \"Literal\",\n value: `${fragmentBaseName}WatchNodeQuery`,\n loc: { kind: \"Generated\" },\n },\n loc: { kind: \"Generated\" },\n metadata: undefined,\n },\n ],\n loc: { kind: \"Generated\" },\n metadata: undefined,\n };\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAwC;AAQjC,MAAM,gCAA6C,CAAC,YAAY;AACrE,MAAI,cAAc;AAElB,UAAQ,gBAAgB,CAAC,aAAa;AACpC,QACE,SAAS,SAAS,eACjB,SAAS,SAAS,QAAQ,UAAU,EAAE,aAAa,SAClD,sCAAwB,SAAS,QAAQ,IAC3C;AACA,oBAAc,YAAY,QAAQ,iCAC7B,WAD6B;AAAA,QAEhC,YAAY;AAAA,UACV,GAAG,SAAS;AAAA,UACZ,yBAAyB,QAAQ;AAAA,QACnC;AAAA,MACF,EAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEA,SAAS,yBAAyB,oBAAyC;AACzE,QAAM,eAAe,mBAAmB;AACxC,QAAM,mBAAmB,aAAa,QAAQ,aAAa,EAAE;AAC7D,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,MACJ;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,UACL,MAAM;AAAA,UACN,OAAO,GAAG;AAAA,UACV,KAAK,EAAE,MAAM,YAAY;AAAA,QAC3B;AAAA,QACA,KAAK,EAAE,MAAM,YAAY;AAAA,QACzB,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,IACA,KAAK,EAAE,MAAM,YAAY;AAAA,IACzB,UAAU;AAAA,EACZ;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,62 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+
21
+ // src/compilerTransforms/enableNodeWatchQueryTransform.ts
22
+ import { implementsNodeInterface } from "./utils.mjs";
23
+ var enableNodeWatchQueryTransform = (context) => {
24
+ let nextContext = context;
25
+ context.forEachDocument((document) => {
26
+ if (document.kind === "Fragment" && (document.type === context.getSchema().getQueryType() || implementsNodeInterface(context, document))) {
27
+ nextContext = nextContext.replace(__spreadProps(__spreadValues({}, document), {
28
+ directives: [
29
+ ...document.directives,
30
+ emitRefetchableDirective(document)
31
+ ]
32
+ }));
33
+ }
34
+ });
35
+ return nextContext;
36
+ };
37
+ function emitRefetchableDirective(fragmentDefinition) {
38
+ const fragmentName = fragmentDefinition.name;
39
+ const fragmentBaseName = fragmentName.replace(/Fragment$/, "");
40
+ return {
41
+ kind: "Directive",
42
+ name: "refetchable",
43
+ args: [
44
+ {
45
+ kind: "Argument",
46
+ name: "queryName",
47
+ value: {
48
+ kind: "Literal",
49
+ value: `${fragmentBaseName}WatchNodeQuery`,
50
+ loc: { kind: "Generated" }
51
+ },
52
+ loc: { kind: "Generated" },
53
+ metadata: void 0
54
+ }
55
+ ],
56
+ loc: { kind: "Generated" },
57
+ metadata: void 0
58
+ };
59
+ }
60
+ export {
61
+ enableNodeWatchQueryTransform
62
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/compilerTransforms/enableNodeWatchQueryTransform.ts"],
4
+ "sourcesContent": ["import { Directive, Fragment } from \"relay-compiler\";\nimport { IRTransform } from \"relay-compiler/lib/core/CompilerContext\";\nimport { implementsNodeInterface } from \"./utils\";\n\n/**\n * Uses relay-compiler's `@refetchable` directive to emit a query operation for\n * a single fragment (on the `Node` interface or `Query` type). This operation\n * is used by the `use*Fragment` hooks to observe the Apollo Client store for\n * changes to _just_ that data selected in the fragment.\n */\nexport const enableNodeWatchQueryTransform: IRTransform = (context) => {\n let nextContext = context;\n\n context.forEachDocument((document) => {\n if (\n document.kind === \"Fragment\" &&\n (document.type === context.getSchema().getQueryType() ||\n implementsNodeInterface(context, document))\n ) {\n nextContext = nextContext.replace({\n ...document,\n directives: [\n ...document.directives,\n emitRefetchableDirective(document),\n ],\n });\n }\n });\n\n return nextContext;\n};\n\nfunction emitRefetchableDirective(fragmentDefinition: Fragment): Directive {\n const fragmentName = fragmentDefinition.name;\n const fragmentBaseName = fragmentName.replace(/Fragment$/, \"\");\n return {\n kind: \"Directive\",\n name: \"refetchable\",\n args: [\n {\n kind: \"Argument\",\n name: \"queryName\",\n value: {\n kind: \"Literal\",\n value: `${fragmentBaseName}WatchNodeQuery`,\n loc: { kind: \"Generated\" },\n },\n loc: { kind: \"Generated\" },\n metadata: undefined,\n },\n ],\n loc: { kind: \"Generated\" },\n metadata: undefined,\n };\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;AAEA,SAAS,+BAA+B;AAQjC,IAAM,gCAA6C,CAAC,YAAY;AACrE,MAAI,cAAc;AAElB,UAAQ,gBAAgB,CAAC,aAAa;AACpC,QACE,SAAS,SAAS,eACjB,SAAS,SAAS,QAAQ,UAAU,EAAE,aAAa,KAClD,wBAAwB,SAAS,QAAQ,IAC3C;AACA,oBAAc,YAAY,QAAQ,iCAC7B,WAD6B;AAAA,QAEhC,YAAY;AAAA,UACV,GAAG,SAAS;AAAA,UACZ,yBAAyB,QAAQ;AAAA,QACnC;AAAA,MACF,EAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEA,SAAS,yBAAyB,oBAAyC;AACzE,QAAM,eAAe,mBAAmB;AACxC,QAAM,mBAAmB,aAAa,QAAQ,aAAa,EAAE;AAC7D,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,MACJ;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,UACL,MAAM;AAAA,UACN,OAAO,GAAG;AAAA,UACV,KAAK,EAAE,MAAM,YAAY;AAAA,QAC3B;AAAA,QACA,KAAK,EAAE,MAAM,YAAY;AAAA,QACzB,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,IACA,KAAK,EAAE,MAAM,YAAY;AAAA,IACzB,UAAU;AAAA,EACZ;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,13 @@
1
+ import { IRTransform } from "relay-compiler/lib/core/CompilerContext";
2
+ /**
3
+ * relay-compiler will strip out all of its client-specific directives, which
4
+ * makes sense as these should normally not be sent to the schema, but in our
5
+ * case we want to keep this directive as we will need to send it to Apollo
6
+ * Client. So we collect all the directives, let the relay-compiler filter
7
+ * transform do its work, and then re-instate the connection directives.
8
+ *
9
+ * @param wrappedFilterDirectivesTransform
10
+ * relay-compiler's filter directives transform
11
+ */
12
+ export declare function retainConnectionDirectiveTransform(wrappedFilterDirectivesTransform: IRTransform): IRTransform;
13
+ //# sourceMappingURL=retainConnectionDirectiveTransform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retainConnectionDirectiveTransform.d.ts","sourceRoot":"","sources":["../../src/compilerTransforms/retainConnectionDirectiveTransform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAMtE;;;;;;;;;GASG;AACH,wBAAgB,kCAAkC,CAChD,gCAAgC,EAAE,WAAW,GAC5C,WAAW,CAwDb"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __spreadValues = (a, b) => {
12
+ for (var prop in b || (b = {}))
13
+ if (__hasOwnProp.call(b, prop))
14
+ __defNormalProp(a, prop, b[prop]);
15
+ if (__getOwnPropSymbols)
16
+ for (var prop of __getOwnPropSymbols(b)) {
17
+ if (__propIsEnum.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ }
20
+ return a;
21
+ };
22
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
+ var __export = (target, all) => {
24
+ for (var name in all)
25
+ __defProp(target, name, { get: all[name], enumerable: true });
26
+ };
27
+ var __copyProps = (to, from, except, desc) => {
28
+ if (from && typeof from === "object" || typeof from === "function") {
29
+ for (let key of __getOwnPropNames(from))
30
+ if (!__hasOwnProp.call(to, key) && key !== except)
31
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
32
+ }
33
+ return to;
34
+ };
35
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
36
+ var retainConnectionDirectiveTransform_exports = {};
37
+ __export(retainConnectionDirectiveTransform_exports, {
38
+ retainConnectionDirectiveTransform: () => retainConnectionDirectiveTransform
39
+ });
40
+ module.exports = __toCommonJS(retainConnectionDirectiveTransform_exports);
41
+ var import_IRVisitor = require("relay-compiler/lib/core/IRVisitor");
42
+ function retainConnectionDirectiveTransform(wrappedFilterDirectivesTransform) {
43
+ const filterDirectivesTransformWrapper = (context) => {
44
+ let nextContext = context;
45
+ const documentsWithConnectionDirectives = {};
46
+ nextContext.forEachDocument((document) => {
47
+ const fieldPathsWithConnectionDirectives = [];
48
+ (0, import_IRVisitor.visit)(document, {
49
+ Directive(directiveNode, _key, _parent, path) {
50
+ if (directiveNode.name === "connection") {
51
+ fieldPathsWithConnectionDirectives.push([
52
+ path.slice(0, -2),
53
+ directiveNode
54
+ ]);
55
+ }
56
+ }
57
+ });
58
+ documentsWithConnectionDirectives[document.name] = fieldPathsWithConnectionDirectives;
59
+ });
60
+ nextContext = wrappedFilterDirectivesTransform(context);
61
+ nextContext.forEachDocument((document) => {
62
+ const fieldPathsWithConnectionDirectives = documentsWithConnectionDirectives[document.name];
63
+ if (fieldPathsWithConnectionDirectives.length > 0) {
64
+ const nextDocument = (0, import_IRVisitor.visit)(document, {
65
+ LinkedField(linkedFieldNode, _key, _parent, path) {
66
+ const match = fieldPathsWithConnectionDirectives.find(
67
+ ([p, _]) => path.length === p.length && path.every((x, i) => p[i] === x)
68
+ );
69
+ if (match) {
70
+ const nextLinkedFieldNode = __spreadProps(__spreadValues({}, linkedFieldNode), {
71
+ directives: [...linkedFieldNode.directives, match[1]]
72
+ });
73
+ return nextLinkedFieldNode;
74
+ }
75
+ }
76
+ });
77
+ nextContext = nextContext.replace(nextDocument);
78
+ }
79
+ });
80
+ return nextContext;
81
+ };
82
+ return filterDirectivesTransformWrapper;
83
+ }