@luvio/compiler 0.97.0 → 0.99.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/create-resource-params.js +21 -6
- package/dist/codegen/adapter/create-resource-params.js.map +1 -1
- package/dist/codegen/adapter/graphql/adapter-config-transformer.js +8 -2
- package/dist/codegen/adapter/graphql/adapter-config-transformer.js.map +1 -1
- package/dist/codegen/adapter/graphql/adapter-fragment.d.ts +4 -0
- package/dist/codegen/adapter/graphql/adapter-fragment.js +24 -0
- package/dist/codegen/adapter/graphql/adapter-fragment.js.map +1 -0
- package/dist/codegen/adapter/graphql/adapter-resource-error.d.ts +4 -0
- package/dist/codegen/adapter/graphql/adapter-resource-error.js +33 -0
- package/dist/codegen/adapter/graphql/adapter-resource-error.js.map +1 -0
- package/dist/codegen/adapter/graphql/adapter-resource-success.d.ts +4 -0
- package/dist/codegen/adapter/graphql/adapter-resource-success.js +35 -0
- package/dist/codegen/adapter/graphql/adapter-resource-success.js.map +1 -0
- package/dist/codegen/adapter/graphql/index.js +3 -3
- package/dist/codegen/adapter/graphql/index.js.map +1 -1
- package/dist/codegen/adapter/util.d.ts +0 -1
- package/dist/codegen/adapter/util.js +1 -34
- package/dist/codegen/adapter/util.js.map +1 -1
- package/dist/codegen/graphql/source-printer/graphql-type-source-printer.d.ts +4 -4
- package/dist/codegen/graphql/source-printer/graphql-type-source-printer.js +8 -8
- package/dist/codegen/graphql/source-printer/graphql-type-source-printer.js.map +1 -1
- package/dist/codegen/graphql/type/constants.d.ts +4 -0
- package/dist/codegen/graphql/type/constants.js +5 -1
- package/dist/codegen/graphql/type/constants.js.map +1 -1
- package/dist/codegen/graphql/type/convert.d.ts +6 -0
- package/dist/codegen/graphql/type/convert.js +184 -0
- package/dist/codegen/graphql/type/convert.js.map +1 -0
- package/dist/codegen/graphql/type/generateTypeUtil.js +4 -4
- package/dist/codegen/graphql/type/generateTypeUtil.js.map +1 -1
- package/dist/codegen/graphql/type/index.js +6 -0
- package/dist/codegen/graphql/type/index.js.map +1 -1
- package/dist/codegen/graphql/type/ingest-field-by-type.d.ts +8 -0
- package/dist/codegen/graphql/type/ingest-field-by-type.js +84 -0
- package/dist/codegen/graphql/type/ingest-field-by-type.js.map +1 -0
- package/dist/codegen/graphql/type/ingest.d.ts +1 -5
- package/dist/codegen/graphql/type/ingest.js +48 -182
- package/dist/codegen/graphql/type/ingest.js.map +1 -1
- package/dist/codegen/graphql/type/is-mapped-field.d.ts +3 -0
- package/dist/codegen/graphql/type/is-mapped-field.js +37 -0
- package/dist/codegen/graphql/type/is-mapped-field.js.map +1 -0
- package/dist/codegen/graphql/type/key.js +4 -4
- package/dist/codegen/graphql/type/key.js.map +1 -1
- package/dist/codegen/graphql/type/select.d.ts +1 -1
- package/dist/codegen/graphql/type/select.js +126 -76
- package/dist/codegen/graphql/type/select.js.map +1 -1
- package/dist/codegen/graphql/type/type-from-field.d.ts +3 -0
- package/dist/codegen/graphql/type/type-from-field.js +49 -0
- package/dist/codegen/graphql/type/type-from-field.js.map +1 -0
- package/dist/codegen/graphql/utils/types.js +1 -1
- package/dist/codegen/resource/graphql/ingest-error.js +4 -1
- package/dist/codegen/resource/graphql/ingest-error.js.map +1 -1
- package/dist/codegen/resource/graphql/ingest-success.js +5 -2
- package/dist/codegen/resource/graphql/ingest-success.js.map +1 -1
- package/dist/codegen/resource/graphql/key-builder.d.ts +2 -1
- package/dist/codegen/resource/graphql/key-builder.js +10 -2
- package/dist/codegen/resource/graphql/key-builder.js.map +1 -1
- package/dist/codegen/resource/graphql/select.js +6 -5
- package/dist/codegen/resource/graphql/select.js.map +1 -1
- package/dist/codegen/shape/graphql/shape-select.js +2 -2
- package/dist/codegen/shape/shape-utils.js +17 -1
- package/dist/codegen/shape/shape-utils.js.map +1 -1
- package/dist/codegen/shared/constants.d.ts +2 -0
- package/dist/codegen/shared/constants.js +3 -1
- package/dist/codegen/shared/constants.js.map +1 -1
- package/package.json +4 -4
|
@@ -8,57 +8,17 @@ const deindent_1 = __importDefault(require("../../../utils/deindent"));
|
|
|
8
8
|
const constants_1 = require("../../adapter/constants");
|
|
9
9
|
const constants_2 = require("../../shared/constants");
|
|
10
10
|
const constants_3 = require("./constants");
|
|
11
|
-
const utils_1 = require("
|
|
11
|
+
const utils_1 = require("./utils");
|
|
12
12
|
const utils_2 = require("../utils");
|
|
13
13
|
const types_1 = require("../utils/types");
|
|
14
14
|
const interface_1 = require("./interface");
|
|
15
15
|
const util_1 = require("../directive/util");
|
|
16
|
-
function selectListType(field, typeNode, importContext, normalizableTypeMap) {
|
|
17
|
-
if (typeNode.type === null) {
|
|
18
|
-
return '';
|
|
19
|
-
}
|
|
20
|
-
const typeName = (0, utils_1.resolveTypeName)(typeNode);
|
|
21
|
-
const isScalar = normalizableTypeMap[typeName] === undefined;
|
|
22
|
-
if (isScalar) {
|
|
23
|
-
return (0, deindent_1.default) `
|
|
24
|
-
if (${constants_3.FIELD_DATA_IDENTIFIER} !== undefined) {
|
|
25
|
-
reader.assignNonScalar(${constants_3.SINK_IDENTIFIER}, ${constants_3.REQUESTED_FIELD_NAME_IDENTIFIER}, ${constants_3.FIELD_DATA_IDENTIFIER});
|
|
26
|
-
}
|
|
27
|
-
`;
|
|
28
|
-
}
|
|
29
|
-
const identifier = `data__${field.name.value}`;
|
|
30
|
-
const resolvedLinkIdentifier = `${identifier}ResolvedLink`;
|
|
31
|
-
const namedTypeSelect = importContext.importGraphQLArtifact('types', typeName, 'select');
|
|
32
|
-
const namedTypePartialInterface = importContext.importGraphQLArtifact('types', typeName, 'PartialInterface');
|
|
33
|
-
return (0, deindent_1.default) `
|
|
34
|
-
const arraySink: ${namedTypePartialInterface}[] = [];
|
|
35
|
-
for(let i = 0, len = ${constants_3.FIELD_DATA_IDENTIFIER}.length; i < len; i += 1) {
|
|
36
|
-
reader.enterPath(i);
|
|
37
|
-
const ${resolvedLinkIdentifier} = reader.read({
|
|
38
|
-
recordId: ${constants_3.FIELD_DATA_IDENTIFIER}[i].__ref,
|
|
39
|
-
node: {
|
|
40
|
-
kind: 'Fragment',
|
|
41
|
-
private: [],
|
|
42
|
-
opaque: true
|
|
43
|
-
},
|
|
44
|
-
variables: {}
|
|
45
|
-
});
|
|
46
|
-
if (${resolvedLinkIdentifier}.data === undefined) {
|
|
47
|
-
continue;
|
|
48
|
-
}
|
|
49
|
-
const selected = ${namedTypeSelect}(sel, variables, fragments)(${resolvedLinkIdentifier}.data as ${namedTypePartialInterface}, reader);
|
|
50
|
-
reader.assignNonScalar(arraySink, i, selected);
|
|
51
|
-
reader.exitPath();
|
|
52
|
-
}
|
|
53
|
-
reader.assignNonScalar(${constants_3.SINK_IDENTIFIER}, ${constants_3.REQUESTED_FIELD_NAME_IDENTIFIER}, arraySink);
|
|
54
|
-
`;
|
|
55
|
-
}
|
|
56
16
|
function selectNamedType(field, typeNode, importContext, normalizableTypeMap) {
|
|
57
17
|
const fieldName = field.name.value;
|
|
58
18
|
const identifier = fieldName;
|
|
59
19
|
const resolvedLinkIdentifier = `${identifier}ResolvedLink`;
|
|
60
|
-
const
|
|
61
|
-
const isScalar = normalizableTypeMap[
|
|
20
|
+
const graphqlTypeName = typeNode.name.value;
|
|
21
|
+
const isScalar = normalizableTypeMap[graphqlTypeName] === undefined;
|
|
62
22
|
// non-normalizable
|
|
63
23
|
if (isScalar) {
|
|
64
24
|
return generateSelectScalar();
|
|
@@ -71,30 +31,69 @@ function selectNamedType(field, typeNode, importContext, normalizableTypeMap) {
|
|
|
71
31
|
node: {
|
|
72
32
|
kind: 'Fragment',
|
|
73
33
|
private: [],
|
|
74
|
-
opaque: true
|
|
34
|
+
opaque: true,
|
|
75
35
|
},
|
|
76
36
|
variables: {}
|
|
77
37
|
});
|
|
78
38
|
if (${resolvedLinkIdentifier}.data !== undefined) {
|
|
79
39
|
const result = ${namedTypeSelect}(sel, variables, fragments)(${resolvedLinkIdentifier}.data as ${namedTypePartialInterface}, reader);
|
|
80
|
-
reader.assignNonScalar(${constants_3.SINK_IDENTIFIER},
|
|
40
|
+
reader.assignNonScalar(${constants_3.SINK_IDENTIFIER}, key, result);
|
|
41
|
+
} else {
|
|
42
|
+
reader.markMissing();
|
|
81
43
|
}
|
|
82
44
|
`;
|
|
83
45
|
}
|
|
84
46
|
function selectType(field, typeNode, importContext, normalizableTypeMap) {
|
|
85
47
|
switch (typeNode.kind) {
|
|
86
|
-
case '
|
|
87
|
-
return selectNamedType(field, typeNode, importContext, normalizableTypeMap);
|
|
88
|
-
}
|
|
48
|
+
case 'ListType':
|
|
89
49
|
case 'NonNullType': {
|
|
90
50
|
return selectType(field, typeNode.type, importContext, normalizableTypeMap);
|
|
91
51
|
}
|
|
52
|
+
case 'NamedType': {
|
|
53
|
+
return selectNamedType(field, typeNode, importContext, normalizableTypeMap);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function generateGetMappedDataByType(graphqlField, typeNode, ramlFieldName, normalizableTypeMap) {
|
|
58
|
+
if (graphqlField === undefined) {
|
|
59
|
+
return '';
|
|
60
|
+
}
|
|
61
|
+
switch (typeNode.kind) {
|
|
62
|
+
case 'NamedType':
|
|
92
63
|
case 'ListType': {
|
|
93
|
-
|
|
64
|
+
// only select from linked data if the field is scalar and is mapped to a RAML field
|
|
65
|
+
const graphqlFieldName = graphqlField.name.value;
|
|
66
|
+
const graphqlTypeName = (0, types_1.resolveTypeName)(typeNode);
|
|
67
|
+
const isScalar = normalizableTypeMap[graphqlTypeName] === undefined;
|
|
68
|
+
if (isScalar && ramlFieldName !== undefined) {
|
|
69
|
+
return (0, deindent_1.default) `
|
|
70
|
+
case "${graphqlFieldName}": {
|
|
71
|
+
const ${constants_3.FIELD_KEY_IDENTIFIER} = "${ramlFieldName}";
|
|
72
|
+
return source.__linkedData.data[${constants_3.FIELD_KEY_IDENTIFIER}];
|
|
73
|
+
}
|
|
74
|
+
`;
|
|
75
|
+
}
|
|
76
|
+
return '';
|
|
77
|
+
}
|
|
78
|
+
default: {
|
|
79
|
+
return generateGetMappedDataByType(graphqlField, typeNode.type, ramlFieldName, normalizableTypeMap);
|
|
94
80
|
}
|
|
95
81
|
}
|
|
96
82
|
}
|
|
97
|
-
function
|
|
83
|
+
function generateDataMapping(graphqlDsl, graphqlTypeName, def, normalizableTypeMap) {
|
|
84
|
+
const graphqlFields = (0, types_1.getObjectFields)(def);
|
|
85
|
+
return graphqlFields
|
|
86
|
+
.filter((graphqlField) => graphqlField.type !== undefined)
|
|
87
|
+
.map((graphqlField) => {
|
|
88
|
+
const { typeNameToExtensions } = graphqlDsl;
|
|
89
|
+
const graphqlFieldName = graphqlField.name.value;
|
|
90
|
+
const ramlFieldName = (0, utils_1.getRamlFieldName)(typeNameToExtensions, graphqlTypeName, graphqlFieldName);
|
|
91
|
+
return generateGetMappedDataByType(graphqlField, graphqlField.type, ramlFieldName, normalizableTypeMap);
|
|
92
|
+
})
|
|
93
|
+
.filter((fieldIngestStatement) => fieldIngestStatement !== '')
|
|
94
|
+
.join('\n');
|
|
95
|
+
}
|
|
96
|
+
function generateSelect(graphqlDsl, graphqlTypeName, def, importContext, _metadata) {
|
|
98
97
|
var _a;
|
|
99
98
|
const { schema } = graphqlDsl;
|
|
100
99
|
const type = schema.getType(def.name.value);
|
|
@@ -102,42 +101,82 @@ function generateSelect(graphqlDsl, typeName, def, importContext, _metadata) {
|
|
|
102
101
|
return '';
|
|
103
102
|
}
|
|
104
103
|
const normalizableTypeMap = (0, utils_2.getNormalizableTypeMap)(schema);
|
|
105
|
-
|
|
104
|
+
// TODO: Dedupe type statements
|
|
105
|
+
const fieldSelectionByTypeCaseStatements = (0, types_1.getObjectFields)(def)
|
|
106
106
|
.map((field) => {
|
|
107
|
-
const fieldName = field.name.value;
|
|
108
107
|
const type = field.type;
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
const body = selectType(field, field.type, importContext, normalizableTypeMap);
|
|
108
|
+
const typename = (0, types_1.resolveTypeName)(type);
|
|
109
|
+
const body = selectType(field, type, importContext, normalizableTypeMap);
|
|
113
110
|
return (0, deindent_1.default) `
|
|
114
|
-
case '${
|
|
111
|
+
case '${typename}': {
|
|
115
112
|
${body}
|
|
116
113
|
break;
|
|
117
114
|
}
|
|
118
115
|
`;
|
|
119
116
|
})
|
|
120
117
|
.join('\n');
|
|
121
|
-
const astNodeParamType = ((_a = schema.getQueryType()) === null || _a === void 0 ? void 0 : _a.name) ===
|
|
118
|
+
const astNodeParamType = ((_a = schema.getQueryType()) === null || _a === void 0 ? void 0 : _a.name) === graphqlTypeName
|
|
122
119
|
? constants_2.LUVIO_GRAPHQL_OPERATION_DEFINITION_NODE_IMPORT
|
|
123
120
|
: constants_2.LUVIO_GRAPHQL_FIELD_NODE_IMPORT;
|
|
124
121
|
const graphqlVariablesImport = importContext.importGraphQLArtifact('types', constants_3.TYPE_UTIL_IDENTIFIER, constants_3.GRAPHQL_VARIABLES_IDENTIFIER);
|
|
125
122
|
const getFieldKeyImport = importContext.importGraphQLArtifact('types', constants_3.TYPE_UTIL_IDENTIFIER, constants_3.GET_SERIALIZED_KEY_FOR_FIELD_IDENTIFIER);
|
|
126
123
|
const fragmentMapImport = importContext.importGraphQLArtifact('types', constants_3.TYPE_UTIL_IDENTIFIER, constants_3.GRAPHQL_FRAGMENT_MAP_IDENTIFIER);
|
|
127
124
|
return (0, deindent_1.default) `
|
|
128
|
-
export function
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
125
|
+
export function getFieldData(
|
|
126
|
+
source: ${interface_1.PARTIAL_INTERFACE_IDENTIFIER},
|
|
127
|
+
sel: ${constants_2.LUVIO_GRAPHQL_FIELD_NODE_IMPORT} ,
|
|
128
|
+
variables: ${graphqlVariablesImport}
|
|
129
|
+
) {
|
|
130
|
+
switch(sel.name.value){
|
|
131
|
+
${generateDataMapping(graphqlDsl, graphqlTypeName, def, normalizableTypeMap)}
|
|
132
|
+
default: {
|
|
133
|
+
const ${constants_3.FIELD_KEY_IDENTIFIER} = ${`${getFieldKeyImport}(sel, variables)`};
|
|
134
|
+
return source.data[${constants_3.FIELD_KEY_IDENTIFIER}];
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
export function selectType(typename: string, sel: ${constants_2.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}, ${constants_3.FIELD_DATA_IDENTIFIER}: any, reader: ${constants_1.ADAPTER_READER_IMPORT}<any>, key: ${constants_2.LUVIO_SELECTION_PROPERTY_KEY_IMPORT}, ${constants_3.SINK_IDENTIFIER}: any, variables: ${graphqlVariablesImport}, fragments: ${fragmentMapImport}) {
|
|
139
|
+
if (${constants_3.FIELD_DATA_IDENTIFIER} === null) {
|
|
140
|
+
${generateSelectScalar()}
|
|
141
|
+
return ${constants_3.SINK_IDENTIFIER};
|
|
142
|
+
}
|
|
143
|
+
switch(typename) {
|
|
144
|
+
${fieldSelectionByTypeCaseStatements}
|
|
145
|
+
}
|
|
146
|
+
return ${constants_3.SINK_IDENTIFIER};
|
|
147
|
+
}
|
|
148
|
+
export function buildSelectionForField(source: ${interface_1.PARTIAL_INTERFACE_IDENTIFIER}, reader: ${constants_1.ADAPTER_READER_IMPORT}<any>, sel: ${constants_2.LUVIO_GRAPHQL_FIELD_NODE_IMPORT} , variables: ${graphqlVariablesImport}, fragments: ${fragmentMapImport}) {
|
|
149
|
+
const ${constants_3.SINK_IDENTIFIER}: Record<string, any> = {}
|
|
150
|
+
const ${constants_3.FIELD_DATA_IDENTIFIER} = getFieldData(source, sel, variables);
|
|
133
151
|
const ${constants_3.REQUESTED_FIELD_NAME_IDENTIFIER} = sel.alias ? sel.alias.value : sel.name.value;
|
|
134
|
-
|
|
135
|
-
|
|
152
|
+
|
|
153
|
+
if(${constants_3.FIELD_DATA_IDENTIFIER} === undefined) {
|
|
154
|
+
reader.markMissing();
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if(${constants_3.FIELD_DATA_IDENTIFIER} === null) {
|
|
159
|
+
reader.assignScalar(${constants_3.REQUESTED_FIELD_NAME_IDENTIFIER}, ${constants_3.SINK_IDENTIFIER}, ${constants_3.FIELD_DATA_IDENTIFIER});
|
|
160
|
+
return sink;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
const fieldType = ${constants_3.GET_FIELD_TYPE_IDENTIFIER}(sel);
|
|
164
|
+
if(fieldType.isArray) {
|
|
165
|
+
const arraySink: any[] = [];
|
|
166
|
+
for(let i = 0, len = ${constants_3.FIELD_DATA_IDENTIFIER}.length; i < len; i += 1) {
|
|
167
|
+
reader.enterPath(i);
|
|
168
|
+
selectType(fieldType.typename, sel, ${constants_3.FIELD_DATA_IDENTIFIER}[i], reader, i, arraySink, variables, fragments);
|
|
169
|
+
reader.exitPath();
|
|
170
|
+
}
|
|
171
|
+
reader.assignNonScalar(${constants_3.SINK_IDENTIFIER}, ${constants_3.REQUESTED_FIELD_NAME_IDENTIFIER}, arraySink);
|
|
172
|
+
} else {
|
|
173
|
+
selectType(fieldType.typename, sel, ${constants_3.FIELD_DATA_IDENTIFIER}, reader, ${constants_3.REQUESTED_FIELD_NAME_IDENTIFIER}, ${constants_3.SINK_IDENTIFIER}, variables, fragments);
|
|
136
174
|
}
|
|
137
|
-
|
|
175
|
+
|
|
176
|
+
return ${constants_3.SINK_IDENTIFIER};
|
|
138
177
|
}
|
|
139
178
|
export function buildSelectionForNode(source: ${interface_1.PARTIAL_INTERFACE_IDENTIFIER}, reader: ${constants_1.ADAPTER_READER_IMPORT}<any>, selectionNode: ${constants_2.LUVIO_GRAPHQL_SELECTION_NODE_IMPORT} , variables: ${graphqlVariablesImport}, fragments: ${fragmentMapImport}) {
|
|
140
|
-
const ${constants_3.SINK_IDENTIFIER}: any = {}
|
|
179
|
+
const ${constants_3.SINK_IDENTIFIER}: Record<string, any> = {}
|
|
141
180
|
if(selectionNode.directives) {
|
|
142
181
|
const selectionWithDirectives = ${importContext.importGraphQLArtifact('directives', util_1.DIRECTIVE_UTIL_MODULE_IDENTIFIER, util_1.APPLY_DIRECTIVES_FOR_SELECTION_IDENTIFIER)}(selectionNode, variables);
|
|
143
182
|
if (selectionWithDirectives === undefined) {
|
|
@@ -150,7 +189,7 @@ function generateSelect(graphqlDsl, typeName, def, importContext, _metadata) {
|
|
|
150
189
|
// Get selections out of the inline fragment
|
|
151
190
|
selectionNode.selectionSet.selections.forEach(fragmentSelection => {
|
|
152
191
|
// Call into field handling with selections
|
|
153
|
-
Object.assign(
|
|
192
|
+
Object.assign(${constants_3.SINK_IDENTIFIER}, buildSelectionForNode(source, reader, fragmentSelection, variables, fragments));
|
|
154
193
|
});
|
|
155
194
|
}
|
|
156
195
|
}
|
|
@@ -159,22 +198,35 @@ function generateSelect(graphqlDsl, typeName, def, importContext, _metadata) {
|
|
|
159
198
|
if(namedFragment && namedFragment.typeCondition.name.value === name) {
|
|
160
199
|
namedFragment.selectionSet.selections.forEach(fragmentSelection => {
|
|
161
200
|
// Call into field handling with selections
|
|
162
|
-
Object.assign(
|
|
201
|
+
Object.assign(${constants_3.SINK_IDENTIFIER}, buildSelectionForNode(source, reader, fragmentSelection, variables, fragments));
|
|
163
202
|
});
|
|
164
203
|
}
|
|
165
204
|
}
|
|
166
205
|
if(selectionNode.kind === "Field") {
|
|
167
|
-
Object.assign(
|
|
206
|
+
Object.assign(${constants_3.SINK_IDENTIFIER}, buildSelectionForField(source, reader, selectionNode, variables, fragments));
|
|
168
207
|
}
|
|
169
208
|
return ${constants_3.SINK_IDENTIFIER};
|
|
170
209
|
}
|
|
171
210
|
export function select(field: ${astNodeParamType}, variables: ${graphqlVariablesImport}, fragments: ${fragmentMapImport}) {
|
|
172
211
|
return (source: ${interface_1.PARTIAL_INTERFACE_IDENTIFIER}, reader: ${constants_1.ADAPTER_READER_IMPORT}<any>): ${interface_1.PARTIAL_INTERFACE_IDENTIFIER} | undefined => {
|
|
173
|
-
const ${constants_3.SINK_IDENTIFIER}: any = {}
|
|
212
|
+
const ${constants_3.SINK_IDENTIFIER}: Record<string, any> = {};
|
|
213
|
+
|
|
214
|
+
// careful - may need to get the reader fragment from each type in RAML in the future
|
|
215
|
+
if (source.__link !== undefined) {
|
|
216
|
+
source.__linkedData = reader.read({
|
|
217
|
+
recordId: source.__link.__ref,
|
|
218
|
+
node: {
|
|
219
|
+
kind: 'Fragment',
|
|
220
|
+
private: [],
|
|
221
|
+
opaque: true,
|
|
222
|
+
},
|
|
223
|
+
variables: {}
|
|
224
|
+
});
|
|
225
|
+
}
|
|
174
226
|
field.selectionSet?.selections.forEach((sel) => {
|
|
175
|
-
Object.assign(
|
|
227
|
+
Object.assign(${constants_3.SINK_IDENTIFIER}, buildSelectionForNode(source, reader, sel, variables, fragments));
|
|
176
228
|
});
|
|
177
|
-
return ${constants_3.SINK_IDENTIFIER};
|
|
229
|
+
return ${constants_3.SINK_IDENTIFIER} as ${interface_1.PARTIAL_INTERFACE_IDENTIFIER};
|
|
178
230
|
}
|
|
179
231
|
}
|
|
180
232
|
`;
|
|
@@ -182,9 +234,7 @@ function generateSelect(graphqlDsl, typeName, def, importContext, _metadata) {
|
|
|
182
234
|
exports.generateSelect = generateSelect;
|
|
183
235
|
function generateSelectScalar() {
|
|
184
236
|
return (0, deindent_1.default) `
|
|
185
|
-
|
|
186
|
-
reader.assignScalar(${constants_3.REQUESTED_FIELD_NAME_IDENTIFIER}, ${constants_3.SINK_IDENTIFIER}, ${constants_3.FIELD_DATA_IDENTIFIER});
|
|
187
|
-
}
|
|
237
|
+
reader.assignScalar(key, ${constants_3.SINK_IDENTIFIER}, ${constants_3.FIELD_DATA_IDENTIFIER});
|
|
188
238
|
`;
|
|
189
239
|
}
|
|
190
240
|
//# sourceMappingURL=select.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/select.ts"],"names":[],"mappings":";;;;;;AAAA,uEAA+C;AAC/C,uDAAgE;
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/select.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateGetFieldType = void 0;
|
|
4
|
+
const constants_1 = require("../../shared/constants");
|
|
5
|
+
const types_1 = require("../utils/types");
|
|
6
|
+
const constants_2 = require("./constants");
|
|
7
|
+
function generateGetFieldType(graphqlDsl, def) {
|
|
8
|
+
const { schema } = graphqlDsl;
|
|
9
|
+
const type = schema.getType(def.name.value);
|
|
10
|
+
if (!type) {
|
|
11
|
+
return '';
|
|
12
|
+
}
|
|
13
|
+
const fieldCaseStatements = (0, types_1.getObjectFields)(def)
|
|
14
|
+
.map((field) => {
|
|
15
|
+
const fieldName = field.name.value;
|
|
16
|
+
const type = field.type;
|
|
17
|
+
const isArrayAsString = isListType(type) ? 'true' : 'false';
|
|
18
|
+
const typeName = (0, types_1.resolveTypeName)(type);
|
|
19
|
+
return `
|
|
20
|
+
case '${fieldName}': {
|
|
21
|
+
return {
|
|
22
|
+
isArray: ${isArrayAsString},
|
|
23
|
+
typename: '${typeName}'
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
`;
|
|
27
|
+
})
|
|
28
|
+
.join('\n');
|
|
29
|
+
return `export function ${constants_2.GET_FIELD_TYPE_IDENTIFIER}(field: ${constants_1.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}): { isArray: boolean, typename: string } {
|
|
30
|
+
switch(field.name.value) {
|
|
31
|
+
${fieldCaseStatements}
|
|
32
|
+
default:
|
|
33
|
+
throw new Error(\`No type found for \${field.name.value}\`)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
`;
|
|
37
|
+
}
|
|
38
|
+
exports.generateGetFieldType = generateGetFieldType;
|
|
39
|
+
function isListType(type) {
|
|
40
|
+
switch (type.kind) {
|
|
41
|
+
case 'ListType':
|
|
42
|
+
return true;
|
|
43
|
+
case 'NamedType':
|
|
44
|
+
return false;
|
|
45
|
+
case 'NonNullType':
|
|
46
|
+
return isListType(type.type);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=type-from-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-from-field.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/type-from-field.ts"],"names":[],"mappings":";;;AAEA,sDAAyE;AACzE,0CAAkE;AAClE,2CAAwD;AAExD,SAAgB,oBAAoB,CAAC,UAA2B,EAAE,GAA6B;IAC3F,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;IAED,MAAM,mBAAmB,GAAG,IAAA,uBAAe,EAAC,GAAG,CAAC;SAC3C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACX,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAC5D,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,IAAI,CAAC,CAAC;QAEvC,OAAO;wBACK,SAAS;;mCAEE,eAAe;qCACb,QAAQ;;;aAGhC,CAAC;IACN,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhB,OAAO,mBAAmB,qCAAyB,WAAW,2CAA+B;;kBAE/E,mBAAmB;;;;;SAK5B,CAAC;AACV,CAAC;AAjCD,oDAiCC;AAED,SAAS,UAAU,CAAC,IAAc;IAC9B,QAAQ,IAAI,CAAC,IAAI,EAAE;QACf,KAAK,UAAU;YACX,OAAO,IAAI,CAAC;QAChB,KAAK,WAAW;YACZ,OAAO,KAAK,CAAC;QACjB,KAAK,aAAa;YACd,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACpC;AACL,CAAC"}
|
|
@@ -9,6 +9,7 @@ const constants_1 = require("../../adapter/constants");
|
|
|
9
9
|
const constants_2 = require("../../shared/constants");
|
|
10
10
|
const key_builder_1 = require("../key-builder");
|
|
11
11
|
const resource_params_1 = require("./resource-params");
|
|
12
|
+
const util_1 = require("../../adapter/util");
|
|
12
13
|
const RESOURCE_PARAMS_IDENTIFIER = 'params';
|
|
13
14
|
const SNAPSHOT_REFRESH_IDENTIFIER = 'snapshotRefresh';
|
|
14
15
|
const KEY_IDENTIFIER = 'key';
|
|
@@ -50,8 +51,10 @@ function generateGraphQLIngestError(importContext, resource, modelInfo) {
|
|
|
50
51
|
const resourceTypeIdentifier = importRamlArtifact(returnShapeId, returnShapeName);
|
|
51
52
|
const resourceRequestConfig = importRamlArtifact(id, resource_params_1.RESOURCE_PARAMS_INTERFACE);
|
|
52
53
|
const keyBuilder = importRamlArtifact(id, key_builder_1.RESOURCE_KEY_BUILDER_IDENTIFIER);
|
|
54
|
+
const { name: adapterName, id: adapterId } = resource.adapter;
|
|
55
|
+
const configInterfaceIdentifier = importRamlArtifact(adapterId, (0, util_1.buildConfigInterfaceName)(adapterName));
|
|
53
56
|
return (0, deindent_1.default) `
|
|
54
|
-
export function ${exports.RESOURCE_INGEST_ERROR_IDENTIFIER}(${constants_2.LUVIO_IDENTIFIER}: ${constants_2.LUVIO_IMPORT}, ${RESOURCE_PARAMS_IDENTIFIER}: ${resourceRequestConfig}, ${RESPONSE_IDENTIFIER}: ${constants_1.ADAPTER_ERROR_RESPONSE_INTERFACE_IDENTIFIER}, ${SNAPSHOT_REFRESH_IDENTIFIER}?: ${constants_1.ADAPTER_SNAPSHOT_REFRESH_INTERFACE}<${resourceTypeIdentifier}>): ${constants_1.ADAPTER_ERROR_SNAPSHOT_IMPORT} {
|
|
57
|
+
export function ${exports.RESOURCE_INGEST_ERROR_IDENTIFIER}(${constants_2.LUVIO_IDENTIFIER}: ${constants_2.LUVIO_IMPORT}, ${constants_1.ADAPTER_CONFIG_IDENTIFIER}: ${configInterfaceIdentifier}, ${RESOURCE_PARAMS_IDENTIFIER}: ${resourceRequestConfig}, ${RESPONSE_IDENTIFIER}: ${constants_1.ADAPTER_ERROR_RESPONSE_INTERFACE_IDENTIFIER}, ${SNAPSHOT_REFRESH_IDENTIFIER}?: ${constants_1.ADAPTER_SNAPSHOT_REFRESH_INTERFACE}<${resourceTypeIdentifier}>): ${constants_1.ADAPTER_ERROR_SNAPSHOT_IMPORT} {
|
|
55
58
|
const ${KEY_IDENTIFIER} = ${keyBuilder}(${constants_2.LUVIO_IDENTIFIER}, ${RESOURCE_PARAMS_IDENTIFIER});
|
|
56
59
|
const ${ERROR_SNAPSHOT_IDENTIFIER} = ${constants_2.LUVIO_IDENTIFIER}.errorSnapshot(${RESPONSE_IDENTIFIER}, ${SNAPSHOT_REFRESH_IDENTIFIER});
|
|
57
60
|
${getIngestCode(importContext, returnShapeId, modelInfo)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest-error.js","sourceRoot":"","sources":["../../../../src/codegen/resource/graphql/ingest-error.ts"],"names":[],"mappings":";;;;;;AACA,uEAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"ingest-error.js","sourceRoot":"","sources":["../../../../src/codegen/resource/graphql/ingest-error.ts"],"names":[],"mappings":";;;;;;AACA,uEAA+C;AAC/C,uDAKiC;AACjC,sDAAwE;AACxE,gDAAiE;AACjE,uDAA8D;AAG9D,6CAA8D;AAE9D,MAAM,0BAA0B,GAAG,QAAQ,CAAC;AAC5C,MAAM,2BAA2B,GAAG,iBAAiB,CAAC;AACtD,MAAM,cAAc,GAAG,KAAK,CAAC;AAC7B,MAAM,yBAAyB,GAAG,eAAe,CAAC;AAClD,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAEvB,QAAA,gCAAgC,GAAG,aAAa,CAAC;AAE9D,SAAS,aAAa,CAAC,aAA4B,EAAE,OAAe,EAAE,SAAoB;IACtF,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,QAAQ,EAAE;QACV,MAAM,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,GAAG,aAAa,CAAC;QAChE,MAAM,aAAa,GAAG,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;QAE9E,OAAO,IAAA,kBAAQ,EAAA;;uBAEA,aAAa;6BACP,UAAU;sCACD,mBAAmB;;cAE3C,4BAAgB,qBAAqB,cAAc,KAAK,yBAAyB;SACtF,CAAC;KACL;IAED,OAAO,IAAA,kBAAQ,EAAA;UACT,4BAAgB,qBAAqB,cAAc,KAAK,yBAAyB;KACtF,CAAC;AACN,CAAC;AAED,iFAAiF;AACjF,4FAA4F;AAC5F,yFAAyF;AACzF,SAAgB,0BAA0B,CACtC,aAA4B,EAC5B,QAAyB,EACzB,SAAoB;IAEpB,MAAM,EAAE,kBAAkB,EAAE,GAAG,aAAa,CAAC;IAC7C,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;IAErC,IAAI,WAAW,KAAK,SAAS,EAAE;QAC3B,6BAA6B;QAC7B,OAAO,EAAE,CAAC;KACb;IAED,MAAM,aAAa,GAAG,WAAW,CAAC,EAAE,CAAC;IACrC,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC;IACzC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;IAClF,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,EAAE,EAAE,2CAAyB,CAAC,CAAC;IAChF,MAAM,UAAU,GAAG,kBAAkB,CAAC,EAAE,EAAE,6CAA+B,CAAC,CAAC;IAE3E,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,OAAQ,CAAC;IAC/D,MAAM,yBAAyB,GAAG,kBAAkB,CAChD,SAAS,EACT,IAAA,+BAAwB,EAAC,WAAW,CAAC,CACxC,CAAC;IAEF,OAAO,IAAA,kBAAQ,EAAA;0BACO,wCAAgC,IAAI,4BAAgB,KAAK,wBAAY,KAAK,qCAAyB,KAAK,yBAAyB,KAAK,0BAA0B,KAAK,qBAAqB,KAAK,mBAAmB,KAAK,uDAA2C,KAAK,2BAA2B,MAAM,8CAAkC,IAAI,sBAAsB,OAAO,yCAA6B;oBAC9Y,cAAc,MAAM,UAAU,IAAI,4BAAgB,KAAK,0BAA0B;oBACjF,yBAAyB,MAAM,4BAAgB,kBAAkB,mBAAmB,KAAK,2BAA2B;cAC1H,aAAa,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,CAAC;qBAC/C,yBAAyB;;KAEzC,CAAC;AACN,CAAC;AAjCD,gEAiCC"}
|
|
@@ -12,6 +12,7 @@ const key_builder_1 = require("../key-builder");
|
|
|
12
12
|
const resource_params_1 = require("./resource-params");
|
|
13
13
|
const constants_3 = require("../constants");
|
|
14
14
|
const constants_4 = require("../../graphql/type/constants");
|
|
15
|
+
const util_1 = require("../../adapter/util");
|
|
15
16
|
exports.RESOURCE_INGEST_SUCCESS_IDENTIFIER = 'ingestSuccess';
|
|
16
17
|
const RESPONSE_IDENTIFIER = 'response';
|
|
17
18
|
const KEY_IDENTIFIER = 'key';
|
|
@@ -32,15 +33,17 @@ function generateGraphQLIngestSuccess(importContext, resource) {
|
|
|
32
33
|
const resourceRequestConfig = importRamlArtifact(resourceId, resource_params_1.RESOURCE_PARAMS_INTERFACE);
|
|
33
34
|
const select = importRamlArtifact(resourceId, constants_3.RESOURCE_SELECT_IDENTIFIER);
|
|
34
35
|
const graphqlVariablesImport = importContext.importGraphQLArtifact('types', constants_4.TYPE_UTIL_IDENTIFIER, constants_4.GRAPHQL_VARIABLES_IDENTIFIER);
|
|
36
|
+
const { name: adapterName, id: adapterId } = resource.adapter;
|
|
37
|
+
const configInterfaceIdentifier = importRamlArtifact(adapterId, (0, util_1.buildConfigInterfaceName)(adapterName));
|
|
35
38
|
return (0, deindent_1.default) `
|
|
36
|
-
export function ${exports.RESOURCE_INGEST_SUCCESS_IDENTIFIER}(${constants_2.LUVIO_IDENTIFIER}: ${constants_2.LUVIO_IMPORT}, ${constants_1.ADAPTER_RESOURCE_PARAMS_IDENTIFIER}: ${resourceRequestConfig}, ${RESPONSE_IDENTIFIER}: ${constants_1.ADAPTER_RESOURCE_RESPONSE_INTERFACE_IDENTIFIER}<${resourceTypeIdentifier}>${snapshotRefreshArgument}): ${constants_1.ADAPTER_FULFILLED_SNAPSHOT_IMPORT}<${resourceTypeIdentifier}, {}> | ${constants_1.ADAPTER_STALE_SNAPSHOT_IMPORT}<${resourceTypeIdentifier}, {}> | ${constants_1.ADAPTER_PENDING_SNAPSHOT_IMPORT}<${resourceTypeIdentifier}, any> {
|
|
39
|
+
export function ${exports.RESOURCE_INGEST_SUCCESS_IDENTIFIER}(${constants_2.LUVIO_IDENTIFIER}: ${constants_2.LUVIO_IMPORT}, ${constants_1.ADAPTER_CONFIG_IDENTIFIER}: ${configInterfaceIdentifier}, ${constants_1.ADAPTER_RESOURCE_PARAMS_IDENTIFIER}: ${resourceRequestConfig}, ${RESPONSE_IDENTIFIER}: ${constants_1.ADAPTER_RESOURCE_RESPONSE_INTERFACE_IDENTIFIER}<${resourceTypeIdentifier}>${snapshotRefreshArgument}): ${constants_1.ADAPTER_FULFILLED_SNAPSHOT_IMPORT}<${resourceTypeIdentifier}, {}> | ${constants_1.ADAPTER_STALE_SNAPSHOT_IMPORT}<${resourceTypeIdentifier}, {}> | ${constants_1.ADAPTER_PENDING_SNAPSHOT_IMPORT}<${resourceTypeIdentifier}, any> {
|
|
37
40
|
const { ${constants_1.ADAPTER_RESPONSE_BODY_IDENTIFIER} } = ${RESPONSE_IDENTIFIER};
|
|
38
41
|
const ${KEY_IDENTIFIER} = ${keyStatement};
|
|
39
42
|
const { query, variables } = ${constants_1.ADAPTER_RESOURCE_PARAMS_IDENTIFIER}.body;
|
|
40
43
|
${constants_2.LUVIO_IDENTIFIER}.storeIngest<${resourceTypeIdentifier}>(${KEY_IDENTIFIER}, ${ingestIdentifier}(query, variables as ${graphqlVariablesImport}), ${constants_1.ADAPTER_RESPONSE_BODY_IDENTIFIER});
|
|
41
44
|
const ${SNAPSHOT_IDENTIFIER} = ${constants_2.LUVIO_IDENTIFIER}.storeLookup<${resourceTypeIdentifier}>({
|
|
42
45
|
recordId: ${KEY_IDENTIFIER},
|
|
43
|
-
node: ${select}(${constants_2.LUVIO_IDENTIFIER}, ${constants_1.
|
|
46
|
+
node: ${select}(${constants_2.LUVIO_IDENTIFIER}, ${constants_1.ADAPTER_CONFIG_IDENTIFIER}),
|
|
44
47
|
variables: {},
|
|
45
48
|
}${snapshotRefreshIdentifier});
|
|
46
49
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest-success.js","sourceRoot":"","sources":["../../../../src/codegen/resource/graphql/ingest-success.ts"],"names":[],"mappings":";;;;;;AACA,uEAA+C;AAE/C,
|
|
1
|
+
{"version":3,"file":"ingest-success.js","sourceRoot":"","sources":["../../../../src/codegen/resource/graphql/ingest-success.ts"],"names":[],"mappings":";;;;;;AACA,uEAA+C;AAE/C,uDAUiC;AACjC,sDAAwE;AACxE,2DAAmE;AACnE,gDAAiE;AACjE,uDAA8D;AAC9D,4CAA0D;AAC1D,4DAAkG;AAClG,6CAA8D;AAEjD,QAAA,kCAAkC,GAAG,eAAe,CAAC;AAClE,MAAM,mBAAmB,GAAG,UAAU,CAAC;AACvC,MAAM,cAAc,GAAG,KAAK,CAAC;AAC7B,MAAM,mBAAmB,GAAG,UAAU,CAAC;AAEvC,SAAgB,4BAA4B,CACxC,aAA4B,EAC5B,QAAyB;IAEzB,MAAM,EAAE,kBAAkB,EAAE,GAAG,aAAa,CAAC;IAC7C,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;IACjD,IAAI,WAAW,KAAK,SAAS,EAAE;QAC3B,6BAA6B;QAC7B,OAAO,EAAE,CAAC;KACb;IAED,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,WAAW,CAAC;IACjE,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,aAAa,EAAE,sCAAuB,CAAC,CAAC;IAEpF,MAAM,YAAY,GAAG,GAAG,kBAAkB,CACtC,UAAU,EACV,6CAA+B,CAClC,IAAI,4BAAgB,KAAK,8CAAkC,GAAG,CAAC;IAEhE,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;IAElF,MAAM,uBAAuB,GAAG,KAAK,+CAAmC,MAAM,8CAAkC,IAAI,sBAAsB,GAAG,CAAC;IAC9I,MAAM,yBAAyB,GAAG,IAAI,GAAG,+CAAmC,CAAC;IAC7E,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,UAAU,EAAE,2CAAyB,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,kBAAkB,CAAC,UAAU,EAAE,sCAA0B,CAAC,CAAC;IAC1E,MAAM,sBAAsB,GAAG,aAAa,CAAC,qBAAqB,CAC9D,OAAO,EACP,gCAAoB,EACpB,wCAA4B,CAC/B,CAAC;IAEF,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,OAAQ,CAAC;IAC/D,MAAM,yBAAyB,GAAG,kBAAkB,CAChD,SAAS,EACT,IAAA,+BAAwB,EAAC,WAAW,CAAC,CACxC,CAAC;IAEF,OAAO,IAAA,kBAAQ,EAAA;0BACO,0CAAkC,IAAI,4BAAgB,KAAK,wBAAY,KAAK,qCAAyB,KAAK,yBAAyB,KAAK,8CAAkC,KAAK,qBAAqB,KAAK,mBAAmB,KAAK,0DAA8C,IAAI,sBAAsB,IAAI,uBAAuB,MAAM,6CAAiC,IAAI,sBAAsB,WAAW,yCAA6B,IAAI,sBAAsB,WAAW,2CAA+B,IAAI,sBAAsB;sBAC/gB,4CAAgC,QAAQ,mBAAmB;oBAC7D,cAAc,MAAM,YAAY;2CACT,8CAAkC;cAC/D,4BAAgB,gBAAgB,sBAAsB,KAAK,cAAc,KAAK,gBAAgB,wBAAwB,sBAAsB,MAAM,4CAAgC;oBAC5K,mBAAmB,MAAM,4BAAgB,gBAAgB,sBAAsB;4BACvE,cAAc;wBAClB,MAAM,IAAI,4BAAgB,KAAK,qCAAyB;;eAEjE,yBAAyB;;;qBAGnB,mBAAmB;;;;;qBAKnB,mBAAmB,QAAQ,6CAAiC,IAAI,sBAAsB,WAAW,yCAA6B,IAAI,sBAAsB;;KAExK,CAAC;AACN,CAAC;AA1DD,oEA0DC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { ImportContext } from '../../../utils/imports';
|
|
2
|
-
import type { GraphQLResource } from '../../../intermediate/resource';
|
|
2
|
+
import type { GraphQLResource, Resource } from '../../../intermediate/resource';
|
|
3
3
|
export declare function generateGraphQLKeyBuilder(importContext: ImportContext, resource: GraphQLResource): string;
|
|
4
|
+
export declare function generateGraphQLKey(importContext: ImportContext, returnShapeName: string, resource: Resource): string;
|
|
@@ -3,18 +3,20 @@ 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.generateGraphQLKeyBuilder = void 0;
|
|
6
|
+
exports.generateGraphQLKey = exports.generateGraphQLKeyBuilder = void 0;
|
|
7
7
|
const deindent_1 = __importDefault(require("../../../utils/deindent"));
|
|
8
8
|
const resource_params_1 = require("./resource-params");
|
|
9
9
|
const key_builder_1 = require("../key-builder");
|
|
10
|
+
const resource_1 = require("../../../intermediate/resource");
|
|
10
11
|
const constants_1 = require("../../shared/constants");
|
|
12
|
+
const constants_2 = require("../constants");
|
|
11
13
|
function generateGraphQLKeyBuilder(importContext, resource) {
|
|
12
14
|
let code;
|
|
13
15
|
const { id: resourceId, returnShape } = resource;
|
|
14
16
|
const resourceRequestConfig = importContext.importRamlArtifact(resourceId, resource_params_1.RESOURCE_PARAMS_INTERFACE);
|
|
15
17
|
code =
|
|
16
18
|
returnShape !== undefined //TODO: cleanup in W-11069204
|
|
17
|
-
? (
|
|
19
|
+
? generateGraphQLKey(importContext, returnShape === null || returnShape === void 0 ? void 0 : returnShape.name, resource)
|
|
18
20
|
: '';
|
|
19
21
|
return (0, deindent_1.default) `
|
|
20
22
|
export function ${key_builder_1.RESOURCE_KEY_BUILDER_IDENTIFIER}(${constants_1.LUVIO_IDENTIFIER}: ${constants_1.LUVIO_IMPORT}, params: ${resourceRequestConfig}): string {
|
|
@@ -23,4 +25,10 @@ function generateGraphQLKeyBuilder(importContext, resource) {
|
|
|
23
25
|
`;
|
|
24
26
|
}
|
|
25
27
|
exports.generateGraphQLKeyBuilder = generateGraphQLKeyBuilder;
|
|
28
|
+
function generateGraphQLKey(importContext, returnShapeName, resource) {
|
|
29
|
+
const keyCode = (0, key_builder_1.generateKeyFallback)(importContext, returnShapeName, resource);
|
|
30
|
+
// TODO: This is hacky, but I'm not sure of a better way without duplicating or refactoring a ton of code...
|
|
31
|
+
return keyCode.replace(`${constants_2.RESOURCE_PARAMS_IDENTIFIER}.${resource_1.CONFIG_PROPERTY_BODY}.query`, `${constants_1.LUVIO_GRAPHQL_PRINT_IMPORT}(${constants_2.RESOURCE_PARAMS_IDENTIFIER}.${resource_1.CONFIG_PROPERTY_BODY}.query)`);
|
|
32
|
+
}
|
|
33
|
+
exports.generateGraphQLKey = generateGraphQLKey;
|
|
26
34
|
//# sourceMappingURL=key-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-builder.js","sourceRoot":"","sources":["../../../../src/codegen/resource/graphql/key-builder.ts"],"names":[],"mappings":";;;;;;AAAA,uEAA+C;AAE/C,uDAA8D;AAC9D,gDAAsF;
|
|
1
|
+
{"version":3,"file":"key-builder.js","sourceRoot":"","sources":["../../../../src/codegen/resource/graphql/key-builder.ts"],"names":[],"mappings":";;;;;;AAAA,uEAA+C;AAE/C,uDAA8D;AAC9D,gDAAsF;AACtF,6DAAsE;AAGtE,sDAAoG;AACpG,4CAA0D;AAE1D,SAAgB,yBAAyB,CACrC,aAA4B,EAC5B,QAAyB;IAEzB,IAAI,IAAI,CAAC;IACT,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;IAEjD,MAAM,qBAAqB,GAAG,aAAa,CAAC,kBAAkB,CAC1D,UAAU,EACV,2CAAyB,CAC5B,CAAC;IAEF,IAAI;QACA,WAAW,KAAK,SAAS,CAAC,6BAA6B;YACnD,CAAC,CAAC,kBAAkB,CAAC,aAAa,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,EAAE,QAAQ,CAAC;YAChE,CAAC,CAAC,EAAE,CAAC;IAEb,OAAO,IAAA,kBAAQ,EAAA;8BACW,6CAA+B,IAAI,4BAAgB,KAAK,wBAAY,aAAa,qBAAqB;yBAC3G,IAAI;;SAEpB,CAAC;AACV,CAAC;AAtBD,8DAsBC;AAED,SAAgB,kBAAkB,CAC9B,aAA4B,EAC5B,eAAuB,EACvB,QAAkB;IAElB,MAAM,OAAO,GAAG,IAAA,iCAAmB,EAAC,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC9E,4GAA4G;IAC5G,OAAO,OAAO,CAAC,OAAO,CAClB,GAAG,sCAA0B,IAAI,+BAAoB,QAAQ,EAC7D,GAAG,sCAA0B,IAAI,sCAA0B,IAAI,+BAAoB,SAAS,CAC/F,CAAC;AACN,CAAC;AAXD,gDAWC"}
|
|
@@ -7,23 +7,24 @@ exports.generateGraphQLSelect = void 0;
|
|
|
7
7
|
const deindent_1 = __importDefault(require("../../../utils/deindent"));
|
|
8
8
|
const constants_1 = require("../../adapter/constants");
|
|
9
9
|
const constants_2 = require("../../shared/constants");
|
|
10
|
-
const resource_params_1 = require("./resource-params");
|
|
11
10
|
const constants_3 = require("../constants");
|
|
12
11
|
const constants_4 = require("../../graphql/type/constants");
|
|
12
|
+
const util_1 = require("../../adapter/util");
|
|
13
13
|
function generateGraphQLSelect(importContext, resource) {
|
|
14
14
|
const { importRamlArtifact } = importContext;
|
|
15
|
-
const {
|
|
15
|
+
const { returnShape } = resource;
|
|
16
16
|
if (returnShape === undefined) {
|
|
17
17
|
//TODO: cleanup in W-11069204
|
|
18
18
|
return '';
|
|
19
19
|
}
|
|
20
20
|
const { id: returnShapeId } = returnShape;
|
|
21
21
|
const typeSelect = importRamlArtifact(returnShapeId, 'select');
|
|
22
|
-
const resourceRequestConfig = importRamlArtifact(resourceId, resource_params_1.RESOURCE_PARAMS_INTERFACE);
|
|
23
22
|
const graphqlVariablesImport = importContext.importGraphQLArtifact('types', constants_4.TYPE_UTIL_IDENTIFIER, constants_4.GRAPHQL_VARIABLES_IDENTIFIER);
|
|
23
|
+
const { name: adapterName, id: adapterId } = resource.adapter;
|
|
24
|
+
const configInterfaceIdentifier = importRamlArtifact(adapterId, (0, util_1.buildConfigInterfaceName)(adapterName));
|
|
24
25
|
return (0, deindent_1.default) `
|
|
25
|
-
export function ${constants_3.RESOURCE_SELECT_IDENTIFIER}(${constants_2.LUVIO_IDENTIFIER}: ${constants_2.LUVIO_IMPORT}, ${
|
|
26
|
-
const { query, variables } = ${
|
|
26
|
+
export function ${constants_3.RESOURCE_SELECT_IDENTIFIER}(${constants_2.LUVIO_IDENTIFIER}: ${constants_2.LUVIO_IMPORT}, ${constants_1.ADAPTER_CONFIG_IDENTIFIER}: ${configInterfaceIdentifier}): ${constants_1.ADAPTER_FRAGMENT_IDENTIFIER} {
|
|
27
|
+
const { query, variables } = ${constants_1.ADAPTER_CONFIG_IDENTIFIER};
|
|
27
28
|
return ${typeSelect}(${constants_2.LUVIO_IDENTIFIER}, query, variables as ${graphqlVariablesImport});
|
|
28
29
|
}
|
|
29
30
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../../../src/codegen/resource/graphql/select.ts"],"names":[],"mappings":";;;;;;AACA,uEAA+C;AAE/C,
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../../../src/codegen/resource/graphql/select.ts"],"names":[],"mappings":";;;;;;AACA,uEAA+C;AAE/C,uDAAiG;AACjG,sDAAwE;AACxE,4CAA0D;AAC1D,4DAAkG;AAClG,6CAA8D;AAE9D,SAAgB,qBAAqB,CAAC,aAA4B,EAAE,QAAyB;IACzF,MAAM,EAAE,kBAAkB,EAAE,GAAG,aAAa,CAAC;IAC7C,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;IACjC,IAAI,WAAW,KAAK,SAAS,EAAE;QAC3B,6BAA6B;QAC7B,OAAO,EAAE,CAAC;KACb;IAED,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,WAAW,CAAC;IAE1C,MAAM,UAAU,GAAG,kBAAkB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC/D,MAAM,sBAAsB,GAAG,aAAa,CAAC,qBAAqB,CAC9D,OAAO,EACP,gCAAoB,EACpB,wCAA4B,CAC/B,CAAC;IAEF,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,OAAQ,CAAC;IAC/D,MAAM,yBAAyB,GAAG,kBAAkB,CAChD,SAAS,EACT,IAAA,+BAAwB,EAAC,WAAW,CAAC,CACxC,CAAC;IAEF,OAAO,IAAA,kBAAQ,EAAA;0BACO,sCAA0B,IAAI,4BAAgB,KAAK,wBAAY,KAAK,qCAAyB,KAAK,yBAAyB,MAAM,uCAA2B;2CAC3I,qCAAyB;qBAC/C,UAAU,IAAI,4BAAgB,yBAAyB,sBAAsB;;KAE7F,CAAC;AACN,CAAC;AA7BD,sDA6BC"}
|
|
@@ -47,13 +47,13 @@ function generateGraphQLInteropTypeSelect(shapeConfig, graphQLResource) {
|
|
|
47
47
|
node: {
|
|
48
48
|
kind: 'Fragment',
|
|
49
49
|
private: [],
|
|
50
|
-
opaque: true
|
|
50
|
+
opaque: true,
|
|
51
51
|
},
|
|
52
52
|
variables: {}
|
|
53
53
|
})
|
|
54
54
|
|
|
55
55
|
if(snapshot.data === undefined) {
|
|
56
|
-
return;
|
|
56
|
+
return {};
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
const data = ${GRAPHQL_QUERY_TYPE_SELECT_IMPORT}(def, variables, fragments)(snapshot.data as ${GRAPHQL_QUERY_TYPE_PARTIAL_INTERFACE_IMPORT}, builder);
|
|
@@ -10,6 +10,14 @@ const LANGUAGE = (0, deindent_1.default) `
|
|
|
10
10
|
export const { isArray: ArrayIsArray } = Array;
|
|
11
11
|
export const { stringify: JSONStringify } = JSON;
|
|
12
12
|
`;
|
|
13
|
+
const INTERFACE = (0, deindent_1.default) `
|
|
14
|
+
type AllowedPrimitives = boolean | string | number | Date | null /* add any types than should be considered as a value, say, DateTimeOffset */;
|
|
15
|
+
type Value<T> = T extends AllowedPrimitives ? T : RecursivePartial<T>;
|
|
16
|
+
export type RecursivePartial<T> = null | {
|
|
17
|
+
[P in keyof T]?:
|
|
18
|
+
T[P] extends Array<infer U> ? Array<Value<U>> | null : Value<T[P]> | null;
|
|
19
|
+
};
|
|
20
|
+
`;
|
|
13
21
|
const EQUALS_ARRAY = (0, deindent_1.default) `
|
|
14
22
|
export function equalsArray<U, V extends U[]>(
|
|
15
23
|
a: V,
|
|
@@ -96,7 +104,15 @@ const ASSIGN_METADATA = (0, deindent_1.default) `
|
|
|
96
104
|
}
|
|
97
105
|
`;
|
|
98
106
|
function generateShapeUtils() {
|
|
99
|
-
return [
|
|
107
|
+
return [
|
|
108
|
+
LANGUAGE,
|
|
109
|
+
INTERFACE,
|
|
110
|
+
EQUALS_ARRAY,
|
|
111
|
+
EQUALS_OBJECT,
|
|
112
|
+
DEEP_FREEZE,
|
|
113
|
+
CREATE_LINK,
|
|
114
|
+
ASSIGN_METADATA,
|
|
115
|
+
].join('\n\n');
|
|
100
116
|
}
|
|
101
117
|
exports.generateShapeUtils = generateShapeUtils;
|
|
102
118
|
//# sourceMappingURL=shape-utils.js.map
|