@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
|
@@ -5,7 +5,7 @@ export declare class GraphQLDSL implements LuvioGraphQLDSL {
|
|
|
5
5
|
schema: Readonly<GraphQLSchema>;
|
|
6
6
|
schemaName: Readonly<string>;
|
|
7
7
|
customScalars: GraphQLScalarType[];
|
|
8
|
-
|
|
8
|
+
typeNameToExtensions: GraphQLTypeExtensions;
|
|
9
9
|
constructor(luvioSchemaParams: Readonly<LuvioGraphQLDSLParams>);
|
|
10
10
|
private extractCustomScalars;
|
|
11
11
|
}
|
|
@@ -7,7 +7,7 @@ class GraphQLDSL {
|
|
|
7
7
|
this.customScalars = [];
|
|
8
8
|
this.schemaName = luvioSchemaParams.schemaName;
|
|
9
9
|
this.schema = luvioSchemaParams.schema;
|
|
10
|
-
this.
|
|
10
|
+
this.typeNameToExtensions = luvioSchemaParams.typeNameToExtensions;
|
|
11
11
|
this.extractCustomScalars();
|
|
12
12
|
}
|
|
13
13
|
extractCustomScalars() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql-dsl.js","sourceRoot":"","sources":["../../../src/codegen/graphql/graphql-dsl.ts"],"names":[],"mappings":";;;AAAA,0DAA4E;AAU5E,MAAa,UAAU;IAQnB,YAAY,iBAAkD;QAH9D,kBAAa,GAAwB,EAAE,CAAC;QAIpC,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC;QACvC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"graphql-dsl.js","sourceRoot":"","sources":["../../../src/codegen/graphql/graphql-dsl.ts"],"names":[],"mappings":";;;AAAA,0DAA4E;AAU5E,MAAa,UAAU;IAQnB,YAAY,iBAAkD;QAH9D,kBAAa,GAAwB,EAAE,CAAC;QAIpC,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC;QACvC,IAAI,CAAC,oBAAoB,GAAG,iBAAiB,CAAC,oBAAoB,CAAC;QAEnE,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAChC,CAAC;IAEO,oBAAoB;QACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACpD,IAAI,IAAA,6BAAY,EAAC,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE;gBAChD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAChC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAvBD,gCAuBC;AAED,SAAgB,sBAAsB,CAAC,YAAoB;IACvD,OAAO,IAAA,+BAAc,EAAC,IAAA,sBAAK,EAAC,YAAY,CAAC,CAAC,CAAC;AAC/C,CAAC;AAFD,wDAEC"}
|
|
@@ -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"}
|
|
@@ -2,5 +2,5 @@ import type { InterfaceTypeDefinitionNode } from '@luvio/graphql-parser';
|
|
|
2
2
|
import type { ImportContext } from '../../../utils/imports';
|
|
3
3
|
import type { LuvioGraphQLDSL } from '../../../intermediate/graphql';
|
|
4
4
|
import type { GraphQLCodegenMetadata } from '../source-printer';
|
|
5
|
-
export declare function generateIngestFromDef(graphqlDsl: LuvioGraphQLDSL, def: InterfaceTypeDefinitionNode, importContext: ImportContext): string;
|
|
5
|
+
export declare function generateIngestFromDef(graphqlDsl: LuvioGraphQLDSL, def: InterfaceTypeDefinitionNode, importContext: ImportContext, graphqlStateInterface: string): string;
|
|
6
6
|
export declare function generateIngest(graphqlDsl: LuvioGraphQLDSL, typeName: string, def: InterfaceTypeDefinitionNode, importContext: ImportContext, _metadata: GraphQLCodegenMetadata): string;
|
|
@@ -5,17 +5,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.generateIngest = exports.generateIngestFromDef = void 0;
|
|
7
7
|
const deindent_1 = __importDefault(require("../../../utils/deindent"));
|
|
8
|
+
const utils_1 = require("../type/utils");
|
|
8
9
|
const constants_1 = require("../../shared/constants");
|
|
9
10
|
const interface_1 = require("./interface");
|
|
10
11
|
const constants_2 = require("../type/constants");
|
|
11
|
-
function generateIngestFromDef(graphqlDsl, def, importContext) {
|
|
12
|
-
const { schema } = graphqlDsl;
|
|
12
|
+
function generateIngestFromDef(graphqlDsl, def, importContext, graphqlStateInterface) {
|
|
13
|
+
const { schema, typeNameToExtensions } = graphqlDsl;
|
|
13
14
|
const type = schema.getType(def.name.value);
|
|
15
|
+
const { importGraphQLArtifact } = importContext;
|
|
14
16
|
if (type) {
|
|
15
17
|
const ingestStatements = schema.getImplementations(type).objects.map((object) => {
|
|
18
|
+
const objectPartialInterfaceAlias = importGraphQLArtifact(object.name, interface_1.PARTIAL_INTERFACE_IDENTIFIER);
|
|
19
|
+
const state = (0, utils_1.isTypeExtensionDefined)(typeNameToExtensions, object.name, 'ramlMapping')
|
|
20
|
+
? `state as ${graphqlStateInterface}<${objectPartialInterfaceAlias}>`
|
|
21
|
+
: 'state';
|
|
16
22
|
return (0, deindent_1.default) `
|
|
17
23
|
if(typename === '${object.name}') {
|
|
18
|
-
return ${importContext.importGraphQLArtifact(object.name,
|
|
24
|
+
return ${importContext.importGraphQLArtifact(object.name, constants_2.TYPE_INGEST_IDENTIFIER)}(astNode, ${state})
|
|
19
25
|
}
|
|
20
26
|
`;
|
|
21
27
|
});
|
|
@@ -37,7 +43,7 @@ function generateIngest(graphqlDsl, typeName, def, importContext, _metadata) {
|
|
|
37
43
|
const typename = state.data.__typename;
|
|
38
44
|
|
|
39
45
|
// Delegate key building and ingest to concrete implementations
|
|
40
|
-
${generateIngestFromDef(graphqlDsl, def, importContext)};
|
|
46
|
+
${generateIngestFromDef(graphqlDsl, def, importContext, graphqlStateInterface)};
|
|
41
47
|
}
|
|
42
48
|
`;
|
|
43
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/interface/ingest.ts"],"names":[],"mappings":";;;;;;AACA,uEAA+C;AAE/C,sDAGgC;AAGhC,2CAA2D;AAC3D,
|
|
1
|
+
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/interface/ingest.ts"],"names":[],"mappings":";;;;;;AACA,uEAA+C;AAE/C,yCAAuD;AACvD,sDAGgC;AAGhC,2CAA2D;AAC3D,iDAI2B;AAE3B,SAAgB,qBAAqB,CACjC,UAA2B,EAC3B,GAAgC,EAChC,aAA4B,EAC5B,qBAA6B;IAE7B,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,GAAG,UAAU,CAAC;IACpD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAyB,CAAC;IACpE,MAAM,EAAE,qBAAqB,EAAE,GAAG,aAAa,CAAC;IAChD,IAAI,IAAI,EAAE;QACN,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC5E,MAAM,2BAA2B,GAAG,qBAAqB,CACrD,MAAM,CAAC,IAAI,EACX,wCAA4B,CAC/B,CAAC;YACF,MAAM,KAAK,GAAG,IAAA,8BAAsB,EAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC;gBAClF,CAAC,CAAC,YAAY,qBAAqB,IAAI,2BAA2B,GAAG;gBACrE,CAAC,CAAC,OAAO,CAAC;YACd,OAAO,IAAA,kBAAQ,EAAA;mCACQ,MAAM,CAAC,IAAI;6BACjB,aAAa,CAAC,qBAAqB,CACxC,MAAM,CAAC,IAAI,EACX,kCAAsB,CACzB,aAAa,KAAK;;aAE1B,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACtC;IAED,OAAO,EAAE,CAAC;AACd,CAAC;AAhCD,sDAgCC;AAED,SAAgB,cAAc,CAC1B,UAA2B,EAC3B,QAAgB,EAChB,GAAgC,EAChC,aAA4B,EAC5B,SAAiC;;IAEjC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IAC9B,MAAM,EAAE,qBAAqB,EAAE,GAAG,aAAa,CAAC;IAChD,MAAM,qBAAqB,GAAG,qBAAqB,CAC/C,gCAAoB,EACpB,8CAAkC,CACrC,CAAC;IACF,MAAM,gBAAgB,GAClB,CAAA,MAAA,MAAM,CAAC,YAAY,EAAE,0CAAE,IAAI,MAAK,QAAQ;QACpC,CAAC,CAAC,0DAA8C;QAChD,CAAC,CAAC,2CAA+B,CAAC;IAC1C,OAAO,IAAA,kBAAQ,EAAA;0CACuB,gBAAgB,YAAY,qBAAqB,IAAI,wCAA4B;;;;cAI7G,qBAAqB,CAAC,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,qBAAqB,CAAC;;KAErF,CAAC;AACN,CAAC;AAzBD,wCAyBC"}
|
|
@@ -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"}
|
|
@@ -2,4 +2,4 @@ import type { ImportContext } from '../../../utils/imports';
|
|
|
2
2
|
import type { ObjectTypeDefinitionNode } from '@luvio/graphql-parser';
|
|
3
3
|
import type { LuvioGraphQLDSL } from '../../../intermediate/graphql';
|
|
4
4
|
import type { GraphQLCodegenMetadata } from '../source-printer';
|
|
5
|
-
export declare function generateType(graphqlDsl: LuvioGraphQLDSL,
|
|
5
|
+
export declare function generateType(graphqlDsl: LuvioGraphQLDSL, graphqlTypeName: string, def: ObjectTypeDefinitionNode, importContext: ImportContext, metadata: GraphQLCodegenMetadata): string;
|
|
@@ -9,14 +9,18 @@ const key_1 = require("./key");
|
|
|
9
9
|
const interface_1 = require("./interface");
|
|
10
10
|
const ingest_1 = require("./ingest");
|
|
11
11
|
const ttl_1 = require("./ttl");
|
|
12
|
+
const merge_1 = require("./merge");
|
|
12
13
|
const imports_1 = require("../../../utils/imports");
|
|
13
|
-
|
|
14
|
+
const select_1 = require("./select");
|
|
15
|
+
function generateType(graphqlDsl, graphqlTypeName, def, importContext, metadata) {
|
|
14
16
|
return (0, imports_1.resolveImports)((0, deindent_1.default) `
|
|
15
|
-
export const name = '${
|
|
16
|
-
${(0, ttl_1.generateTtl)(graphqlDsl,
|
|
17
|
-
${(0, interface_1.
|
|
17
|
+
export const name = '${graphqlTypeName}';
|
|
18
|
+
${(0, ttl_1.generateTtl)(graphqlDsl, graphqlTypeName)}
|
|
19
|
+
${(0, interface_1.generateInterfaces)(graphqlDsl, graphqlTypeName, def, importContext, metadata)}
|
|
18
20
|
${(0, key_1.generateKey)(def, importContext, graphqlDsl.schemaName)}
|
|
19
|
-
${(0,
|
|
21
|
+
${(0, merge_1.generateMerge)(importContext)}
|
|
22
|
+
${(0, ingest_1.generateIngest)(graphqlDsl, graphqlTypeName, def, importContext, metadata)}
|
|
23
|
+
${(0, select_1.generateSelect)(graphqlDsl, graphqlTypeName, def, importContext, metadata)}
|
|
20
24
|
`);
|
|
21
25
|
}
|
|
22
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,
|
|
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
|
-
const
|
|
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);
|
|
@@ -21,22 +22,23 @@ function ingestNamedType(field, typeNode, importContext, normalizableTypeMap) {
|
|
|
21
22
|
}
|
|
22
23
|
const typeNameIngestImport = importGraphQLArtifact(typeName, constants_2.TYPE_INGEST_IDENTIFIER);
|
|
23
24
|
const fieldStateIdentifier = `${fieldName}State`;
|
|
24
|
-
return
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
return (0, deindent_1.default) `
|
|
26
|
+
if(${constants_2.REQUESTED_FIELD_IDENTIFIER}.name.value === '${fieldName}') {
|
|
27
|
+
const ${fieldStateIdentifier} = {
|
|
28
|
+
...state,
|
|
29
|
+
path: {
|
|
30
|
+
parent: null,
|
|
31
|
+
propertyName: ${constants_2.FIELD_KEY_IDENTIFIER},
|
|
32
|
+
fullPath: key + '__' + ${constants_2.FIELD_KEY_IDENTIFIER}
|
|
33
|
+
},
|
|
34
|
+
data: ${constants_2.FIELD_DATA_IDENTIFIER},
|
|
35
|
+
};
|
|
36
|
+
dataSink[${constants_2.FIELD_KEY_IDENTIFIER}] = ${typeNameIngestImport}(
|
|
37
|
+
${constants_2.REQUESTED_FIELD_IDENTIFIER},
|
|
38
|
+
${fieldStateIdentifier}
|
|
39
|
+
) as any;
|
|
33
40
|
};
|
|
34
|
-
|
|
35
|
-
data[${constants_2.FIELD_KEY_IDENTIFIER}] = ${typeNameIngestImport}(
|
|
36
|
-
${constants_2.REQUESTED_FIELD_IDENTIFIER},
|
|
37
|
-
${fieldStateIdentifier}
|
|
38
|
-
) as any;
|
|
39
|
-
};`;
|
|
41
|
+
`;
|
|
40
42
|
}
|
|
41
43
|
exports.ingestNamedType = ingestNamedType;
|
|
42
44
|
function ingestListType(field, typeNode, importContext, normalizableTypeMap) {
|
|
@@ -52,7 +54,8 @@ function ingestListType(field, typeNode, importContext, normalizableTypeMap) {
|
|
|
52
54
|
return generateIngestScalarField(fieldName);
|
|
53
55
|
}
|
|
54
56
|
const typeNameIngestImport = importGraphQLArtifact(typeName, constants_2.TYPE_INGEST_IDENTIFIER);
|
|
55
|
-
return
|
|
57
|
+
return (0, deindent_1.default) `
|
|
58
|
+
if(${constants_2.REQUESTED_FIELD_IDENTIFIER}.name.value === '${fieldName}') {
|
|
56
59
|
const ${collectionIdentifier}: ${constants_1.LUVIO_STORE_LINK_IMPORT}[] = [];
|
|
57
60
|
const ${fullPathIdentifier} = \`\${key}__\${${constants_2.FIELD_KEY_IDENTIFIER}}\`;
|
|
58
61
|
for(let i = 0, len = ${dataIdentifier}.length; i < len; i++) {
|
|
@@ -72,19 +75,18 @@ function ingestListType(field, typeNode, importContext, normalizableTypeMap) {
|
|
|
72
75
|
itemState
|
|
73
76
|
)
|
|
74
77
|
}
|
|
75
|
-
|
|
76
|
-
${
|
|
77
|
-
__ref: ${fullPathIdentifier}
|
|
78
|
-
} as any;
|
|
78
|
+
|
|
79
|
+
dataSink[${constants_2.FIELD_KEY_IDENTIFIER}] = ${collectionIdentifier};
|
|
79
80
|
};
|
|
80
81
|
`;
|
|
81
82
|
}
|
|
82
83
|
exports.ingestListType = ingestListType;
|
|
83
84
|
function generateIngestScalarField(fieldName) {
|
|
84
|
-
return
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
return (0, deindent_1.default) `
|
|
86
|
+
if(${constants_2.REQUESTED_FIELD_IDENTIFIER}.name.value === '${fieldName}') {
|
|
87
|
+
dataSink[${constants_2.FIELD_KEY_IDENTIFIER}] = ${constants_2.FIELD_DATA_IDENTIFIER};
|
|
88
|
+
}
|
|
89
|
+
`;
|
|
88
90
|
}
|
|
89
91
|
function ingestType(field, typeNode, importContext, normalizableTypeMap) {
|
|
90
92
|
if (field === undefined) {
|
|
@@ -100,39 +102,31 @@ function ingestType(field, typeNode, importContext, normalizableTypeMap) {
|
|
|
100
102
|
}
|
|
101
103
|
}
|
|
102
104
|
exports.ingestType = ingestType;
|
|
103
|
-
function generateIngestFromDef(graphqlDsl, def, importContext, normalizableTypeMap) {
|
|
104
|
-
const { schema } = graphqlDsl;
|
|
105
|
-
const type = schema.getType(def.name.value);
|
|
106
|
-
return generateObjectTypeIngest(type, importContext, normalizableTypeMap);
|
|
107
|
-
}
|
|
108
|
-
exports.generateIngestFromDef = generateIngestFromDef;
|
|
109
105
|
function generateObjectTypeIngest(type, importContext, normalizableTypeMap) {
|
|
110
|
-
const
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
.
|
|
114
|
-
var _a, _b;
|
|
115
|
-
const field = fieldMap[fieldName];
|
|
116
|
-
if (((_a = field.astNode) === null || _a === void 0 ? void 0 : _a.type) === undefined) {
|
|
106
|
+
const fields = (0, types_1.getObjectFields)(type);
|
|
107
|
+
const fieldIngestStatements = fields
|
|
108
|
+
.map((field) => {
|
|
109
|
+
if (field.type === undefined) {
|
|
117
110
|
return '';
|
|
118
111
|
}
|
|
119
|
-
return ingestType(field
|
|
112
|
+
return ingestType(field, field.type, importContext, normalizableTypeMap);
|
|
120
113
|
})
|
|
121
114
|
.filter((statement) => statement !== '');
|
|
122
115
|
const eachFieldHandling = fieldIngestStatements.join('\n');
|
|
123
116
|
const ingestStatements = [
|
|
124
|
-
getRequestedFieldsStatement(),
|
|
117
|
+
getRequestedFieldsStatement(importContext),
|
|
125
118
|
iterateThroughResponseKeys(importContext, eachFieldHandling),
|
|
126
119
|
];
|
|
127
120
|
return ingestStatements.join('\n');
|
|
128
121
|
}
|
|
129
|
-
function getRequestedFieldsStatement() {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
122
|
+
function getRequestedFieldsStatement(importContext) {
|
|
123
|
+
const getRequestedFieldsImport = importContext.importGraphQLArtifact(constants_2.TYPE_UTIL_IDENTIFIER, constants_2.GET_REQUESTED_FIELDS_FOR_TYPE_IDENTIFIER);
|
|
124
|
+
return (0, deindent_1.default) `
|
|
125
|
+
const ${REQUESTED_FIELDS_IDENTIFIER}: ${constants_1.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}[] =
|
|
126
|
+
astNode && astNode.selectionSet ?
|
|
127
|
+
${getRequestedFieldsImport}(name, astNode.selectionSet, state.fragments) :
|
|
128
|
+
[];
|
|
129
|
+
`;
|
|
136
130
|
}
|
|
137
131
|
function iterateThroughResponseKeys(importContext, individualFieldIngestBlock) {
|
|
138
132
|
const getRequestedFieldImport = importContext.importGraphQLArtifact(constants_2.TYPE_UTIL_IDENTIFIER, constants_2.GET_REQUESTED_FIELD_IDENTIFIER);
|
|
@@ -159,7 +153,7 @@ function generateIngest(graphqlDsl, typeName, def, importContext, _metadata) {
|
|
|
159
153
|
const createLink = importGraphQLArtifact(constants_2.TYPE_UTIL_IDENTIFIER, constants_2.CREATE_LINK_IDENTIFIER);
|
|
160
154
|
const graphqlStateInterface = importGraphQLArtifact(constants_2.TYPE_UTIL_IDENTIFIER, constants_2.GRAPHQL_STATE_INTERFACE_IDENTIFIER);
|
|
161
155
|
const keyPrefix = importAdapterUtil('keyPrefix');
|
|
162
|
-
const ttl = (0,
|
|
156
|
+
const ttl = (0, utils_2.isTypeExtensionDefined)(graphqlDsl.typeNameToExtensions, typeName, 'ttl')
|
|
163
157
|
? 'TTL'
|
|
164
158
|
: importGraphQLArtifact(constants_2.TYPE_UTIL_IDENTIFIER, 'TTL');
|
|
165
159
|
const astNodeParamType = ((_a = schema.getQueryType()) === null || _a === void 0 ? void 0 : _a.name) === typeName
|
|
@@ -167,15 +161,26 @@ function generateIngest(graphqlDsl, typeName, def, importContext, _metadata) {
|
|
|
167
161
|
: constants_1.LUVIO_GRAPHQL_FIELD_NODE_IMPORT;
|
|
168
162
|
return (0, deindent_1.default) `
|
|
169
163
|
export function ingest(astNode: ${astNodeParamType}, state: ${graphqlStateInterface}<${interface_1.PARTIAL_INTERFACE_IDENTIFIER}>) {
|
|
170
|
-
const { path, ${constants_1.LUVIO_IDENTIFIER} } = state;
|
|
164
|
+
const { path, ${constants_1.LUVIO_IDENTIFIER}, ${constants_1.LUVIO_STORE_IDENTIFIER} } = state;
|
|
171
165
|
const data = state.data;
|
|
172
166
|
const key = ${constants_2.KEY_BUILDER_IDENTIFIER}(path, data);
|
|
173
167
|
|
|
174
168
|
// normalize fields
|
|
175
|
-
|
|
176
|
-
|
|
169
|
+
const dataSink = <PartialInterface>({});
|
|
170
|
+
${generateObjectTypeIngest(def, importContext, normalizableTypeMap)};
|
|
171
|
+
|
|
172
|
+
// merge existing cache data and new request response data
|
|
173
|
+
let mergedData: PartialInterface;
|
|
174
|
+
const existingData = ${constants_1.LUVIO_STORE_IDENTIFIER}.readEntry<${interface_1.PARTIAL_INTERFACE_IDENTIFIER}>(key);
|
|
175
|
+
if (existingData !== undefined && existingData.__type !== "error") {
|
|
176
|
+
mergedData = mergeData(existingData as PartialInterface, dataSink);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
mergedData = dataSink;
|
|
180
|
+
}
|
|
181
|
+
|
|
177
182
|
// publish
|
|
178
|
-
${constants_1.LUVIO_IDENTIFIER}.storePublish(key,
|
|
183
|
+
${constants_1.LUVIO_IDENTIFIER}.storePublish(key, mergedData);
|
|
179
184
|
|
|
180
185
|
const storeMetadataParams = {
|
|
181
186
|
ttl: ${ttl},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/ingest.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/ingest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ObjectTypeDefinitionNode, TypeNode } from '@luvio/graphql-parser';
|
|
2
2
|
import type { GraphQLCodegenMetadata } from '../source-printer/graphql-source-printer';
|
|
3
3
|
import type { ImportContext } from '../../../utils/imports';
|
|
4
|
+
import type { LuvioGraphQLDSL } from '../../../intermediate/graphql';
|
|
4
5
|
export declare const TYPE_INTERFACE_IDENTIFIER = "Interface";
|
|
5
6
|
export declare const MINIMUM_INTERFACE_IDENTIFIER: string;
|
|
6
7
|
export declare const PARTIAL_INTERFACE_IDENTIFIER: string;
|
|
@@ -8,4 +9,4 @@ export declare function generateTypeReference(type: TypeNode, importContext: Imp
|
|
|
8
9
|
required: boolean;
|
|
9
10
|
array: boolean;
|
|
10
11
|
}): string;
|
|
11
|
-
export declare function
|
|
12
|
+
export declare function generateInterfaces(graphqlDsl: LuvioGraphQLDSL, graphqlTypeName: string, def: ObjectTypeDefinitionNode, importContext: ImportContext, metadata: GraphQLCodegenMetadata): string;
|