@luvio/compiler 0.88.0 → 0.91.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/graphql/graphql-dsl.d.ts +1 -1
- package/dist/codegen/graphql/graphql-dsl.js +1 -1
- package/dist/codegen/graphql/graphql-dsl.js.map +1 -1
- package/dist/codegen/graphql/interface/index.js +2 -0
- package/dist/codegen/graphql/interface/index.js.map +1 -1
- package/dist/codegen/graphql/interface/ingest.d.ts +1 -1
- package/dist/codegen/graphql/interface/ingest.js +10 -4
- package/dist/codegen/graphql/interface/ingest.js.map +1 -1
- 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/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/generateTypeUtil.js +24 -2
- package/dist/codegen/graphql/type/generateTypeUtil.js.map +1 -1
- package/dist/codegen/graphql/type/index.d.ts +1 -1
- package/dist/codegen/graphql/type/index.js +9 -5
- 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 +58 -53
- package/dist/codegen/graphql/type/ingest.js.map +1 -1
- package/dist/codegen/graphql/type/interface.d.ts +2 -1
- package/dist/codegen/graphql/type/interface.js +66 -40
- package/dist/codegen/graphql/type/interface.js.map +1 -1
- package/dist/codegen/graphql/type/merge.d.ts +2 -0
- package/dist/codegen/graphql/type/merge.js +17 -0
- package/dist/codegen/graphql/type/merge.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/type/ttl.d.ts +1 -3
- package/dist/codegen/graphql/type/ttl.js +7 -11
- package/dist/codegen/graphql/type/ttl.js.map +1 -1
- package/dist/codegen/graphql/type/utils.d.ts +3 -0
- package/dist/codegen/graphql/type/utils.js +10 -0
- package/dist/codegen/graphql/type/utils.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/graphql/index.js +2 -2
- package/dist/codegen/resource/graphql/index.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/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.js +1 -1
- package/dist/codegen/shared/constants.d.ts +3 -0
- package/dist/codegen/shared/constants.js +4 -1
- package/dist/codegen/shared/constants.js.map +1 -1
- package/dist/intermediate/graphql.d.ts +2 -2
- package/dist/parser/annotation-graphql.js +1 -0
- package/dist/parser/annotation-graphql.js.map +1 -1
- package/dist/parser/resource.js +4 -4
- package/dist/parser/resource.js.map +1 -1
- package/package.json +4 -4
|
@@ -3,16 +3,17 @@ 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.
|
|
6
|
+
exports.generateInterfaces = exports.generateTypeReference = exports.PARTIAL_INTERFACE_IDENTIFIER = exports.MINIMUM_INTERFACE_IDENTIFIER = exports.TYPE_INTERFACE_IDENTIFIER = void 0;
|
|
7
7
|
const deindent_1 = __importDefault(require("../../../utils/deindent"));
|
|
8
8
|
const key_1 = require("./key");
|
|
9
|
+
const utils_1 = require("./utils");
|
|
9
10
|
exports.TYPE_INTERFACE_IDENTIFIER = 'Interface';
|
|
10
11
|
exports.MINIMUM_INTERFACE_IDENTIFIER = `Minimum${exports.TYPE_INTERFACE_IDENTIFIER}`;
|
|
11
12
|
exports.PARTIAL_INTERFACE_IDENTIFIER = `Partial${exports.TYPE_INTERFACE_IDENTIFIER}`;
|
|
12
13
|
function generateNamedTypeReference(type, importContext, scalarToPrimitiveMap) {
|
|
13
|
-
const
|
|
14
|
-
if (scalarToPrimitiveMap[
|
|
15
|
-
return scalarToPrimitiveMap[
|
|
14
|
+
const typeName = type.name.value;
|
|
15
|
+
if (scalarToPrimitiveMap[typeName] !== undefined) {
|
|
16
|
+
return scalarToPrimitiveMap[typeName];
|
|
16
17
|
}
|
|
17
18
|
return importContext.importGraphQLArtifact(typeName, exports.TYPE_INTERFACE_IDENTIFIER);
|
|
18
19
|
}
|
|
@@ -41,54 +42,79 @@ function generateTypeReference(type, importContext, scalarToPrimitiveMap, state)
|
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
44
|
exports.generateTypeReference = generateTypeReference;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
45
|
+
// Interface contains all fields of a GraphQL type
|
|
46
|
+
function generateInterface(def, importContext, scalarToPrimitiveMap) {
|
|
47
|
+
const { fields: graphqlFields } = def;
|
|
48
|
+
const graphqlFieldsToTypes = graphqlFields === undefined
|
|
49
|
+
? []
|
|
50
|
+
: graphqlFields.map((graphqlField) => {
|
|
51
|
+
const { name, type } = graphqlField;
|
|
52
|
+
return (0, deindent_1.default) `
|
|
53
|
+
${name.value}: ${generateTypeReference(type, importContext, scalarToPrimitiveMap, {
|
|
54
|
+
required: false,
|
|
55
|
+
array: false,
|
|
56
|
+
})}
|
|
57
|
+
`;
|
|
58
|
+
});
|
|
53
59
|
return (0, deindent_1.default) `
|
|
54
|
-
export interface ${exports.
|
|
55
|
-
${
|
|
60
|
+
export interface ${exports.TYPE_INTERFACE_IDENTIFIER} {
|
|
61
|
+
${graphqlFieldsToTypes.join(';\n')}
|
|
56
62
|
}
|
|
57
63
|
`;
|
|
58
64
|
}
|
|
59
|
-
function
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
function getRamlMappingFields(graphqlDsl, graphqlTypeName) {
|
|
66
|
+
let ramlMappingFields = [];
|
|
67
|
+
const { typeNameToExtensions } = graphqlDsl;
|
|
68
|
+
const extensionName = 'ramlMapping';
|
|
69
|
+
if ((0, utils_1.isTypeExtensionDefined)(typeNameToExtensions, graphqlTypeName, extensionName)) {
|
|
70
|
+
const graphQLToRamlPropertyMapping = typeNameToExtensions[graphqlTypeName][extensionName].graphQLToRamlPropertyMapping;
|
|
71
|
+
ramlMappingFields = Object.keys(graphQLToRamlPropertyMapping);
|
|
65
72
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
})}
|
|
73
|
-
`;
|
|
74
|
-
});
|
|
73
|
+
return ramlMappingFields;
|
|
74
|
+
}
|
|
75
|
+
// MinimumInterface contains all fields that a server response must has.
|
|
76
|
+
// Generally, it includes the ID field and all corresponding RAML fields specified by RAML mapping.
|
|
77
|
+
function generateMinimumInterface(def, graphqlDsl, graphqlTypeName) {
|
|
78
|
+
// ID field is always included in the minimum interface.
|
|
75
79
|
const idNode = (0, key_1.findIdNode)(def);
|
|
76
|
-
const
|
|
77
|
-
|
|
80
|
+
const idField = idNode === undefined ? [] : [idNode.name.value];
|
|
81
|
+
// Fields specified in the RAML mapping should also be incuded in the minimum interface.
|
|
82
|
+
const ramlMappingFields = getRamlMappingFields(graphqlDsl, graphqlTypeName);
|
|
83
|
+
// Dedupe - the ID field may also be in RAML mapping; don't want to generate it twice.
|
|
84
|
+
let graphqlFieldsNames = idField.concat(ramlMappingFields);
|
|
85
|
+
graphqlFieldsNames = [...new Set(graphqlFieldsNames)];
|
|
86
|
+
return (0, deindent_1.default) `
|
|
87
|
+
export interface ${exports.MINIMUM_INTERFACE_IDENTIFIER} {
|
|
88
|
+
${graphqlFieldsNames
|
|
89
|
+
.map((graphqlFieldsName) => {
|
|
90
|
+
return `${graphqlFieldsName}: Interface["${graphqlFieldsName}"]`;
|
|
91
|
+
})
|
|
92
|
+
.join(';\n')}
|
|
93
|
+
}
|
|
94
|
+
`;
|
|
95
|
+
}
|
|
96
|
+
function generatePartialInterface(minimumInterfaceString) {
|
|
97
|
+
const partialInterfaceDef = minimumInterfaceString === ''
|
|
78
98
|
? `Record<string, any>`
|
|
79
99
|
: `Record<string, any> & ${exports.MINIMUM_INTERFACE_IDENTIFIER}`;
|
|
80
100
|
return (0, deindent_1.default) `
|
|
81
|
-
export
|
|
82
|
-
|
|
83
|
-
|
|
101
|
+
export type ${exports.PARTIAL_INTERFACE_IDENTIFIER} = ${partialInterfaceDef};
|
|
102
|
+
`;
|
|
103
|
+
}
|
|
104
|
+
function generateObjectTypeDefinitionNode(graphqlDsl, graphqlTypeName, def, importContext, scalarToPrimitiveMap) {
|
|
105
|
+
const interfaceString = generateInterface(def, importContext, scalarToPrimitiveMap);
|
|
106
|
+
const minimumInterfaceString = generateMinimumInterface(def, graphqlDsl, graphqlTypeName);
|
|
107
|
+
const partialInterfaceString = generatePartialInterface(minimumInterfaceString);
|
|
108
|
+
return (0, deindent_1.default) `
|
|
109
|
+
${interfaceString}
|
|
84
110
|
|
|
85
|
-
${
|
|
111
|
+
${minimumInterfaceString}
|
|
86
112
|
|
|
87
|
-
|
|
113
|
+
${partialInterfaceString}
|
|
88
114
|
`;
|
|
89
115
|
}
|
|
90
|
-
function
|
|
91
|
-
return generateObjectTypeDefinitionNode(
|
|
116
|
+
function generateInterfaces(graphqlDsl, graphqlTypeName, def, importContext, metadata) {
|
|
117
|
+
return generateObjectTypeDefinitionNode(graphqlDsl, graphqlTypeName, def, importContext, metadata.scalarToPrimitiveMap);
|
|
92
118
|
}
|
|
93
|
-
exports.
|
|
119
|
+
exports.generateInterfaces = generateInterfaces;
|
|
94
120
|
//# sourceMappingURL=interface.js.map
|
|
@@ -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":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
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.generateMerge = void 0;
|
|
7
|
+
const interface_1 = require("./interface");
|
|
8
|
+
const deindent_1 = __importDefault(require("../../../utils/deindent"));
|
|
9
|
+
function generateMerge(importContext) {
|
|
10
|
+
return (0, deindent_1.default) `
|
|
11
|
+
export function mergeData(existingData: ${interface_1.PARTIAL_INTERFACE_IDENTIFIER}, newData: ${interface_1.PARTIAL_INTERFACE_IDENTIFIER}): ${interface_1.PARTIAL_INTERFACE_IDENTIFIER}{
|
|
12
|
+
return ${importContext.importTypeUtil('ObjectAssign')}(existingData, newData);
|
|
13
|
+
}
|
|
14
|
+
`;
|
|
15
|
+
}
|
|
16
|
+
exports.generateMerge = generateMerge;
|
|
17
|
+
//# sourceMappingURL=merge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/merge.ts"],"names":[],"mappings":";;;;;;AAAA,2CAA2D;AAC3D,uEAA+C;AAG/C,SAAgB,aAAa,CAAC,aAA4B;IACtD,OAAO,IAAA,kBAAQ,EAAA;kDAC+B,wCAA4B,cAAc,wCAA4B,MAAM,wCAA4B;qBACrI,aAAa,CAAC,cAAc,CAAC,cAAc,CAAC;;KAE5D,CAAC;AACN,CAAC;AAND,sCAMC"}
|
|
@@ -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;
|
|
@@ -0,0 +1,179 @@
|
|
|
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.generateSelect = void 0;
|
|
7
|
+
const deindent_1 = __importDefault(require("../../../utils/deindent"));
|
|
8
|
+
const constants_1 = require("../../adapter/constants");
|
|
9
|
+
const constants_2 = require("../../shared/constants");
|
|
10
|
+
const constants_3 = require("./constants");
|
|
11
|
+
const utils_1 = require("../utils");
|
|
12
|
+
const utils_2 = require("../utils");
|
|
13
|
+
const types_1 = require("../utils/types");
|
|
14
|
+
const interface_1 = require("./interface");
|
|
15
|
+
function selectListType(field, typeNode, importContext, normalizableTypeMap) {
|
|
16
|
+
if (typeNode.type === null) {
|
|
17
|
+
return '';
|
|
18
|
+
}
|
|
19
|
+
const typeName = (0, utils_1.resolveTypeName)(typeNode);
|
|
20
|
+
const isScalar = normalizableTypeMap[typeName] === undefined;
|
|
21
|
+
if (isScalar) {
|
|
22
|
+
return (0, deindent_1.default) `
|
|
23
|
+
if (${constants_3.FIELD_DATA_IDENTIFIER} !== undefined) {
|
|
24
|
+
reader.assignNonScalar(${constants_3.SINK_IDENTIFIER}, ${constants_3.REQUESTED_FIELD_NAME_IDENTIFIER}, source[${constants_3.FIELD_KEY_IDENTIFIER}]);
|
|
25
|
+
}
|
|
26
|
+
`;
|
|
27
|
+
}
|
|
28
|
+
const identifier = `data__${field.name.value}`;
|
|
29
|
+
const resolvedLinkIdentifier = `${identifier}ResolvedLink`;
|
|
30
|
+
const namedTypeSelect = importContext.importGraphQLArtifact(typeName, 'select');
|
|
31
|
+
const namedTypePartialInterface = importContext.importGraphQLArtifact(typeName, 'PartialInterface');
|
|
32
|
+
return (0, deindent_1.default) `
|
|
33
|
+
const arraySink = [];
|
|
34
|
+
for(let i = 0, len = ${constants_3.FIELD_DATA_IDENTIFIER}.length; i < len; i += 1) {
|
|
35
|
+
reader.enterPath(i);
|
|
36
|
+
const ${resolvedLinkIdentifier} = reader.read({
|
|
37
|
+
recordId: ${constants_3.FIELD_DATA_IDENTIFIER}[i].__ref,
|
|
38
|
+
node: {
|
|
39
|
+
kind: 'Fragment',
|
|
40
|
+
private: [],
|
|
41
|
+
opaque: true
|
|
42
|
+
},
|
|
43
|
+
variables: {}
|
|
44
|
+
});
|
|
45
|
+
if (${resolvedLinkIdentifier}.data === undefined) {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
const selected = ${namedTypeSelect}(sel, variables, fragments)(${resolvedLinkIdentifier}.data as ${namedTypePartialInterface}, reader);
|
|
49
|
+
reader.assignNonScalar(arraySink, i, selected);
|
|
50
|
+
reader.exitPath();
|
|
51
|
+
}
|
|
52
|
+
reader.assignNonScalar(${constants_3.SINK_IDENTIFIER}, ${constants_3.REQUESTED_FIELD_NAME_IDENTIFIER}, arraySink);
|
|
53
|
+
`;
|
|
54
|
+
}
|
|
55
|
+
function selectNamedType(field, typeNode, importContext, normalizableTypeMap) {
|
|
56
|
+
const fieldName = field.name.value;
|
|
57
|
+
const identifier = fieldName;
|
|
58
|
+
const resolvedLinkIdentifier = `${identifier}ResolvedLink`;
|
|
59
|
+
const typeName = typeNode.name.value;
|
|
60
|
+
const isScalar = normalizableTypeMap[typeName] === undefined;
|
|
61
|
+
// non-normalizable
|
|
62
|
+
if (isScalar) {
|
|
63
|
+
return generateSelectScalar();
|
|
64
|
+
}
|
|
65
|
+
const namedTypeSelect = importContext.importGraphQLArtifact(typeNode.name.value, 'select');
|
|
66
|
+
const namedTypePartialInterface = importContext.importGraphQLArtifact(typeNode.name.value, 'PartialInterface');
|
|
67
|
+
return (0, deindent_1.default) `
|
|
68
|
+
const ${resolvedLinkIdentifier} = reader.read({
|
|
69
|
+
recordId: ${constants_3.FIELD_DATA_IDENTIFIER}.__ref,
|
|
70
|
+
node: {
|
|
71
|
+
kind: 'Fragment',
|
|
72
|
+
private: [],
|
|
73
|
+
opaque: true
|
|
74
|
+
},
|
|
75
|
+
variables: {}
|
|
76
|
+
});
|
|
77
|
+
if (${resolvedLinkIdentifier}.data !== undefined) {
|
|
78
|
+
const result = ${namedTypeSelect}(sel, variables, fragments)(${resolvedLinkIdentifier}.data as ${namedTypePartialInterface}, reader);
|
|
79
|
+
reader.assignNonScalar(${constants_3.SINK_IDENTIFIER}, ${constants_3.REQUESTED_FIELD_NAME_IDENTIFIER}, result);
|
|
80
|
+
}`;
|
|
81
|
+
}
|
|
82
|
+
function selectType(field, typeNode, importContext, normalizableTypeMap) {
|
|
83
|
+
switch (typeNode.kind) {
|
|
84
|
+
case 'NamedType': {
|
|
85
|
+
return selectNamedType(field, typeNode, importContext, normalizableTypeMap);
|
|
86
|
+
}
|
|
87
|
+
case 'NonNullType': {
|
|
88
|
+
return selectType(field, typeNode.type, importContext, normalizableTypeMap);
|
|
89
|
+
}
|
|
90
|
+
case 'ListType': {
|
|
91
|
+
return selectListType(field, typeNode, importContext, normalizableTypeMap);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function generateSelect(graphqlDsl, typeName, def, importContext, _metadata) {
|
|
96
|
+
var _a;
|
|
97
|
+
const { schema } = graphqlDsl;
|
|
98
|
+
const type = schema.getType(def.name.value);
|
|
99
|
+
if (!type) {
|
|
100
|
+
return '';
|
|
101
|
+
}
|
|
102
|
+
const normalizableTypeMap = (0, utils_2.getNormalizableTypeMap)(schema);
|
|
103
|
+
const fieldSelectionCaseStatements = (0, types_1.getObjectFields)(def)
|
|
104
|
+
.map((field) => {
|
|
105
|
+
const fieldName = field.name.value;
|
|
106
|
+
const type = field.type;
|
|
107
|
+
if (type === null) {
|
|
108
|
+
return generateSelectScalar();
|
|
109
|
+
}
|
|
110
|
+
const body = selectType(field, field.type, importContext, normalizableTypeMap);
|
|
111
|
+
return (0, deindent_1.default) `
|
|
112
|
+
case '${fieldName}': {
|
|
113
|
+
${body}
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
`;
|
|
117
|
+
})
|
|
118
|
+
.join('\n');
|
|
119
|
+
const astNodeParamType = ((_a = schema.getQueryType()) === null || _a === void 0 ? void 0 : _a.name) === typeName
|
|
120
|
+
? constants_2.LUVIO_GRAPHQL_OPERATION_DEFINITION_NODE_IMPORT
|
|
121
|
+
: constants_2.LUVIO_GRAPHQL_FIELD_NODE_IMPORT;
|
|
122
|
+
const graphqlVariablesImport = importContext.importGraphQLArtifact(constants_3.TYPE_UTIL_IDENTIFIER, constants_3.GRAPHQL_VARIABLES_IDENTIFIER);
|
|
123
|
+
const getFieldKeyImport = importContext.importGraphQLArtifact(constants_3.TYPE_UTIL_IDENTIFIER, constants_3.GET_SERIALIZED_KEY_FOR_FIELD_IDENTIFIER);
|
|
124
|
+
const fragmentMapImport = importContext.importGraphQLArtifact(constants_3.TYPE_UTIL_IDENTIFIER, constants_3.GRAPHQL_FRAGMENT_MAP_IDENTIFIER);
|
|
125
|
+
return (0, deindent_1.default) `
|
|
126
|
+
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} ) {
|
|
127
|
+
// Get Key for Field (use util)
|
|
128
|
+
const ${constants_3.SINK_IDENTIFIER}: any = {}
|
|
129
|
+
const ${constants_3.FIELD_KEY_IDENTIFIER} = ${getFieldKeyImport}(sel, variables);
|
|
130
|
+
const ${constants_3.FIELD_DATA_IDENTIFIER} = source[${constants_3.FIELD_KEY_IDENTIFIER}];
|
|
131
|
+
const ${constants_3.REQUESTED_FIELD_NAME_IDENTIFIER} = sel.alias ? sel.alias.value : sel.name.value;
|
|
132
|
+
switch(sel.name.value) {
|
|
133
|
+
${fieldSelectionCaseStatements}
|
|
134
|
+
}
|
|
135
|
+
return sink;
|
|
136
|
+
}
|
|
137
|
+
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}) {
|
|
138
|
+
const ${constants_3.SINK_IDENTIFIER}: any = {}
|
|
139
|
+
if(selectionNode.kind === "InlineFragment") {
|
|
140
|
+
if(!selectionNode.typeCondition || selectionNode.typeCondition.name.value === name) {
|
|
141
|
+
// Get selections out of the inline fragment
|
|
142
|
+
selectionNode.selectionSet.selections.forEach(fragmentSelection => {
|
|
143
|
+
// Call into field handling with selections
|
|
144
|
+
Object.assign(sink, buildSelectionForNode(source, reader, fragmentSelection, variables, fragments));
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if(selectionNode.kind === "FragmentSpread") {
|
|
149
|
+
const namedFragment = fragments[selectionNode.name.value];
|
|
150
|
+
if(namedFragment && namedFragment.typeCondition.name.value === name) {
|
|
151
|
+
namedFragment.selectionSet.selections.forEach(fragmentSelection => {
|
|
152
|
+
// Call into field handling with selections
|
|
153
|
+
Object.assign(sink, buildSelectionForNode(source, reader, fragmentSelection, variables, fragments));
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if(selectionNode.kind === "Field") {
|
|
158
|
+
Object.assign(sink, buildSelectionForField(source, reader, selectionNode, variables, fragments));
|
|
159
|
+
}
|
|
160
|
+
return ${constants_3.SINK_IDENTIFIER};
|
|
161
|
+
}
|
|
162
|
+
export function select(field: ${astNodeParamType}, variables: ${graphqlVariablesImport}, fragments: ${fragmentMapImport}) {
|
|
163
|
+
return (source: ${interface_1.PARTIAL_INTERFACE_IDENTIFIER}, reader: ${constants_1.ADAPTER_READER_IMPORT}<any>): ${interface_1.PARTIAL_INTERFACE_IDENTIFIER} => {
|
|
164
|
+
const ${constants_3.SINK_IDENTIFIER}: any = {}
|
|
165
|
+
field.selectionSet.selections.forEach((sel) => {
|
|
166
|
+
Object.assign(sink, buildSelectionForNode(source, reader, sel, variables, fragments));
|
|
167
|
+
});
|
|
168
|
+
return ${constants_3.SINK_IDENTIFIER};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
`;
|
|
172
|
+
}
|
|
173
|
+
exports.generateSelect = generateSelect;
|
|
174
|
+
function generateSelectScalar() {
|
|
175
|
+
return `if(source[${constants_3.FIELD_KEY_IDENTIFIER}] !== undefined) {
|
|
176
|
+
reader.assignScalar(${constants_3.REQUESTED_FIELD_NAME_IDENTIFIER}, ${constants_3.SINK_IDENTIFIER}, source[${constants_3.FIELD_KEY_IDENTIFIER}]);
|
|
177
|
+
}`;
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/select.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
import type { GraphQLAnnotation } from '../../../intermediate/graphql-annotation';
|
|
2
1
|
import type { LuvioGraphQLDSL } from '../../../intermediate/graphql';
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function generateTtl(graphqlDsl: LuvioGraphQLDSL, typeName: string): string;
|
|
2
|
+
export declare function generateTtl(graphqlDsl: LuvioGraphQLDSL, graphqlTypeName: string): string;
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateTtl =
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
exports.isTypeTtlDefined = isTypeTtlDefined;
|
|
10
|
-
function generateTtl(graphqlDsl, typeName) {
|
|
11
|
-
const { typeExtensions } = graphqlDsl;
|
|
12
|
-
if (!isTypeTtlDefined(typeExtensions, typeName)) {
|
|
3
|
+
exports.generateTtl = void 0;
|
|
4
|
+
const utils_1 = require("./utils");
|
|
5
|
+
function generateTtl(graphqlDsl, graphqlTypeName) {
|
|
6
|
+
const { typeNameToExtensions } = graphqlDsl;
|
|
7
|
+
const extensionName = 'ttl';
|
|
8
|
+
if (!(0, utils_1.isTypeExtensionDefined)(typeNameToExtensions, graphqlTypeName, extensionName)) {
|
|
13
9
|
return '';
|
|
14
10
|
}
|
|
15
|
-
return `export const TTL = ${
|
|
11
|
+
return `export const TTL = ${typeNameToExtensions[graphqlTypeName][extensionName]};`;
|
|
16
12
|
}
|
|
17
13
|
exports.generateTtl = generateTtl;
|
|
18
14
|
//# sourceMappingURL=ttl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ttl.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/ttl.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ttl.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/ttl.ts"],"names":[],"mappings":";;;AAEA,mCAAiD;AAEjD,SAAgB,WAAW,CAAC,UAA2B,EAAE,eAAuB;IAC5E,MAAM,EAAE,oBAAoB,EAAE,GAAG,UAAU,CAAC;IAC5C,MAAM,aAAa,GAA+B,KAAK,CAAC;IAExD,IAAI,CAAC,IAAA,8BAAsB,EAAC,oBAAoB,EAAE,eAAe,EAAE,aAAa,CAAC,EAAE;QAC/E,OAAO,EAAE,CAAC;KACb;IACD,OAAO,sBAAsB,oBAAqB,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC;AAC1F,CAAC;AARD,kCAQC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { GraphQLAnnotation } from '../../../intermediate/graphql-annotation';
|
|
2
|
+
import type { GraphQLTypeExtension } from '../../../intermediate/graphql';
|
|
3
|
+
export declare function isTypeExtensionDefined(typeNameToExtensions: GraphQLAnnotation['typeNameToExtensions'] | undefined, graphqlTypeName: string, extensionName: keyof GraphQLTypeExtension): boolean;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isTypeExtensionDefined = void 0;
|
|
4
|
+
function isTypeExtensionDefined(typeNameToExtensions, graphqlTypeName, extensionName) {
|
|
5
|
+
return (typeNameToExtensions !== undefined &&
|
|
6
|
+
typeNameToExtensions[graphqlTypeName] !== undefined &&
|
|
7
|
+
typeNameToExtensions[graphqlTypeName][extensionName] !== undefined);
|
|
8
|
+
}
|
|
9
|
+
exports.isTypeExtensionDefined = isTypeExtensionDefined;
|
|
10
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/utils.ts"],"names":[],"mappings":";;;AAGA,SAAgB,sBAAsB,CAClC,oBAA2E,EAC3E,eAAuB,EACvB,aAAyC;IAEzC,OAAO,CACH,oBAAoB,KAAK,SAAS;QAClC,oBAAoB,CAAC,eAAe,CAAC,KAAK,SAAS;QACnD,oBAAoB,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,KAAK,SAAS,CACrE,CAAC;AACN,CAAC;AAVD,wDAUC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GraphQLSchema, GraphQLInterfaceType, GraphQLObjectType, TypeNode } from '@luvio/graphql-parser';
|
|
1
|
+
import type { GraphQLSchema, GraphQLInterfaceType, GraphQLObjectType, TypeNode, ObjectTypeDefinitionNode, FieldDefinitionNode } from '@luvio/graphql-parser';
|
|
2
2
|
import type { ShapeTtls } from '../../../intermediate/model-info';
|
|
3
3
|
export declare type NormalizableTypes = Record<string, GraphQLInterfaceType | GraphQLObjectType<any, any>>;
|
|
4
4
|
export declare function resolveTypeName(typeNode: TypeNode): string;
|
|
@@ -14,3 +14,9 @@ export declare function getNormalizableTypeMap(schema: GraphQLSchema): Normaliza
|
|
|
14
14
|
* When both are defined the shape TTL overrides root level TTL
|
|
15
15
|
*/
|
|
16
16
|
export declare function getShapeTtl(rootTtl: number | undefined, shapeId: string | undefined, shapeTtls: ShapeTtls | undefined): number;
|
|
17
|
+
export declare const TYPENAME_FIELD: FieldDefinitionNode;
|
|
18
|
+
/**
|
|
19
|
+
* Convenience function to ensure we're always handling graphql meta fields like __typename. Query authors can ask for them!
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
export declare function getObjectFields(def: ObjectTypeDefinitionNode): FieldDefinitionNode[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getShapeTtl = exports.getNormalizableTypeMap = exports.resolveFieldTypeName = exports.resolveTypeName = void 0;
|
|
3
|
+
exports.getObjectFields = exports.TYPENAME_FIELD = exports.getShapeTtl = exports.getNormalizableTypeMap = exports.resolveFieldTypeName = exports.resolveTypeName = void 0;
|
|
4
4
|
function resolveTypeName(typeNode) {
|
|
5
5
|
switch (typeNode.kind) {
|
|
6
6
|
case 'NamedType':
|
|
@@ -54,4 +54,31 @@ function getShapeTtl(rootTtl, shapeId, shapeTtls) {
|
|
|
54
54
|
return shapeTtl !== undefined ? shapeTtl : rootTtl;
|
|
55
55
|
}
|
|
56
56
|
exports.getShapeTtl = getShapeTtl;
|
|
57
|
+
exports.TYPENAME_FIELD = {
|
|
58
|
+
kind: 'FieldDefinition',
|
|
59
|
+
name: {
|
|
60
|
+
kind: 'Name',
|
|
61
|
+
value: '__typename',
|
|
62
|
+
},
|
|
63
|
+
type: {
|
|
64
|
+
kind: 'NonNullType',
|
|
65
|
+
type: {
|
|
66
|
+
kind: 'NamedType',
|
|
67
|
+
name: {
|
|
68
|
+
value: 'string',
|
|
69
|
+
kind: 'Name',
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
const OBJECT_TYPE_META_FIELDS = [exports.TYPENAME_FIELD]; // TODO: Support all meta fields?
|
|
75
|
+
/**
|
|
76
|
+
* Convenience function to ensure we're always handling graphql meta fields like __typename. Query authors can ask for them!
|
|
77
|
+
*
|
|
78
|
+
*/
|
|
79
|
+
function getObjectFields(def) {
|
|
80
|
+
const objectFields = def.fields ? def.fields : [];
|
|
81
|
+
return [...OBJECT_TYPE_META_FIELDS, ...objectFields];
|
|
82
|
+
}
|
|
83
|
+
exports.getObjectFields = getObjectFields;
|
|
57
84
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/utils/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/utils/types.ts"],"names":[],"mappings":";;;AAYA,SAAgB,eAAe,CAAC,QAAkB;IAC9C,QAAQ,QAAQ,CAAC,IAAI,EAAE;QACnB,KAAK,WAAW;YACZ,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/B;YACI,OAAO,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KAC7C;AACL,CAAC;AAPD,0CAOC;AAED,SAAgB,oBAAoB,CAAC,MAAqB,EAAE,KAAU;IAClE,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEtC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;QACrC,OAAO,IAAI,CAAC;KACf;IAED,OAAO,IAAI,CAAC,IAAI,CAAC;AACrB,CAAC;AAVD,oDAUC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,MAAqB;;IACxD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,mBAAmB,GAAsB,EAAE,CAAC;IAElD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;QAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE/B,IACI,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,MAAK,yBAAyB;YAChD,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,MAAK,sBAAsB,EAC/C;YACE,uDAAuD;YACvD,uFAAuF;YACvF,aAAa;YACb,mBAAmB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;SACxC;KACJ;IAED,OAAO,mBAAmB,CAAC;AAC/B,CAAC;AApBD,wDAoBC;AAED;;;GAGG;AACH,SAAgB,WAAW,CACvB,OAA2B,EAC3B,OAA2B,EAC3B,SAAgC;IAEhC,MAAM,QAAQ,GAAG,SAAS,IAAI,SAAS,CAAC,OAAQ,CAAC,CAAC;IAElD,IAAI,OAAO,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE;QACjD,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;KACrE;IAED,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAQ,CAAC;AACxD,CAAC;AAZD,kCAYC;AAEY,QAAA,cAAc,GAAwB;IAC/C,IAAI,EAAE,iBAAiB;IACvB,IAAI,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,YAAY;KACtB;IACD,IAAI,EAAE;QACF,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE;YACF,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE;gBACF,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,MAAM;aACf;SACJ;KACJ;CACJ,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,sBAAc,CAAC,CAAC,CAAC,iCAAiC;AACnF;;;GAGG;AACH,SAAgB,eAAe,CAAC,GAA6B;IACzD,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,OAAO,CAAC,GAAG,uBAAuB,EAAE,GAAG,YAAY,CAAC,CAAC;AACzD,CAAC;AAHD,0CAGC"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.generateGraphQLResource = void 0;
|
|
4
4
|
const imports_1 = require("../../../utils/imports");
|
|
5
5
|
const evict_success_1 = require("../evict-success");
|
|
6
|
-
const select_1 = require("
|
|
6
|
+
const select_1 = require("./select");
|
|
7
7
|
const resource_params_1 = require("./resource-params");
|
|
8
8
|
const ingest_error_1 = require("./ingest-error");
|
|
9
9
|
const ingest_success_1 = require("./ingest-success");
|
|
@@ -14,7 +14,7 @@ function generateGraphQLResource(typescriptFilePath, compilerBaseOutputDir, reso
|
|
|
14
14
|
const importContext = (0, imports_1.createImportContext)(typescriptFilePath, compilerBaseOutputDir, plugin);
|
|
15
15
|
const code = [
|
|
16
16
|
(0, resource_params_1.generateGraphQLResourceParams)(importContext),
|
|
17
|
-
(0, select_1.
|
|
17
|
+
(0, select_1.generateGraphQLSelect)(importContext, resource),
|
|
18
18
|
(0, key_builder_1.generateGraphQLKeyBuilder)(importContext, resource),
|
|
19
19
|
(0, response_cache_keys_1.generateGraphQLGetResponseCacheKeys)(importContext, resource),
|
|
20
20
|
(0, ingest_success_1.generateGraphQLIngestSuccess)(importContext, resource),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/codegen/resource/graphql/index.ts"],"names":[],"mappings":";;;AACA,oDAA6E;AAC7E,oDAAwD;AACxD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/codegen/resource/graphql/index.ts"],"names":[],"mappings":";;;AACA,oDAA6E;AAC7E,oDAAwD;AACxD,qCAAiD;AAIjD,uDAAkE;AAClE,iDAA4D;AAC5D,qDAAgE;AAChE,+CAA0D;AAC1D,+DAA4E;AAC5E,uEAAiF;AAEjF,SAAgB,uBAAuB,CACnC,kBAAmC,EACnC,qBAAsC,EACtC,QAAyB,EACzB,SAAoB,EACpB,MAAuB;IAEvB,MAAM,aAAa,GAAG,IAAA,6BAAmB,EAAC,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAE7F,MAAM,IAAI,GAAG;QACT,IAAA,+CAA6B,EAAC,aAAa,CAAC;QAC5C,IAAA,8BAAqB,EAAC,aAAa,EAAE,QAAQ,CAAC;QAC9C,IAAA,uCAAyB,EAAC,aAAa,EAAE,QAAQ,CAAC;QAClD,IAAA,yDAAmC,EAAC,aAAa,EAAE,QAAQ,CAAC;QAC5D,IAAA,6CAA4B,EAAC,aAAa,EAAE,QAAQ,CAAC;QACrD,IAAA,yCAA0B,EAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC9D,IAAA,oCAAoB,EAAC,aAAa,EAAE,QAAQ,CAAC;QAC7C,IAAA,8DAAoC,EAAC,aAAa,EAAE,QAAQ,CAAC;KAChE;SACI,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,MAAM,CAAC,CAAC;IAElB,OAAO,IAAA,wBAAc,EAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAvBD,0DAuBC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
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.generateGraphQLSelect = void 0;
|
|
7
|
+
const deindent_1 = __importDefault(require("../../../utils/deindent"));
|
|
8
|
+
const constants_1 = require("../../adapter/constants");
|
|
9
|
+
const constants_2 = require("../../shared/constants");
|
|
10
|
+
const resource_params_1 = require("./resource-params");
|
|
11
|
+
const constants_3 = require("../constants");
|
|
12
|
+
function generateGraphQLSelect(importContext, resource) {
|
|
13
|
+
const { importRamlArtifact } = importContext;
|
|
14
|
+
const { id: resourceId, returnShape } = resource;
|
|
15
|
+
if (returnShape === undefined) {
|
|
16
|
+
//TODO: cleanup in W-11069204
|
|
17
|
+
return '';
|
|
18
|
+
}
|
|
19
|
+
const { id: returnShapeId } = returnShape;
|
|
20
|
+
const typeSelect = importRamlArtifact(returnShapeId, 'select');
|
|
21
|
+
const resourceRequestConfig = importRamlArtifact(resourceId, resource_params_1.RESOURCE_PARAMS_INTERFACE);
|
|
22
|
+
return (0, deindent_1.default) `
|
|
23
|
+
export function ${constants_3.RESOURCE_SELECT_IDENTIFIER}(${constants_2.LUVIO_IDENTIFIER}: ${constants_2.LUVIO_IMPORT}, ${constants_3.RESOURCE_PARAMS_IDENTIFIER}: ${resourceRequestConfig}): ${constants_1.ADAPTER_FRAGMENT_IDENTIFIER} {
|
|
24
|
+
const { query, variables } = ${constants_3.RESOURCE_PARAMS_IDENTIFIER}.body;
|
|
25
|
+
return ${typeSelect}(${constants_2.LUVIO_IDENTIFIER}, query, variables);
|
|
26
|
+
}
|
|
27
|
+
`;
|
|
28
|
+
}
|
|
29
|
+
exports.generateGraphQLSelect = generateGraphQLSelect;
|
|
30
|
+
//# sourceMappingURL=select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../../../src/codegen/resource/graphql/select.ts"],"names":[],"mappings":";;;;;;AACA,uEAA+C;AAE/C,uDAAsE;AACtE,sDAAwE;AACxE,uDAA8D;AAC9D,4CAAsF;AAEtF,SAAgB,qBAAqB,CAAC,aAA4B,EAAE,QAAyB;IACzF,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,EAAE,EAAE,aAAa,EAAE,GAAG,WAAW,CAAC;IAE1C,MAAM,UAAU,GAAG,kBAAkB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC/D,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,UAAU,EAAE,2CAAyB,CAAC,CAAC;IAExF,OAAO,IAAA,kBAAQ,EAAA;0BACO,sCAA0B,IAAI,4BAAgB,KAAK,wBAAY,KAAK,sCAA0B,KAAK,qBAAqB,MAAM,uCAA2B;2CACxI,sCAA0B;qBAChD,UAAU,IAAI,4BAAgB;;KAE9C,CAAC;AACN,CAAC;AAnBD,sDAmBC"}
|
|
@@ -6,7 +6,7 @@ const shape_cache_keys_1 = require("../shape-cache-keys");
|
|
|
6
6
|
const shape_deep_freeze_1 = require("../shape-deep-freeze");
|
|
7
7
|
const shape_key_interface_1 = require("../shape-key-interface");
|
|
8
8
|
const shape_representation_type_1 = require("../shape-representation-type");
|
|
9
|
-
const shape_select_1 = require("
|
|
9
|
+
const shape_select_1 = require("./shape-select");
|
|
10
10
|
const shape_ttl_1 = require("../shape-ttl");
|
|
11
11
|
const key_builder_1 = require("./key-builder");
|
|
12
12
|
const shape_ingest_1 = require("./shape-ingest");
|
|
@@ -17,7 +17,7 @@ function generateGraphQLInteropTypeModule(shapeConfig, graphQLResource) {
|
|
|
17
17
|
(0, shape_representation_type_1.generateRepresentationType)(shapeConfig),
|
|
18
18
|
(0, shape_key_interface_1.generateShapeKeyInterface)(shapeConfig),
|
|
19
19
|
(0, key_builder_1.generateGraphQLInteropShapeKeyBuilder)(shapeConfig),
|
|
20
|
-
(0, shape_select_1.
|
|
20
|
+
(0, shape_select_1.generateGraphQLInteropTypeSelect)(shapeConfig, graphQLResource),
|
|
21
21
|
(0, shape_deep_freeze_1.generateDeepFreeze)(shapeConfig),
|
|
22
22
|
(0, shape_ingest_1.generateGraphQLInteropTypeIngest)(shapeConfig, graphQLResource),
|
|
23
23
|
(0, shape_cache_keys_1.generateGetShapeCacheKeys)(shapeConfig),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/codegen/shape/graphql/index.ts"],"names":[],"mappings":";;;AAEA,oDAAwD;AACxD,0DAAgE;AAChE,4DAA0D;AAC1D,gEAAmE;AACnE,4EAA0E;AAC1E,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/codegen/shape/graphql/index.ts"],"names":[],"mappings":";;;AAEA,oDAAwD;AACxD,0DAAgE;AAChE,4DAA0D;AAC1D,gEAAmE;AACnE,4EAA0E;AAC1E,iDAAkE;AAClE,4CAA2C;AAC3C,+CAAsE;AACtE,iDAAkE;AAClE,mEAAwE;AAExE,SAAgB,gCAAgC,CAC5C,WAA+B,EAC/B,eAAgC;IAEhC,IAAI,IAAI,GAAG;QACP,IAAA,uBAAW,EAAC,WAAW,CAAC;QACxB,IAAA,sDAA0B,EAAC,WAAW,CAAC;QACvC,IAAA,+CAAyB,EAAC,WAAW,CAAC;QACtC,IAAA,mDAAqC,EAAC,WAAW,CAAC;QAClD,IAAA,+CAAgC,EAAC,WAAW,EAAE,eAAe,CAAC;QAC9D,IAAA,sCAAkB,EAAC,WAAW,CAAC;QAC/B,IAAA,+CAAgC,EAAC,WAAW,EAAE,eAAe,CAAC;QAC9D,IAAA,4CAAyB,EAAC,WAAW,CAAC;QACtC,IAAA,qDAA6B,EAAC,WAAW,EAAE,eAAe,CAAC;KAC9D,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEf,OAAO,IAAA,wBAAc,EAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAjBD,4EAiBC"}
|