@luvio/compiler 0.121.0 → 0.121.1-242.2

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 (51) hide show
  1. package/dist/codegen/graphql/interface/index.d.ts +1 -1
  2. package/dist/codegen/graphql/interface/index.js +10 -8
  3. package/dist/codegen/graphql/interface/index.js.map +1 -1
  4. package/dist/codegen/graphql/type/constants.d.ts +7 -3
  5. package/dist/codegen/graphql/type/constants.js +9 -5
  6. package/dist/codegen/graphql/type/constants.js.map +1 -1
  7. package/dist/codegen/graphql/type/fragment-type.d.ts +4 -0
  8. package/dist/codegen/graphql/type/fragment-type.js +20 -0
  9. package/dist/codegen/graphql/type/fragment-type.js.map +1 -0
  10. package/dist/codegen/graphql/type/generateTypeUtil.js +142 -46
  11. package/dist/codegen/graphql/type/generateTypeUtil.js.map +1 -1
  12. package/dist/codegen/graphql/type/index.js +4 -2
  13. package/dist/codegen/graphql/type/index.js.map +1 -1
  14. package/dist/codegen/graphql/type/ingest-field-by-type.d.ts +2 -2
  15. package/dist/codegen/graphql/type/ingest-field-by-type.js +13 -8
  16. package/dist/codegen/graphql/type/ingest-field-by-type.js.map +1 -1
  17. package/dist/codegen/graphql/type/ingest.js +18 -3
  18. package/dist/codegen/graphql/type/ingest.js.map +1 -1
  19. package/dist/codegen/graphql/type/interface.d.ts +2 -2
  20. package/dist/codegen/graphql/type/interface.js +3 -8
  21. package/dist/codegen/graphql/type/interface.js.map +1 -1
  22. package/dist/codegen/graphql/type/key.d.ts +2 -2
  23. package/dist/codegen/graphql/type/key.js +1 -1
  24. package/dist/codegen/graphql/type/key.js.map +1 -1
  25. package/dist/codegen/graphql/type/minimumFields.d.ts +6 -0
  26. package/dist/codegen/graphql/type/minimumFields.js +68 -0
  27. package/dist/codegen/graphql/type/minimumFields.js.map +1 -0
  28. package/dist/codegen/graphql/type/select.js +10 -5
  29. package/dist/codegen/graphql/type/select.js.map +1 -1
  30. package/dist/codegen/graphql/type/type-from-field.d.ts +2 -2
  31. package/dist/codegen/graphql/type/type-from-field.js.map +1 -1
  32. package/dist/codegen/graphql/union/index.d.ts +1 -1
  33. package/dist/codegen/graphql/union/index.js +12 -6
  34. package/dist/codegen/graphql/union/index.js.map +1 -1
  35. package/dist/codegen/graphql/utils/types.d.ts +3 -3
  36. package/dist/codegen/graphql/utils/types.js +3 -0
  37. package/dist/codegen/graphql/utils/types.js.map +1 -1
  38. package/dist/codegen/shape/graphql/shape-cache-keys.js +2 -6
  39. package/dist/codegen/shape/graphql/shape-cache-keys.js.map +1 -1
  40. package/dist/codegen/shape/graphql/shape-ingest.js +2 -6
  41. package/dist/codegen/shape/graphql/shape-ingest.js.map +1 -1
  42. package/dist/codegen/shared/constants.d.ts +1 -0
  43. package/dist/codegen/shared/constants.js +2 -1
  44. package/dist/codegen/shared/constants.js.map +1 -1
  45. package/package.json +6 -5
  46. package/dist/codegen/graphql/interface/query-transformer.d.ts +0 -5
  47. package/dist/codegen/graphql/interface/query-transformer.js +0 -21
  48. package/dist/codegen/graphql/interface/query-transformer.js.map +0 -1
  49. package/dist/codegen/graphql/type/query-transformer.d.ts +0 -8
  50. package/dist/codegen/graphql/type/query-transformer.js +0 -193
  51. package/dist/codegen/graphql/type/query-transformer.js.map +0 -1
@@ -3,4 +3,4 @@ import type { InterfaceTypeDefinitionNode } from '@luvio/graphql-parser';
3
3
  import type { LuvioGraphQLDSL } from '../../../intermediate/graphql';
4
4
  import type { GraphQLCodegenMetadata } from '../source-printer';
5
5
  import type { ModelInfo } from '../../../main';
6
- export declare function generateInterfaceType(graphqlDsl: LuvioGraphQLDSL, typeName: string, def: InterfaceTypeDefinitionNode, importContext: ImportContext, metadata: GraphQLCodegenMetadata, modelInfo: ModelInfo): string;
6
+ export declare function generateInterfaceType(graphqlDsl: LuvioGraphQLDSL, graphqlTypeName: string, def: InterfaceTypeDefinitionNode, importContext: ImportContext, metadata: GraphQLCodegenMetadata, modelInfo: ModelInfo): string;
@@ -9,20 +9,22 @@ const interface_1 = require("./interface");
9
9
  const ingest_1 = require("./ingest");
10
10
  const imports_1 = require("../../../utils/imports");
11
11
  const select_1 = require("./select");
12
- const query_transformer_1 = require("./query-transformer");
13
12
  const type_cache_keys_1 = require("./type-cache-keys");
14
13
  const type_from_field_1 = require("../type/type-from-field");
15
14
  const version_1 = require("./version");
