@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
|
@@ -3,127 +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.generateIngest =
|
|
6
|
+
exports.generateIngest = 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
|
+
const convert_1 = require("./convert");
|
|
11
12
|
const constants_2 = require("./constants");
|
|
12
13
|
const interface_1 = require("./interface");
|
|
13
|
-
const
|
|
14
|
+
const FIELD_TYPE_IDENTIFIER = 'fieldType';
|
|
14
15
|
const REQUESTED_FIELDS_IDENTIFIER = 'requestedFields';
|
|
15
|
-
function
|
|
16
|
-
const graphqlTypeName = (0, utils_1.resolveTypeName)(typeNode);
|
|
17
|
-
const { importGraphQLArtifact } = importContext;
|
|
18
|
-
const isScalar = normalizableTypeMap[graphqlTypeName] === undefined;
|
|
19
|
-
const fieldName = field.name.value;
|
|
20
|
-
if (isScalar) {
|
|
21
|
-
return generateIngestScalarField(fieldName);
|
|
22
|
-
}
|
|
23
|
-
const typeNameIngestImport = importGraphQLArtifact('types', graphqlTypeName, constants_2.TYPE_INGEST_IDENTIFIER);
|
|
24
|
-
// TODO W-11326654 firm up type casting for fieldStateIdentifier in generated code
|
|
25
|
-
const fieldStateIdentifier = `${fieldName}State`;
|
|
26
|
-
return (0, deindent_1.default) `
|
|
27
|
-
case '${fieldName}': {
|
|
28
|
-
const ${fieldStateIdentifier} = {
|
|
29
|
-
...state,
|
|
30
|
-
path: {
|
|
31
|
-
parent: null,
|
|
32
|
-
propertyName: ${constants_2.FIELD_KEY_IDENTIFIER},
|
|
33
|
-
fullPath: key + '__' + ${constants_2.FIELD_KEY_IDENTIFIER}
|
|
34
|
-
},
|
|
35
|
-
data: ${constants_2.FIELD_DATA_IDENTIFIER},
|
|
36
|
-
};
|
|
37
|
-
dataSink[${constants_2.FIELD_KEY_IDENTIFIER}] = ${typeNameIngestImport}(
|
|
38
|
-
${constants_2.REQUESTED_FIELD_IDENTIFIER},
|
|
39
|
-
${fieldStateIdentifier} as any
|
|
40
|
-
) as any;
|
|
41
|
-
break;
|
|
42
|
-
}
|
|
43
|
-
`;
|
|
44
|
-
}
|
|
45
|
-
exports.ingestNamedType = ingestNamedType;
|
|
46
|
-
function ingestListType(field, typeNode, importContext, normalizableTypeMap) {
|
|
47
|
-
const { importGraphQLArtifact } = importContext;
|
|
48
|
-
const fieldName = field.name.value;
|
|
49
|
-
const graphqlTypeName = (0, utils_1.resolveTypeName)(typeNode);
|
|
50
|
-
const fullPathIdentifier = `fullPath__${fieldName}`;
|
|
51
|
-
const typeDefinition = normalizableTypeMap[graphqlTypeName];
|
|
52
|
-
const collectionIdentifier = `${fieldName}__items`;
|
|
53
|
-
// Non-normalizable types
|
|
54
|
-
if (typeDefinition === undefined) {
|
|
55
|
-
return generateIngestScalarField(fieldName);
|
|
56
|
-
}
|
|
57
|
-
const typeNameIngestImport = importGraphQLArtifact('types', graphqlTypeName, constants_2.TYPE_INGEST_IDENTIFIER);
|
|
58
|
-
// TODO W-11326654 firm up type casting for itemState in generated code
|
|
59
|
-
// and handle case where ingest returns undefined
|
|
60
|
-
return (0, deindent_1.default) `
|
|
61
|
-
case '${fieldName}': {
|
|
62
|
-
const ${collectionIdentifier}: ${constants_1.LUVIO_STORE_LINK_IMPORT}[] = [];
|
|
63
|
-
const ${fullPathIdentifier} = \`\${key}__\${${constants_2.FIELD_KEY_IDENTIFIER}}\`;
|
|
64
|
-
for(let i = 0, len = ${constants_2.FIELD_DATA_IDENTIFIER}.length; i < len; i++) {
|
|
65
|
-
const item = ${constants_2.FIELD_DATA_IDENTIFIER}[i];
|
|
66
|
-
|
|
67
|
-
const itemState = {
|
|
68
|
-
...state,
|
|
69
|
-
path: {
|
|
70
|
-
parent: null,
|
|
71
|
-
propertyName: i,
|
|
72
|
-
fullPath: ${fullPathIdentifier} + i
|
|
73
|
-
},
|
|
74
|
-
data: item,
|
|
75
|
-
};
|
|
76
|
-
${collectionIdentifier}[i] = ${typeNameIngestImport}(
|
|
77
|
-
${constants_2.REQUESTED_FIELD_IDENTIFIER},
|
|
78
|
-
itemState as any
|
|
79
|
-
) || {} as ${constants_1.LUVIO_STORE_LINK_IMPORT};
|
|
80
|
-
}
|
|
81
|
-
dataSink[${constants_2.FIELD_KEY_IDENTIFIER}] = ${collectionIdentifier};
|
|
82
|
-
break;
|
|
83
|
-
}
|
|
84
|
-
`;
|
|
85
|
-
}
|
|
86
|
-
exports.ingestListType = ingestListType;
|
|
87
|
-
function generateIngestScalarField(fieldName) {
|
|
88
|
-
return (0, deindent_1.default) `
|
|
89
|
-
case '${fieldName}': {
|
|
90
|
-
dataSink[${constants_2.FIELD_KEY_IDENTIFIER}] = ${constants_2.FIELD_DATA_IDENTIFIER};
|
|
91
|
-
break;
|
|
92
|
-
}
|
|
93
|
-
`;
|
|
94
|
-
}
|
|
95
|
-
function ingestType(field, typeNode, importContext, normalizableTypeMap) {
|
|
96
|
-
if (field === undefined) {
|
|
97
|
-
return '';
|
|
98
|
-
}
|
|
99
|
-
switch (typeNode.kind) {
|
|
100
|
-
case 'NamedType':
|
|
101
|
-
return ingestNamedType(field, typeNode, importContext, normalizableTypeMap);
|
|
102
|
-
case 'ListType':
|
|
103
|
-
return ingestListType(field, typeNode, importContext, normalizableTypeMap);
|
|
104
|
-
default:
|
|
105
|
-
return ingestType(field, typeNode.type, importContext, normalizableTypeMap);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
exports.ingestType = ingestType;
|
|
109
|
-
function generateObjectTypeIngest(graphqlDsl, graphqlTypeName, importContext, def, normalizableTypeMap) {
|
|
110
|
-
const { typeNameToExtensions } = graphqlDsl;
|
|
111
|
-
const fields = (0, types_1.getObjectFields)(def);
|
|
112
|
-
const fieldIngestStatements = fields
|
|
113
|
-
.filter((field) => field.type !== undefined)
|
|
114
|
-
.map((field) => {
|
|
115
|
-
// omit the fields that are mapped to RAML fields and delegate to RAML ingestion
|
|
116
|
-
const graphqlFieldName = field.name.value;
|
|
117
|
-
const ramlFieldName = (0, utils_2.getRamlFieldName)(typeNameToExtensions, graphqlTypeName, graphqlFieldName);
|
|
118
|
-
if (ramlFieldName !== undefined) {
|
|
119
|
-
return '';
|
|
120
|
-
}
|
|
121
|
-
return ingestType(field, field.type, importContext, normalizableTypeMap);
|
|
122
|
-
});
|
|
123
|
-
const eachFieldHandling = fieldIngestStatements.join('\n');
|
|
16
|
+
function generateObjectTypeIngest(importContext) {
|
|
124
17
|
const ingestStatements = [
|
|
125
18
|
getRequestedFieldsStatement(importContext),
|
|
126
|
-
iterateThroughResponseKeys(importContext
|
|
19
|
+
iterateThroughResponseKeys(importContext),
|
|
127
20
|
];
|
|
128
21
|
return ingestStatements.join('\n');
|
|
129
22
|
}
|
|
@@ -136,80 +29,43 @@ function getRequestedFieldsStatement(importContext) {
|
|
|
136
29
|
[];
|
|
137
30
|
`;
|
|
138
31
|
}
|
|
139
|
-
function iterateThroughResponseKeys(importContext
|
|
32
|
+
function iterateThroughResponseKeys(importContext) {
|
|
140
33
|
const getRequestedFieldImport = importContext.importGraphQLArtifact('types', constants_2.TYPE_UTIL_IDENTIFIER, constants_2.GET_REQUESTED_FIELD_IDENTIFIER);
|
|
141
34
|
const getFieldKeyImport = importContext.importGraphQLArtifact('types', constants_2.TYPE_UTIL_IDENTIFIER, constants_2.GET_SERIALIZED_KEY_FOR_FIELD_IDENTIFIER);
|
|
142
35
|
return (0, deindent_1.default) `
|
|
143
36
|
for(const ${constants_2.FIELD_DATA_KEY_IDENTIFIER} of Object.keys(data)){
|
|
144
37
|
const ${constants_2.FIELD_DATA_IDENTIFIER} = data[${constants_2.FIELD_DATA_KEY_IDENTIFIER}];
|
|
145
|
-
const ${constants_2.REQUESTED_FIELD_IDENTIFIER} = ${getRequestedFieldImport}(${constants_2.FIELD_DATA_KEY_IDENTIFIER}, ${REQUESTED_FIELDS_IDENTIFIER});
|
|
146
|
-
|
|
38
|
+
const ${constants_2.REQUESTED_FIELD_IDENTIFIER} = ${getRequestedFieldImport}(${constants_2.FIELD_DATA_KEY_IDENTIFIER}, ${REQUESTED_FIELDS_IDENTIFIER});
|
|
147
39
|
if(${constants_2.REQUESTED_FIELD_IDENTIFIER} === undefined) {
|
|
148
40
|
break; // TODO: (W-11132802) We got a field back we didn't ask for. Call handleUnknownField.
|
|
149
41
|
}
|
|
42
|
+
if(${constants_2.IS_MAPPED_FIELD_IDENTIFIER}(${constants_2.REQUESTED_FIELD_IDENTIFIER})) {
|
|
43
|
+
continue; // Skips scalar fields that are mapped to RAML.
|
|
44
|
+
}
|
|
150
45
|
const ${constants_2.FIELD_KEY_IDENTIFIER} = ${getFieldKeyImport}(${constants_2.REQUESTED_FIELD_IDENTIFIER}, state.variables);
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
${
|
|
46
|
+
const ${FIELD_TYPE_IDENTIFIER} = ${constants_2.GET_FIELD_TYPE_IDENTIFIER}(${constants_2.REQUESTED_FIELD_IDENTIFIER});
|
|
47
|
+
if (${constants_2.FIELD_DATA_IDENTIFIER} === null) {
|
|
48
|
+
${constants_2.SINK_IDENTIFIER}[${constants_2.FIELD_KEY_IDENTIFIER}] = ${constants_2.FIELD_DATA_IDENTIFIER};
|
|
49
|
+
continue; // Don't delegate null to type ingest.
|
|
154
50
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
const { importRamlArtifact } = importContext;
|
|
162
|
-
const ramlTypeName = (0, utils_2.getRamlTypeName)(typeNameToExtensions, graphqlTypeName);
|
|
163
|
-
if (ramlTypeName === undefined) {
|
|
164
|
-
return '';
|
|
165
|
-
}
|
|
166
|
-
const ramlTypeId = (0, utils_2.getRamlTypeIdByName)(ramlTypeName, modelInfo);
|
|
167
|
-
if (ramlTypeId === undefined) {
|
|
168
|
-
return '';
|
|
169
|
-
}
|
|
170
|
-
const ramlIngest = importRamlArtifact(ramlTypeId, constants_2.TYPE_INGEST_IDENTIFIER);
|
|
171
|
-
const ramlInterface = importRamlArtifact(ramlTypeId, ramlTypeName);
|
|
172
|
-
// get RAML mapping
|
|
173
|
-
const graphqlFields = (0, types_1.getObjectFields)(def);
|
|
174
|
-
const ramlIngestStatements = graphqlFields
|
|
175
|
-
.filter((graphqlField) => graphqlField.type !== undefined)
|
|
176
|
-
.map((graphqlField) => {
|
|
177
|
-
const graphqlFieldName = graphqlField.name.value;
|
|
178
|
-
const ramlFieldName = (0, utils_2.getRamlFieldName)(typeNameToExtensions, graphqlTypeName, graphqlFieldName);
|
|
179
|
-
if (ramlFieldName === undefined) {
|
|
180
|
-
return '';
|
|
181
|
-
}
|
|
182
|
-
return (0, deindent_1.default) `
|
|
183
|
-
if (responseKey === "${graphqlFieldName}") {
|
|
184
|
-
ramlSink["${ramlFieldName}"] = data["${graphqlFieldName}"];
|
|
51
|
+
if(${FIELD_TYPE_IDENTIFIER}.isArray && ${constants_2.FIELD_DATA_IDENTIFIER}.length !== undefined) {
|
|
52
|
+
const arrayLength = ${constants_2.FIELD_DATA_IDENTIFIER}.length;
|
|
53
|
+
const arraySink: any[] = new Array(arrayLength);
|
|
54
|
+
for(let i = 0, len = arrayLength; i < len; i += 1) {
|
|
55
|
+
const arrayFullPathKey = key + '__' + ${constants_2.FIELD_KEY_IDENTIFIER};
|
|
56
|
+
${constants_2.INGEST_FIELD_BY_TYPE_IDENTIFIER}(${FIELD_TYPE_IDENTIFIER}.typename, arrayFullPathKey, ${constants_2.REQUESTED_FIELD_IDENTIFIER}, arraySink, i, ${constants_2.FIELD_DATA_IDENTIFIER}[i], state);
|
|
185
57
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
}
|
|
191
|
-
return (0, deindent_1.default) `
|
|
192
|
-
export function convertGraphQLToRaml (state: ${graphqlStateInterface}<${interface_1.PARTIAL_INTERFACE_IDENTIFIER}>) {
|
|
193
|
-
const { path, data, ${constants_1.LUVIO_IDENTIFIER}, ${constants_1.LUVIO_STORE_IDENTIFIER}, ${constants_2.TIMESTAMP_IDENTIFIER} } = state;
|
|
194
|
-
const ramlSink: Partial<${ramlInterface}> = {};
|
|
195
|
-
const responseKeys = Object.keys(data);
|
|
196
|
-
for (const responseKey of responseKeys) {
|
|
197
|
-
${ramlIngestStatements.join('\n')}
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
// delegate type ingest to RAML ingest if the type is in RAML mapping
|
|
201
|
-
if (Object.keys(ramlSink).length === 0) {
|
|
202
|
-
return undefined;
|
|
203
|
-
}
|
|
204
|
-
const ramlTypeRef = ${ramlIngest}(ramlSink, path, ${constants_1.LUVIO_IDENTIFIER}, ${constants_1.LUVIO_STORE_IDENTIFIER}, ${constants_2.TIMESTAMP_IDENTIFIER});
|
|
205
|
-
return ramlTypeRef;
|
|
58
|
+
${constants_2.SINK_IDENTIFIER}[${constants_2.FIELD_KEY_IDENTIFIER}] = arraySink;
|
|
59
|
+
} else {
|
|
60
|
+
${constants_2.INGEST_FIELD_BY_TYPE_IDENTIFIER}(${FIELD_TYPE_IDENTIFIER}.typename, key, ${constants_2.REQUESTED_FIELD_IDENTIFIER}, ${constants_2.SINK_IDENTIFIER}, ${constants_2.FIELD_KEY_IDENTIFIER}, ${constants_2.FIELD_DATA_IDENTIFIER}, state);
|
|
61
|
+
}
|
|
206
62
|
}
|
|
207
63
|
`;
|
|
208
64
|
}
|
|
209
65
|
function generateIngest(graphqlDsl, graphqlTypeName, def, importContext, _metadata, modelInfo) {
|
|
210
66
|
var _a;
|
|
211
67
|
const { schema, typeNameToExtensions } = graphqlDsl;
|
|
212
|
-
const { importGraphQLArtifact, importAdapterUtil } = importContext;
|
|
68
|
+
const { importGraphQLArtifact, importAdapterUtil, importRamlArtifact } = importContext;
|
|
213
69
|
const normalizableTypeMap = (0, utils_1.getNormalizableTypeMap)(schema);
|
|
214
70
|
const createLink = importGraphQLArtifact('types', constants_2.TYPE_UTIL_IDENTIFIER, constants_2.CREATE_LINK_IDENTIFIER);
|
|
215
71
|
const graphqlStateInterface = importGraphQLArtifact('types', constants_2.TYPE_UTIL_IDENTIFIER, constants_2.GRAPHQL_INGEST_STATE_INTERFACE_IDENTIFIER);
|
|
@@ -220,36 +76,46 @@ function generateIngest(graphqlDsl, graphqlTypeName, def, importContext, _metada
|
|
|
220
76
|
const astNodeParamType = ((_a = schema.getQueryType()) === null || _a === void 0 ? void 0 : _a.name) === graphqlTypeName
|
|
221
77
|
? constants_1.LUVIO_GRAPHQL_OPERATION_DEFINITION_NODE_IMPORT
|
|
222
78
|
: constants_1.LUVIO_GRAPHQL_FIELD_NODE_IMPORT;
|
|
223
|
-
const
|
|
79
|
+
const convertToRaml = (0, convert_1.generateRamlConversion)(graphqlDsl, graphqlTypeName, importContext, def, modelInfo, graphqlStateInterface, normalizableTypeMap);
|
|
80
|
+
let ramlIngest = undefined;
|
|
81
|
+
const ramlTypeName = (0, utils_2.getRamlTypeName)(typeNameToExtensions, graphqlTypeName);
|
|
82
|
+
if (ramlTypeName !== undefined) {
|
|
83
|
+
const ramlTypeId = (0, utils_2.getRamlTypeIdByName)(ramlTypeName, modelInfo);
|
|
84
|
+
if (ramlTypeId !== undefined) {
|
|
85
|
+
ramlIngest = importRamlArtifact(ramlTypeId, constants_2.TYPE_INGEST_IDENTIFIER);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
224
88
|
return (0, deindent_1.default) `
|
|
225
89
|
|
|
226
|
-
${
|
|
90
|
+
${convertToRaml}
|
|
227
91
|
|
|
228
92
|
export function ingest(astNode: ${astNodeParamType}, state: ${graphqlStateInterface}<${interface_1.PARTIAL_INTERFACE_IDENTIFIER}>) {
|
|
229
|
-
const { path, ${constants_1.LUVIO_IDENTIFIER}, ${constants_1.LUVIO_STORE_IDENTIFIER}, ${constants_2.TIMESTAMP_IDENTIFIER} } = state;
|
|
230
|
-
const data = state.data;
|
|
93
|
+
const { path, data, ${constants_1.LUVIO_IDENTIFIER}, ${constants_1.LUVIO_STORE_IDENTIFIER}, ${constants_2.TIMESTAMP_IDENTIFIER} } = state;
|
|
231
94
|
const key = ${constants_2.KEY_BUILDER_IDENTIFIER}(${constants_1.LUVIO_IDENTIFIER}, path, data);
|
|
232
|
-
const
|
|
95
|
+
const ${constants_2.SINK_IDENTIFIER}: Record<string,any> = {};
|
|
233
96
|
|
|
234
|
-
//
|
|
235
|
-
${generateObjectTypeIngest(
|
|
97
|
+
// ingest field data
|
|
98
|
+
${generateObjectTypeIngest(importContext)}
|
|
236
99
|
|
|
237
100
|
// merge existing cache data and new request response data
|
|
238
101
|
let mergedData: Record<string,any>;
|
|
239
102
|
const existingData = ${constants_1.LUVIO_STORE_IDENTIFIER}.readEntry<${interface_1.PARTIAL_INTERFACE_IDENTIFIER}>(key);
|
|
240
103
|
if (existingData !== undefined && existingData !== null && existingData.__type !== "error") {
|
|
241
|
-
mergedData = mergeData(existingData as ${interface_1.PARTIAL_INTERFACE_IDENTIFIER},
|
|
104
|
+
mergedData = mergeData(existingData as ${interface_1.PARTIAL_INTERFACE_IDENTIFIER}, ${constants_2.SINK_IDENTIFIER} as ${interface_1.PARTIAL_INTERFACE_IDENTIFIER});
|
|
242
105
|
}
|
|
243
106
|
else {
|
|
244
|
-
mergedData = {data:
|
|
107
|
+
mergedData = {data: ${constants_2.SINK_IDENTIFIER}};
|
|
245
108
|
}
|
|
246
109
|
|
|
247
|
-
${
|
|
110
|
+
${convertToRaml === ''
|
|
248
111
|
? ''
|
|
249
112
|
: (0, deindent_1.default) `
|
|
250
|
-
//
|
|
251
|
-
const
|
|
252
|
-
if (
|
|
113
|
+
// delegate type ingest to RAML ingest if the type is in RAML mapping
|
|
114
|
+
const ramlSink = convertGraphQLToRaml(astNode, state);
|
|
115
|
+
if (ramlSink !== undefined) {
|
|
116
|
+
|
|
117
|
+
// partially ingest with RAML
|
|
118
|
+
const ramlTypeRef = ${ramlIngest}(ramlSink, path, ${constants_1.LUVIO_IDENTIFIER}, ${constants_1.LUVIO_STORE_IDENTIFIER}, ${constants_2.TIMESTAMP_IDENTIFIER});
|
|
253
119
|
mergedData["__link"] = ramlTypeRef;
|
|
254
120
|
}`}
|
|
255
121
|
|
|
@@ -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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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { ObjectTypeDefinitionNode } from '@luvio/graphql-parser';
|
|
2
|
+
import type { LuvioGraphQLDSL } from '../../../intermediate/graphql';
|
|
3
|
+
export declare function generateIsMappedField(graphqlDsl: LuvioGraphQLDSL, graphqlTypeName: string, def: ObjectTypeDefinitionNode): string;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateIsMappedField = void 0;
|
|
4
|
+
const constants_1 = require("../../shared/constants");
|
|
5
|
+
const types_1 = require("../utils/types");
|
|
6
|
+
const constants_2 = require("./constants");
|
|
7
|
+
const utils_1 = require("./utils");
|
|
8
|
+
function getMappedScalarFieldNames(graphqlDsl, graphqlTypeName, def) {
|
|
9
|
+
const { typeNameToExtensions, schema } = graphqlDsl;
|
|
10
|
+
const normalizableTypeMap = (0, types_1.getNormalizableTypeMap)(schema);
|
|
11
|
+
const graphqlFields = (0, types_1.getObjectFields)(def);
|
|
12
|
+
return graphqlFields
|
|
13
|
+
.filter(
|
|
14
|
+
// Filter to only mapped fields
|
|
15
|
+
(graphqlField) => (0, utils_1.getRamlFieldName)(typeNameToExtensions, graphqlTypeName, graphqlField.name.value) !==
|
|
16
|
+
undefined)
|
|
17
|
+
.filter(
|
|
18
|
+
// Filter to only scalar fields. Normalized fields might have their own mapping
|
|
19
|
+
(graphqlField) => {
|
|
20
|
+
const typename = (0, types_1.resolveTypeName)(graphqlField.type);
|
|
21
|
+
return normalizableTypeMap[typename] === undefined;
|
|
22
|
+
})
|
|
23
|
+
.map((graphqlField) => graphqlField.name.value);
|
|
24
|
+
}
|
|
25
|
+
function generateIsMappedField(graphqlDsl, graphqlTypeName, def) {
|
|
26
|
+
const mappedFields = getMappedScalarFieldNames(graphqlDsl, graphqlTypeName, def);
|
|
27
|
+
const functionBody = mappedFields.length > 0
|
|
28
|
+
? `
|
|
29
|
+
const mappedFields = [${mappedFields.map((field) => `'${field}'`).join(',')}];
|
|
30
|
+
return mappedFields.indexOf(field.name.value) !== -1;`
|
|
31
|
+
: `return false`;
|
|
32
|
+
return `export function ${constants_2.IS_MAPPED_FIELD_IDENTIFIER}(field: ${constants_1.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}): boolean {
|
|
33
|
+
${functionBody}
|
|
34
|
+
}`;
|
|
35
|
+
}
|
|
36
|
+
exports.generateIsMappedField = generateIsMappedField;
|
|
37
|
+
//# sourceMappingURL=is-mapped-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-mapped-field.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/is-mapped-field.ts"],"names":[],"mappings":";;;AAEA,sDAAyE;AACzE,0CAA0F;AAC1F,2CAAyD;AACzD,mCAA2C;AAE3C,SAAS,yBAAyB,CAC9B,UAA2B,EAC3B,eAAuB,EACvB,GAA6B;IAE7B,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IACpD,MAAM,mBAAmB,GAAG,IAAA,8BAAsB,EAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,IAAA,uBAAe,EAAC,GAAG,CAAC,CAAC;IAE3C,OAAO,aAAa;SACf,MAAM;IACH,+BAA+B;IAC/B,CAAC,YAAY,EAAE,EAAE,CACb,IAAA,wBAAgB,EAAC,oBAAoB,EAAE,eAAe,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAChF,SAAS,CAChB;SACA,MAAM;IACH,+EAA+E;IAC/E,CAAC,YAAY,EAAE,EAAE;QACb,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACpD,OAAO,mBAAmB,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC;IACvD,CAAC,CACJ;SACA,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAED,SAAgB,qBAAqB,CACjC,UAA2B,EAC3B,eAAuB,EACvB,GAA6B;IAE7B,MAAM,YAAY,GAAG,yBAAyB,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;IAEjF,MAAM,YAAY,GACd,YAAY,CAAC,MAAM,GAAG,CAAC;QACnB,CAAC,CAAC;gCACkB,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;8DACrB;QAClD,CAAC,CAAC,cAAc,CAAC;IAEzB,OAAO,mBAAmB,sCAA0B,WAAW,2CAA+B;UACxF,YAAY;MAChB,CAAC;AACP,CAAC;AAjBD,sDAiBC"}
|
|
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.generateKey = exports.findIdNode = void 0;
|
|
7
7
|
const deindent_1 = __importDefault(require("../../../utils/deindent"));
|
|
8
8
|
const constants_1 = require("../../adapter/constants");
|
|
9
|
-
const
|
|
9
|
+
const constants_2 = require("./constants");
|
|
10
10
|
const interface_1 = require("./interface");
|
|
11
|
-
const
|
|
11
|
+
const constants_3 = require("../../shared/constants");
|
|
12
12
|
function findIdNode(def) {
|
|
13
13
|
if (!('fields' in def)) {
|
|
14
14
|
return undefined;
|
|
@@ -29,7 +29,7 @@ function generateKey(def, importContext, schemaName) {
|
|
|
29
29
|
const idNode = findIdNode(def);
|
|
30
30
|
if (idNode === undefined) {
|
|
31
31
|
return (0, deindent_1.default) `
|
|
32
|
-
export function ${
|
|
32
|
+
export function ${constants_2.KEY_BUILDER_IDENTIFIER}(${constants_3.LUVIO_IDENTIFIER}: ${constants_3.LUVIO_IMPORT}, path: ${constants_1.ADAPTER_INGEST_PATH_INTERFACE_IDENTIFIER}, data: ${interface_1.PARTIAL_INTERFACE_IDENTIFIER}) {
|
|
33
33
|
return path.fullPath;
|
|
34
34
|
}
|
|
35
35
|
`;
|
|
@@ -37,7 +37,7 @@ function generateKey(def, importContext, schemaName) {
|
|
|
37
37
|
const { name } = idNode;
|
|
38
38
|
const KEY_PREFIX = importContext.importAdapterUtil('keyPrefix');
|
|
39
39
|
return (0, deindent_1.default) `
|
|
40
|
-
export function ${
|
|
40
|
+
export function ${constants_2.KEY_BUILDER_IDENTIFIER}(${constants_3.LUVIO_IDENTIFIER}: ${constants_3.LUVIO_IMPORT}, path: ${constants_1.ADAPTER_INGEST_PATH_INTERFACE_IDENTIFIER}, data: ${interface_1.PARTIAL_INTERFACE_IDENTIFIER}) {
|
|
41
41
|
return ${KEY_PREFIX} + '::${schemaName}::' + name + '::' + data.${name.value};
|
|
42
42
|
}
|
|
43
43
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/key.ts"],"names":[],"mappings":";;;;;;AAKA,uEAA+C;AAE/C,uDAAmF;AACnF,
|
|
1
|
+
{"version":3,"file":"key.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/key.ts"],"names":[],"mappings":";;;;;;AAKA,uEAA+C;AAE/C,uDAAmF;AACnF,2CAAqD;AACrD,2CAA2D;AAC3D,sDAAwE;AAExE,SAAgB,UAAU,CACtB,GAA2D;IAE3D,IAAI,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,EAAE;QACpB,OAAO,SAAS,CAAC;KACpB;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACvB,IAAI,MAAM,KAAK,SAAS,EAAE;QACtB,OAAO,SAAS,CAAC;KACpB;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QACzB,OAAO,CACH,KAAK,CAAC,IAAI,KAAK,iBAAiB;YAChC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa;YACjC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW;YACpC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CACtC,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC;AAlBD,gCAkBC;AAED,SAAgB,WAAW,CACvB,GAA2D,EAC3D,aAA4B,EAC5B,UAAkB;IAElB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAE/B,IAAI,MAAM,KAAK,SAAS,EAAE;QACtB,OAAO,IAAA,kBAAQ,EAAA;8BACO,kCAAsB,IAAI,4BAAgB,KAAK,wBAAY,WAAW,oDAAwC,WAAW,wCAA4B;;;SAG1K,CAAC;KACL;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACxB,MAAM,UAAU,GAAG,aAAa,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAChE,OAAO,IAAA,kBAAQ,EAAA;0BACO,kCAAsB,IAAI,4BAAgB,KAAK,wBAAY,WAAW,oDAAwC,WAAW,wCAA4B;qBAC1J,UAAU,SAAS,UAAU,4BAA4B,IAAI,CAAC,KAAK;;KAEnF,CAAC;AACN,CAAC;AAtBD,kCAsBC"}
|
|
@@ -2,4 +2,4 @@ import type { ObjectTypeDefinitionNode } from '@luvio/graphql-parser';
|
|
|
2
2
|
import type { ImportContext } from '../../../utils/imports';
|
|
3
3
|
import type { LuvioGraphQLDSL } from '../../../intermediate/graphql';
|
|
4
4
|
import type { GraphQLCodegenMetadata } from '../source-printer';
|
|
5
|
-
export declare function generateSelect(graphqlDsl: LuvioGraphQLDSL,
|
|
5
|
+
export declare function generateSelect(graphqlDsl: LuvioGraphQLDSL, graphqlTypeName: string, def: ObjectTypeDefinitionNode, importContext: ImportContext, _metadata: GraphQLCodegenMetadata): string;
|