@luvio/compiler 0.90.0 → 0.93.0

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 (80) hide show
  1. package/dist/codegen/adapter/adapter-network.d.ts +1 -1
  2. package/dist/codegen/adapter/adapter-network.js +6 -3
  3. package/dist/codegen/adapter/adapter-network.js.map +1 -1
  4. package/dist/codegen/adapter/adapter-notify-change.js +1 -1
  5. package/dist/codegen/adapter/adapter-resource-error.js +1 -1
  6. package/dist/codegen/adapter/constants.d.ts +2 -0
  7. package/dist/codegen/adapter/constants.js +4 -2
  8. package/dist/codegen/adapter/constants.js.map +1 -1
  9. package/dist/codegen/adapter/delete/adapter-browser-factory.js +1 -1
  10. package/dist/codegen/adapter/delete/adapter-browser-factory.js.map +1 -1
  11. package/dist/codegen/adapter/delete/adapter-network.js +2 -2
  12. package/dist/codegen/adapter/delete/adapter-network.js.map +1 -1
  13. package/dist/codegen/adapter/graphql/adapter-config-transformer.d.ts +3 -0
  14. package/dist/codegen/adapter/graphql/adapter-config-transformer.js +27 -0
  15. package/dist/codegen/adapter/graphql/adapter-config-transformer.js.map +1 -0
  16. package/dist/codegen/adapter/graphql/index.js +6 -1
  17. package/dist/codegen/adapter/graphql/index.js.map +1 -1
  18. package/dist/codegen/adapter/patch-post/adapter-network.js +1 -1
  19. package/dist/codegen/graphql/interface/index.js +4 -0
  20. package/dist/codegen/graphql/interface/index.js.map +1 -1
  21. package/dist/codegen/graphql/interface/query-transformer.d.ts +5 -0
  22. package/dist/codegen/graphql/interface/query-transformer.js +21 -0
  23. package/dist/codegen/graphql/interface/query-transformer.js.map +1 -0
  24. package/dist/codegen/graphql/interface/select.d.ts +6 -0
  25. package/dist/codegen/graphql/interface/select.js +47 -0
  26. package/dist/codegen/graphql/interface/select.js.map +1 -0
  27. package/dist/codegen/graphql/source-printer/graphql-type-source-printer.d.ts +1 -0
  28. package/dist/codegen/graphql/source-printer/graphql-type-source-printer.js +6 -3
  29. package/dist/codegen/graphql/source-printer/graphql-type-source-printer.js.map +1 -1
  30. package/dist/codegen/graphql/type/constants.d.ts +8 -0
  31. package/dist/codegen/graphql/type/constants.js +9 -1
  32. package/dist/codegen/graphql/type/constants.js.map +1 -1
  33. package/dist/codegen/graphql/type/generateTypeUtil.d.ts +2 -1
  34. package/dist/codegen/graphql/type/generateTypeUtil.js +109 -3
  35. package/dist/codegen/graphql/type/generateTypeUtil.js.map +1 -1
  36. package/dist/codegen/graphql/type/index.js +4 -0
  37. package/dist/codegen/graphql/type/index.js.map +1 -1
  38. package/dist/codegen/graphql/type/ingest.d.ts +0 -1
  39. package/dist/codegen/graphql/type/ingest.js +12 -24
  40. package/dist/codegen/graphql/type/ingest.js.map +1 -1
  41. package/dist/codegen/graphql/type/interface.d.ts +3 -1
  42. package/dist/codegen/graphql/type/interface.js +10 -1
  43. package/dist/codegen/graphql/type/interface.js.map +1 -1
  44. package/dist/codegen/graphql/type/query-transformer.d.ts +7 -0
  45. package/dist/codegen/graphql/type/query-transformer.js +98 -0
  46. package/dist/codegen/graphql/type/query-transformer.js.map +1 -0
  47. package/dist/codegen/graphql/type/select.d.ts +5 -0
  48. package/dist/codegen/graphql/type/select.js +179 -0
  49. package/dist/codegen/graphql/type/select.js.map +1 -0
  50. package/dist/codegen/graphql/utils/types.d.ts +7 -1
  51. package/dist/codegen/graphql/utils/types.js +28 -1
  52. package/dist/codegen/graphql/utils/types.js.map +1 -1
  53. package/dist/codegen/resource/composite/ingest-success-child-resource-params.js +2 -1
  54. package/dist/codegen/resource/composite/ingest-success-child-resource-params.js.map +1 -1
  55. package/dist/codegen/resource/composite/select-child-resource-params.js +1 -1
  56. package/dist/codegen/resource/composite/select-child-resource-params.js.map +1 -1
  57. package/dist/codegen/resource/graphql/create-resource-request.js +0 -2
  58. package/dist/codegen/resource/graphql/create-resource-request.js.map +1 -1
  59. package/dist/codegen/resource/graphql/index.js +2 -2
  60. package/dist/codegen/resource/graphql/index.js.map +1 -1
  61. package/dist/codegen/resource/graphql/ingest-error.js +1 -1
  62. package/dist/codegen/resource/graphql/ingest-error.js.map +1 -1
  63. package/dist/codegen/resource/graphql/select.d.ts +3 -0
  64. package/dist/codegen/resource/graphql/select.js +30 -0
  65. package/dist/codegen/resource/graphql/select.js.map +1 -0
  66. package/dist/codegen/resource/ingest-error.js +1 -1
  67. package/dist/codegen/resource/ingest-error.js.map +1 -1
  68. package/dist/codegen/shape/graphql/index.js +2 -2
  69. package/dist/codegen/shape/graphql/index.js.map +1 -1
  70. package/dist/codegen/shape/graphql/shape-ingest.js +7 -0
  71. package/dist/codegen/shape/graphql/shape-ingest.js.map +1 -1
  72. package/dist/codegen/shape/graphql/shape-select.d.ts +3 -0
  73. package/dist/codegen/shape/graphql/shape-select.js +77 -0
  74. package/dist/codegen/shape/graphql/shape-select.js.map +1 -0
  75. package/dist/codegen/shape/shape-utils-ingest.js +0 -22
  76. package/dist/codegen/shape/shape-utils-ingest.js.map +1 -1
  77. package/dist/codegen/shared/constants.d.ts +5 -0
  78. package/dist/codegen/shared/constants.js +6 -1
  79. package/dist/codegen/shared/constants.js.map +1 -1
  80. package/package.json +4 -4
@@ -10,20 +10,43 @@ const utils_1 = require("../utils");
10
10
  const constants_1 = require("../../adapter/constants");
11
11
  const constants_2 = require("../../shared/constants");
12
12
  const constants_3 = require("./constants");