16
- function generateInterfaceType(graphqlDsl, typeName, def, importContext, metadata, modelInfo) {
15
+ const fragment_type_1 = require("../type/fragment-type");
16
+ const minimumFields_1 = require("../type/minimumFields");
17
+ function generateInterfaceType(graphqlDsl, graphqlTypeName, def, importContext, metadata, modelInfo) {
17
18
  return (0, imports_1.resolveImports)((0, deindent_1.default) `
18
- export const name = '${typeName}';
19
- ${(0, interface_1.generateInterface)(typeName, def, importContext, metadata)}
19
+ export const name = '${graphqlTypeName}';
20
+ ${(0, interface_1.generateInterface)(graphqlTypeName, def, importContext, metadata)}
20
21
  ${(0, version_1.generateVersion)()}
21
- ${(0, ingest_1.generateIngest)(graphqlDsl, typeName, def, importContext, metadata)}
22
- ${(0, select_1.generateSelect)(graphqlDsl, typeName, def, importContext, metadata, modelInfo)}
23
- ${(0, query_transformer_1.generate)(graphqlDsl, typeName, def, importContext, metadata)}
24
- ${(0, type_cache_keys_1.generateGetTypeCacheKeys)(graphqlDsl, typeName, def, importContext, metadata)}
22
+ ${(0, ingest_1.generateIngest)(graphqlDsl, graphqlTypeName, def, importContext, metadata)}
23
+ ${(0, select_1.generateSelect)(graphqlDsl, graphqlTypeName, def, importContext, metadata, modelInfo)}
24
+ ${(0, minimumFields_1.generateGetMinimumSelections)(graphqlDsl, graphqlTypeName, def, importContext, metadata)}
25
+ ${(0, type_cache_keys_1.generateGetTypeCacheKeys)(graphqlDsl, graphqlTypeName, def, importContext, metadata)}
25
26
  ${(0, type_from_field_1.generateGetFieldType)(graphqlDsl, def)}
27
+ ${(0, fragment_type_1.generateGetFragmentType)(graphqlDsl, def, importContext)}
26
28
  `);
27
29
  }
28
30
  exports.generateInterfaceType = generateInterfaceType;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/interface/index.ts"],"names":[],"mappings":";;;;;;AAAA,uEAA+C;AAC/C,2CAAgD;AAChD,qCAA0C;AAC1C,oDAAwD;AAKxD,qCAA0C;AAC1C,2DAA2E;AAC3E,uDAA6D;AAC7D,6DAA+D;AAC/D,uCAA4C;AAG5C,SAAgB,qBAAqB,CACjC,UAA2B,EAC3B,QAAgB,EAChB,GAAgC,EAChC,aAA4B,EAC5B,QAAgC,EAChC,SAAoB;IAEpB,OAAO,IAAA,wBAAc,EAAC,IAAA,kBAAQ,EAAA;+BACH,QAAQ;UAC7B,IAAA,6BAAiB,EAAC,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UACzD,IAAA,yBAAe,GAAE;UACjB,IAAA,uBAAc,EAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UAClE,IAAA,uBAAc,EAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC;UAC7E,IAAA,4BAAwB,EAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UAC5E,IAAA,0CAAwB,EAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UAC5E,IAAA,sCAAoB,EAAC,UAAU,EAAE,GAAG,CAAC;KAC1C,CAAC,CAAC;AACP,CAAC;AAlBD,sDAkBC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/interface/index.ts"],"names":[],"mappings":";;;;;;AAAA,uEAA+C;AAC/C,2CAAgD;AAChD,qCAA0C;AAC1C,oDAAwD;AAKxD,qCAA0C;AAC1C,uDAA6D;AAC7D,6DAA+D;AAC/D,uCAA4C;AAE5C,yDAAgE;AAChE,yDAAqE;AAErE,SAAgB,qBAAqB,CACjC,UAA2B,EAC3B,eAAuB,EACvB,GAAgC,EAChC,aAA4B,EAC5B,QAAgC,EAChC,SAAoB;IAEpB,OAAO,IAAA,wBAAc,EAAC,IAAA,kBAAQ,EAAA;+BACH,eAAe;UACpC,IAAA,6BAAiB,EAAC,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UAChE,IAAA,yBAAe,GAAE;UACjB,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,EAAE,SAAS,CAAC;UACpF,IAAA,4CAA4B,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UACvF,IAAA,0CAAwB,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UACnF,IAAA,sCAAoB,EAAC,UAAU,EAAE,GAAG,CAAC;UACrC,IAAA,uCAAuB,EAAC,UAAU,EAAE,GAAG,EAAE,aAAa,CAAC;KAC5D,CAAC,CAAC;AACP,CAAC;AAnBD,sDAmBC"}
@@ -22,8 +22,6 @@ export declare const REQUESTED_FIELD_IDENTIFIER = "requestedField";
22
22
  export declare const REQUESTED_FIELD_NAME_IDENTIFIER = "requestedFieldName";
23
23
  export declare const SINK_IDENTIFIER = "sink";
24
24
  export declare const APPLY_MINIMUM_FIELDS_TO_QUERY_IDENTIFIER = "applyMinimumFieldsToQuery";
25
- export declare const GET_QUERY_TRANSFORM_HELPER_FOR_FIELD_IDENTIFIER = "getQueryTransformHelperForField";
26
- export declare const GET_QUERY_TRANSFORM_HELPER_FOR_TYPE_IDENTIFIER = "getQueryTransformHelperForType";
27
25
  export declare const GET_MINIMUM_SELECTIONS_IDENTIFIER = "getMinimumSelections";
28
26
  export declare const QUERY_TRANSFORM_HELPER_IDENTIFIER = "QueryTransformHelper";
29
27
  export declare const GET_FIELD_TYPE_IDENTIFIER = "getFieldType";
@@ -51,4 +49,10 @@ export declare const GRAPHQL_LUVIO_STATE_INTERFACE_IDENTIFIER = "GraphQLLuvioSta
51
49
  export declare const MAPPED_TYPE_CACHE_KEYS_IDENTIFIER = "getMappedTypeCacheKeys";
52
50
  export declare const LINK_IDENTIFIER = "__link";
53
51
  export declare const LINKED_DATA_IDENTIFIER = "__linkedData";
54
- export declare const FILTER_MINIMUM_SELECTIONS_IDENTIFIER = "filterMinimumSelections";
52
+ export declare const MERGE_SELECTIONS_IDENTIFIER = "mergeSelections";
53
+ export declare const CREATE_FRAGMENT_MAP_IDENTIFIER = "createFragmentMap";
54
+ export declare const GET_IN_CONTEXT_FRAGMENT_TYPE_IDENTIFIER = "getInContextFragmentType";
55
+ export declare const SHARED_GET_IN_CONTEXT_FRAGMENT_TYPE_IDENTIFIER = "sharedGetFragmentType";
56
+ export declare const GET_CURSOR_CONNECTION_MINIMUM_SELECTIONS_IDENTIFIER = "getCursorConnectionMinimumSelections";
57
+ export declare const SHARED_EVALUATE_ARGUMENT_VALUE = "evaluateArgumentValue";
58
+ export declare const GET_ARRAY_OFFSET_FOR_PAGE = "getArrayOffsetForPage";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GRAPHQL_LUVIO_STATE_INTERFACE_IDENTIFIER = exports.ATTACH_MAPPED_DATA_IDENTIFIER = exports.SELECT_TYPE_IDENTIFIER = exports.NORMALIZED_GRAPHQL_TYPE = exports.INGEST_MAPPED_DATA = exports.GET_FIELD_DATA_IDENTIFIER = exports.AFTER_IDENTIFIER = exports.FIRST_IDENTIFIER = exports.REQUESTED_FIELDS_IDENTIFIER = exports.IS_FRAGMENT_APPLICABLE_IDENTIFIER = exports.TYPE_NAME_IDENTIFIER = exports.START_CURSOR_IDENTIFIER = exports.END_CURSOR_IDENTIFIER = exports.HAS_PREVIOUS_PAGE_IDENTIFIER = exports.HAS_NEXT_PAGE_IDENTIFIER = exports.CURSOR_IDENTIFIER = exports.NODE_IDENTIFIER = exports.EDGES_IDENTIFIER = exports.PAGE_INFO_IDENTIFIER = exports.IS_MAPPED_FIELD_IDENTIFIER = exports.INGEST_FIELD_BY_TYPE_IDENTIFIER = exports.GET_FIELD_TYPE_IDENTIFIER = exports.QUERY_TRANSFORM_HELPER_IDENTIFIER = exports.GET_MINIMUM_SELECTIONS_IDENTIFIER = exports.GET_QUERY_TRANSFORM_HELPER_FOR_TYPE_IDENTIFIER = exports.GET_QUERY_TRANSFORM_HELPER_FOR_FIELD_IDENTIFIER = exports.APPLY_MINIMUM_FIELDS_TO_QUERY_IDENTIFIER = exports.SINK_IDENTIFIER = exports.REQUESTED_FIELD_NAME_IDENTIFIER = exports.REQUESTED_FIELD_IDENTIFIER = exports.FIELD_TYPE_IDENTIFIER = exports.FIELD_DATA_KEY_IDENTIFIER = exports.FIELD_DATA_IDENTIFIER = exports.FIELD_KEY_IDENTIFIER = exports.GET_SERIALIZED_KEY_FOR_FIELD_IDENTIFIER = exports.GET_REQUESTED_FIELDS_FOR_TYPE_IDENTIFIER = exports.GET_REQUESTED_FIELD_IDENTIFIER = exports.SERIALIZE_FIELD_ARGUMENTS_IDENTIFIER = exports.KEY_BUILDER_IDENTIFIER = exports.TYPE_CACHE_KEYS_IDENTIFIER = exports.TYPE_CONVERT_IDENTIFIER = exports.TYPE_INGEST_IDENTIFIER = exports.TYPE_UTIL_IDENTIFIER = exports.CREATE_LINK_IDENTIFIER = exports.TIMESTAMP_IDENTIFIER = exports.GRAPHQL_TYPE_DETAILS_INTERFACE_IDENTIFIER = exports.GRAPHQL_STATE_INTERFACE_IDENTIFIER = exports.GRAPHQL_INGEST_STATE_INTERFACE_IDENTIFIER = exports.GRAPHQL_FRAGMENT_MAP_IDENTIFIER = exports.GRAPHQL_VARIABLES_IDENTIFIER = void 0;
4
- exports.FILTER_MINIMUM_SELECTIONS_IDENTIFIER = exports.LINKED_DATA_IDENTIFIER = exports.LINK_IDENTIFIER = exports.MAPPED_TYPE_CACHE_KEYS_IDENTIFIER = void 0;
3
+ exports.LINK_IDENTIFIER = exports.MAPPED_TYPE_CACHE_KEYS_IDENTIFIER = exports.GRAPHQL_LUVIO_STATE_INTERFACE_IDENTIFIER = exports.ATTACH_MAPPED_DATA_IDENTIFIER = exports.SELECT_TYPE_IDENTIFIER = exports.NORMALIZED_GRAPHQL_TYPE = exports.INGEST_MAPPED_DATA = exports.GET_FIELD_DATA_IDENTIFIER = exports.AFTER_IDENTIFIER = exports.FIRST_IDENTIFIER = exports.REQUESTED_FIELDS_IDENTIFIER = exports.IS_FRAGMENT_APPLICABLE_IDENTIFIER = exports.TYPE_NAME_IDENTIFIER = exports.START_CURSOR_IDENTIFIER = exports.END_CURSOR_IDENTIFIER = exports.HAS_PREVIOUS_PAGE_IDENTIFIER = exports.HAS_NEXT_PAGE_IDENTIFIER = exports.CURSOR_IDENTIFIER = exports.NODE_IDENTIFIER = exports.EDGES_IDENTIFIER = exports.PAGE_INFO_IDENTIFIER = exports.IS_MAPPED_FIELD_IDENTIFIER = exports.INGEST_FIELD_BY_TYPE_IDENTIFIER = exports.GET_FIELD_TYPE_IDENTIFIER = exports.QUERY_TRANSFORM_HELPER_IDENTIFIER = exports.GET_MINIMUM_SELECTIONS_IDENTIFIER = exports.APPLY_MINIMUM_FIELDS_TO_QUERY_IDENTIFIER = exports.SINK_IDENTIFIER = exports.REQUESTED_FIELD_NAME_IDENTIFIER = exports.REQUESTED_FIELD_IDENTIFIER = exports.FIELD_TYPE_IDENTIFIER = exports.FIELD_DATA_KEY_IDENTIFIER = exports.FIELD_DATA_IDENTIFIER = exports.FIELD_KEY_IDENTIFIER = exports.GET_SERIALIZED_KEY_FOR_FIELD_IDENTIFIER = exports.GET_REQUESTED_FIELDS_FOR_TYPE_IDENTIFIER = exports.GET_REQUESTED_FIELD_IDENTIFIER = exports.SERIALIZE_FIELD_ARGUMENTS_IDENTIFIER = exports.KEY_BUILDER_IDENTIFIER = exports.TYPE_CACHE_KEYS_IDENTIFIER = exports.TYPE_CONVERT_IDENTIFIER = exports.TYPE_INGEST_IDENTIFIER = exports.TYPE_UTIL_IDENTIFIER = exports.CREATE_LINK_IDENTIFIER = exports.TIMESTAMP_IDENTIFIER = exports.GRAPHQL_TYPE_DETAILS_INTERFACE_IDENTIFIER = exports.GRAPHQL_STATE_INTERFACE_IDENTIFIER = exports.GRAPHQL_INGEST_STATE_INTERFACE_IDENTIFIER = exports.GRAPHQL_FRAGMENT_MAP_IDENTIFIER = exports.GRAPHQL_VARIABLES_IDENTIFIER = void 0;
4
+ exports.GET_ARRAY_OFFSET_FOR_PAGE = exports.SHARED_EVALUATE_ARGUMENT_VALUE = exports.GET_CURSOR_CONNECTION_MINIMUM_SELECTIONS_IDENTIFIER = exports.SHARED_GET_IN_CONTEXT_FRAGMENT_TYPE_IDENTIFIER = exports.GET_IN_CONTEXT_FRAGMENT_TYPE_IDENTIFIER = exports.CREATE_FRAGMENT_MAP_IDENTIFIER = exports.MERGE_SELECTIONS_IDENTIFIER = exports.LINKED_DATA_IDENTIFIER = void 0;
5
5
  exports.GRAPHQL_VARIABLES_IDENTIFIER = 'GraphQLVariables';
6
6
  exports.GRAPHQL_FRAGMENT_MAP_IDENTIFIER = 'GraphQLFragmentMap';
7
7
  exports.GRAPHQL_INGEST_STATE_INTERFACE_IDENTIFIER = 'GraphQLIngestState';
@@ -26,8 +26,6 @@ exports.REQUESTED_FIELD_IDENTIFIER = 'requestedField';
26
26
  exports.REQUESTED_FIELD_NAME_IDENTIFIER = 'requestedFieldName';
27
27
  exports.SINK_IDENTIFIER = 'sink';
28
28
  exports.APPLY_MINIMUM_FIELDS_TO_QUERY_IDENTIFIER = 'applyMinimumFieldsToQuery';
29
- exports.GET_QUERY_TRANSFORM_HELPER_FOR_FIELD_IDENTIFIER = 'getQueryTransformHelperForField';
30
- exports.GET_QUERY_TRANSFORM_HELPER_FOR_TYPE_IDENTIFIER = 'getQueryTransformHelperForType';
31
29
  exports.GET_MINIMUM_SELECTIONS_IDENTIFIER = 'getMinimumSelections';
32
30
  exports.QUERY_TRANSFORM_HELPER_IDENTIFIER = 'QueryTransformHelper';
33
31
  exports.GET_FIELD_TYPE_IDENTIFIER = 'getFieldType';
@@ -55,5 +53,11 @@ exports.GRAPHQL_LUVIO_STATE_INTERFACE_IDENTIFIER = 'GraphQLLuvioState';
55
53
  exports.MAPPED_TYPE_CACHE_KEYS_IDENTIFIER = 'getMappedTypeCacheKeys';
56
54
  exports.LINK_IDENTIFIER = '__link';
57
55
  exports.LINKED_DATA_IDENTIFIER = '__linkedData';
58
- exports.FILTER_MINIMUM_SELECTIONS_IDENTIFIER = 'filterMinimumSelections';
56
+ exports.MERGE_SELECTIONS_IDENTIFIER = 'mergeSelections';
57
+ exports.CREATE_FRAGMENT_MAP_IDENTIFIER = 'createFragmentMap';
58
+ exports.GET_IN_CONTEXT_FRAGMENT_TYPE_IDENTIFIER = 'getInContextFragmentType';
59
+ exports.SHARED_GET_IN_CONTEXT_FRAGMENT_TYPE_IDENTIFIER = 'sharedGetFragmentType';
60
+ exports.GET_CURSOR_CONNECTION_MINIMUM_SELECTIONS_IDENTIFIER = 'getCursorConnectionMinimumSelections';
61
+ exports.SHARED_EVALUATE_ARGUMENT_VALUE = 'evaluateArgumentValue';
62
+ exports.GET_ARRAY_OFFSET_FOR_PAGE = 'getArrayOffsetForPage';
59
63
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/constants.ts"],"names":[],"mappings":";;;;AAAa,QAAA,4BAA4B,GAAG,kBAAkB,CAAC;AAClD,QAAA,+BAA+B,GAAG,oBAAoB,CAAC;AACvD,QAAA,yCAAyC,GAAG,oBAAoB,CAAC;AACjE,QAAA,kCAAkC,GAAG,cAAc,CAAC;AACpD,QAAA,yCAAyC,GAAG,oBAAoB,CAAC;AACjE,QAAA,oBAAoB,GAAG,WAAW,CAAC;AACnC,QAAA,sBAAsB,GAAG,YAAY,CAAC;AACtC,QAAA,oBAAoB,GAAG,WAAW,CAAC;AACnC,QAAA,sBAAsB,GAAG,QAAQ,CAAC;AAClC,QAAA,uBAAuB,GAAG,sBAAsB,CAAC;AACjD,QAAA,0BAA0B,GAAG,kBAAkB,CAAC;AAChD,QAAA,sBAAsB,GAAG,YAAY,CAAC;AACtC,QAAA,oCAAoC,GAAG,yBAAyB,CAAC;AACjE,QAAA,8BAA8B,GAAG,mBAAmB,CAAC;AACrD,QAAA,wCAAwC,GAAG,2BAA2B,CAAC;AACvE,QAAA,uCAAuC,GAAG,0BAA0B,CAAC;AACrE,QAAA,oBAAoB,GAAG,UAAU,CAAC;AAClC,QAAA,qBAAqB,GAAG,WAAW,CAAC;AACpC,QAAA,yBAAyB,GAAG,cAAc,CAAC;AAC3C,QAAA,qBAAqB,GAAG,WAAW,CAAC;AACpC,QAAA,0BAA0B,GAAG,gBAAgB,CAAC;AAC9C,QAAA,+BAA+B,GAAG,oBAAoB,CAAC;AACvD,QAAA,eAAe,GAAG,MAAM,CAAC;AACzB,QAAA,wCAAwC,GAAG,2BAA2B,CAAC;AACvE,QAAA,+CAA+C,GAAG,iCAAiC,CAAC;AACpF,QAAA,8CAA8C,GAAG,gCAAgC,CAAC;AAClF,QAAA,iCAAiC,GAAG,sBAAsB,CAAC;AAC3D,QAAA,iCAAiC,GAAG,sBAAsB,CAAC;AAC3D,QAAA,yBAAyB,GAAG,cAAc,CAAC;AAC3C,QAAA,+BAA+B,GAAG,mBAAmB,CAAC;AACtD,QAAA,0BAA0B,GAAG,eAAe,CAAC;AAC7C,QAAA,oBAAoB,GAAG,UAAU,CAAC;AAClC,QAAA,gBAAgB,GAAG,OAAO,CAAC;AAC3B,QAAA,eAAe,GAAG,MAAM,CAAC;AACzB,QAAA,iBAAiB,GAAG,QAAQ,CAAC;AAC7B,QAAA,wBAAwB,GAAG,aAAa,CAAC;AACzC,QAAA,4BAA4B,GAAG,iBAAiB,CAAC;AACjD,QAAA,qBAAqB,GAAG,WAAW,CAAC;AACpC,QAAA,uBAAuB,GAAG,aAAa,CAAC;AACxC,QAAA,oBAAoB,GAAG,YAAY,CAAC;AACpC,QAAA,iCAAiC,GAAG,sBAAsB,CAAC;AAC3D,QAAA,2BAA2B,GAAG,iBAAiB,CAAC;AAChD,QAAA,gBAAgB,GAAG,OAAO,CAAC;AAC3B,QAAA,gBAAgB,GAAG,OAAO,CAAC;AAC3B,QAAA,yBAAyB,GAAG,cAAc,CAAC;AAC3C,QAAA,kBAAkB,GAAG,kBAAkB,CAAC;AACxC,QAAA,uBAAuB,GAAG,mBAAmB,CAAC;AAC9C,QAAA,sBAAsB,GAAG,YAAY,CAAC;AACtC,QAAA,6BAA6B,GAAG,kBAAkB,CAAC;AACnD,QAAA,wCAAwC,GAAG,mBAAmB,CAAC;AAC/D,QAAA,iCAAiC,GAAG,wBAAwB,CAAC;AAC7D,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,sBAAsB,GAAG,cAAc,CAAC;AACxC,QAAA,oCAAoC,GAAG,yBAAyB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/constants.ts"],"names":[],"mappings":";;;;AAAa,QAAA,4BAA4B,GAAG,kBAAkB,CAAC;AAClD,QAAA,+BAA+B,GAAG,oBAAoB,CAAC;AACvD,QAAA,yCAAyC,GAAG,oBAAoB,CAAC;AACjE,QAAA,kCAAkC,GAAG,cAAc,CAAC;AACpD,QAAA,yCAAyC,GAAG,oBAAoB,CAAC;AACjE,QAAA,oBAAoB,GAAG,WAAW,CAAC;AACnC,QAAA,sBAAsB,GAAG,YAAY,CAAC;AACtC,QAAA,oBAAoB,GAAG,WAAW,CAAC;AACnC,QAAA,sBAAsB,GAAG,QAAQ,CAAC;AAClC,QAAA,uBAAuB,GAAG,sBAAsB,CAAC;AACjD,QAAA,0BAA0B,GAAG,kBAAkB,CAAC;AAChD,QAAA,sBAAsB,GAAG,YAAY,CAAC;AACtC,QAAA,oCAAoC,GAAG,yBAAyB,CAAC;AACjE,QAAA,8BAA8B,GAAG,mBAAmB,CAAC;AACrD,QAAA,wCAAwC,GAAG,2BAA2B,CAAC;AACvE,QAAA,uCAAuC,GAAG,0BAA0B,CAAC;AACrE,QAAA,oBAAoB,GAAG,UAAU,CAAC;AAClC,QAAA,qBAAqB,GAAG,WAAW,CAAC;AACpC,QAAA,yBAAyB,GAAG,cAAc,CAAC;AAC3C,QAAA,qBAAqB,GAAG,WAAW,CAAC;AACpC,QAAA,0BAA0B,GAAG,gBAAgB,CAAC;AAC9C,QAAA,+BAA+B,GAAG,oBAAoB,CAAC;AACvD,QAAA,eAAe,GAAG,MAAM,CAAC;AACzB,QAAA,wCAAwC,GAAG,2BAA2B,CAAC;AACvE,QAAA,iCAAiC,GAAG,sBAAsB,CAAC;AAC3D,QAAA,iCAAiC,GAAG,sBAAsB,CAAC;AAC3D,QAAA,yBAAyB,GAAG,cAAc,CAAC;AAC3C,QAAA,+BAA+B,GAAG,mBAAmB,CAAC;AACtD,QAAA,0BAA0B,GAAG,eAAe,CAAC;AAC7C,QAAA,oBAAoB,GAAG,UAAU,CAAC;AAClC,QAAA,gBAAgB,GAAG,OAAO,CAAC;AAC3B,QAAA,eAAe,GAAG,MAAM,CAAC;AACzB,QAAA,iBAAiB,GAAG,QAAQ,CAAC;AAC7B,QAAA,wBAAwB,GAAG,aAAa,CAAC;AACzC,QAAA,4BAA4B,GAAG,iBAAiB,CAAC;AACjD,QAAA,qBAAqB,GAAG,WAAW,CAAC;AACpC,QAAA,uBAAuB,GAAG,aAAa,CAAC;AACxC,QAAA,oBAAoB,GAAG,YAAY,CAAC;AACpC,QAAA,iCAAiC,GAAG,sBAAsB,CAAC;AAC3D,QAAA,2BAA2B,GAAG,iBAAiB,CAAC;AAChD,QAAA,gBAAgB,GAAG,OAAO,CAAC;AAC3B,QAAA,gBAAgB,GAAG,OAAO,CAAC;AAC3B,QAAA,yBAAyB,GAAG,cAAc,CAAC;AAC3C,QAAA,kBAAkB,GAAG,kBAAkB,CAAC;AACxC,QAAA,uBAAuB,GAAG,mBAAmB,CAAC;AAC9C,QAAA,sBAAsB,GAAG,YAAY,CAAC;AACtC,QAAA,6BAA6B,GAAG,kBAAkB,CAAC;AACnD,QAAA,wCAAwC,GAAG,mBAAmB,CAAC;AAC/D,QAAA,iCAAiC,GAAG,wBAAwB,CAAC;AAC7D,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,sBAAsB,GAAG,cAAc,CAAC;AACxC,QAAA,2BAA2B,GAAG,iBAAiB,CAAC;AAChD,QAAA,8BAA8B,GAAG,mBAAmB,CAAC;AACrD,QAAA,uCAAuC,GAAG,0BAA0B,CAAC;AACrE,QAAA,8CAA8C,GAAG,uBAAuB,CAAC;AACzE,QAAA,mDAAmD,GAC5D,sCAAsC,CAAC;AAC9B,QAAA,8BAA8B,GAAG,uBAAuB,CAAC;AACzD,QAAA,yBAAyB,GAAG,uBAAuB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { InterfaceTypeDefinitionNode, ObjectTypeDefinitionNode, UnionTypeDefinitionNode } from '@luvio/graphql-parser';
2
+ import type { LuvioGraphQLDSL } from '../../../intermediate/graphql';
3
+ import type { ImportContext } from '../../../utils/imports';
4
+ export declare function generateGetFragmentType(graphqlDsl: LuvioGraphQLDSL, def: ObjectTypeDefinitionNode | InterfaceTypeDefinitionNode | UnionTypeDefinitionNode, importContext: ImportContext): string;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateGetFragmentType = void 0;
4
+ const constants_1 = require("../../shared/constants");
5
+ const constants_2 = require("./constants");
6
+ function generateGetFragmentType(graphqlDsl, def, importContext) {
7
+ const { schema } = graphqlDsl;
8
+ const type = schema.getType(def.name.value);
9
+ if (!type) {
10
+ return '';
11
+ }
12
+ const sharedGetFragmentTypeImport = importContext.importGraphQLArtifact('types', constants_2.TYPE_UTIL_IDENTIFIER, constants_2.SHARED_GET_IN_CONTEXT_FRAGMENT_TYPE_IDENTIFIER);
13
+ const fragmentMapTypeImport = importContext.importGraphQLArtifact('types', constants_2.TYPE_UTIL_IDENTIFIER, constants_2.GRAPHQL_FRAGMENT_MAP_IDENTIFIER);
14
+ // This function gives us an override hook to support metaschema, otherwise could be just the shared util.
15
+ return `export function ${constants_2.GET_IN_CONTEXT_FRAGMENT_TYPE_IDENTIFIER}(fragment: ${constants_1.LUVIO_GRAPHQL_FRAGMENT_SPREAD_NODE_IMPORT} | ${constants_1.LUVIO_GRAPHQL_INLINE_FRAGMENT_NODE_IMPORT}, fragmentMap: ${fragmentMapTypeImport}): string | undefined {
16
+ return ${sharedGetFragmentTypeImport}(fragment, fragmentMap)
17
+ }`;
18
+ }
19
+ exports.generateGetFragmentType = generateGetFragmentType;
20
+ //# sourceMappingURL=fragment-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fragment-type.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/fragment-type.ts"],"names":[],"mappings":";;;AAOA,sDAGgC;AAChC,2CAKqB;AAErB,SAAgB,uBAAuB,CACnC,UAA2B,EAC3B,GAAqF,EACrF,aAA4B;IAE5B,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAI,EAAE;QACP,OAAO,EAAE,CAAC;KACb;IACD,MAAM,2BAA2B,GAAG,aAAa,CAAC,qBAAqB,CACnE,OAAO,EACP,gCAAoB,EACpB,0DAA8C,CACjD,CAAC;IACF,MAAM,qBAAqB,GAAG,aAAa,CAAC,qBAAqB,CAC7D,OAAO,EACP,gCAAoB,EACpB,2CAA+B,CAClC,CAAC;IACF,0GAA0G;IAC1G,OAAO,mBAAmB,mDAAuC,cAAc,qDAAyC,MAAM,qDAAyC,kBAAkB,qBAAqB;qBAC7L,2BAA2B;UACtC,CAAC;AACX,CAAC;AAxBD,0DAwBC"}
@@ -12,6 +12,9 @@ const constants_2 = require("../../shared/constants");
12
12
  const constants_3 = require("./constants");
13
13
  const shape_select_paginated_1 = require("../../shape/shape-select-paginated");
14
14
  const pagination_1 = require("../../../intermediate/pagination");
15
+ const minimumFields_1 = require("./minimumFields");
16
+ const shape_ingest_paginated_1 = require("../../shape/shape-ingest-paginated");
17
+ const constants_4 = require("../../shape/constants");
15
18
  function generateTypeUtil(graphqlResource, metadata, importContext) {
16
19
  var _a;
17
20
  // We shouldn't be able to get here without a queryType. graphqldsl should ensure this when constructed/validated.
@@ -20,9 +23,9 @@ function generateTypeUtil(graphqlResource, metadata, importContext) {
20
23
  throw new Error('Invalid GraphQL Schema. You must include a Query Type.');
21
24
  }
22
25
  const queryTypeName = queryType.name;
23
- const getQueryTransformHelperForFieldImport = importContext.importGraphQLArtifact('types', queryTypeName, 'getQueryTransformHelperForField');
24
- const getQueryTransformHelperForTypeImport = importContext.importGraphQLArtifact('types', queryTypeName, 'getQueryTransformHelperForType');
25
26
  const cursorConnectionTypes = graphqlResource.graphqlDSL.cursorConnectionTypes;
27
+ const createFragmentMapImport = importContext.importGraphQLArtifact('types', constants_3.TYPE_UTIL_IDENTIFIER, constants_3.CREATE_FRAGMENT_MAP_IDENTIFIER);
28
+ const normalizableTypes = (0, utils_1.getNormalizableTypeMap)(graphqlResource.graphqlDSL.schema);
26
29
  return (0, imports_1.resolveImports)((0, deindent_1.default) `
27
30
  export type ${constants_3.GRAPHQL_VARIABLES_IDENTIFIER} = Record<string, any>;
28
31
  export type ${constants_3.NORMALIZED_GRAPHQL_TYPE}<D = undefined> = { data: Record<string, any>, ${constants_3.LINK_IDENTIFIER}?: ${constants_2.LUVIO_STORE_LINK_IMPORT}, ${constants_3.LINKED_DATA_IDENTIFIER}?: D};
@@ -45,8 +48,12 @@ function generateTypeUtil(graphqlResource, metadata, importContext) {
45
48
  ${constants_3.TIMESTAMP_IDENTIFIER}: number
46
49
  };
47
50
 
48
- export interface GetQueryTransformHelperFunction {
49
- (field: ${constants_2.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}): ${constants_3.QUERY_TRANSFORM_HELPER_IDENTIFIER} | undefined;
51
+ export interface GetFieldTypeFunction {
52
+ (field: ${constants_2.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}): ${constants_3.GRAPHQL_TYPE_DETAILS_INTERFACE_IDENTIFIER} | undefined;
53
+ }
54
+
55
+ export interface GetInContextFragmentTypeFunction {
56
+ (fragment: ${constants_2.LUVIO_GRAPHQL_FRAGMENT_SPREAD_NODE_IMPORT} | ${constants_2.LUVIO_GRAPHQL_INLINE_FRAGMENT_NODE_IMPORT}, fragmentMap: ${constants_3.GRAPHQL_FRAGMENT_MAP_IDENTIFIER}): string | undefined;
50
57
  }
51
58
 
52
59
  export interface GetMinimumSelectionsFunction {
@@ -54,7 +61,8 @@ function generateTypeUtil(graphqlResource, metadata, importContext) {
54
61
  }
55
62
 
56
63
  export interface ${constants_3.QUERY_TRANSFORM_HELPER_IDENTIFIER} {
57
- ${constants_3.GET_QUERY_TRANSFORM_HELPER_FOR_FIELD_IDENTIFIER}: GetQueryTransformHelperFunction,
64
+ ${constants_3.GET_IN_CONTEXT_FRAGMENT_TYPE_IDENTIFIER}: GetInContextFragmentTypeFunction,
65
+ ${constants_3.GET_FIELD_TYPE_IDENTIFIER}: GetFieldTypeFunction,
58
66
  ${constants_3.GET_MINIMUM_SELECTIONS_IDENTIFIER}: GetMinimumSelectionsFunction
59
67
  }
60
68
 
@@ -114,18 +122,16 @@ function generateTypeUtil(graphqlResource, metadata, importContext) {
114
122
  export const TTL = ${(0, utils_1.getShapeTtl)(metadata.rootTtl, (_a = graphqlResource.returnShape) === null || _a === void 0 ? void 0 : _a.id, metadata.shapeTtls)};
115
123
 
116
124
  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} {
125
+ const fragmentMap = ${createFragmentMapImport}(query);
117
126
  query.definitions.forEach(queryDefinitionNode => {
118
127
  if (queryDefinitionNode.kind === 'OperationDefinition' && queryDefinitionNode.operation === 'query') {
119
- injectSelectionSet(queryDefinitionNode.selectionSet, {
120
- ${constants_3.GET_QUERY_TRANSFORM_HELPER_FOR_FIELD_IDENTIFIER}: ${getQueryTransformHelperForFieldImport},
121
- ${constants_3.GET_MINIMUM_SELECTIONS_IDENTIFIER}: () => { return [] }
122
- });
128
+ injectSelectionSet(queryDefinitionNode.selectionSet, getQueryTransformerForType("${queryTypeName}", fragmentMap), fragmentMap);
123
129
  }
124
130
  });
125
131
  return query;
126
132
  }
127
133
 
128
- export function injectSelectionSet (selectionSetNode: ${constants_2.LUVIO_GRAPHQL_SELECTION_SET_NODE_IMPORT}|undefined, queryTransformHelper: ${constants_3.QUERY_TRANSFORM_HELPER_IDENTIFIER}|undefined) {
134
+ export function injectSelectionSet (selectionSetNode: ${constants_2.LUVIO_GRAPHQL_SELECTION_SET_NODE_IMPORT}|undefined, queryTransformHelper: ${constants_3.QUERY_TRANSFORM_HELPER_IDENTIFIER}|undefined, fragmentMap: ${constants_3.GRAPHQL_FRAGMENT_MAP_IDENTIFIER}) {
129
135
  if (queryTransformHelper === undefined ||
130
136
  queryTransformHelper === null ||
131
137
  selectionSetNode === undefined) {
@@ -137,17 +143,13 @@ function generateTypeUtil(graphqlResource, metadata, importContext) {
137
143
  selections === null) {
138
144
  return;
139
145
  }
140
-
141
- const { ${constants_3.GET_QUERY_TRANSFORM_HELPER_FOR_FIELD_IDENTIFIER} } = queryTransformHelper;
142
146
 
143
- // Call the function to get the minimum fields for this node, filtering out any
144
- // fields that are already present in the selection.
145
- const minimumSelections = ${constants_3.FILTER_MINIMUM_SELECTIONS_IDENTIFIER}(queryTransformHelper, selections)
147
+ const mergedSelections = ${constants_3.MERGE_SELECTIONS_IDENTIFIER}(queryTransformHelper.getMinimumSelections(), selections)
146
148
 
147
- const selectedFields = [...selections, ...minimumSelections];
148
- selectedFields.forEach(selection => {
149
+ mergedSelections.forEach(selection => {
149
150
  if (selection.kind === 'Field') {
150
- const fieldTransformHelper = getQueryTransformHelperForField(selection);
151
+ const fieldType = queryTransformHelper.getFieldType(selection);
152
+ const fieldTransformHelper = fieldType === undefined ? undefined : getQueryTransformerForType(fieldType.typename, fragmentMap);
151
153
  if (fieldTransformHelper && !selection.selectionSet) {
152
154
  Object.assign(selection, {
153
155
  selectionSet: {
@@ -156,51 +158,60 @@ function generateTypeUtil(graphqlResource, metadata, importContext) {
156
158
  }
157
159
  });
158
160
  }
159
- injectSelectionSet(selection.selectionSet, fieldTransformHelper);
160
- }
161
- if (selection.kind === 'InlineFragment' && selection.selectionSet && !selection.typeCondition) {
162
- injectSelectionSet(selection.selectionSet, queryTransformHelper);
163
- }
164
- if (selection.kind === 'InlineFragment' && selection.selectionSet && selection.typeCondition) {
165
- // create a wrapper for the getMinimumSelections function that filters
166
- // out any fields already present via encapsulation in the parent fields
167
- const fieldTransformHelper = ${getQueryTransformHelperForTypeImport}(selection.typeCondition.name.value);
168
- if (fieldTransformHelper === undefined) {
169
- return;
161
+ injectSelectionSet(selection.selectionSet, fieldTransformHelper, fragmentMap);
162
+ } else {
163
+ const fragmentType = queryTransformHelper.${constants_3.GET_IN_CONTEXT_FRAGMENT_TYPE_IDENTIFIER}(selection, fragmentMap);
164
+ const fragmentSelections = getSelectionSetFromFragment(selection, fragmentMap);
165
+ if(fragmentType === undefined) { // Untyped or unknown fragment
166
+ injectSelectionSet(fragmentSelections, queryTransformHelper, fragmentMap);
167
+ } else {
168
+ const fragmentTransformHelper = getQueryTransformerForType(fragmentType, fragmentMap);
169
+ if (fragmentTransformHelper === undefined) {
170
+ return;
171
+ }
172
+ injectSelectionSet(fragmentSelections, fragmentTransformHelper, fragmentMap);
170
173
  }
171
- const wrappedGetMinimumSelections = ():${constants_2.LUVIO_GRAPHQL_SELECTION_NODE_IMPORT}[] => {
172
- return ${constants_3.FILTER_MINIMUM_SELECTIONS_IDENTIFIER}(fieldTransformHelper, selections)
173
- };
174
- injectSelectionSet(selection.selectionSet, {
175
- ...fieldTransformHelper,
176
- ${constants_3.GET_MINIMUM_SELECTIONS_IDENTIFIER}: wrappedGetMinimumSelections
177
- });
178
174
  }
179
- // TODO(W-11725704): Handle injecting into named fragments
180
175
  });
181
176
  Object.assign(selectionSetNode, {
182
- selections: selectedFields.length > 0 ? selectedFields : undefined
177
+ selections: mergedSelections.length > 0 ? mergedSelections : undefined
183
178
  });
184
179
  }
185
180
 
186
- function ${constants_3.FILTER_MINIMUM_SELECTIONS_IDENTIFIER}(fieldTransformHelper: ${constants_3.QUERY_TRANSFORM_HELPER_IDENTIFIER}, selections: readonly ${constants_2.LUVIO_GRAPHQL_SELECTION_NODE_IMPORT}[]): ${constants_2.LUVIO_GRAPHQL_SELECTION_NODE_IMPORT}[] {
187
- return fieldTransformHelper.${constants_3.GET_MINIMUM_SELECTIONS_IDENTIFIER}().filter(minimumSelection => {
181
+ function ${constants_3.MERGE_SELECTIONS_IDENTIFIER}(minimumSelections: readonly ${constants_2.LUVIO_GRAPHQL_SELECTION_NODE_IMPORT}[], querySelections: readonly ${constants_2.LUVIO_GRAPHQL_SELECTION_NODE_IMPORT}[]): ${constants_2.LUVIO_GRAPHQL_SELECTION_NODE_IMPORT}[] {
182
+ const mergedSelections: ${constants_2.LUVIO_GRAPHQL_SELECTION_NODE_IMPORT}[] = [...querySelections];
183
+ for(let i = 0; i < minimumSelections.length; i++) {
184
+ const minimumSelection = minimumSelections[i];
188
185
  if (minimumSelection.kind === 'Field') {
189
- const fieldIsAlreadyPresent = selections.some(selection => {
186
+ const existingNode = mergedSelections.find(selection => {
190
187
  return selection.kind === 'Field' && (selection.name.value === minimumSelection.name.value);
191
188
  });
192
- return !fieldIsAlreadyPresent;
189
+
190
+ if(existingNode !== undefined && existingNode.kind === 'Field') { // Maybe do better type narrowing above
191
+ const existingNodeHasSubselections = existingNode.selectionSet !== undefined && existingNode.selectionSet.selections.length > 0;
192
+ const minimumFieldNodeHasSubselections = minimumSelection.selectionSet !== undefined && minimumSelection.selectionSet.selections.length > 0;
193
+
194
+ // TODO(correctness enhancement): this doesn't handle arugments. Add alias if arguments disagree?
195
+ if(existingNodeHasSubselections && minimumFieldNodeHasSubselections) {
196
+ const mergedChildSelections = mergeSelections(minimumSelection.selectionSet.selections, existingNode.selectionSet.selections);
197
+ Object.assign(existingNode.selectionSet, {
198
+ selections: mergedChildSelections
199
+ });
200
+ }
201
+ } else {
202
+ mergedSelections.push(minimumSelection);
203
+ }
193
204
  }
194
205
  if (minimumSelection.kind === 'InlineFragment') {
195
- return true;
206
+ mergedSelections.push(minimumSelection);
196
207
  }
197
208
  if (minimumSelection.kind === 'FragmentSpread') {
198
209
  if (process.env.NODE_ENV !== 'production') {
199
- console.error('named fragment minimum selections are not supported.');
210
+ console.error('named fragment minimum selections are not supported and will not be added to the query.');
200
211
  }
201
- return false;
202
212
  }
203
- });
213
+ }
214
+ return mergedSelections;
204
215
  }
205
216
 
206
217
  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 {
@@ -260,6 +271,91 @@ function generateTypeUtil(graphqlResource, metadata, importContext) {
260
271
  });
261
272
  return selections;
262
273
  }
274
+
275
+ export function getQueryTransformerForType(typename: string, fragmentMap: ${constants_3.GRAPHQL_FRAGMENT_MAP_IDENTIFIER}): ${constants_3.QUERY_TRANSFORM_HELPER_IDENTIFIER} | undefined {
276
+ switch(typename) {
277
+ ${Object.keys(normalizableTypes).map((key) => {
278
+ const typeGetMinimumSelections = importContext.importGraphQLArtifact('types', key, constants_3.GET_MINIMUM_SELECTIONS_IDENTIFIER);
279
+ const typeGetFieldType = importContext.importGraphQLArtifact('types', key, constants_3.GET_FIELD_TYPE_IDENTIFIER);
280
+ const typeGetInContextFragmentType = importContext.importGraphQLArtifact('types', key, constants_3.GET_IN_CONTEXT_FRAGMENT_TYPE_IDENTIFIER);
281
+ return `case "${key}": return {
282
+ ${constants_3.GET_MINIMUM_SELECTIONS_IDENTIFIER}: ${typeGetMinimumSelections},
283
+ ${constants_3.GET_FIELD_TYPE_IDENTIFIER}: ${typeGetFieldType},
284
+ ${constants_3.GET_IN_CONTEXT_FRAGMENT_TYPE_IDENTIFIER}: ${typeGetInContextFragmentType}
285
+ }`;
286
+ })}
287
+ default:
288
+ return undefined;
289
+ }
290
+ }
291
+
292
+ export function ${constants_3.SHARED_GET_IN_CONTEXT_FRAGMENT_TYPE_IDENTIFIER}(fragment: ${constants_2.LUVIO_GRAPHQL_FRAGMENT_SPREAD_NODE_IMPORT} | ${constants_2.LUVIO_GRAPHQL_INLINE_FRAGMENT_NODE_IMPORT}, fragmentMap: ${constants_3.GRAPHQL_FRAGMENT_MAP_IDENTIFIER}): string | undefined {
293
+ const typeCondition = fragment.kind === 'FragmentSpread' ? fragmentMap[fragment.name.value].typeCondition : fragment.typeCondition;
294
+ return typeCondition !== undefined ? typeCondition.name.value: undefined;
295
+ }
296
+
297
+ export function getSelectionSetFromFragment(fragment: ${constants_2.LUVIO_GRAPHQL_FRAGMENT_SPREAD_NODE_IMPORT} | ${constants_2.LUVIO_GRAPHQL_INLINE_FRAGMENT_NODE_IMPORT}, fragmentMap: ${constants_3.GRAPHQL_FRAGMENT_MAP_IDENTIFIER}): ${constants_2.LUVIO_GRAPHQL_SELECTION_SET_NODE_IMPORT} | undefined {
298
+ return fragment.kind === 'FragmentSpread' ? fragmentMap[fragment.name.value].selectionSet : fragment.selectionSet;
299
+ }
300
+
301
+ export function ${constants_3.CREATE_FRAGMENT_MAP_IDENTIFIER}(document: ${constants_2.LUVIO_GRAPHQL_DOCUMENT_NODE_IMPORT}): ${constants_3.GRAPHQL_FRAGMENT_MAP_IDENTIFIER} {
302
+ const fragments: ${constants_3.GRAPHQL_FRAGMENT_MAP_IDENTIFIER} = {};
303
+ for(let i = 0; i < document.definitions.length; i++) {
304
+ const node = document.definitions[i];
305
+ if (node.kind === 'FragmentDefinition') {
306
+ fragments[node.name.value] = node;
307
+ }
308
+ }
309
+ return fragments;
310
+ }
311
+
312
+ // Shared export so that we dont repeat this in every connection type. Using fields for now since untyped inline fragment fails on Core
313
+ export function ${constants_3.GET_CURSOR_CONNECTION_MINIMUM_SELECTIONS_IDENTIFIER}(): ${constants_2.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}[] {
314
+ return ${(0, minimumFields_1.getCursorConnectionFields)()}
315
+ }
316
+
317
+ // Shared export for evaluating the value of an argument
318
+ export function ${constants_3.SHARED_EVALUATE_ARGUMENT_VALUE}(argumentNode: ${constants_2.LUVIO_GRAPHQL_ARGUMENT_NODE_IMPORT} | undefined,
319
+ expectedKind: 'IntValue' | 'FloatValue' | 'StringValue' | 'BooleanValue' | 'EnumValue',
320
+ variables: ${constants_3.GRAPHQL_VARIABLES_IDENTIFIER}): any | undefined {
321
+ if (argumentNode === undefined) {
322
+ return undefined;
323
+ }
324
+ switch (argumentNode.value.kind) {
325
+ case expectedKind:
326
+ return argumentNode.value.value;
327
+ case 'Variable':
328
+ return variables[argumentNode.value.name.value] !== null ? variables[argumentNode.value.name.value] : undefined;
329
+ default:
330
+ return undefined;
331
+ }
332
+ }
333
+
334
+ // Shared export for getting the offset of the current page in the edges array
335
+ export function ${constants_3.GET_ARRAY_OFFSET_FOR_PAGE}(state: ${constants_3.GRAPHQL_INGEST_STATE_INTERFACE_IDENTIFIER}<any>, node: ${constants_2.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}, key: string): number {
336
+ const { variables, data, store } = state;
337
+
338
+ // if we have pagination metadata, see if we can locate either the start or
339
+ // after cursor in it to determine the correct index to use for the fullPath
340
+ const ${shape_ingest_paginated_1.PAGINATION_KEY_IDENTIFIER} = ${constants_4.KEY_IDENTIFIER} + '${constants_2.PAGINATION_KEY_SUFFIX}';
341
+ let ${shape_ingest_paginated_1.EXISTING_PAGINATION_METADATA_IDENTIFIER} = store.readEntry(paginationKey) as Record<string, any> | undefined;
342
+
343
+ const afterArg = node.arguments?.find(argument => { return argument.name.value === 'after'});
344
+ const afterArgVal = ${constants_3.SHARED_EVALUATE_ARGUMENT_VALUE}(afterArg, 'StringValue', variables);
345
+
346
+ if (${shape_ingest_paginated_1.EXISTING_PAGINATION_METADATA_IDENTIFIER} !== undefined) {
347
+ // if the starting cursor for current page exists in the existing metadata use that as offset
348
+ if (${shape_ingest_paginated_1.EXISTING_PAGINATION_METADATA_IDENTIFIER}[data.pageInfo.startCursor] !== undefined) {
349
+ return existingPaginationMetadata[data.pageInfo.startCursor] as number;
350
+ } else if (afterArgVal !== undefined && ${shape_ingest_paginated_1.EXISTING_PAGINATION_METADATA_IDENTIFIER}[afterArgVal] !== undefined) {
351
+ // We need to ingest at the end of the array so use the after value and add 1
352
+ const previousPageOffset = ${shape_ingest_paginated_1.EXISTING_PAGINATION_METADATA_IDENTIFIER}[afterArgVal] as number;
353
+ return previousPageOffset + 1;
354
+ }
355
+ }
356
+
357
+ return 0;
358
+ }
263
359
  `);
264
360
  }
265
361
  exports.generateTypeUtil = generateTypeUtil;
@@ -1 +1 @@
1
- {"version":3,"file":"generateTypeUtil.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/generateTypeUtil.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateTypeUtil.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/generateTypeUtil.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ const ttl_1 = require("./ttl");
12
12
  const merge_1 = require("./merge");
13
13
  const imports_1 = require("../../../utils/imports");
14
14
  const select_1 = require("./select");
15
- const query_transformer_1 = require("./query-transformer");
15
+ const minimumFields_1 = require("./minimumFields");
16
16
  const type_cache_keys_1 = require("./type-cache-keys");
17
17
  const type_from_field_1 = require("./type-from-field");
18
18
  const ingest_field_by_type_1 = require("./ingest-field-by-type");
@@ -23,6 +23,7 @@ const convert_1 = require("./convert");
23
23
  const ingest_mapped_1 = require("./ingest-mapped");
24
24
  const attach_mapped_1 = require("./attach-mapped");
25
25
  const mapped_type_cache_keys_1 = require("./mapped-type-cache-keys");
26
+ const fragment_type_1 = require("./fragment-type");
26
27
  function generateType(graphqlDsl, graphqlTypeName, def, importContext, metadata, modelInfo) {
27
28
  return (0, imports_1.resolveImports)((0, deindent_1.default) `
28
29
  export const name = '${graphqlTypeName}';
@@ -33,7 +34,7 @@ function generateType(graphqlDsl, graphqlTypeName, def, importContext, metadata,
33
34
  ${(0, merge_1.generateMerge)(graphqlDsl, graphqlTypeName, importContext, modelInfo)}
34
35
  ${(0, ingest_1.generateIngest)(graphqlDsl, graphqlTypeName, def, importContext, metadata, modelInfo)}
35
36
  ${(0, select_1.generateSelect)(graphqlDsl, graphqlTypeName, def, importContext, metadata, modelInfo)}
36
- ${(0, query_transformer_1.generate)(graphqlDsl, graphqlTypeName, def, importContext, metadata)}
37
+ ${(0, minimumFields_1.generateGetMinimumSelections)(graphqlDsl, graphqlTypeName, def, importContext, metadata)}
37
38
  ${(0, type_cache_keys_1.generateGetTypeCacheKeys)(graphqlDsl, graphqlTypeName, def, importContext, metadata, modelInfo)}
38
39
  ${(0, type_from_field_1.generateGetFieldType)(graphqlDsl, def)}
39
40
  ${(0, ingest_field_by_type_1.generateIngestFieldDataByType)(graphqlDsl, graphqlTypeName, def, importContext, metadata)}
@@ -43,6 +44,7 @@ function generateType(graphqlDsl, graphqlTypeName, def, importContext, metadata,
43
44
  ${(0, ingest_mapped_1.generateIngestMappedData)(graphqlDsl, graphqlTypeName, importContext, modelInfo)}
44
45
  ${(0, attach_mapped_1.generateAttachMappedData)(graphqlDsl, graphqlTypeName, importContext, modelInfo)}
45
46
  ${(0, mapped_type_cache_keys_1.generateGetRamlMappingCacheKeys)(graphqlDsl, graphqlTypeName, importContext, modelInfo)}
47
+ ${(0, fragment_type_1.generateGetFragmentType)(graphqlDsl, def, importContext)}
46
48
  `);
47
49
  }
48
50
  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;AAKxD,qCAA0C;AAC1C,2DAA2E;AAE3E,uDAA6D;AAC7D,uDAAyD;AACzD,iEAAuE;AACvE,uDAA0D;AAC1D,yDAA6D;AAC7D,uCAA4C;AAC5C,uCAAmD;AACnD,mDAA2D;AAC3D,mDAA2D;AAC3D,qEAA2E;AAE3E,SAAgB,YAAY,CACxB,UAA2B,EAC3B,eAAuB,EACvB,GAA6B,EAC7B,aAA4B,EAC5B,QAAgC,EAChC,SAAoB;IAEpB,OAAO,IAAA,wBAAc,EAAC,IAAA,kBAAQ,EAAA;+BACH,eAAe;UACpC,IAAA,iBAAW,EAAC,UAAU,EAAE,eAAe,CAAC;UACxC,IAAA,yBAAe,EAAC,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UAC9D,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,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,CAAC;UACpE,IAAA,uBAAc,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC;UACpF,IAAA,uBAAc,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC;UACpF,IAAA,4BAAwB,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UACnF,IAAA,0CAAwB,EACtB,UAAU,EACV,eAAe,EACf,GAAG,EACH,aAAa,EACb,QAAQ,EACR,SAAS,CACZ;UACC,IAAA,sCAAoB,EAAC,UAAU,EAAE,GAAG,CAAC;UACrC,IAAA,oDAA6B,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UACxF,IAAA,uCAAqB,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,CAAC;UACvD,IAAA,0CAAuB,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UAClF,IAAA,gCAAsB,EAAC,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,CAAC;UAClF,IAAA,wCAAwB,EAAC,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,CAAC;UAC/E,IAAA,wCAAwB,EAAC,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,CAAC;UAC/E,IAAA,wDAA+B,EAAC,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,CAAC;KAC3F,CAAC,CAAC;AACP,CAAC;AAnCD,oCAmCC"}
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,mDAA+D;AAE/D,uDAA6D;AAC7D,uDAAyD;AACzD,iEAAuE;AACvE,uDAA0D;AAC1D,yDAA6D;AAC7D,uCAA4C;AAC5C,uCAAmD;AACnD,mDAA2D;AAC3D,mDAA2D;AAC3D,qEAA2E;AAC3E,mDAA0D;AAE1D,SAAgB,YAAY,CACxB,UAA2B,EAC3B,eAAuB,EACvB,GAA6B,EAC7B,aAA4B,EAC5B,QAAgC,EAChC,SAAoB;IAEpB,OAAO,IAAA,wBAAc,EAAC,IAAA,kBAAQ,EAAA;+BACH,eAAe;UACpC,IAAA,iBAAW,EAAC,UAAU,EAAE,eAAe,CAAC;UACxC,IAAA,yBAAe,EAAC,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UAC9D,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,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,CAAC;UACpE,IAAA,uBAAc,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC;UACpF,IAAA,uBAAc,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC;UACpF,IAAA,4CAA4B,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UACvF,IAAA,0CAAwB,EACtB,UAAU,EACV,eAAe,EACf,GAAG,EACH,aAAa,EACb,QAAQ,EACR,SAAS,CACZ;UACC,IAAA,sCAAoB,EAAC,UAAU,EAAE,GAAG,CAAC;UACrC,IAAA,oDAA6B,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UACxF,IAAA,uCAAqB,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,CAAC;UACvD,IAAA,0CAAuB,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UAClF,IAAA,gCAAsB,EAAC,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,CAAC;UAClF,IAAA,wCAAwB,EAAC,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,CAAC;UAC/E,IAAA,wCAAwB,EAAC,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,CAAC;UAC/E,IAAA,wDAA+B,EAAC,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,CAAC;UACtF,IAAA,uCAAuB,EAAC,UAAU,EAAE,GAAG,EAAE,aAAa,CAAC;KAC5D,CAAC,CAAC;AACP,CAAC;AApCD,oCAoCC"}
@@ -4,5 +4,5 @@ import type { ImportContext } from '../../../utils/imports';
4
4
  import type { GraphQLCodegenMetadata } from '../source-printer';
5
5
  import type { NormalizableTypes } from '../utils';
6
6
  export declare function generateIngestFieldDataByType(graphqlDsl: LuvioGraphQLDSL, graphqlTypeName: string, def: ObjectTypeDefinitionNode, importContext: ImportContext, _metadata: GraphQLCodegenMetadata): string;
7
- export declare function ingestType(typeNode: TypeNode, importContext: ImportContext, normalizableTypeMap: NormalizableTypes): string;
8
- export declare function ingestNamedType(typeNode: NamedTypeNode, importContext: ImportContext, normalizableTypeMap: NormalizableTypes): string;
7
+ export declare function ingestType(typeNode: TypeNode, importContext: ImportContext, normalizableTypeMap: NormalizableTypes, isCursorConnectionType: boolean): string;
8
+ export declare function ingestNamedType(typeNode: NamedTypeNode, importContext: ImportContext, normalizableTypeMap: NormalizableTypes, isCursorConnectionType: boolean): string;
@@ -10,8 +10,10 @@ const types_1 = require("../utils/types");
10
10
  const constants_2 = require("./constants");
11
11
  const interface_1 = require("./interface");
12
12
  function generateIngestFieldDataByType(graphqlDsl, graphqlTypeName, def, importContext, _metadata) {
13
+ const { schema, cursorConnectionTypes } = graphqlDsl;
14
+ const isCursorConnectionType = cursorConnectionTypes.includes(graphqlTypeName);
13
15
  const graphqlStateInterface = importContext.importGraphQLArtifact('types', constants_2.TYPE_UTIL_IDENTIFIER, constants_2.GRAPHQL_INGEST_STATE_INTERFACE_IDENTIFIER);
14
- const normalizableTypeMap = (0, types_1.getNormalizableTypeMap)(graphqlDsl.schema);
16
+ const normalizableTypeMap = (0, types_1.getNormalizableTypeMap)(schema);
15
17
  const graphqlFields = (0, types_1.getObjectFields)(def);
16
18
  // Used to dedupe field types
17
19
  const seenTypes = new Set();
@@ -22,11 +24,11 @@ function generateIngestFieldDataByType(graphqlDsl, graphqlTypeName, def, importC
22
24
  return;
23
25
  }
24
26
  seenTypes.add(typename);
25
- return ingestType(type, importContext, normalizableTypeMap);
27
+ return ingestType(type, importContext, normalizableTypeMap, isCursorConnectionType);
26
28
  })
27
29
  .filter((fieldIngestStatement) => fieldIngestStatement !== '')
28
30
  .join('\n');
29
- return `export function ${constants_2.INGEST_FIELD_BY_TYPE_IDENTIFIER}(typename: string, parentKey: string, ${constants_2.REQUESTED_FIELD_IDENTIFIER}: ${constants_1.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}, ${constants_2.SINK_IDENTIFIER}: Record<string, any>, ${constants_2.FIELD_KEY_IDENTIFIER}: ${constants_1.LUVIO_SELECTION_PROPERTY_KEY_IMPORT}, ${constants_2.FIELD_DATA_IDENTIFIER}: any, state: ${graphqlStateInterface}<${interface_1.PARTIAL_INTERFACE_IDENTIFIER}>) {
31
+ return `export function ${constants_2.INGEST_FIELD_BY_TYPE_IDENTIFIER}(typename: string, parentKey: string, ${isCursorConnectionType ? 'fullPathKey: string,' : ''}${constants_2.REQUESTED_FIELD_IDENTIFIER}: ${constants_1.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}, ${constants_2.SINK_IDENTIFIER}: Record<string, any>, ${constants_2.FIELD_KEY_IDENTIFIER}: ${constants_1.LUVIO_SELECTION_PROPERTY_KEY_IMPORT}, ${constants_2.FIELD_DATA_IDENTIFIER}: any, state: ${graphqlStateInterface}<${interface_1.PARTIAL_INTERFACE_IDENTIFIER}>) {
30
32
  // TODO: add validation logic to only allow nullable fields to be null in the future
31
33
  if (${constants_2.FIELD_DATA_IDENTIFIER} === null) {
32
34
  ${constants_2.SINK_IDENTIFIER}[${constants_2.FIELD_KEY_IDENTIFIER}] = null;
@@ -39,17 +41,17 @@ function generateIngestFieldDataByType(graphqlDsl, graphqlTypeName, def, importC
39
41
  `;
40
42
  }
41
43
  exports.generateIngestFieldDataByType = generateIngestFieldDataByType;
42
- function ingestType(typeNode, importContext, normalizableTypeMap) {
44
+ function ingestType(typeNode, importContext, normalizableTypeMap, isCursorConnectionType) {
43
45
  switch (typeNode.kind) {
44
46
  case 'NamedType':
45
- return ingestNamedType(typeNode, importContext, normalizableTypeMap);
47
+ return ingestNamedType(typeNode, importContext, normalizableTypeMap, isCursorConnectionType);
46
48
  case 'ListType':
47
49
  case 'NonNullType':
48
- return ingestType(typeNode.type, importContext, normalizableTypeMap);
50
+ return ingestType(typeNode.type, importContext, normalizableTypeMap, isCursorConnectionType);
49
51
  }
50
52
  }
51
53
  exports.ingestType = ingestType;
52
- function ingestNamedType(typeNode, importContext, normalizableTypeMap) {
54
+ function ingestNamedType(typeNode, importContext, normalizableTypeMap, isCursorConnectionType) {
53
55
  const graphqlTypeName = (0, types_1.resolveTypeName)(typeNode);
54
56
  const { importGraphQLArtifact } = importContext;
55
57
  const isScalar = normalizableTypeMap[graphqlTypeName] === undefined;
@@ -60,6 +62,9 @@ function ingestNamedType(typeNode, importContext, normalizableTypeMap) {
60
62
  const graphqlStateInterface = importGraphQLArtifact('types', constants_2.TYPE_UTIL_IDENTIFIER, constants_2.GRAPHQL_INGEST_STATE_INTERFACE_IDENTIFIER);
61
63
  const typeNamePartialInterfaceImport = importGraphQLArtifact('types', graphqlTypeName, interface_1.PARTIAL_INTERFACE_IDENTIFIER);
62
64
  const fieldStateIdentifier = `${graphqlTypeName}State`;
65
+ const resolvedFullPath = isCursorConnectionType
66
+ ? 'fullPathKey'
67
+ : `parentKey + '__' + ${constants_2.FIELD_KEY_IDENTIFIER}`;
63
68
  return (0, deindent_1.default) `
64
69
  case '${graphqlTypeName}': {
65
70
  const ${fieldStateIdentifier} = {
@@ -67,7 +72,7 @@ function ingestNamedType(typeNode, importContext, normalizableTypeMap) {
67
72
  path: {
68
73
  parent: null,
69
74
  propertyName: null,
70
- fullPath: parentKey + '__' + ${constants_2.FIELD_KEY_IDENTIFIER}
75
+ fullPath: ${resolvedFullPath}
71
76
  },
72
77
  data: ${constants_2.FIELD_DATA_IDENTIFIER},
73
78
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ingest-field-by-type.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/ingest-field-by-type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ingest-field-by-type.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/ingest-field-by-type.ts"],"names":[],"mappings":"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"}