@luvio/compiler 0.90.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/interface/index.js +2 -0
- package/dist/codegen/graphql/interface/index.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.js +2 -0
- package/dist/codegen/graphql/type/index.js.map +1 -1
- package/dist/codegen/graphql/type/ingest.d.ts +0 -1
- package/dist/codegen/graphql/type/ingest.js +12 -24
- package/dist/codegen/graphql/type/ingest.js.map +1 -1
- package/dist/codegen/graphql/type/select.d.ts +5 -0
- package/dist/codegen/graphql/type/select.js +179 -0
- package/dist/codegen/graphql/type/select.js.map +1 -0
- package/dist/codegen/graphql/utils/types.d.ts +7 -1
- package/dist/codegen/graphql/utils/types.js +28 -1
- package/dist/codegen/graphql/utils/types.js.map +1 -1
- package/dist/codegen/resource/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/shared/constants.d.ts +3 -0
- package/dist/codegen/shared/constants.js +4 -1
- package/dist/codegen/shared/constants.js.map +1 -1
- package/package.json +4 -4
|
@@ -8,11 +8,13 @@ const deindent_1 = __importDefault(require("../../../utils/deindent"));
|
|
|
8
8
|
const interface_1 = require("./interface");
|
|
9
9
|
const ingest_1 = require("./ingest");
|
|
10
10
|
const imports_1 = require("../../../utils/imports");
|
|
11
|
+
const select_1 = require("./select");
|
|
11
12
|
function generateInterfaceType(graphqlDsl, typeName, def, importContext, metadata) {
|
|
12
13
|
return (0, imports_1.resolveImports)((0, deindent_1.default) `
|
|
13
14
|
export const name = '${typeName}';
|
|
14
15
|
${(0, interface_1.generateInterface)(typeName, def, importContext, metadata)}
|
|
15
16
|
${(0, ingest_1.generateIngest)(graphqlDsl, typeName, def, importContext, metadata)}
|
|
17
|
+
${(0, select_1.generateSelect)(graphqlDsl, typeName, def, importContext, metadata)}
|
|
16
18
|
`);
|
|
17
19
|
}
|
|
18
20
|
exports.generateInterfaceType = generateInterfaceType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/interface/index.ts"],"names":[],"mappings":";;;;;;AAAA,uEAA+C;AAC/C,2CAAgD;AAChD,qCAA0C;AAC1C,oDAAwD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/interface/index.ts"],"names":[],"mappings":";;;;;;AAAA,uEAA+C;AAC/C,2CAAgD;AAChD,qCAA0C;AAC1C,oDAAwD;AAKxD,qCAA0C;AAE1C,SAAgB,qBAAqB,CACjC,UAA2B,EAC3B,QAAgB,EAChB,GAAgC,EAChC,aAA4B,EAC5B,QAAgC;IAEhC,OAAO,IAAA,wBAAc,EAAC,IAAA,kBAAQ,EAAA;+BACH,QAAQ;UAC7B,IAAA,6BAAiB,EAAC,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UACzD,IAAA,uBAAc,EAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UAClE,IAAA,uBAAc,EAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;KACvE,CAAC,CAAC;AACP,CAAC;AAbD,sDAaC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { GraphQLInterfaceType, GraphQLSchema, InterfaceTypeDefinitionNode } 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 generateSelectFromDef(graphQLSchema: GraphQLSchema, interfaceType: GraphQLInterfaceType, importContext: ImportContext): string;
|
|
6
|
+
export declare function generateSelect(graphqlDsl: LuvioGraphQLDSL, typeName: string, def: InterfaceTypeDefinitionNode, importContext: ImportContext, _metadata: GraphQLCodegenMetadata): string;
|
|
@@ -0,0 +1,47 @@
|
|
|
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 = exports.generateSelectFromDef = 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("../type/constants");
|
|
11
|
+
const interface_1 = require("./interface");
|
|
12
|
+
function generateSelectFromDef(graphQLSchema, interfaceType, importContext) {
|
|
13
|
+
const selectStatements = graphQLSchema
|
|
14
|
+
.getImplementations(interfaceType)
|
|
15
|
+
.objects.map((object) => {
|
|
16
|
+
const objectPartialInterfaceAlias = importContext.importGraphQLArtifact(object.name, interface_1.PARTIAL_INTERFACE_IDENTIFIER);
|
|
17
|
+
return (0, deindent_1.default) `
|
|
18
|
+
if(typename === '${object.name}') {
|
|
19
|
+
return ${importContext.importGraphQLArtifact(object.name, 'select')}(field, variables, fragments)(source as ${objectPartialInterfaceAlias}, reader)
|
|
20
|
+
}`;
|
|
21
|
+
});
|
|
22
|
+
return selectStatements.join('\n');
|
|
23
|
+
}
|
|
24
|
+
exports.generateSelectFromDef = generateSelectFromDef;
|
|
25
|
+
function generateSelect(graphqlDsl, typeName, def, importContext, _metadata) {
|
|
26
|
+
var _a;
|
|
27
|
+
const { schema } = graphqlDsl;
|
|
28
|
+
const type = schema.getType(def.name.value);
|
|
29
|
+
if (!type) {
|
|
30
|
+
return '';
|
|
31
|
+
}
|
|
32
|
+
const astNodeParamType = ((_a = schema.getQueryType()) === null || _a === void 0 ? void 0 : _a.name) === typeName
|
|
33
|
+
? constants_2.LUVIO_GRAPHQL_OPERATION_DEFINITION_NODE_IMPORT
|
|
34
|
+
: constants_2.LUVIO_GRAPHQL_FIELD_NODE_IMPORT;
|
|
35
|
+
const graphqlVariablesImport = importContext.importGraphQLArtifact(constants_3.TYPE_UTIL_IDENTIFIER, constants_3.GRAPHQL_VARIABLES_IDENTIFIER);
|
|
36
|
+
const fragmentMapImport = importContext.importGraphQLArtifact(constants_3.TYPE_UTIL_IDENTIFIER, constants_3.GRAPHQL_FRAGMENT_MAP_IDENTIFIER);
|
|
37
|
+
return (0, deindent_1.default) `
|
|
38
|
+
export function select(field: ${astNodeParamType}, variables: ${graphqlVariablesImport}, fragments: ${fragmentMapImport}) {
|
|
39
|
+
return (source: ${interface_1.PARTIAL_INTERFACE_IDENTIFIER}, reader: ${constants_1.ADAPTER_READER_IMPORT}<any>): ${interface_1.PARTIAL_INTERFACE_IDENTIFIER} => {
|
|
40
|
+
const typename = source.__typename;
|
|
41
|
+
${generateSelectFromDef(schema, type, importContext)}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
`;
|
|
45
|
+
}
|
|
46
|
+
exports.generateSelect = generateSelect;
|
|
47
|
+
//# sourceMappingURL=select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/interface/select.ts"],"names":[],"mappings":";;;;;;AAAA,uEAA+C;AAC/C,uDAAgE;AAOhE,sDAGgC;AAGhC,iDAI2B;AAC3B,2CAA2D;AAE3D,SAAgB,qBAAqB,CACjC,aAA4B,EAC5B,aAAmC,EACnC,aAA4B;IAE5B,MAAM,gBAAgB,GAAG,aAAa;SACjC,kBAAkB,CAAC,aAAa,CAAC;SACjC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACpB,MAAM,2BAA2B,GAAG,aAAa,CAAC,qBAAqB,CACnE,MAAM,CAAC,IAAI,EACX,wCAA4B,CAC/B,CAAC;QACF,OAAO,IAAA,kBAAQ,EAAA;mCACQ,MAAM,CAAC,IAAI;6BACjB,aAAa,CAAC,qBAAqB,CACxC,MAAM,CAAC,IAAI,EACX,QAAQ,CACX,2CAA2C,2BAA2B;kBACzE,CAAC;IACX,CAAC,CAAC,CAAC;IAEP,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAtBD,sDAsBC;AAED,SAAgB,cAAc,CAC1B,UAA2B,EAC3B,QAAgB,EAChB,GAAgC,EAChC,aAA4B,EAC5B,SAAiC;;IAEjC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAI,EAAE;QACP,OAAO,EAAE,CAAC;KACb;IACD,MAAM,gBAAgB,GAClB,CAAA,MAAA,MAAM,CAAC,YAAY,EAAE,0CAAE,IAAI,MAAK,QAAQ;QACpC,CAAC,CAAC,0DAA8C;QAChD,CAAC,CAAC,2CAA+B,CAAC;IAC1C,MAAM,sBAAsB,GAAG,aAAa,CAAC,qBAAqB,CAC9D,gCAAoB,EACpB,wCAA4B,CAC/B,CAAC;IACF,MAAM,iBAAiB,GAAG,aAAa,CAAC,qBAAqB,CACzD,gCAAoB,EACpB,2CAA+B,CAClC,CAAC;IACF,OAAO,IAAA,kBAAQ,EAAA;wCACqB,gBAAgB,gBAAgB,sBAAsB,gBAAgB,iBAAiB;8BACjG,wCAA4B,aAAa,iCAAqB,WAAW,wCAA4B;;kBAEjH,qBAAqB,CAAC,MAAM,EAAE,IAA4B,EAAE,aAAa,CAAC;;;KAGvF,CAAC;AACN,CAAC;AAhCD,wCAgCC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare const GRAPHQL_VARIABLES_IDENTIFIER = "GraphQLVariables";
|
|
2
|
+
export declare const GRAPHQL_FRAGMENT_MAP_IDENTIFIER = "GraphQLFragmentMap";
|
|
2
3
|
export declare const GRAPHQL_STATE_INTERFACE_IDENTIFIER = "GraphQLState";
|
|
3
4
|
export declare const TIMESTAMP_IDENTIFIER = "timestamp";
|
|
4
5
|
export declare const CREATE_LINK_IDENTIFIER = "createLink";
|
|
@@ -7,8 +8,11 @@ export declare const TYPE_INGEST_IDENTIFIER = "ingest";
|
|
|
7
8
|
export declare const KEY_BUILDER_IDENTIFIER = "keyBuilder";
|
|
8
9
|
export declare const SERIALIZE_FIELD_ARGUMENTS_IDENTIFIER = "serializeFieldArguments";
|
|
9
10
|
export declare const GET_REQUESTED_FIELD_IDENTIFIER = "getRequestedField";
|
|
11
|
+
export declare const GET_REQUESTED_FIELDS_FOR_TYPE_IDENTIFIER = "getRequestedFieldsForType";
|
|
10
12
|
export declare const GET_SERIALIZED_KEY_FOR_FIELD_IDENTIFIER = "getSerializedKeyForField";
|
|
11
13
|
export declare const FIELD_KEY_IDENTIFIER = "fieldKey";
|
|
12
14
|
export declare const FIELD_DATA_IDENTIFIER = "fieldData";
|
|
13
15
|
export declare const FIELD_DATA_KEY_IDENTIFIER = "fieldDataKey";
|
|
14
16
|
export declare const REQUESTED_FIELD_IDENTIFIER = "requestedField";
|
|
17
|
+
export declare const REQUESTED_FIELD_NAME_IDENTIFIER = "requestedFieldName";
|
|
18
|
+
export declare const SINK_IDENTIFIER = "sink";
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.REQUESTED_FIELD_IDENTIFIER = exports.FIELD_DATA_KEY_IDENTIFIER = exports.FIELD_DATA_IDENTIFIER = exports.FIELD_KEY_IDENTIFIER = exports.GET_SERIALIZED_KEY_FOR_FIELD_IDENTIFIER = exports.GET_REQUESTED_FIELD_IDENTIFIER = exports.SERIALIZE_FIELD_ARGUMENTS_IDENTIFIER = exports.KEY_BUILDER_IDENTIFIER = exports.TYPE_INGEST_IDENTIFIER = exports.TYPE_UTIL_IDENTIFIER = exports.CREATE_LINK_IDENTIFIER = exports.TIMESTAMP_IDENTIFIER = exports.GRAPHQL_STATE_INTERFACE_IDENTIFIER = exports.GRAPHQL_VARIABLES_IDENTIFIER = void 0;
|
|
3
|
+
exports.SINK_IDENTIFIER = exports.REQUESTED_FIELD_NAME_IDENTIFIER = exports.REQUESTED_FIELD_IDENTIFIER = exports.FIELD_DATA_KEY_IDENTIFIER = exports.FIELD_DATA_IDENTIFIER = exports.FIELD_KEY_IDENTIFIER = exports.GET_SERIALIZED_KEY_FOR_FIELD_IDENTIFIER = exports.GET_REQUESTED_FIELDS_FOR_TYPE_IDENTIFIER = exports.GET_REQUESTED_FIELD_IDENTIFIER = exports.SERIALIZE_FIELD_ARGUMENTS_IDENTIFIER = exports.KEY_BUILDER_IDENTIFIER = exports.TYPE_INGEST_IDENTIFIER = exports.TYPE_UTIL_IDENTIFIER = exports.CREATE_LINK_IDENTIFIER = exports.TIMESTAMP_IDENTIFIER = exports.GRAPHQL_STATE_INTERFACE_IDENTIFIER = exports.GRAPHQL_FRAGMENT_MAP_IDENTIFIER = exports.GRAPHQL_VARIABLES_IDENTIFIER = void 0;
|
|
4
4
|
exports.GRAPHQL_VARIABLES_IDENTIFIER = 'GraphQLVariables';
|
|
5
|
+
exports.GRAPHQL_FRAGMENT_MAP_IDENTIFIER = 'GraphQLFragmentMap';
|
|
5
6
|
exports.GRAPHQL_STATE_INTERFACE_IDENTIFIER = 'GraphQLState';
|
|
6
7
|
exports.TIMESTAMP_IDENTIFIER = 'timestamp';
|
|
7
8
|
exports.CREATE_LINK_IDENTIFIER = 'createLink';
|
|
@@ -10,9 +11,12 @@ exports.TYPE_INGEST_IDENTIFIER = 'ingest';
|
|
|
10
11
|
exports.KEY_BUILDER_IDENTIFIER = 'keyBuilder';
|
|
11
12
|
exports.SERIALIZE_FIELD_ARGUMENTS_IDENTIFIER = 'serializeFieldArguments';
|
|
12
13
|
exports.GET_REQUESTED_FIELD_IDENTIFIER = 'getRequestedField';
|
|
14
|
+
exports.GET_REQUESTED_FIELDS_FOR_TYPE_IDENTIFIER = 'getRequestedFieldsForType';
|
|
13
15
|
exports.GET_SERIALIZED_KEY_FOR_FIELD_IDENTIFIER = 'getSerializedKeyForField';
|
|
14
16
|
exports.FIELD_KEY_IDENTIFIER = 'fieldKey';
|
|
15
17
|
exports.FIELD_DATA_IDENTIFIER = 'fieldData';
|
|
16
18
|
exports.FIELD_DATA_KEY_IDENTIFIER = 'fieldDataKey';
|
|
17
19
|
exports.REQUESTED_FIELD_IDENTIFIER = 'requestedField';
|
|
20
|
+
exports.REQUESTED_FIELD_NAME_IDENTIFIER = 'requestedFieldName';
|
|
21
|
+
exports.SINK_IDENTIFIER = 'sink';
|
|
18
22
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,4BAA4B,GAAG,kBAAkB,CAAC;AAClD,QAAA,kCAAkC,GAAG,cAAc,CAAC;AACpD,QAAA,oBAAoB,GAAG,WAAW,CAAC;AACnC,QAAA,sBAAsB,GAAG,YAAY,CAAC;AACtC,QAAA,oBAAoB,GAAG,WAAW,CAAC;AACnC,QAAA,sBAAsB,GAAG,QAAQ,CAAC;AAClC,QAAA,sBAAsB,GAAG,YAAY,CAAC;AACtC,QAAA,oCAAoC,GAAG,yBAAyB,CAAC;AACjE,QAAA,8BAA8B,GAAG,mBAAmB,CAAC;AACrD,QAAA,uCAAuC,GAAG,0BAA0B,CAAC;AACrE,QAAA,oBAAoB,GAAG,UAAU,CAAC;AAClC,QAAA,qBAAqB,GAAG,WAAW,CAAC;AACpC,QAAA,yBAAyB,GAAG,cAAc,CAAC;AAC3C,QAAA,0BAA0B,GAAG,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,4BAA4B,GAAG,kBAAkB,CAAC;AAClD,QAAA,+BAA+B,GAAG,oBAAoB,CAAC;AACvD,QAAA,kCAAkC,GAAG,cAAc,CAAC;AACpD,QAAA,oBAAoB,GAAG,WAAW,CAAC;AACnC,QAAA,sBAAsB,GAAG,YAAY,CAAC;AACtC,QAAA,oBAAoB,GAAG,WAAW,CAAC;AACnC,QAAA,sBAAsB,GAAG,QAAQ,CAAC;AAClC,QAAA,sBAAsB,GAAG,YAAY,CAAC;AACtC,QAAA,oCAAoC,GAAG,yBAAyB,CAAC;AACjE,QAAA,8BAA8B,GAAG,mBAAmB,CAAC;AACrD,QAAA,wCAAwC,GAAG,2BAA2B,CAAC;AACvE,QAAA,uCAAuC,GAAG,0BAA0B,CAAC;AACrE,QAAA,oBAAoB,GAAG,UAAU,CAAC;AAClC,QAAA,qBAAqB,GAAG,WAAW,CAAC;AACpC,QAAA,yBAAyB,GAAG,cAAc,CAAC;AAC3C,QAAA,0BAA0B,GAAG,gBAAgB,CAAC;AAC9C,QAAA,+BAA+B,GAAG,oBAAoB,CAAC;AACvD,QAAA,eAAe,GAAG,MAAM,CAAC"}
|
|
@@ -14,11 +14,12 @@ function generateTypeUtil(graphqlResource, metadata) {
|
|
|
14
14
|
var _a;
|
|
15
15
|
return (0, imports_1.resolveImports)((0, deindent_1.default) `
|
|
16
16
|
export type ${constants_3.GRAPHQL_VARIABLES_IDENTIFIER} = Record<string, any>;
|
|
17
|
-
|
|
17
|
+
export type ${constants_3.GRAPHQL_FRAGMENT_MAP_IDENTIFIER} = Record<string, ${constants_2.LUVIO_GRAPHQL_FRAGMENT_DEFINITION_NODE_IMPORT}>;
|
|
18
18
|
export interface ${constants_3.GRAPHQL_STATE_INTERFACE_IDENTIFIER}<D = unknown> {
|
|
19
19
|
data: D,
|
|
20
20
|
variables: ${constants_3.GRAPHQL_VARIABLES_IDENTIFIER},
|
|
21
|
-
|
|
21
|
+
fragments: ${constants_3.GRAPHQL_FRAGMENT_MAP_IDENTIFIER},
|
|
22
|
+
path: ${constants_1.ADAPTER_INGEST_PATH_INTERFACE_IDENTIFIER},
|
|
22
23
|
${constants_2.LUVIO_IDENTIFIER}: ${constants_2.LUVIO_IMPORT},
|
|
23
24
|
${constants_2.LUVIO_STORE_IDENTIFIER}: ${constants_2.LUVIO_STORE_IMPORT},
|
|
24
25
|
${constants_3.TIMESTAMP_IDENTIFIER}: number
|
|
@@ -88,6 +89,27 @@ function generateTypeUtil(graphqlResource, metadata) {
|
|
|
88
89
|
const argumentString : string = field.arguments && field.arguments.length > 0 ? '__' + ${constants_3.SERIALIZE_FIELD_ARGUMENTS_IDENTIFIER}(field.arguments, variables) : '';
|
|
89
90
|
return field.name.value + argumentString; // It should be safe to always use the fieldName - If an alias is meaningful, there will be arguments on the key also.
|
|
90
91
|
}
|
|
92
|
+
|
|
93
|
+
export function ${constants_3.GET_REQUESTED_FIELDS_FOR_TYPE_IDENTIFIER}(typename: string, selectionSet: ${constants_2.LUVIO_GRAPHQL_SELECTION_SET_NODE_IMPORT}, namedFragmentsMap: ${constants_3.GRAPHQL_FRAGMENT_MAP_IDENTIFIER}): ${constants_2.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}[] {
|
|
94
|
+
const selections = [];
|
|
95
|
+
selectionSet.selections.forEach(selection => {
|
|
96
|
+
if(selection.kind === "Field") {
|
|
97
|
+
selections.push(selection);
|
|
98
|
+
}
|
|
99
|
+
if(selection.kind === "InlineFragment" && selection.typeCondition.name.value === typename) {
|
|
100
|
+
${constants_3.GET_REQUESTED_FIELDS_FOR_TYPE_IDENTIFIER}(typename, selection.selectionSet, namedFragmentsMap)
|
|
101
|
+
.forEach(fragmentFieldSelection => selections.push(fragmentFieldSelection));
|
|
102
|
+
}
|
|
103
|
+
if(selection.kind === "FragmentSpread") {
|
|
104
|
+
const namedFragment = namedFragmentsMap[selection.name.value];
|
|
105
|
+
if(namedFragment && namedFragment.typeCondition.name.value === typename) {
|
|
106
|
+
${constants_3.GET_REQUESTED_FIELDS_FOR_TYPE_IDENTIFIER}(typename, namedFragment.selectionSet, namedFragmentsMap)
|
|
107
|
+
.forEach(fragmentFieldSelection => selections.push(fragmentFieldSelection));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
return selections;
|
|
112
|
+
}
|
|
91
113
|
`);
|
|
92
114
|
}
|
|
93
115
|
exports.generateTypeUtil = generateTypeUtil;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateTypeUtil.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/generateTypeUtil.ts"],"names":[],"mappings":";;;;;;AAAA,uEAA+C;AAC/C,oDAAwD;AACxD,oCAAuC;AAGvC,uDAAmF;AACnF,
|
|
1
|
+
{"version":3,"file":"generateTypeUtil.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/generateTypeUtil.ts"],"names":[],"mappings":";;;;;;AAAA,uEAA+C;AAC/C,oDAAwD;AACxD,oCAAuC;AAGvC,uDAAmF;AACnF,sDAUgC;AAChC,2CAUqB;AAErB,SAAgB,gBAAgB,CAC5B,eAAgC,EAChC,QAAgC;;IAEhC,OAAO,IAAA,wBAAc,EAAC,IAAA,kBAAQ,EAAA;sBACZ,wCAA4B;sBAC5B,2CAA+B,qBAAqB,yDAA6C;2BAC5F,8CAAkC;;yBAEpC,wCAA4B;yBAC5B,2CAA+B;oBACpC,oDAAwC;cAC9C,4BAAgB,KAAK,wBAAY;cACjC,kCAAsB,KAAK,8BAAkB;cAC7C,gCAAoB;;;0BAGR,kCAAsB;;;;;;0BAMtB,gDAAoC,4BAA4B,8CAAkC,mBAAmB,wCAA4B;;;;;;;;;;kDAUzH,8CAAkC,gBAAgB,wCAA4B;;;;;iDAK/E,2CAA+B,gBAAgB,wCAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAgC/F,IAAA,mBAAW,EAC5B,QAAQ,CAAC,OAAO,EAChB,MAAA,eAAe,CAAC,WAAW,0CAAE,EAAE,EAC/B,QAAQ,CAAC,SAAS,CACrB;;0BAEiB,0CAA8B,oDAAoD,2CAA+B,QAAQ,2CAA+B;;;;0BAIxJ,mDAAuC,WAAW,2CAA+B,gBAAgB,wCAA4B;;qGAElD,gDAAoC;;;;0BAI/G,oDAAwC,oCAAoC,mDAAuC,wBAAwB,2CAA+B,MAAM,2CAA+B;;;;;;;sBAOnN,oDAAwC;;;;;;0BAMpC,oDAAwC;;;;;;;KAO7D,CAAC,CAAC;AACP,CAAC;AA3GD,4CA2GC"}
|
|
@@ -11,6 +11,7 @@ const ingest_1 = require("./ingest");
|
|
|
11
11
|
const ttl_1 = require("./ttl");
|
|
12
12
|
const merge_1 = require("./merge");
|
|
13
13
|
const imports_1 = require("../../../utils/imports");
|
|
14
|
+
const select_1 = require("./select");
|
|
14
15
|
function generateType(graphqlDsl, graphqlTypeName, def, importContext, metadata) {
|
|
15
16
|
return (0, imports_1.resolveImports)((0, deindent_1.default) `
|
|
16
17
|
export const name = '${graphqlTypeName}';
|
|
@@ -19,6 +20,7 @@ function generateType(graphqlDsl, graphqlTypeName, def, importContext, metadata)
|
|
|
19
20
|
${(0, key_1.generateKey)(def, importContext, graphqlDsl.schemaName)}
|
|
20
21
|
${(0, merge_1.generateMerge)(importContext)}
|
|
21
22
|
${(0, ingest_1.generateIngest)(graphqlDsl, graphqlTypeName, def, importContext, metadata)}
|
|
23
|
+
${(0, select_1.generateSelect)(graphqlDsl, graphqlTypeName, def, importContext, metadata)}
|
|
22
24
|
`);
|
|
23
25
|
}
|
|
24
26
|
exports.generateType = generateType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/index.ts"],"names":[],"mappings":";;;;;;AAAA,uEAA+C;AAC/C,+BAAoC;AACpC,2CAAiD;AACjD,qCAA0C;AAC1C,+BAAoC;AACpC,mCAAwC;AACxC,oDAAwD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/index.ts"],"names":[],"mappings":";;;;;;AAAA,uEAA+C;AAC/C,+BAAoC;AACpC,2CAAiD;AACjD,qCAA0C;AAC1C,+BAAoC;AACpC,mCAAwC;AACxC,oDAAwD;AAKxD,qCAA0C;AAE1C,SAAgB,YAAY,CACxB,UAA2B,EAC3B,eAAuB,EACvB,GAA6B,EAC7B,aAA4B,EAC5B,QAAgC;IAEhC,OAAO,IAAA,wBAAc,EAAC,IAAA,kBAAQ,EAAA;+BACH,eAAe;UACpC,IAAA,iBAAW,EAAC,UAAU,EAAE,eAAe,CAAC;UACxC,IAAA,8BAAkB,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UAC7E,IAAA,iBAAW,EAAC,GAAG,EAAE,aAAa,EAAE,UAAU,CAAC,UAAU,CAAC;UACtD,IAAA,qBAAa,EAAC,aAAa,CAAC;UAC5B,IAAA,uBAAc,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;UACzE,IAAA,uBAAc,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;KAC9E,CAAC,CAAC;AACP,CAAC;AAhBD,oCAgBC"}
|
|
@@ -6,5 +6,4 @@ import type { GraphQLCodegenMetadata } from '../source-printer';
|
|
|
6
6
|
export declare function ingestNamedType(field: FieldDefinitionNode, typeNode: NamedTypeNode, importContext: ImportContext, normalizableTypeMap: NormalizableTypes): string;
|
|
7
7
|
export declare function ingestListType(field: FieldDefinitionNode, typeNode: ListTypeNode, importContext: ImportContext, normalizableTypeMap: NormalizableTypes): string;
|
|
8
8
|
export declare function ingestType(field: FieldDefinitionNode, typeNode: TypeNode, importContext: ImportContext, normalizableTypeMap: NormalizableTypes): string;
|
|
9
|
-
export declare function generateIngestFromDef(graphqlDsl: LuvioGraphQLDSL, def: ObjectTypeDefinitionNode, importContext: ImportContext, normalizableTypeMap: NormalizableTypes): string;
|
|
10
9
|
export declare function generateIngest(graphqlDsl: LuvioGraphQLDSL, typeName: string, def: ObjectTypeDefinitionNode, importContext: ImportContext, _metadata: GraphQLCodegenMetadata): string;
|
|
@@ -3,13 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.generateIngest = exports.
|
|
6
|
+
exports.generateIngest = exports.ingestType = exports.ingestListType = exports.ingestNamedType = void 0;
|
|
7
7
|
const deindent_1 = __importDefault(require("../../../utils/deindent"));
|
|
8
8
|
const constants_1 = require("../../shared/constants");
|
|
9
9
|
const utils_1 = require("../utils");
|
|
10
10
|
const utils_2 = require("./utils");
|
|
11
11
|
const constants_2 = require("./constants");
|
|
12
12
|
const interface_1 = require("./interface");
|
|
13
|
+
const types_1 = require("../utils/types");
|
|
13
14
|
const REQUESTED_FIELDS_IDENTIFIER = 'requestedFields';
|
|
14
15
|
function ingestNamedType(field, typeNode, importContext, normalizableTypeMap) {
|
|
15
16
|
const typeName = (0, utils_1.resolveTypeName)(typeNode);
|
|
@@ -74,10 +75,8 @@ function ingestListType(field, typeNode, importContext, normalizableTypeMap) {
|
|
|
74
75
|
itemState
|
|
75
76
|
)
|
|
76
77
|
}
|
|
77
|
-
|
|
78
|
-
dataSink[${constants_2.FIELD_KEY_IDENTIFIER}] = {
|
|
79
|
-
__ref: ${fullPathIdentifier}
|
|
80
|
-
} as any;
|
|
78
|
+
|
|
79
|
+
dataSink[${constants_2.FIELD_KEY_IDENTIFIER}] = ${collectionIdentifier};
|
|
81
80
|
};
|
|
82
81
|
`;
|
|
83
82
|
}
|
|
@@ -103,40 +102,29 @@ function ingestType(field, typeNode, importContext, normalizableTypeMap) {
|
|
|
103
102
|
}
|
|
104
103
|
}
|
|
105
104
|
exports.ingestType = ingestType;
|
|
106
|
-
function generateIngestFromDef(graphqlDsl, def, importContext, normalizableTypeMap) {
|
|
107
|
-
const { schema } = graphqlDsl;
|
|
108
|
-
const type = schema.getType(def.name.value);
|
|
109
|
-
return generateObjectTypeIngest(type, importContext, normalizableTypeMap);
|
|
110
|
-
}
|
|
111
|
-
exports.generateIngestFromDef = generateIngestFromDef;
|
|
112
105
|
function generateObjectTypeIngest(type, importContext, normalizableTypeMap) {
|
|
113
|
-
const
|
|
114
|
-
const fields = Object.values(fieldMap);
|
|
106
|
+
const fields = (0, types_1.getObjectFields)(type);
|
|
115
107
|
const fieldIngestStatements = fields
|
|
116
108
|
.map((field) => {
|
|
117
|
-
|
|
118
|
-
if (((_a = field.astNode) === null || _a === void 0 ? void 0 : _a.type) === undefined) {
|
|
109
|
+
if (field.type === undefined) {
|
|
119
110
|
return '';
|
|
120
111
|
}
|
|
121
|
-
return ingestType(field
|
|
112
|
+
return ingestType(field, field.type, importContext, normalizableTypeMap);
|
|
122
113
|
})
|
|
123
114
|
.filter((statement) => statement !== '');
|
|
124
115
|
const eachFieldHandling = fieldIngestStatements.join('\n');
|
|
125
116
|
const ingestStatements = [
|
|
126
|
-
getRequestedFieldsStatement(),
|
|
117
|
+
getRequestedFieldsStatement(importContext),
|
|
127
118
|
iterateThroughResponseKeys(importContext, eachFieldHandling),
|
|
128
119
|
];
|
|
129
120
|
return ingestStatements.join('\n');
|
|
130
121
|
}
|
|
131
|
-
function getRequestedFieldsStatement() {
|
|
122
|
+
function getRequestedFieldsStatement(importContext) {
|
|
123
|
+
const getRequestedFieldsImport = importContext.importGraphQLArtifact(constants_2.TYPE_UTIL_IDENTIFIER, constants_2.GET_REQUESTED_FIELDS_FOR_TYPE_IDENTIFIER);
|
|
132
124
|
return (0, deindent_1.default) `
|
|
133
125
|
const ${REQUESTED_FIELDS_IDENTIFIER}: ${constants_1.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}[] =
|
|
134
126
|
astNode && astNode.selectionSet ?
|
|
135
|
-
astNode.selectionSet.
|
|
136
|
-
(i): i is ${constants_1.LUVIO_GRAPHQL_FIELD_NODE_IMPORT} => {
|
|
137
|
-
return i.kind === "Field";
|
|
138
|
-
}
|
|
139
|
-
) :
|
|
127
|
+
${getRequestedFieldsImport}(name, astNode.selectionSet, state.fragments) :
|
|
140
128
|
[];
|
|
141
129
|
`;
|
|
142
130
|
}
|
|
@@ -179,7 +167,7 @@ function generateIngest(graphqlDsl, typeName, def, importContext, _metadata) {
|
|
|
179
167
|
|
|
180
168
|
// normalize fields
|
|
181
169
|
const dataSink = <PartialInterface>({});
|
|
182
|
-
${
|
|
170
|
+
${generateObjectTypeIngest(def, importContext, normalizableTypeMap)};
|
|
183
171
|
|
|
184
172
|
// merge existing cache data and new request response data
|
|
185
173
|
let mergedData: PartialInterface;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/ingest.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/ingest.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":";;;;;;AAAA,uEAA+C;AAC/C,uDAAgE;AAShE,sDAIgC;AAGhC,2CASqB;AAErB,oCAA2C;AAC3C,oCAAkD;AAClD,0CAAiD;AACjD,2CAA2D;AAE3D,SAAS,cAAc,CACnB,KAA0B,EAC1B,QAAsB,EACtB,aAA4B,EAC5B,mBAAsC;IAEtC,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE;QACxB,OAAO,EAAE,CAAC;KACb;IACD,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC;IAE7D,IAAI,QAAQ,EAAE;QACV,OAAO,IAAA,kBAAQ,EAAA;kBACL,iCAAqB;yCACE,2BAAe,KAAK,2CAA+B,YAAY,gCAAoB;;SAEnH,CAAC;KACL;IAED,MAAM,UAAU,GAAG,SAAS,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAC/C,MAAM,sBAAsB,GAAG,GAAG,UAAU,cAAc,CAAC;IAC3D,MAAM,eAAe,GAAG,aAAa,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChF,MAAM,yBAAyB,GAAG,aAAa,CAAC,qBAAqB,CACjE,QAAQ,EACR,kBAAkB,CACrB,CAAC;IAEF,OAAO,IAAA,kBAAQ,EAAA;;+BAEY,iCAAqB;;oBAEhC,sBAAsB;4BACd,iCAAqB;;;;;;;;kBAQ/B,sBAAsB;;;+BAGT,eAAe,+BAA+B,sBAAsB,YAAY,yBAAyB;;;;iCAIvG,2BAAe,KAAK,2CAA+B;KAC/E,CAAC;AACN,CAAC;AAED,SAAS,eAAe,CACpB,KAA0B,EAC1B,QAAuB,EACvB,aAA4B,EAC5B,mBAAsC;IAEtC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC,MAAM,UAAU,GAAG,SAAS,CAAC;IAC7B,MAAM,sBAAsB,GAAG,GAAG,UAAU,cAAc,CAAC;IAC3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IACrC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC;IAE7D,mBAAmB;IACnB,IAAI,QAAQ,EAAE;QACV,OAAO,oBAAoB,EAAE,CAAC;KACjC;IACD,MAAM,eAAe,GAAG,aAAa,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3F,MAAM,yBAAyB,GAAG,aAAa,CAAC,qBAAqB,CACjE,QAAQ,CAAC,IAAI,CAAC,KAAK,EACnB,kBAAkB,CACrB,CAAC;IAEF,OAAO,IAAA,kBAAQ,EAAA;YACP,sBAAsB;oBACd,iCAAqB;;;;;;;;UAQ/B,sBAAsB;yBACP,eAAe,+BAA+B,sBAAsB,YAAY,yBAAyB;iCACjG,2BAAe,KAAK,2CAA+B;MAC9E,CAAC;AACP,CAAC;AAED,SAAS,UAAU,CACf,KAA0B,EAC1B,QAAkB,EAClB,aAA4B,EAC5B,mBAAsC;IAEtC,QAAQ,QAAQ,CAAC,IAAI,EAAE;QACnB,KAAK,WAAW,CAAC,CAAC;YACd,OAAO,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAC;SAC/E;QACD,KAAK,aAAa,CAAC,CAAC;YAChB,OAAO,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAC;SAC/E;QACD,KAAK,UAAU,CAAC,CAAC;YACb,OAAO,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAC;SAC9E;KACJ;AACL,CAAC;AAED,SAAgB,cAAc,CAC1B,UAA2B,EAC3B,QAAgB,EAChB,GAA6B,EAC7B,aAA4B,EAC5B,SAAiC;;IAEjC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAI,EAAE;QACP,OAAO,EAAE,CAAC;KACb;IACD,MAAM,mBAAmB,GAAG,IAAA,8BAAsB,EAAC,MAAM,CAAC,CAAC;IAE3D,MAAM,4BAA4B,GAAG,IAAA,uBAAe,EAAC,GAAG,CAAC;SACpD,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,IAAI,IAAI,KAAK,IAAI,EAAE;YACf,OAAO,oBAAoB,EAAE,CAAC;SACjC;QAED,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAC;QAE/E,OAAO,IAAA,kBAAQ,EAAA;oBACP,SAAS;kBACX,IAAI;;;SAGb,CAAC;IACF,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,MAAM,gBAAgB,GAClB,CAAA,MAAA,MAAM,CAAC,YAAY,EAAE,0CAAE,IAAI,MAAK,QAAQ;QACpC,CAAC,CAAC,0DAA8C;QAChD,CAAC,CAAC,2CAA+B,CAAC;IAC1C,MAAM,sBAAsB,GAAG,aAAa,CAAC,qBAAqB,CAC9D,gCAAoB,EACpB,wCAA4B,CAC/B,CAAC;IACF,MAAM,iBAAiB,GAAG,aAAa,CAAC,qBAAqB,CACzD,gCAAoB,EACpB,mDAAuC,CAC1C,CAAC;IACF,MAAM,iBAAiB,GAAG,aAAa,CAAC,qBAAqB,CACzD,gCAAoB,EACpB,2CAA+B,CAClC,CAAC;IACF,OAAO,IAAA,kBAAQ,EAAA;yDACsC,wCAA4B,aAAa,iCAAqB,eAAe,2CAA+B,iBAAiB,sBAAsB,gBAAgB,iBAAiB;;oBAEzN,2BAAe;oBACf,gCAAoB,MAAM,iBAAiB;oBAC3C,iCAAqB,aAAa,gCAAoB;oBACtD,2CAA+B;;kBAEjC,4BAA4B;;;;wDAIU,wCAA4B,aAAa,iCAAqB,yBAAyB,+CAAmC,iBAAiB,sBAAsB,gBAAgB,iBAAiB;oBACtO,2BAAe;;;;;;;;;;;;;;;;;;;;;;qBAsBd,2BAAe;;wCAEI,gBAAgB,gBAAgB,sBAAsB,gBAAgB,iBAAiB;8BACjG,wCAA4B,aAAa,iCAAqB,WAAW,wCAA4B;wBAC3G,2BAAe;;;;yBAId,2BAAe;;;KAGnC,CAAC;AACN,CAAC;AA/FD,wCA+FC;AAED,SAAS,oBAAoB;IACzB,OAAO,aAAa,gCAAoB;8BACd,2CAA+B,KAAK,2BAAe,YAAY,gCAAoB;MAC3G,CAAC;AACP,CAAC"}
|
|
@@ -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"}
|
|
@@ -43,6 +43,12 @@ function generateGraphQLInteropTypeIngest(shapeConfig, graphQLResource) {
|
|
|
43
43
|
}
|
|
44
44
|
export const ${shape_ingest_1.SHAPE_INGEST_IDENTIFIER} = function ${functionIdentifier}(query: ${constants_3.LUVIO_GRAPHQL_DOCUMENT_NODE_IMPORT}, variables: ${GRAPHQL_VARIABLES_INTERFACE_IMPORT}): ${constants_1.ADAPTER_RESOURCE_INGEST_INTERFACE_IDENTIFIER} {
|
|
45
45
|
return (${constants_4.INPUT_IDENTIFIER}: ${shapeConfig.shape.name}, ${PARENT_PATH_IDENTIFIER}: ${constants_1.ADAPTER_INGEST_PATH_INTERFACE_IDENTIFIER}, ${constants_3.LUVIO_IDENTIFIER}: ${constants_3.LUVIO_IMPORT}, ${constants_3.LUVIO_STORE_IDENTIFIER}: ${constants_3.LUVIO_STORE_IMPORT}, ${TIMESTAMP_IDENTIFIER}: number): ${constants_3.LUVIO_STORE_LINK_IMPORT} => {
|
|
46
|
+
const fragments = {};
|
|
47
|
+
query.definitions.forEach((node) => {
|
|
48
|
+
if (node.kind === 'FragmentDefinition') {
|
|
49
|
+
fragments[node.name.value] = node;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
46
52
|
const state: ${GRAPHQL_STATE_INTERFACE_IMPORT} = {
|
|
47
53
|
data: ${constants_4.INPUT_IDENTIFIER}.data,
|
|
48
54
|
${constants_3.LUVIO_IDENTIFIER},
|
|
@@ -50,6 +56,7 @@ function generateGraphQLInteropTypeIngest(shapeConfig, graphQLResource) {
|
|
|
50
56
|
${TIMESTAMP_IDENTIFIER},
|
|
51
57
|
path: ${PARENT_PATH_IDENTIFIER},
|
|
52
58
|
variables,
|
|
59
|
+
fragments,
|
|
53
60
|
}
|
|
54
61
|
query.definitions.forEach((node) => {
|
|
55
62
|
if (node.kind === 'OperationDefinition') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shape-ingest.js","sourceRoot":"","sources":["../../../../src/codegen/shape/graphql/shape-ingest.ts"],"names":[],"mappings":";;;;;;AACA,uEAA+C;AAC/C,uDAGiC;AACjC,4DAIsC;AACtC,sDAOgC;AAChC,4CAAgD;AAEhD,kDAA0D;AAE1D,MAAM,oBAAoB,GAAG,WAAW,CAAC;AACzC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAEtC,SAAgB,gCAAgC,CAC5C,WAA+B,EAC/B,eAAgC;IAEhC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,WAAW,CAAC;IAC7C,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAClC,MAAM,kBAAkB,GAAG,GAAG,SAAS,QAAQ,CAAC;IAChD,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IAEnE,IAAI,CAAC,SAAS,EAAE;QACZ,+CAA+C;QAC/C,OAAO,EAAE,CAAC;KACb;IACD,MAAM,gCAAgC,GAAG,aAAa,CAAC,qBAAqB,CACxE,SAAS,CAAC,IAAI,EACd,QAAQ,CACX,CAAC;IACF,MAAM,2BAA2B,GAAG,aAAa,CAAC,WAAW,CACzD,uBAAuB,EACvB,yBAAyB,CAC5B,CAAC;IACF,MAAM,8BAA8B,GAAG,aAAa,CAAC,qBAAqB,CACtE,gCAAoB,EACpB,8CAAkC,CACrC,CAAC;IACF,MAAM,kCAAkC,GAAG,aAAa,CAAC,qBAAqB,CAC1E,gCAAoB,EACpB,wCAA4B,CAC/B,CAAC;IAEF,OAAO,IAAA,kBAAQ,EAAA;;6CAE0B,2BAA2B,YAAY,8BAA8B;;kBAEhG,gCAAgC;;;;;;yEAMuB,WAAW,CAAC,KAAK,CAAC,IAAI;;;;;;uBAMxE,sCAAuB,eAAe,kBAAkB,WAAW,8CAAkC,gBAAgB,kCAAkC,MAAM,wDAA4C;sBAC1M,4BAAgB,KAAK,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,KAAK,oDAAwC,KAAK,4BAAgB,KAAK,wBAAY,KAAK,kCAAsB,KAAK,8BAAkB,KAAK,oBAAoB,cAAc,mCAAuB
|
|
1
|
+
{"version":3,"file":"shape-ingest.js","sourceRoot":"","sources":["../../../../src/codegen/shape/graphql/shape-ingest.ts"],"names":[],"mappings":";;;;;;AACA,uEAA+C;AAC/C,uDAGiC;AACjC,4DAIsC;AACtC,sDAOgC;AAChC,4CAAgD;AAEhD,kDAA0D;AAE1D,MAAM,oBAAoB,GAAG,WAAW,CAAC;AACzC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAEtC,SAAgB,gCAAgC,CAC5C,WAA+B,EAC/B,eAAgC;IAEhC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,WAAW,CAAC;IAC7C,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAClC,MAAM,kBAAkB,GAAG,GAAG,SAAS,QAAQ,CAAC;IAChD,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IAEnE,IAAI,CAAC,SAAS,EAAE;QACZ,+CAA+C;QAC/C,OAAO,EAAE,CAAC;KACb;IACD,MAAM,gCAAgC,GAAG,aAAa,CAAC,qBAAqB,CACxE,SAAS,CAAC,IAAI,EACd,QAAQ,CACX,CAAC;IACF,MAAM,2BAA2B,GAAG,aAAa,CAAC,WAAW,CACzD,uBAAuB,EACvB,yBAAyB,CAC5B,CAAC;IACF,MAAM,8BAA8B,GAAG,aAAa,CAAC,qBAAqB,CACtE,gCAAoB,EACpB,8CAAkC,CACrC,CAAC;IACF,MAAM,kCAAkC,GAAG,aAAa,CAAC,qBAAqB,CAC1E,gCAAoB,EACpB,wCAA4B,CAC/B,CAAC;IAEF,OAAO,IAAA,kBAAQ,EAAA;;6CAE0B,2BAA2B,YAAY,8BAA8B;;kBAEhG,gCAAgC;;;;;;yEAMuB,WAAW,CAAC,KAAK,CAAC,IAAI;;;;;;uBAMxE,sCAAuB,eAAe,kBAAkB,WAAW,8CAAkC,gBAAgB,kCAAkC,MAAM,wDAA4C;sBAC1M,4BAAgB,KAAK,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,KAAK,oDAAwC,KAAK,4BAAgB,KAAK,wBAAY,KAAK,kCAAsB,KAAK,8BAAkB,KAAK,oBAAoB,cAAc,mCAAuB;;;;;;;+BAOhQ,8BAA8B;4BACjC,4BAAgB;sBACtB,4BAAgB;sBAChB,kCAAsB;sBACtB,oBAAoB;4BACd,sBAAsB;;;;;;;;;;;;;;KAc7C,CAAC;AACN,CAAC;AA1ED,4EA0EC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
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.generateGraphQLInteropTypeSelect = void 0;
|
|
7
|
+
const deindent_1 = __importDefault(require("../../../utils/deindent"));
|
|
8
|
+
const constants_1 = require("../../adapter/constants");
|
|
9
|
+
const constants_2 = require("../../graphql/type/constants");
|
|
10
|
+
const constants_3 = require("../../shared/constants");
|
|
11
|
+
const constants_4 = require("../constants");
|
|
12
|
+
const key_builder_1 = require("./key-builder");
|
|
13
|
+
function generateGraphQLInteropTypeSelect(shapeConfig, graphQLResource) {
|
|
14
|
+
const { importContext } = shapeConfig;
|
|
15
|
+
const readerFragmentInterface = importContext.namedImport('@luvio/engine', 'ReaderFragment');
|
|
16
|
+
const queryType = graphQLResource.graphqlDSL.schema.getQueryType();
|
|
17
|
+
if (!queryType) {
|
|
18
|
+
// How do we stop from even needing to do this.
|
|
19
|
+
return '';
|
|
20
|
+
}
|
|
21
|
+
const GRAPHQL_QUERY_TYPE_SELECT_IMPORT = importContext.importGraphQLArtifact(queryType.name, 'select');
|
|
22
|
+
const GRAPHQL_VARIABLES_IMPORT = importContext.importGraphQLArtifact(constants_2.TYPE_UTIL_IDENTIFIER, constants_2.GRAPHQL_VARIABLES_IDENTIFIER);
|
|
23
|
+
return (0, deindent_1.default) `
|
|
24
|
+
export function ${constants_4.SHAPE_SELECT_IDENTIFIER}(${constants_3.LUVIO_IDENTIFIER}: ${constants_3.LUVIO_IMPORT}, query: ${constants_3.LUVIO_GRAPHQL_DOCUMENT_NODE_IMPORT}, variables: ${GRAPHQL_VARIABLES_IMPORT}): ${readerFragmentInterface} {
|
|
25
|
+
const definitions = query.definitions === undefined ? [] : query.definitions;
|
|
26
|
+
return {
|
|
27
|
+
kind: 'Fragment',
|
|
28
|
+
synthetic: true,
|
|
29
|
+
reader: true,
|
|
30
|
+
read: (builder: ${constants_1.ADAPTER_READER_IMPORT}<any>) => {
|
|
31
|
+
builder.enterPath('data');
|
|
32
|
+
let sink = {};
|
|
33
|
+
const fragments = {};
|
|
34
|
+
definitions.forEach((node) => {
|
|
35
|
+
if (node.kind === 'FragmentDefinition') {
|
|
36
|
+
fragments[node.name.value] = node;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
for (let i = 0, len = definitions.length; i < len; i += 1) {
|
|
40
|
+
const def = definitions[i];
|
|
41
|
+
if (def.kind === 'OperationDefinition') {
|
|
42
|
+
const snapshot = builder.read({
|
|
43
|
+
recordId: ${key_builder_1.SHAPE_KEY_BUILDER_FROM_TYPE_IDENTIFIER}({} as any), //fullpath of query type is always our local keybuilder /shrug
|
|
44
|
+
node: {
|
|
45
|
+
kind: 'Fragment',
|
|
46
|
+
private: [],
|
|
47
|
+
opaque: true
|
|
48
|
+
},
|
|
49
|
+
variables: {}
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
if(snapshot.data === undefined) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const data = ${GRAPHQL_QUERY_TYPE_SELECT_IMPORT}(def, variables, fragments)(snapshot.data, builder);
|
|
57
|
+
|
|
58
|
+
sink = {
|
|
59
|
+
...sink,
|
|
60
|
+
...data,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const gqlData = {};
|
|
65
|
+
builder.assignNonScalar(gqlData, 'data', sink);
|
|
66
|
+
builder.exitPath();
|
|
67
|
+
builder.enterPath('errors');
|
|
68
|
+
builder.assignNonScalar(gqlData, 'errors', []);
|
|
69
|
+
builder.exitPath();
|
|
70
|
+
return gqlData;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
`;
|
|
75
|
+
}
|
|
76
|
+
exports.generateGraphQLInteropTypeSelect = generateGraphQLInteropTypeSelect;
|
|
77
|
+
//# sourceMappingURL=shape-select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shape-select.js","sourceRoot":"","sources":["../../../../src/codegen/shape/graphql/shape-select.ts"],"names":[],"mappings":";;;;;;AAEA,uEAA+C;AAC/C,uDAAgE;AAChE,4DAAkG;AAClG,sDAIgC;AAChC,4CAAuD;AACvD,+CAAuE;AAEvE,SAAgB,gCAAgC,CAC5C,WAA+B,EAC/B,eAAgC;IAEhC,MAAM,EAAE,aAAa,EAAE,GAAG,WAAW,CAAC;IACtC,MAAM,uBAAuB,GAAG,aAAa,CAAC,WAAW,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAC7F,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IAEnE,IAAI,CAAC,SAAS,EAAE;QACZ,+CAA+C;QAC/C,OAAO,EAAE,CAAC;KACb;IACD,MAAM,gCAAgC,GAAG,aAAa,CAAC,qBAAqB,CACxE,SAAS,CAAC,IAAI,EACd,QAAQ,CACX,CAAC;IACF,MAAM,wBAAwB,GAAG,aAAa,CAAC,qBAAqB,CAChE,gCAAoB,EACpB,wCAA4B,CAC/B,CAAC;IAEF,OAAO,IAAA,kBAAQ,EAAA;0BACO,mCAAuB,IAAI,4BAAgB,KAAK,wBAAY,YAAY,8CAAkC,gBAAgB,wBAAwB,MAAM,uBAAuB;;;;;;kCAMvK,iCAAqB;;;;;;;;;;;;;4CAaX,oDAAsC;;;;;;;;;;;;;2CAavC,gCAAgC;;;;;;;;;;;;;;;;;;KAkBtE,CAAC;AACN,CAAC;AAzED,4EAyEC"}
|
|
@@ -13,5 +13,8 @@ export declare const LUVIO_GRAPHQL_PRINT_IMPORT: string;
|
|
|
13
13
|
export declare const LUVIO_GRAPHQL_DOCUMENT_NODE_IMPORT: string;
|
|
14
14
|
export declare const LUVIO_GRAPHQL_OPERATION_DEFINITION_NODE_IMPORT: string;
|
|
15
15
|
export declare const LUVIO_GRAPHQL_FIELD_NODE_IMPORT: string;
|
|
16
|
+
export declare const LUVIO_GRAPHQL_SELECTION_NODE_IMPORT: string;
|
|
16
17
|
export declare const LUVIO_GRAPHQL_ARGUMENT_NODE_IMPORT: string;
|
|
17
18
|
export declare const LUVIO_GRAPHQL_VALUE_NODE_IMPORT: string;
|
|
19
|
+
export declare const LUVIO_GRAPHQL_SELECTION_SET_NODE_IMPORT: string;
|
|
20
|
+
export declare const LUVIO_GRAPHQL_FRAGMENT_DEFINITION_NODE_IMPORT: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LUVIO_GRAPHQL_VALUE_NODE_IMPORT = exports.LUVIO_GRAPHQL_ARGUMENT_NODE_IMPORT = exports.LUVIO_GRAPHQL_FIELD_NODE_IMPORT = exports.LUVIO_GRAPHQL_OPERATION_DEFINITION_NODE_IMPORT = exports.LUVIO_GRAPHQL_DOCUMENT_NODE_IMPORT = exports.LUVIO_GRAPHQL_PRINT_IMPORT = exports.PAGINATION_KEY_SUFFIX = exports.CACHE_KEY_FIELD_DELIMITER = exports.CACHE_KEY_NAMESPACE_DELIMITER = exports.READER_FRAGMENT_IMPORT = exports.ADAPTER_CACHE_KEY_SET_TYPE_IDENTIFIER = exports.LUVIO_STORE_LINK_IMPORT = exports.LUVIO_IN_MEMORY_STORE_IMPORT = exports.LUVIO_STORE_IMPORT = exports.LUVIO_IMPORT = exports.LUVIO_STORE_IDENTIFIER = exports.LUVIO_IDENTIFIER = void 0;
|
|
3
|
+
exports.LUVIO_GRAPHQL_FRAGMENT_DEFINITION_NODE_IMPORT = exports.LUVIO_GRAPHQL_SELECTION_SET_NODE_IMPORT = exports.LUVIO_GRAPHQL_VALUE_NODE_IMPORT = exports.LUVIO_GRAPHQL_ARGUMENT_NODE_IMPORT = exports.LUVIO_GRAPHQL_SELECTION_NODE_IMPORT = exports.LUVIO_GRAPHQL_FIELD_NODE_IMPORT = exports.LUVIO_GRAPHQL_OPERATION_DEFINITION_NODE_IMPORT = exports.LUVIO_GRAPHQL_DOCUMENT_NODE_IMPORT = exports.LUVIO_GRAPHQL_PRINT_IMPORT = exports.PAGINATION_KEY_SUFFIX = exports.CACHE_KEY_FIELD_DELIMITER = exports.CACHE_KEY_NAMESPACE_DELIMITER = exports.READER_FRAGMENT_IMPORT = exports.ADAPTER_CACHE_KEY_SET_TYPE_IDENTIFIER = exports.LUVIO_STORE_LINK_IMPORT = exports.LUVIO_IN_MEMORY_STORE_IMPORT = exports.LUVIO_STORE_IMPORT = exports.LUVIO_IMPORT = exports.LUVIO_STORE_IDENTIFIER = exports.LUVIO_IDENTIFIER = void 0;
|
|
4
4
|
const imports_1 = require("../../utils/imports");
|
|
5
5
|
// Identifiers
|
|
6
6
|
exports.LUVIO_IDENTIFIER = 'luvio';
|
|
@@ -21,6 +21,9 @@ exports.LUVIO_GRAPHQL_PRINT_IMPORT = (0, imports_1.namedImport)('@luvio/graphql-
|
|
|
21
21
|
exports.LUVIO_GRAPHQL_DOCUMENT_NODE_IMPORT = (0, imports_1.namedImport)('@luvio/graphql-parser', 'DocumentNode');
|
|
22
22
|
exports.LUVIO_GRAPHQL_OPERATION_DEFINITION_NODE_IMPORT = (0, imports_1.namedImport)('@luvio/graphql-parser', 'OperationDefinitionNode');
|
|
23
23
|
exports.LUVIO_GRAPHQL_FIELD_NODE_IMPORT = (0, imports_1.namedImport)('@luvio/graphql-parser', 'FieldNode');
|
|
24
|
+
exports.LUVIO_GRAPHQL_SELECTION_NODE_IMPORT = (0, imports_1.namedImport)('@luvio/graphql-parser', 'SelectionNode');
|
|
24
25
|
exports.LUVIO_GRAPHQL_ARGUMENT_NODE_IMPORT = (0, imports_1.namedImport)('@luvio/graphql-parser', 'ArgumentNode');
|
|
25
26
|
exports.LUVIO_GRAPHQL_VALUE_NODE_IMPORT = (0, imports_1.namedImport)('@luvio/graphql-parser', 'ValueNode');
|
|
27
|
+
exports.LUVIO_GRAPHQL_SELECTION_SET_NODE_IMPORT = (0, imports_1.namedImport)('@luvio/graphql-parser', 'SelectionSetNode');
|
|
28
|
+
exports.LUVIO_GRAPHQL_FRAGMENT_DEFINITION_NODE_IMPORT = (0, imports_1.namedImport)('@luvio/graphql-parser', 'FragmentDefinitionNode');
|
|
26
29
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/codegen/shared/constants.ts"],"names":[],"mappings":";;;AAAA,iDAAkD;AAElD,cAAc;AACD,QAAA,gBAAgB,GAAG,OAAO,CAAC;AAC3B,QAAA,sBAAsB,GAAG,OAAO,CAAC;AAE9C,iBAAiB;AACJ,QAAA,YAAY,GAAG,IAAA,qBAAW,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AACrD,QAAA,kBAAkB,GAAG,IAAA,qBAAW,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AAC3D,QAAA,4BAA4B,GAAG,IAAA,qBAAW,EAAC,eAAe,EAAE,eAAe,CAAC,CAAC;AAC7E,QAAA,uBAAuB,GAAG,IAAA,qBAAW,EAAC,eAAe,EAAE,WAAW,CAAC,CAAC;AACpE,QAAA,qCAAqC,GAAG,IAAA,qBAAW,EAAC,eAAe,EAAE,aAAa,CAAC,CAAC;AACpF,QAAA,sBAAsB,GAAG,IAAA,qBAAW,EAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAErF,wEAAwE;AAC3D,QAAA,6BAA6B,GAAG,IAAI,CAAC;AACrC,QAAA,yBAAyB,GAAG,GAAG,CAAC;AAEhC,QAAA,qBAAqB,GAAG,cAAc,CAAC;AAEpD,gCAAgC;AACnB,QAAA,0BAA0B,GAAG,IAAA,qBAAW,EAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;AAC3E,QAAA,kCAAkC,GAAG,IAAA,qBAAW,EACzD,uBAAuB,EACvB,cAAc,CACjB,CAAC;AACW,QAAA,8CAA8C,GAAG,IAAA,qBAAW,EACrE,uBAAuB,EACvB,yBAAyB,CAC5B,CAAC;AACW,QAAA,+BAA+B,GAAG,IAAA,qBAAW,EAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC;AACpF,QAAA,kCAAkC,GAAG,IAAA,qBAAW,EACzD,uBAAuB,EACvB,cAAc,CACjB,CAAC;AACW,QAAA,+BAA+B,GAAG,IAAA,qBAAW,EAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/codegen/shared/constants.ts"],"names":[],"mappings":";;;AAAA,iDAAkD;AAElD,cAAc;AACD,QAAA,gBAAgB,GAAG,OAAO,CAAC;AAC3B,QAAA,sBAAsB,GAAG,OAAO,CAAC;AAE9C,iBAAiB;AACJ,QAAA,YAAY,GAAG,IAAA,qBAAW,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AACrD,QAAA,kBAAkB,GAAG,IAAA,qBAAW,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AAC3D,QAAA,4BAA4B,GAAG,IAAA,qBAAW,EAAC,eAAe,EAAE,eAAe,CAAC,CAAC;AAC7E,QAAA,uBAAuB,GAAG,IAAA,qBAAW,EAAC,eAAe,EAAE,WAAW,CAAC,CAAC;AACpE,QAAA,qCAAqC,GAAG,IAAA,qBAAW,EAAC,eAAe,EAAE,aAAa,CAAC,CAAC;AACpF,QAAA,sBAAsB,GAAG,IAAA,qBAAW,EAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAErF,wEAAwE;AAC3D,QAAA,6BAA6B,GAAG,IAAI,CAAC;AACrC,QAAA,yBAAyB,GAAG,GAAG,CAAC;AAEhC,QAAA,qBAAqB,GAAG,cAAc,CAAC;AAEpD,gCAAgC;AACnB,QAAA,0BAA0B,GAAG,IAAA,qBAAW,EAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;AAC3E,QAAA,kCAAkC,GAAG,IAAA,qBAAW,EACzD,uBAAuB,EACvB,cAAc,CACjB,CAAC;AACW,QAAA,8CAA8C,GAAG,IAAA,qBAAW,EACrE,uBAAuB,EACvB,yBAAyB,CAC5B,CAAC;AACW,QAAA,+BAA+B,GAAG,IAAA,qBAAW,EAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC;AACpF,QAAA,mCAAmC,GAAG,IAAA,qBAAW,EAC1D,uBAAuB,EACvB,eAAe,CAClB,CAAC;AACW,QAAA,kCAAkC,GAAG,IAAA,qBAAW,EACzD,uBAAuB,EACvB,cAAc,CACjB,CAAC;AACW,QAAA,+BAA+B,GAAG,IAAA,qBAAW,EAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC;AACpF,QAAA,uCAAuC,GAAG,IAAA,qBAAW,EAC9D,uBAAuB,EACvB,kBAAkB,CACrB,CAAC;AACW,QAAA,6CAA6C,GAAG,IAAA,qBAAW,EACpE,uBAAuB,EACvB,wBAAwB,CAC3B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@luvio/compiler",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.91.0",
|
|
4
4
|
"description": "Luvio Compiler",
|
|
5
5
|
"main": "dist/main.js",
|
|
6
6
|
"types": "dist/main.d.ts",
|
|
@@ -31,11 +31,11 @@
|
|
|
31
31
|
"resources/"
|
|
32
32
|
],
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@luvio/graphql-parser": "0.
|
|
34
|
+
"@luvio/graphql-parser": "0.91.0",
|
|
35
35
|
"amf-client-js": "4.2.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@luvio/adapter-test-library": "0.
|
|
39
|
-
"@luvio/engine": "0.
|
|
38
|
+
"@luvio/adapter-test-library": "0.91.0",
|
|
39
|
+
"@luvio/engine": "0.91.0"
|
|
40
40
|
}
|
|
41
41
|
}
|