13
- function generateTypeUtil(graphqlResource, metadata) {
13
+ function generateTypeUtil(graphqlResource, metadata, importContext) {
14
14
  var _a;
15
+ // We shouldn't be able to get here without a queryType. graphqldsl should ensure this when constructed/validated.
16
+ const queryType = graphqlResource.graphqlDSL.schema.getQueryType();
17
+ if (!queryType) {
18
+ throw new Error('Invalid GraphQL Schema. You must include a Query Type.');
19
+ }
20
+ const queryTypeName = queryType.name;
21
+ const queryTransformerImport = importContext.importGraphQLArtifact(queryTypeName, 'getQueryTransformer');
22
+ // TODO: W-11246519 improve readability of the applyMinimumFields function by replacing the AST visitor with
23
+ // manual node traversal
15
24
  return (0, imports_1.resolveImports)((0, deindent_1.default) `
16
25
  export type ${constants_3.GRAPHQL_VARIABLES_IDENTIFIER} = Record<string, any>;
17
-
26
+ export type ${constants_3.GRAPHQL_FRAGMENT_MAP_IDENTIFIER} = Record<string, ${constants_2.LUVIO_GRAPHQL_FRAGMENT_DEFINITION_NODE_IMPORT}>;
18
27
  export interface ${constants_3.GRAPHQL_STATE_INTERFACE_IDENTIFIER}<D = unknown> {
19
28
  data: D,
20
29
  variables: ${constants_3.GRAPHQL_VARIABLES_IDENTIFIER},
21
- path: ${constants_1.ADAPTER_INGEST_PATH_INTERFACE_IDENTIFIER}
30
+ fragments: ${constants_3.GRAPHQL_FRAGMENT_MAP_IDENTIFIER},
31
+ path: ${constants_1.ADAPTER_INGEST_PATH_INTERFACE_IDENTIFIER},
22
32
  ${constants_2.LUVIO_IDENTIFIER}: ${constants_2.LUVIO_IMPORT},
23
33
  ${constants_2.LUVIO_STORE_IDENTIFIER}: ${constants_2.LUVIO_STORE_IMPORT},
24
34
  ${constants_3.TIMESTAMP_IDENTIFIER}: number
25
35
  };
26
36
 
37
+ export interface QueryTransformerFunction {
38
+ (fieldId: string): ${constants_3.QUERY_TRANSFORMER_IDENTIFIER} | undefined;
39
+ }
40
+
41
+ export interface GetMinimumFieldsFunction {
42
+ (): ${constants_2.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}[];
43
+ }
44
+
45
+ export interface ${constants_3.QUERY_TRANSFORMER_IDENTIFIER} {
46
+ ${constants_3.GET_QUERY_TRANSFORMER_IDENTIFIER}: QueryTransformerFunction,
47
+ ${constants_3.GET_MINIMUM_FIELDS_IDENTIFIER}: GetMinimumFieldsFunction
48
+ }
49
+
27
50
  export function ${constants_3.CREATE_LINK_IDENTIFIER}(ref: string) {
28
51
  return {
29
52
  __ref: ref,
@@ -79,6 +102,68 @@ function generateTypeUtil(graphqlResource, metadata) {
79
102
 
80
103
  export const TTL = ${(0, utils_1.getShapeTtl)(metadata.rootTtl, (_a = graphqlResource.returnShape) === null || _a === void 0 ? void 0 : _a.id, metadata.shapeTtls)};
81
104
 
105
+ export function ${constants_3.APPLY_MINIMUM_FIELDS_TO_QUERY_IDENTIFIER} (query: ${constants_2.LUVIO_GRAPHQL_DOCUMENT_NODE_IMPORT}): ${constants_2.LUVIO_GRAPHQL_DOCUMENT_NODE_IMPORT} {
106
+ const queryTransformerStack: ${constants_3.QUERY_TRANSFORMER_IDENTIFIER}[] = [];
107
+ const visitor: ${constants_2.LUVIO_GRAPHQL_AST_VISITOR_IMPORT} = {
108
+ OperationDefinition: {
109
+ enter(node) {
110
+ if (node.operation === 'query') {
111
+ queryTransformerStack.push({
112
+ ${constants_3.GET_QUERY_TRANSFORMER_IDENTIFIER}: ${queryTransformerImport},
113
+ ${constants_3.GET_MINIMUM_FIELDS_IDENTIFIER}: () => {return []}
114
+ });
115
+ }
116
+ },
117
+ },
118
+ Field: {
119
+ enter(node) {
120
+ if (node.selectionSet?.selections !== undefined) {
121
+ const { ${constants_3.GET_QUERY_TRANSFORMER_IDENTIFIER} } = queryTransformerStack[queryTransformerStack.length - 1];
122
+ const queryTransformer = ${constants_3.GET_QUERY_TRANSFORMER_IDENTIFIER}(node.name.value);
123
+ if (queryTransformer === undefined) {
124
+ throw new Error("Invalid field in query '" + node.name.value + "'");
125
+ }
126
+ queryTransformerStack.push(queryTransformer);
127
+ }
128
+ },
129
+ leave(node) {
130
+ if (node.selectionSet?.selections !== undefined) {
131
+ queryTransformerStack.pop();
132
+ }
133
+ }
134
+ },
135
+ SelectionSet: {
136
+ enter(node, _key, parent) {
137
+ // No changes if no selections.
138
+ const { selections } = node;
139
+ if (!selections) {
140
+ return;
141
+ }
142
+
143
+ // This node is always entered after a Field node. A query transformer for this node was pushed
144
+ // onto the stack when that Field node was entered. The query transformer provides a function
145
+ // to get the minimum fields for this node.
146
+ const { ${constants_3.GET_MINIMUM_FIELDS_IDENTIFIER} } = queryTransformerStack[queryTransformerStack.length - 1];
147
+
148
+ // Call the function to get the minimum fields for this node, filtering out any
149
+ // fields that are already present in the selection.
150
+ const minimumFields = ${constants_3.GET_MINIMUM_FIELDS_IDENTIFIER}().filter(field => {
151
+ return !selections.some(selection => {
152
+ return selection.kind === 'Field' && (selection.name.value === field.name.value);
153
+ });
154
+ });
155
+
156
+ // Return a new SelectionSet including minimum fields
157
+ return {
158
+ ...node,
159
+ selections: [...selections, ...minimumFields],
160
+ };
161
+ },
162
+ },
163
+ };
164
+ return ${constants_2.LUVIO_GRAPHQL_VISIT_IMPORT}(query, visitor);
165
+ }
166
+
82
167
  export function ${constants_3.GET_REQUESTED_FIELD_IDENTIFIER}(responseDataFieldName: string, requestedFields: ${constants_2.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}[]): ${constants_2.LUVIO_GRAPHQL_FIELD_NODE_IMPORT} | undefined {
83
168
  return requestedFields.find(fieldNode => (fieldNode.alias && fieldNode.alias.value === responseDataFieldName) || (!fieldNode.alias && fieldNode.name.value === responseDataFieldName));
84
169
  }
@@ -88,6 +173,27 @@ function generateTypeUtil(graphqlResource, metadata) {
88
173
  const argumentString : string = field.arguments && field.arguments.length > 0 ? '__' + ${constants_3.SERIALIZE_FIELD_ARGUMENTS_IDENTIFIER}(field.arguments, variables) : '';
89
174
  return field.name.value + argumentString; // It should be safe to always use the fieldName - If an alias is meaningful, there will be arguments on the key also.
90
175
  }
176
+
177
+ export function ${constants_3.GET_REQUESTED_FIELDS_FOR_TYPE_IDENTIFIER}(typename: string, selectionSet: ${constants_2.LUVIO_GRAPHQL_SELECTION_SET_NODE_IMPORT}, namedFragmentsMap: ${constants_3.GRAPHQL_FRAGMENT_MAP_IDENTIFIER}): ${constants_2.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}[] {
178
+ const selections = [];
179
+ selectionSet.selections.forEach(selection => {
180
+ if(selection.kind === "Field") {
181
+ selections.push(selection);
182
+ }
183
+ if(selection.kind === "InlineFragment" && selection.typeCondition.name.value === typename) {
184
+ ${constants_3.GET_REQUESTED_FIELDS_FOR_TYPE_IDENTIFIER}(typename, selection.selectionSet, namedFragmentsMap)
185
+ .forEach(fragmentFieldSelection => selections.push(fragmentFieldSelection));
186
+ }
187
+ if(selection.kind === "FragmentSpread") {
188
+ const namedFragment = namedFragmentsMap[selection.name.value];
189
+ if(namedFragment && namedFragment.typeCondition.name.value === typename) {
190
+ ${constants_3.GET_REQUESTED_FIELDS_FOR_TYPE_IDENTIFIER}(typename, namedFragment.selectionSet, namedFragmentsMap)
191
+ .forEach(fragmentFieldSelection => selections.push(fragmentFieldSelection));
192
+ }
193
+ }
194
+ });
195
+ return selections;
196
+ }
91
197
  `);
92
198
  }
93
199
  exports.generateTypeUtil = generateTypeUtil;
@@ -1 +1 @@
1
- {"version":3,"file":"generateTypeUtil.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/generateTypeUtil.ts"],"names":[],"mappings":";;;;;;AAAA,uEAA+C;AAC/C,oDAAwD;AACxD,oCAAuC;AAGvC,uDAAmF;AACnF,sDAQgC;AAChC,2CAQqB;AAErB,SAAgB,gBAAgB,CAC5B,eAAgC,EAChC,QAAgC;;IAEhC,OAAO,IAAA,wBAAc,EAAC,IAAA,kBAAQ,EAAA;sBACZ,wCAA4B;;2BAEvB,8CAAkC;;yBAEpC,wCAA4B;oBACjC,oDAAwC;cAC9C,4BAAgB,KAAK,wBAAY;cACjC,kCAAsB,KAAK,8BAAkB;cAC7C,gCAAoB;;;0BAGR,kCAAsB;;;;;;0BAMtB,gDAAoC,4BAA4B,8CAAkC,mBAAmB,wCAA4B;;;;;;;;;;kDAUzH,8CAAkC,gBAAgB,wCAA4B;;;;;iDAK/E,2CAA+B,gBAAgB,wCAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAgC/F,IAAA,mBAAW,EAC5B,QAAQ,CAAC,OAAO,EAChB,MAAA,eAAe,CAAC,WAAW,0CAAE,EAAE,EAC/B,QAAQ,CAAC,SAAS,CACrB;;0BAEiB,0CAA8B,oDAAoD,2CAA+B,QAAQ,2CAA+B;;;;0BAIxJ,mDAAuC,WAAW,2CAA+B,gBAAgB,wCAA4B;;qGAElD,gDAAoC;;;KAGpI,CAAC,CAAC;AACP,CAAC;AArFD,4CAqFC"}
1
+ {"version":3,"file":"generateTypeUtil.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/generateTypeUtil.ts"],"names":[],"mappings":";;;;;;AAAA,uEAA+C;AAC/C,oDAAwD;AAExD,oCAAuC;AAGvC,uDAAmF;AACnF,sDAagC;AAChC,2CAcqB;AAErB,SAAgB,gBAAgB,CAC5B,eAAgC,EAChC,QAAgC,EAChC,aAA4B;;IAE5B,kHAAkH;IAClH,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IACnE,IAAI,CAAC,SAAS,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;KAC7E;IACD,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC;IACrC,MAAM,sBAAsB,GAAG,aAAa,CAAC,qBAAqB,CAC9D,aAAa,EACb,qBAAqB,CACxB,CAAC;IAEF,4GAA4G;IAC5G,wBAAwB;IACxB,OAAO,IAAA,wBAAc,EAAC,IAAA,kBAAQ,EAAA;sBACZ,wCAA4B;sBAC5B,2CAA+B,qBAAqB,yDAA6C;2BAC5F,8CAAkC;;yBAEpC,wCAA4B;yBAC5B,2CAA+B;oBACpC,oDAAwC;cAC9C,4BAAgB,KAAK,wBAAY;cACjC,kCAAsB,KAAK,8BAAkB;cAC7C,gCAAoB;;;;iCAID,wCAA4B;;;;kBAI3C,2CAA+B;;;2BAGtB,wCAA4B;cACzC,4CAAgC;cAChC,yCAA6B;;;0BAGjB,kCAAsB;;;;;;0BAMtB,gDAAoC,4BAA4B,8CAAkC,mBAAmB,wCAA4B;;;;;;;;;;kDAUzH,8CAAkC,gBAAgB,wCAA4B;;;;;iDAK/E,2CAA+B,gBAAgB,wCAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAgC/F,IAAA,mBAAW,EAC5B,QAAQ,CAAC,OAAO,EAChB,MAAA,eAAe,CAAC,WAAW,0CAAE,EAAE,EAC/B,QAAQ,CAAC,SAAS,CACrB;;0BAEiB,oDAAwC,YAAY,8CAAkC,MAAM,8CAAkC;2CAC7G,wCAA4B;6BAC1C,4CAAgC;;;;;kCAK3B,4CAAgC,KAAK,sBAAsB;kCAC3D,yCAA6B;;;;;;;;sCAQzB,4CAAgC;uDACf,4CAAgC;;;;;;;;;;;;;;;;;;;;;;;;kCAwBrD,yCAA6B;;;;gDAIf,yCAA6B;;;;;;;;;;;;;;qBAcxD,sCAA0B;;;0BAGrB,0CAA8B,oDAAoD,2CAA+B,QAAQ,2CAA+B;;;;0BAIxJ,mDAAuC,WAAW,2CAA+B,gBAAgB,wCAA4B;;qGAElD,gDAAoC;;;;0BAI/G,oDAAwC,oCAAoC,mDAAuC,wBAAwB,2CAA+B,MAAM,2CAA+B;;;;;;;sBAOnN,oDAAwC;;;;;;0BAMpC,oDAAwC;;;;;;;KAO7D,CAAC,CAAC;AACP,CAAC;AApMD,4CAoMC"}
@@ -11,6 +11,8 @@ const ingest_1 = require("./ingest");
11
11
  const ttl_1 = require("./ttl");
