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