@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.
- package/dist/codegen/graphql/interface/index.d.ts +1 -1
- package/dist/codegen/graphql/interface/index.js +10 -8
- package/dist/codegen/graphql/interface/index.js.map +1 -1
- package/dist/codegen/graphql/type/constants.d.ts +7 -3
- package/dist/codegen/graphql/type/constants.js +9 -5
- package/dist/codegen/graphql/type/constants.js.map +1 -1
- package/dist/codegen/graphql/type/fragment-type.d.ts +4 -0
- package/dist/codegen/graphql/type/fragment-type.js +20 -0
- package/dist/codegen/graphql/type/fragment-type.js.map +1 -0
- package/dist/codegen/graphql/type/generateTypeUtil.js +142 -46
- package/dist/codegen/graphql/type/generateTypeUtil.js.map +1 -1
- package/dist/codegen/graphql/type/index.js +4 -2
- package/dist/codegen/graphql/type/index.js.map +1 -1
- package/dist/codegen/graphql/type/ingest-field-by-type.d.ts +2 -2
- package/dist/codegen/graphql/type/ingest-field-by-type.js +13 -8
- package/dist/codegen/graphql/type/ingest-field-by-type.js.map +1 -1
- package/dist/codegen/graphql/type/ingest.js +18 -3
- package/dist/codegen/graphql/type/ingest.js.map +1 -1
- package/dist/codegen/graphql/type/interface.d.ts +2 -2
- package/dist/codegen/graphql/type/interface.js +3 -8
- package/dist/codegen/graphql/type/interface.js.map +1 -1
- package/dist/codegen/graphql/type/key.d.ts +2 -2
- package/dist/codegen/graphql/type/key.js +1 -1
- package/dist/codegen/graphql/type/key.js.map +1 -1
- package/dist/codegen/graphql/type/minimumFields.d.ts +6 -0
- package/dist/codegen/graphql/type/minimumFields.js +68 -0
- package/dist/codegen/graphql/type/minimumFields.js.map +1 -0
- package/dist/codegen/graphql/type/select.js +10 -5
- package/dist/codegen/graphql/type/select.js.map +1 -1
- package/dist/codegen/graphql/type/type-from-field.d.ts +2 -2
- package/dist/codegen/graphql/type/type-from-field.js.map +1 -1
- package/dist/codegen/graphql/union/index.d.ts +1 -1
- package/dist/codegen/graphql/union/index.js +12 -6
- package/dist/codegen/graphql/union/index.js.map +1 -1
- package/dist/codegen/graphql/utils/types.d.ts +3 -3
- package/dist/codegen/graphql/utils/types.js +3 -0
- package/dist/codegen/graphql/utils/types.js.map +1 -1
- package/dist/codegen/shape/graphql/shape-cache-keys.js +2 -6
- package/dist/codegen/shape/graphql/shape-cache-keys.js.map +1 -1
- package/dist/codegen/shape/graphql/shape-ingest.js +2 -6
- package/dist/codegen/shape/graphql/shape-ingest.js.map +1 -1
- package/dist/codegen/shared/constants.d.ts +1 -0
- package/dist/codegen/shared/constants.js +2 -1
- package/dist/codegen/shared/constants.js.map +1 -1
- package/package.json +6 -5
- package/dist/codegen/graphql/interface/query-transformer.d.ts +0 -5
- package/dist/codegen/graphql/interface/query-transformer.js +0 -21
- package/dist/codegen/graphql/interface/query-transformer.js.map +0 -1
- package/dist/codegen/graphql/type/query-transformer.d.ts +0 -8
- package/dist/codegen/graphql/type/query-transformer.js +0 -193
- 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,
|
|
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
|
-
|
|
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 = '${
|
|
19
|
-
${(0, interface_1.generateInterface)(
|
|
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,
|
|
22
|
-
${(0, select_1.generateSelect)(graphqlDsl,
|
|
23
|
-
${(0,
|
|
24
|
-
${(0, type_cache_keys_1.generateGetTypeCacheKeys)(graphqlDsl,
|
|
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,
|
|
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
|
|
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.
|
|
4
|
-
exports.
|
|
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.
|
|
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
|
|
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
|
|
49
|
-
(field: ${constants_2.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}): ${constants_3.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
148
|
-
selectedFields.forEach(selection => {
|
|
149
|
+
mergedSelections.forEach(selection => {
|
|
149
150
|
if (selection.kind === 'Field') {
|
|
150
|
-
const
|
|
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
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
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:
|
|
177
|
+
selections: mergedSelections.length > 0 ? mergedSelections : undefined
|
|
183
178
|
});
|
|
184
179
|
}
|
|
185
180
|
|
|
186
|
-
function ${constants_3.
|
|
187
|
-
|
|
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
|
|
186
|
+
const existingNode = mergedSelections.find(selection => {
|
|
190
187
|
return selection.kind === 'Field' && (selection.name.value === minimumSelection.name.value);
|
|
191
188
|
});
|
|
192
|
-
|
|
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
|
-
|
|
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":";;;;;;AAAA,uEAA+C;AAC/C,oDAAwD;AAExD,
|
|
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
|
|
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,
|
|
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,
|
|
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)(
|
|
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:
|
|
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":";;;;;;AAEA,uEAA+C;AAE/C,sDAGgC;AAGhC,0CAA0F;AAC1F,2CASqB;AACrB,2CAA2D;AAE3D,SAAgB,6BAA6B,CACzC,UAA2B,EAC3B,eAAuB,EACvB,GAA6B,EAC7B,aAA4B,EAC5B,SAAiC;IAEjC,MAAM,qBAAqB,GAAG,aAAa,CAAC,qBAAqB,CAC7D,OAAO,EACP,gCAAoB,EACpB,qDAAyC,CAC5C,CAAC;IACF,MAAM,mBAAmB,GAAG,IAAA,8BAAsB,EAAC,
|
|
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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"}
|