12
12
  const merge_1 = require("./merge");
13
13
  const imports_1 = require("../../../utils/imports");
14
+ const select_1 = require("./select");
15
+ const query_transformer_1 = require("./query-transformer");
14
16
  function generateType(graphqlDsl, graphqlTypeName, def, importContext, metadata) {
15
17
  return (0, imports_1.resolveImports)((0, deindent_1.default) `
16
18
  export const name = '${graphqlTypeName}';
@@ -19,6 +21,8 @@ function generateType(graphqlDsl, graphqlTypeName, def, importContext, metadata)
19
21
  ${(0, key_1.generateKey)(def, importContext, graphqlDsl.schemaName)}
20
22
  ${(0, merge_1.generateMerge)(importContext)}
21
23
  ${(0, ingest_1.generateIngest)(graphqlDsl, graphqlTypeName, def, importContext, metadata)}
24
+ ${(0, select_1.generateSelect)(graphqlDsl, graphqlTypeName, def, importContext, metadata)}
25
+ ${(0, query_transformer_1.generate)(graphqlDsl, graphqlTypeName, def, importContext, metadata)}
22
26
  `);
23
27
  }
24
28
  exports.generateType = generateType;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/index.ts"],"names":[],"mappings":";;;;;;AAAA,uEAA+C;AAC/C,+BAAoC;AACpC,2CAAiD;AACjD,qCAA0C;AAC1C,+BAAoC;AACpC,mCAAwC;AACxC,oDAAwD;AAMxD,SAAgB,YAAY,CACxB,UAA2B,EAC3B,eAAuB,EACvB,GAA6B,EAC7B,aAA4B,EAC5B,QAAgC;IAEhC,OAAO,IAAA,wBAAc,EAAC,IAAA,kBAAQ,EAAA;+BACH,eAAe;UACpC,IAAA,iBAAW,EAAC,UAAU,EAAE,eAAe,CAAC;UACxC,IAAA,8BAAkB,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UAC7E,IAAA,iBAAW,EAAC,GAAG,EAAE,aAAa,EAAE,UAAU,CAAC,UAAU,CAAC;UACtD,IAAA,qBAAa,EAAC,aAAa,CAAC;UAC5B,IAAA,uBAAc,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;KAC9E,CAAC,CAAC;AACP,CAAC;AAfD,oCAeC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/index.ts"],"names":[],"mappings":";;;;;;AAAA,uEAA+C;AAC/C,+BAAoC;AACpC,2CAAiD;AACjD,qCAA0C;AAC1C,+BAAoC;AACpC,mCAAwC;AACxC,oDAAwD;AAKxD,qCAA0C;AAC1C,2DAA2E;AAE3E,SAAgB,YAAY,CACxB,UAA2B,EAC3B,eAAuB,EACvB,GAA6B,EAC7B,aAA4B,EAC5B,QAAgC;IAEhC,OAAO,IAAA,wBAAc,EAAC,IAAA,kBAAQ,EAAA;+BACH,eAAe;UACpC,IAAA,iBAAW,EAAC,UAAU,EAAE,eAAe,CAAC;UACxC,IAAA,8BAAkB,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UAC7E,IAAA,iBAAW,EAAC,GAAG,EAAE,aAAa,EAAE,UAAU,CAAC,UAAU,CAAC;UACtD,IAAA,qBAAa,EAAC,aAAa,CAAC;UAC5B,IAAA,uBAAc,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UACzE,IAAA,uBAAc,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UACzE,IAAA,4BAAwB,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;KACxF,CAAC,CAAC;AACP,CAAC;AAjBD,oCAiBC"}
@@ -6,5 +6,4 @@ import type { GraphQLCodegenMetadata } from '../source-printer';
6
6
  export declare function ingestNamedType(field: FieldDefinitionNode, typeNode: NamedTypeNode, importContext: ImportContext, normalizableTypeMap: NormalizableTypes): string;
7
7
  export declare function ingestListType(field: FieldDefinitionNode, typeNode: ListTypeNode, importContext: ImportContext, normalizableTypeMap: NormalizableTypes): string;
8
8
  export declare function ingestType(field: FieldDefinitionNode, typeNode: TypeNode, importContext: ImportContext, normalizableTypeMap: NormalizableTypes): string;
9
- export declare function generateIngestFromDef(graphqlDsl: LuvioGraphQLDSL, def: ObjectTypeDefinitionNode, importContext: ImportContext, normalizableTypeMap: NormalizableTypes): string;
10
9
  export declare function generateIngest(graphqlDsl: LuvioGraphQLDSL, typeName: string, def: ObjectTypeDefinitionNode, importContext: ImportContext, _metadata: GraphQLCodegenMetadata): string;
@@ -3,13 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.generateIngest = exports.generateIngestFromDef = exports.ingestType = exports.ingestListType = exports.ingestNamedType = void 0;
6
+ exports.generateIngest = exports.ingestType = exports.ingestListType = exports.ingestNamedType = void 0;
7
7
  const deindent_1 = __importDefault(require("../../../utils/deindent"));
8
8
  const constants_1 = require("../../shared/constants");
9
9
  const utils_1 = require("../utils");
10
10
  const utils_2 = require("./utils");
11
11
  const constants_2 = require("./constants");
12
12
  const interface_1 = require("./interface");
13
+ const types_1 = require("../utils/types");
13
14
  const REQUESTED_FIELDS_IDENTIFIER = 'requestedFields';
14
15
  function ingestNamedType(field, typeNode, importContext, normalizableTypeMap) {
15
16
  const typeName = (0, utils_1.resolveTypeName)(typeNode);
@@ -74,10 +75,8 @@ function ingestListType(field, typeNode, importContext, normalizableTypeMap) {
74
75
  itemState
75
76
  )
76
77
  }
77
- ${constants_1.LUVIO_IDENTIFIER}.storePublish(${fullPathIdentifier}, ${collectionIdentifier})
78
- dataSink[${constants_2.FIELD_KEY_IDENTIFIER}] = {
79
- __ref: ${fullPathIdentifier}
80
- } as any;
78
+
79
+ dataSink[${constants_2.FIELD_KEY_IDENTIFIER}] = ${collectionIdentifier};
81
80
  };
82
81
  `;
83
82
  }
@@ -103,40 +102,29 @@ function ingestType(field, typeNode, importContext, normalizableTypeMap) {
103
102
  }
104
103
  }
105
104
  exports.ingestType = ingestType;
106
- function generateIngestFromDef(graphqlDsl, def, importContext, normalizableTypeMap) {
107
- const { schema } = graphqlDsl;
108
- const type = schema.getType(def.name.value);
109
- return generateObjectTypeIngest(type, importContext, normalizableTypeMap);
110
- }
111
- exports.generateIngestFromDef = generateIngestFromDef;
112
105
  function generateObjectTypeIngest(type, importContext, normalizableTypeMap) {
113
- const fieldMap = type.getFields();
114
- const fields = Object.values(fieldMap);
106
+ const fields = (0, types_1.getObjectFields)(type);
115
107
  const fieldIngestStatements = fields
116
108
  .map((field) => {
117
- var _a, _b;
118
- if (((_a = field.astNode) === null || _a === void 0 ? void 0 : _a.type) === undefined) {
109
+ if (field.type === undefined) {
119
110
  return '';
120
111
  }
121
- return ingestType(field.astNode, (_b = field.astNode) === null || _b === void 0 ? void 0 : _b.type, importContext, normalizableTypeMap);
112
+ return ingestType(field, field.type, importContext, normalizableTypeMap);
122
113
  })
123
114
  .filter((statement) => statement !== '');
124
115
  const eachFieldHandling = fieldIngestStatements.join('\n');
125
116
  const ingestStatements = [
126
- getRequestedFieldsStatement(),
117
+ getRequestedFieldsStatement(importContext),
127
118
  iterateThroughResponseKeys(importContext, eachFieldHandling),
128
119
  ];
129
120
  return ingestStatements.join('\n');
130
121
  }
131
- function getRequestedFieldsStatement() {
122
+ function getRequestedFieldsStatement(importContext) {
123
+ const getRequestedFieldsImport = importContext.importGraphQLArtifact(constants_2.TYPE_UTIL_IDENTIFIER, constants_2.GET_REQUESTED_FIELDS_FOR_TYPE_IDENTIFIER);
132
124
  return (0, deindent_1.default) `
133
125
  const ${REQUESTED_FIELDS_IDENTIFIER}: ${constants_1.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}[] =
134
126
  astNode && astNode.selectionSet ?
135
- astNode.selectionSet.selections.filter(
136
- (i): i is ${constants_1.LUVIO_GRAPHQL_FIELD_NODE_IMPORT} => {
137
- return i.kind === "Field";
138
- }
139
- ) :
127
+ ${getRequestedFieldsImport}(name, astNode.selectionSet, state.fragments) :
140
128
  [];
141
129
  `;
142
130
  }
@@ -179,7 +167,7 @@ function generateIngest(graphqlDsl, typeName, def, importContext, _metadata) {
179
167
 
180
168
  // normalize fields
181
169
  const dataSink = <PartialInterface>({});
182
- ${generateIngestFromDef(graphqlDsl, def, importContext, normalizableTypeMap)};
170
+ ${generateObjectTypeIngest(def, importContext, normalizableTypeMap)};
183
171
 
184
172
  // merge existing cache data and new request response data
185
173
  let mergedData: PartialInterface;
@@ -1 +1 @@
1
- {"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/ingest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/ingest.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,14 @@
1
- import type { ObjectTypeDefinitionNode, TypeNode } from '@luvio/graphql-parser';
1
+ import type { FieldDefinitionNode, ObjectTypeDefinitionNode, TypeNode } from '@luvio/graphql-parser';
2
2
  import type { GraphQLCodegenMetadata } from '../source-printer/graphql-source-printer';
3
3
  import type { ImportContext } from '../../../utils/imports';
4
4
  import type { LuvioGraphQLDSL } from '../../../intermediate/graphql';
5
5
  export declare const TYPE_INTERFACE_IDENTIFIER = "Interface";
6
+ export declare const TYPE_NAME_IDENTIFIER = "__typename";
6
7
  export declare const MINIMUM_INTERFACE_IDENTIFIER: string;
7
8
  export declare const PARTIAL_INTERFACE_IDENTIFIER: string;
8
9
  export declare function generateTypeReference(type: TypeNode, importContext: ImportContext, scalarToPrimitiveMap: Record<string, string>, state: {
9
10
  required: boolean;
10
11
  array: boolean;
11
12
  }): string;
13
+ export declare function getMinimumFields(idNode: FieldDefinitionNode | undefined): string[];
12
14
  export declare function generateInterfaces(graphqlDsl: LuvioGraphQLDSL, graphqlTypeName: string, def: ObjectTypeDefinitionNode, importContext: ImportContext, metadata: GraphQLCodegenMetadata): string;
@@ -3,11 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.generateInterfaces = exports.generateTypeReference = exports.PARTIAL_INTERFACE_IDENTIFIER = exports.MINIMUM_INTERFACE_IDENTIFIER = exports.TYPE_INTERFACE_IDENTIFIER = void 0;
6
+ exports.generateInterfaces = exports.getMinimumFields = exports.generateTypeReference = exports.PARTIAL_INTERFACE_IDENTIFIER = exports.MINIMUM_INTERFACE_IDENTIFIER = exports.TYPE_NAME_IDENTIFIER = exports.TYPE_INTERFACE_IDENTIFIER = void 0;
7
7
  const deindent_1 = __importDefault(require("../../../utils/deindent"));
8
8
  const key_1 = require("./key");
9
9
  const utils_1 = require("./utils");
10
10
  exports.TYPE_INTERFACE_IDENTIFIER = 'Interface';
11
+ exports.TYPE_NAME_IDENTIFIER = '__typename';
11
12
  exports.MINIMUM_INTERFACE_IDENTIFIER = `Minimum${exports.TYPE_INTERFACE_IDENTIFIER}`;
12
13
  exports.PARTIAL_INTERFACE_IDENTIFIER = `Partial${exports.TYPE_INTERFACE_IDENTIFIER}`;
13
14
  function generateNamedTypeReference(type, importContext, scalarToPrimitiveMap) {
@@ -42,6 +43,14 @@ function generateTypeReference(type, importContext, scalarToPrimitiveMap, state)
42
43
  }
43
44
  }
44
45
  exports.generateTypeReference = generateTypeReference;
46
+ function getMinimumFields(idNode) {
47
+ const minimumFields = [exports.TYPE_NAME_IDENTIFIER];
48
+ if (idNode !== undefined) {
49
+ minimumFields.push(idNode.name.value);
50
+ }
51
+ return minimumFields;
52
+ }
53
+ exports.getMinimumFields = getMinimumFields;
45
54
  // Interface contains all fields of a GraphQL type
46
55
  function generateInterface(def, importContext, scalarToPrimitiveMap) {
47
56
  const { fields: graphqlFields } = def;
@@ -1 +1 @@
1
- {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/interface.ts"],"names":[],"mappings":";;;;;;AAEA,uEAA+C;AAE/C,+BAAmC;AAEnC,mCAAiD;AAGpC,QAAA,yBAAyB,GAAG,WAAW,CAAC;AACxC,QAAA,4BAA4B,GAAG,UAAU,iCAAyB,EAAE,CAAC;AACrE,QAAA,4BAA4B,GAAG,UAAU,iCAAyB,EAAE,CAAC;AAElF,SAAS,0BAA0B,CAC/B,IAAmB,EACnB,aAA4B,EAC5B,oBAA4C;IAE5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IAEjC,IAAI,oBAAoB,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE;QAC9C,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;KACzC;IAED,OAAO,aAAa,CAAC,qBAAqB,CAAC,QAAQ,EAAE,iCAAyB,CAAC,CAAC;AACpF,CAAC;AAED,SAAgB,qBAAqB,CACjC,IAAc,EACd,aAA4B,EAC5B,oBAA4C,EAC5C,KAA4C;IAE5C,QAAQ,IAAI,CAAC,IAAI,EAAE;QACf,KAAK,UAAU;YACX,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,oBAAoB,EAAE;gBAC5E,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK,EAAE,IAAI;aACd,CAAC,EAAE,CAAC;QACT,KAAK,aAAa;YACd,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,oBAAoB,EAAE;gBACzE,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,KAAK,CAAC,KAAK;aACrB,CAAC,CAAC;QACP,KAAK,WAAW,CAAC,CAAC;YACd,IAAI,IAAI,GAAG,0BAA0B,CAAC,IAAI,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAC;YACjF,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE;gBACtB,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC;aACtB;YACD,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,EAAE;gBAC1B,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC;aAC3B;YACD,OAAO,IAAI,CAAC;SACf;KACJ;AACL,CAAC;AA5BD,sDA4BC;AAED,kDAAkD;AAClD,SAAS,iBAAiB,CACtB,GAA6B,EAC7B,aAA4B,EAC5B,oBAA4C;IAE5C,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC;IACtC,MAAM,oBAAoB,GACtB,aAAa,KAAK,SAAS;QACvB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;YAC/B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC;YACpC,OAAO,IAAA,kBAAQ,EAAA;kBACf,IAAI,CAAC,KAAK,KAAK,qBAAqB,CAAC,IAAI,EAAE,aAAa,EAAE,oBAAoB,EAAE;gBAC5E,QAAQ,EAAE,KAAK;gBACf,KAAK,EAAE,KAAK;aACf,CAAC;aACP,CAAC;QACA,CAAC,CAAC,CAAC;IAEb,OAAO,IAAA,kBAAQ,EAAA;2BACQ,iCAAyB;cACtC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;;KAEzC,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CAAC,UAA2B,EAAE,eAAuB;IAC9E,IAAI,iBAAiB,GAAa,EAAE,CAAC;IACrC,MAAM,EAAE,oBAAoB,EAAE,GAAG,UAAU,CAAC;IAC5C,MAAM,aAAa,GAA+B,aAAa,CAAC;IAChE,IAAI,IAAA,8BAAsB,EAAC,oBAAoB,EAAE,eAAe,EAAE,aAAa,CAAC,EAAE;QAC9E,MAAM,4BAA4B,GAC9B,oBAAoB,CAAC,eAAe,CAAC,CAAC,aAAa,CAAE,CAAC,4BAA4B,CAAC;QACvF,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;KACjE;IACD,OAAO,iBAAiB,CAAC;AAC7B,CAAC;AAED,wEAAwE;AACxE,mGAAmG;AACnG,SAAS,wBAAwB,CAC7B,GAA6B,EAC7B,UAA2B,EAC3B,eAAuB;IAEvB,wDAAwD;IACxD,MAAM,MAAM,GAAG,IAAA,gBAAU,EAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEhE,wFAAwF;IACxF,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAE5E,sFAAsF;IACtF,IAAI,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC3D,kBAAkB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAEtD,OAAO,IAAA,kBAAQ,EAAA;2BACQ,oCAA4B;cACzC,kBAAkB;SACf,GAAG,CAAC,CAAC,iBAAiB,EAAE,EAAE;QACvB,OAAO,GAAG,iBAAiB,gBAAgB,iBAAiB,IAAI,CAAC;IACrE,CAAC,CAAC;SACD,IAAI,CAAC,KAAK,CAAC;;KAEvB,CAAC;AACN,CAAC;AAED,SAAS,wBAAwB,CAAC,sBAA8B;IAC5D,MAAM,mBAAmB,GACrB,sBAAsB,KAAK,EAAE;QACzB,CAAC,CAAC,qBAAqB;QACvB,CAAC,CAAC,yBAAyB,oCAA4B,EAAE,CAAC;IAClE,OAAO,IAAA,kBAAQ,EAAA;sBACG,oCAA4B,MAAM,mBAAmB;KACtE,CAAC;AACN,CAAC;AAED,SAAS,gCAAgC,CACrC,UAA2B,EAC3B,eAAuB,EACvB,GAA6B,EAC7B,aAA4B,EAC5B,oBAA4C;IAE5C,MAAM,eAAe,GAAG,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAC;IACpF,MAAM,sBAAsB,GAAG,wBAAwB,CAAC,GAAG,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IAC1F,MAAM,sBAAsB,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;IAEhF,OAAO,IAAA,kBAAQ,EAAA;UACT,eAAe;;UAEf,sBAAsB;;UAEtB,sBAAsB;KAC3B,CAAC;AACN,CAAC;AAED,SAAgB,kBAAkB,CAC9B,UAA2B,EAC3B,eAAuB,EACvB,GAA6B,EAC7B,aAA4B,EAC5B,QAAgC;IAEhC,OAAO,gCAAgC,CACnC,UAAU,EACV,eAAe,EACf,GAA+B,EAC/B,aAAa,EACb,QAAQ,CAAC,oBAAoB,CAChC,CAAC;AACN,CAAC;AAdD,gDAcC"}
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/interface.ts"],"names":[],"mappings":";;;;;;AAOA,uEAA+C;AAE/C,+BAAmC;AAEnC,mCAAiD;AAGpC,QAAA,yBAAyB,GAAG,WAAW,CAAC;AACxC,QAAA,oBAAoB,GAAG,YAAY,CAAC;AACpC,QAAA,4BAA4B,GAAG,UAAU,iCAAyB,EAAE,CAAC;AACrE,QAAA,4BAA4B,GAAG,UAAU,iCAAyB,EAAE,CAAC;AAElF,SAAS,0BAA0B,CAC/B,IAAmB,EACnB,aAA4B,EAC5B,oBAA4C;IAE5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IAEjC,IAAI,oBAAoB,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE;QAC9C,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;KACzC;IAED,OAAO,aAAa,CAAC,qBAAqB,CAAC,QAAQ,EAAE,iCAAyB,CAAC,CAAC;AACpF,CAAC;AAED,SAAgB,qBAAqB,CACjC,IAAc,EACd,aAA4B,EAC5B,oBAA4C,EAC5C,KAA4C;IAE5C,QAAQ,IAAI,CAAC,IAAI,EAAE;QACf,KAAK,UAAU;YACX,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,oBAAoB,EAAE;gBAC5E,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK,EAAE,IAAI;aACd,CAAC,EAAE,CAAC;QACT,KAAK,aAAa;YACd,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,oBAAoB,EAAE;gBACzE,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,KAAK,CAAC,KAAK;aACrB,CAAC,CAAC;QACP,KAAK,WAAW,CAAC,CAAC;YACd,IAAI,IAAI,GAAG,0BAA0B,CAAC,IAAI,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAC;YACjF,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE;gBACtB,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC;aACtB;YACD,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,EAAE;gBAC1B,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC;aAC3B;YACD,OAAO,IAAI,CAAC;SACf;KACJ;AACL,CAAC;AA5BD,sDA4BC;AAED,SAAgB,gBAAgB,CAAC,MAAuC;IACpE,MAAM,aAAa,GAAG,CAAC,4BAAoB,CAAC,CAAC;IAC7C,IAAI,MAAM,KAAK,SAAS,EAAE;QACtB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzC;IACD,OAAO,aAAa,CAAC;AACzB,CAAC;AAND,4CAMC;AAED,kDAAkD;AAClD,SAAS,iBAAiB,CACtB,GAA6B,EAC7B,aAA4B,EAC5B,oBAA4C;IAE5C,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC;IACtC,MAAM,oBAAoB,GACtB,aAAa,KAAK,SAAS;QACvB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;YAC/B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC;YACpC,OAAO,IAAA,kBAAQ,EAAA;kBACf,IAAI,CAAC,KAAK,KAAK,qBAAqB,CAAC,IAAI,EAAE,aAAa,EAAE,oBAAoB,EAAE;gBAC5E,QAAQ,EAAE,KAAK;gBACf,KAAK,EAAE,KAAK;aACf,CAAC;aACP,CAAC;QACA,CAAC,CAAC,CAAC;IAEb,OAAO,IAAA,kBAAQ,EAAA;2BACQ,iCAAyB;cACtC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;;KAEzC,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CAAC,UAA2B,EAAE,eAAuB;IAC9E,IAAI,iBAAiB,GAAa,EAAE,CAAC;IACrC,MAAM,EAAE,oBAAoB,EAAE,GAAG,UAAU,CAAC;IAC5C,MAAM,aAAa,GAA+B,aAAa,CAAC;IAChE,IAAI,IAAA,8BAAsB,EAAC,oBAAoB,EAAE,eAAe,EAAE,aAAa,CAAC,EAAE;QAC9E,MAAM,4BAA4B,GAC9B,oBAAoB,CAAC,eAAe,CAAC,CAAC,aAAa,CAAE,CAAC,4BAA4B,CAAC;QACvF,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;KACjE;IACD,OAAO,iBAAiB,CAAC;AAC7B,CAAC;AAED,wEAAwE;AACxE,mGAAmG;AACnG,SAAS,wBAAwB,CAC7B,GAA6B,EAC7B,UAA2B,EAC3B,eAAuB;IAEvB,wDAAwD;IACxD,MAAM,MAAM,GAAG,IAAA,gBAAU,EAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEhE,wFAAwF;IACxF,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAE5E,sFAAsF;IACtF,IAAI,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC3D,kBAAkB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAEtD,OAAO,IAAA,kBAAQ,EAAA;2BACQ,oCAA4B;cACzC,kBAAkB;SACf,GAAG,CAAC,CAAC,iBAAiB,EAAE,EAAE;QACvB,OAAO,GAAG,iBAAiB,gBAAgB,iBAAiB,IAAI,CAAC;IACrE,CAAC,CAAC;SACD,IAAI,CAAC,KAAK,CAAC;;KAEvB,CAAC;AACN,CAAC;AAED,SAAS,wBAAwB,CAAC,sBAA8B;IAC5D,MAAM,mBAAmB,GACrB,sBAAsB,KAAK,EAAE;QACzB,CAAC,CAAC,qBAAqB;QACvB,CAAC,CAAC,yBAAyB,oCAA4B,EAAE,CAAC;IAClE,OAAO,IAAA,kBAAQ,EAAA;sBACG,oCAA4B,MAAM,mBAAmB;KACtE,CAAC;AACN,CAAC;AAED,SAAS,gCAAgC,CACrC,UAA2B,EAC3B,eAAuB,EACvB,GAA6B,EAC7B,aAA4B,EAC5B,oBAA4C;IAE5C,MAAM,eAAe,GAAG,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAC;IACpF,MAAM,sBAAsB,GAAG,wBAAwB,CAAC,GAAG,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IAC1F,MAAM,sBAAsB,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;IAEhF,OAAO,IAAA,kBAAQ,EAAA;UACT,eAAe;;UAEf,sBAAsB;;UAEtB,sBAAsB;KAC3B,CAAC;AACN,CAAC;AAED,SAAgB,kBAAkB,CAC9B,UAA2B,EAC3B,eAAuB,EACvB,GAA6B,EAC7B,aAA4B,EAC5B,QAAgC;IAEhC,OAAO,gCAAgC,CACnC,UAAU,EACV,eAAe,EACf,GAA+B,EAC/B,aAAa,EACb,QAAQ,CAAC,oBAAoB,CAChC,CAAC;AACN,CAAC;AAdD,gDAcC"}
@@ -0,0 +1,7 @@
1
+ import type { InterfaceTypeDefinitionNode, ObjectTypeDefinitionNode } from '@luvio/graphql-parser';
2
+ import type { ImportContext } from '../../../utils/imports';
3
+ import type { LuvioGraphQLDSL } from '../../../intermediate/graphql';
4
+ import type { GraphQLCodegenMetadata } from '../source-printer';
5
+ export declare function generateQueryTransformer(graphqlDsl: LuvioGraphQLDSL, def: ObjectTypeDefinitionNode | InterfaceTypeDefinitionNode, importContext: ImportContext): string;
6
+ export declare function generateGetMinimumFields(isQueryType: boolean, def: ObjectTypeDefinitionNode | InterfaceTypeDefinitionNode): string;
7
+ export declare function generate(graphqlDsl: LuvioGraphQLDSL, typeName: string, def: ObjectTypeDefinitionNode, importContext: ImportContext, _metadata: GraphQLCodegenMetadata): string;
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generate = exports.generateGetMinimumFields = exports.generateQueryTransformer = void 0;
7
+ const deindent_1 = __importDefault(require("../../../utils/deindent"));
8
+ const constants_1 = require("../../shared/constants");
9
+ const utils_1 = require("../utils");
10
+ const key_1 = require("./key");
11
+ const interface_1 = require("./interface");
12
+ const constants_2 = require("./constants");
13
+ function generateQueryTransformer(graphqlDsl, def, importContext) {
14
+ const { schema } = graphqlDsl;
15
+ const type = schema.getType(def.name.value);
16
+ const fieldMap = type.getFields();
17
+ const fieldList = Object.keys(fieldMap);
18
+ const queryTransformerStatements = fieldList
19
+ .map((fieldName) => {
20
+ var _a, _b, _c, _d, _e;
21
+ const field = fieldMap[fieldName];
22
+ if ((_a = field === null || field === void 0 ? void 0 : field.astNode) === null || _a === void 0 ? void 0 : _a.type.kind) {
23
+ switch ((_b = field.astNode) === null || _b === void 0 ? void 0 : _b.type.kind) {
24
+ case 'ListType':
25
+ case 'NonNullType':
26
+ case 'NamedType': {
27
+ const fieldTypeName = (0, utils_1.resolveTypeName)((_c = field.astNode) === null || _c === void 0 ? void 0 : _c.type);
28
+ const schemaType = schema.getType(fieldTypeName);
29
+ if ((schemaType === null || schemaType === void 0 ? void 0 : schemaType.astNode) !== undefined &&
30
+ (((_d = schemaType === null || schemaType === void 0 ? void 0 : schemaType.astNode) === null || _d === void 0 ? void 0 : _d.kind) === 'InterfaceTypeDefinition' ||
31
+ ((_e = schemaType === null || schemaType === void 0 ? void 0 : schemaType.astNode) === null || _e === void 0 ? void 0 : _e.kind) === 'ObjectTypeDefinition')) {
32
+ const getQueryTransformerImport = importContext.importGraphQLArtifact(fieldTypeName, constants_2.GET_QUERY_TRANSFORMER_IDENTIFIER);
33
+ const getMinimumFieldsImport = importContext.importGraphQLArtifact(fieldTypeName, constants_2.GET_MINIMUM_FIELDS_IDENTIFIER);
34
+ return (0, deindent_1.default) `
35
+ if (fieldName === '${fieldName}') {
36
+ return {
37
+ ${constants_2.GET_QUERY_TRANSFORMER_IDENTIFIER}: ${getQueryTransformerImport},
38
+ ${constants_2.GET_MINIMUM_FIELDS_IDENTIFIER}: ${getMinimumFieldsImport}
39
+ };
40
+ }
41
+ `;
42
+ }
43
+ }
44
+ }
45
+ }
46
+ return '';
47
+ })
48
+ .filter((statement) => statement !== '');
49
+ // default return when field does not have a schema defined type
50
+ queryTransformerStatements.push('return undefined;');
51
+ const eachFieldHandling = queryTransformerStatements.join('\n');
52
+ const queryTransformerFunctionsImport = importContext.importGraphQLArtifact(constants_2.TYPE_UTIL_IDENTIFIER, constants_2.QUERY_TRANSFORMER_IDENTIFIER);
53
+ return (0, deindent_1.default) `
54
+ export function ${constants_2.GET_QUERY_TRANSFORMER_IDENTIFIER}(fieldName: string): ${queryTransformerFunctionsImport} {
55
+ ${eachFieldHandling}
56
+ }
57
+ `;
58
+ }
59
+ exports.generateQueryTransformer = generateQueryTransformer;
60
+ function generateGetMinimumFields(isQueryType, def) {
61
+ const idNode = (0, key_1.findIdNode)(def);
62
+ const minFieldStatements = isQueryType
63
+ ? ''
64
+ : (0, interface_1.getMinimumFields)(idNode)
65
+ .map((field) => {
66
+ return (0, deindent_1.default) `
67
+ minimumFields.push({
68
+ kind: 'Field',
69
+ name: {
70
+ kind: 'Name',
71
+ value: '${field}',
72
+ }
73
+ });
74
+ `;
75
+ })
76
+ .join('\n');
77
+ return (0, deindent_1.default) `
78
+ export function ${constants_2.GET_MINIMUM_FIELDS_IDENTIFIER}(): ${constants_1.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}[] {
79
+ const minimumFields = [];
80
+ ${minFieldStatements}
81
+ return minimumFields;
82
+ }
83
+ `;
84
+ }
85
+ exports.generateGetMinimumFields = generateGetMinimumFields;
86
+ function generate(graphqlDsl, typeName, def, importContext, _metadata) {
87
+ var _a;
88
+ const { schema } = graphqlDsl;
89
+ const isQueryType = ((_a = schema.getQueryType()) === null || _a === void 0 ? void 0 : _a.name) === typeName;
90
+ const queryTransformer = generateQueryTransformer(graphqlDsl, def, importContext);
91
+ const minimumFields = generateGetMinimumFields(isQueryType, def);
92
+ return (0, deindent_1.default) `
93
+ ${queryTransformer}
94
+ ${minimumFields}
95
+ `;
96
+ }
97
+ exports.generate = generate;
98
+ //# sourceMappingURL=query-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-transformer.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/query-transformer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ObjectTypeDefinitionNode } from '@luvio/graphql-parser';
2
+ import type { ImportContext } from '../../../utils/imports';
3
+ import type { LuvioGraphQLDSL } from '../../../intermediate/graphql';
4
+ import type { GraphQLCodegenMetadata } from '../source-printer';
5
+ export declare function generateSelect(graphqlDsl: LuvioGraphQLDSL, typeName: string, def: ObjectTypeDefinitionNode, importContext: ImportContext, _metadata: GraphQLCodegenMetadata): string;