@luvio/compiler 0.89.0 → 0.92.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.
Files changed (69) hide show
  1. package/dist/codegen/adapter/adapter-network.d.ts +1 -1
  2. package/dist/codegen/adapter/adapter-network.js +5 -2
  3. package/dist/codegen/adapter/adapter-network.js.map +1 -1
  4. package/dist/codegen/adapter/constants.d.ts +1 -0
  5. package/dist/codegen/adapter/constants.js +3 -2
  6. package/dist/codegen/adapter/constants.js.map +1 -1
  7. package/dist/codegen/adapter/graphql/adapter-config-transformer.d.ts +3 -0
  8. package/dist/codegen/adapter/graphql/adapter-config-transformer.js +27 -0
  9. package/dist/codegen/adapter/graphql/adapter-config-transformer.js.map +1 -0
  10. package/dist/codegen/adapter/graphql/index.js +6 -1
  11. package/dist/codegen/adapter/graphql/index.js.map +1 -1
  12. package/dist/codegen/graphql/interface/index.js +4 -0
  13. package/dist/codegen/graphql/interface/index.js.map +1 -1
  14. package/dist/codegen/graphql/interface/query-transformer.d.ts +5 -0
  15. package/dist/codegen/graphql/interface/query-transformer.js +21 -0
  16. package/dist/codegen/graphql/interface/query-transformer.js.map +1 -0
  17. package/dist/codegen/graphql/interface/select.d.ts +6 -0
  18. package/dist/codegen/graphql/interface/select.js +47 -0
  19. package/dist/codegen/graphql/interface/select.js.map +1 -0
  20. package/dist/codegen/graphql/source-printer/graphql-type-source-printer.d.ts +1 -0
  21. package/dist/codegen/graphql/source-printer/graphql-type-source-printer.js +6 -3
  22. package/dist/codegen/graphql/source-printer/graphql-type-source-printer.js.map +1 -1
  23. package/dist/codegen/graphql/type/constants.d.ts +8 -0
  24. package/dist/codegen/graphql/type/constants.js +9 -1
  25. package/dist/codegen/graphql/type/constants.js.map +1 -1
  26. package/dist/codegen/graphql/type/generateTypeUtil.d.ts +2 -1
  27. package/dist/codegen/graphql/type/generateTypeUtil.js +109 -3
  28. package/dist/codegen/graphql/type/generateTypeUtil.js.map +1 -1
  29. package/dist/codegen/graphql/type/index.js +6 -0
  30. package/dist/codegen/graphql/type/index.js.map +1 -1
  31. package/dist/codegen/graphql/type/ingest.d.ts +0 -1
  32. package/dist/codegen/graphql/type/ingest.js +56 -51
  33. package/dist/codegen/graphql/type/ingest.js.map +1 -1
  34. package/dist/codegen/graphql/type/interface.d.ts +3 -1
  35. package/dist/codegen/graphql/type/interface.js +10 -1
  36. package/dist/codegen/graphql/type/interface.js.map +1 -1
  37. package/dist/codegen/graphql/type/merge.d.ts +2 -0
  38. package/dist/codegen/graphql/type/merge.js +17 -0
  39. package/dist/codegen/graphql/type/merge.js.map +1 -0
  40. package/dist/codegen/graphql/type/query-transformer.d.ts +7 -0
  41. package/dist/codegen/graphql/type/query-transformer.js +98 -0
  42. package/dist/codegen/graphql/type/query-transformer.js.map +1 -0
  43. package/dist/codegen/graphql/type/select.d.ts +5 -0
  44. package/dist/codegen/graphql/type/select.js +179 -0
  45. package/dist/codegen/graphql/type/select.js.map +1 -0
  46. package/dist/codegen/graphql/utils/types.d.ts +7 -1
  47. package/dist/codegen/graphql/utils/types.js +28 -1
  48. package/dist/codegen/graphql/utils/types.js.map +1 -1
  49. package/dist/codegen/resource/graphql/create-resource-request.js +0 -2
  50. package/dist/codegen/resource/graphql/create-resource-request.js.map +1 -1
  51. package/dist/codegen/resource/graphql/index.js +2 -2
  52. package/dist/codegen/resource/graphql/index.js.map +1 -1
  53. package/dist/codegen/resource/graphql/select.d.ts +3 -0
  54. package/dist/codegen/resource/graphql/select.js +30 -0
  55. package/dist/codegen/resource/graphql/select.js.map +1 -0
  56. package/dist/codegen/shape/graphql/index.js +2 -2
  57. package/dist/codegen/shape/graphql/index.js.map +1 -1
  58. package/dist/codegen/shape/graphql/shape-ingest.js +7 -0
  59. package/dist/codegen/shape/graphql/shape-ingest.js.map +1 -1
  60. package/dist/codegen/shape/graphql/shape-select.d.ts +3 -0
  61. package/dist/codegen/shape/graphql/shape-select.js +77 -0
  62. package/dist/codegen/shape/graphql/shape-select.js.map +1 -0
  63. package/dist/codegen/shape/shape-utils-ingest.js +0 -22
  64. package/dist/codegen/shape/shape-utils-ingest.js.map +1 -1
  65. package/dist/codegen/shape/shape-utils.js +1 -1
  66. package/dist/codegen/shared/constants.d.ts +5 -0
  67. package/dist/codegen/shared/constants.js +6 -1
  68. package/dist/codegen/shared/constants.js.map +1 -1
  69. package/package.json +4 -4
@@ -9,14 +9,20 @@ 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");
14
+ const select_1 = require("./select");
15
+ const query_transformer_1 = require("./query-transformer");
13
16
  function generateType(graphqlDsl, graphqlTypeName, def, importContext, metadata) {
14
17
  return (0, imports_1.resolveImports)((0, deindent_1.default) `
15
18
  export const name = '${graphqlTypeName}';
16
19
  ${(0, ttl_1.generateTtl)(graphqlDsl, graphqlTypeName)}
17
20
  ${(0, interface_1.generateInterfaces)(graphqlDsl, graphqlTypeName, def, importContext, metadata)}
18
21
  ${(0, key_1.generateKey)(def, importContext, graphqlDsl.schemaName)}
22
+ ${(0, merge_1.generateMerge)(importContext)}
19
23
  ${(0, ingest_1.generateIngest)(graphqlDsl, graphqlTypeName, def, importContext, metadata)}
24
+ ${(0, select_1.generateSelect)(graphqlDsl, graphqlTypeName, def, importContext, metadata)}
25
+ ${(0, query_transformer_1.generate)(graphqlDsl, graphqlTypeName, def, importContext, metadata)}
20
26
  `);
21
27
  }
22
28
  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,oDAAwD;AAMxD,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,uBAAc,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;KAC9E,CAAC,CAAC;AACP,CAAC;AAdD,oCAcC"}
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;AAC1C,2DAA2E;AAE3E,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;UACzE,IAAA,4BAAwB,EAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC;KACxF,CAAC,CAAC;AACP,CAAC;AAjBD,oCAiBC"}
@@ -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.generateIngestFromDef = exports.ingestType = exports.ingestListType = exports.ingestNamedType = void 0;
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);
@@ -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 `if(${constants_2.REQUESTED_FIELD_IDENTIFIER}.name.value === '${fieldName}') {
25
- const ${fieldStateIdentifier} = {
26
- ...state,
27
- path: {
28
- parent: null,
29
- propertyName: ${constants_2.FIELD_KEY_IDENTIFIER},
30
- fullPath: key + '__' + ${constants_2.FIELD_KEY_IDENTIFIER}
31
- },
32
- data: ${constants_2.FIELD_DATA_IDENTIFIER},
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
- delete data[${constants_2.FIELD_DATA_KEY_IDENTIFIER}]; // TODO (W-11126527): prefer using a dataSink instead
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 `if(${constants_2.REQUESTED_FIELD_IDENTIFIER}.name.value === '${fieldName}') {
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
- ${constants_1.LUVIO_IDENTIFIER}.storePublish(${fullPathIdentifier}, ${collectionIdentifier})
76
- ${dataIdentifier} = {
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 `if(${constants_2.REQUESTED_FIELD_IDENTIFIER}.name.value === '${fieldName}') {
85
- delete data[${constants_2.FIELD_DATA_KEY_IDENTIFIER}]; // TODO (W-11126527): prefer using a dataSink instead
86
- data[${constants_2.FIELD_KEY_IDENTIFIER}] = ${constants_2.FIELD_DATA_IDENTIFIER};
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 fieldMap = type.getFields();
111
- const fieldList = Object.keys(fieldMap);
112
- const fieldIngestStatements = fieldList
113
- .map((fieldName) => {
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.astNode, (_b = field.astNode) === null || _b === void 0 ? void 0 : _b.type, importContext, normalizableTypeMap);
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
- return `const ${REQUESTED_FIELDS_IDENTIFIER}: ${constants_1.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}[] = astNode && astNode.selectionSet ?
131
- astNode.selectionSet.selections
132
- .filter((i): i is ${constants_1.LUVIO_GRAPHQL_FIELD_NODE_IMPORT} => {
133
- return i.kind === "Field";
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);
@@ -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
- ${generateIngestFromDef(graphqlDsl, def, importContext, normalizableTypeMap)};
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, data);
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":"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"}
1
+ {"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/ingest.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,14 @@
1
- import type { ObjectTypeDefinitionNode, TypeNode } from '@luvio/graphql-parser';
1
+ import type { FieldDefinitionNode, 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
4
  import type { LuvioGraphQLDSL } from '../../../intermediate/graphql';
5
5
  export declare const TYPE_INTERFACE_IDENTIFIER = "Interface";
6
+ export declare const TYPE_NAME_IDENTIFIER = "__typename";
6
7
  export declare const MINIMUM_INTERFACE_IDENTIFIER: string;
7
8
  export declare const PARTIAL_INTERFACE_IDENTIFIER: string;
8
9
  export declare function generateTypeReference(type: TypeNode, importContext: ImportContext, scalarToPrimitiveMap: Record<string, string>, state: {
9
10
  required: boolean;
10
11
  array: boolean;
11
12
  }): string;
13
+ export declare function getMinimumFields(idNode: FieldDefinitionNode | undefined): string[];
12
14
  export declare function generateInterfaces(graphqlDsl: LuvioGraphQLDSL, graphqlTypeName: string, def: ObjectTypeDefinitionNode, importContext: ImportContext, metadata: GraphQLCodegenMetadata): string;
@@ -3,11 +3,12 @@ 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.generateInterfaces = exports.generateTypeReference = exports.PARTIAL_INTERFACE_IDENTIFIER = exports.MINIMUM_INTERFACE_IDENTIFIER = exports.TYPE_INTERFACE_IDENTIFIER = void 0;
6
+ exports.generateInterfaces = exports.getMinimumFields = exports.generateTypeReference = exports.PARTIAL_INTERFACE_IDENTIFIER = exports.MINIMUM_INTERFACE_IDENTIFIER = exports.TYPE_NAME_IDENTIFIER = exports.TYPE_INTERFACE_IDENTIFIER = void 0;
7
7
  const deindent_1 = __importDefault(require("../../../utils/deindent"));
8
8
  const key_1 = require("./key");
9
9
  const utils_1 = require("./utils");
10
10
  exports.TYPE_INTERFACE_IDENTIFIER = 'Interface';
11
+ exports.TYPE_NAME_IDENTIFIER = '__typename';
11
12
  exports.MINIMUM_INTERFACE_IDENTIFIER = `Minimum${exports.TYPE_INTERFACE_IDENTIFIER}`;
12
13
  exports.PARTIAL_INTERFACE_IDENTIFIER = `Partial${exports.TYPE_INTERFACE_IDENTIFIER}`;
13
14
  function generateNamedTypeReference(type, importContext, scalarToPrimitiveMap) {
@@ -42,6 +43,14 @@ function generateTypeReference(type, importContext, scalarToPrimitiveMap, state)
42
43
  }
43
44
  }
44
45
  exports.generateTypeReference = generateTypeReference;
46
+ function getMinimumFields(idNode) {
47
+ const minimumFields = [exports.TYPE_NAME_IDENTIFIER];
48
+ if (idNode !== undefined) {
49
+ minimumFields.push(idNode.name.value);
50
+ }
51
+ return minimumFields;
52
+ }
53
+ exports.getMinimumFields = getMinimumFields;
45
54
  // Interface contains all fields of a GraphQL type
46
55
  function generateInterface(def, importContext, scalarToPrimitiveMap) {
47
56
  const { fields: graphqlFields } = def;
@@ -1 +1 @@
1
- {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/interface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ImportContext } from '../../../utils/imports';
2
+ export declare function generateMerge(importContext: ImportContext): string;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generateMerge = void 0;
7
+ const interface_1 = require("./interface");
8
+ const deindent_1 = __importDefault(require("../../../utils/deindent"));
9
+ function generateMerge(importContext) {
10
+ return (0, deindent_1.default) `
11
+ export function mergeData(existingData: ${interface_1.PARTIAL_INTERFACE_IDENTIFIER}, newData: ${interface_1.PARTIAL_INTERFACE_IDENTIFIER}): ${interface_1.PARTIAL_INTERFACE_IDENTIFIER}{
12
+ return ${importContext.importTypeUtil('ObjectAssign')}(existingData, newData);
13
+ }
14
+ `;
15
+ }
16
+ exports.generateMerge = generateMerge;
17
+ //# sourceMappingURL=merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/merge.ts"],"names":[],"mappings":";;;;;;AAAA,2CAA2D;AAC3D,uEAA+C;AAG/C,SAAgB,aAAa,CAAC,aAA4B;IACtD,OAAO,IAAA,kBAAQ,EAAA;kDAC+B,wCAA4B,cAAc,wCAA4B,MAAM,wCAA4B;qBACrI,aAAa,CAAC,cAAc,CAAC,cAAc,CAAC;;KAE5D,CAAC;AACN,CAAC;AAND,sCAMC"}
@@ -0,0 +1,7 @@
1
+ import type { InterfaceTypeDefinitionNode, 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 generateQueryTransformer(graphqlDsl: LuvioGraphQLDSL, def: ObjectTypeDefinitionNode | InterfaceTypeDefinitionNode, importContext: ImportContext): string;
6
+ export declare function generateGetMinimumFields(isQueryType: boolean, def: ObjectTypeDefinitionNode | InterfaceTypeDefinitionNode): string;
7
+ export declare function generate(graphqlDsl: LuvioGraphQLDSL, typeName: string, def: ObjectTypeDefinitionNode, importContext: ImportContext, _metadata: GraphQLCodegenMetadata): string;
@@ -0,0 +1,98 @@
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.generate = exports.generateGetMinimumFields = exports.generateQueryTransformer = void 0;
7
+ const deindent_1 = __importDefault(require("../../../utils/deindent"));
8
+ const constants_1 = require("../../shared/constants");
9
+ const utils_1 = require("../utils");
10
+ const key_1 = require("./key");
11
+ const interface_1 = require("./interface");
12
+ const constants_2 = require("./constants");
13
+ function generateQueryTransformer(graphqlDsl, def, importContext) {
14
+ const { schema } = graphqlDsl;
15
+ const type = schema.getType(def.name.value);
16
+ const fieldMap = type.getFields();
17
+ const fieldList = Object.keys(fieldMap);
18
+ const queryTransformerStatements = fieldList
19
+ .map((fieldName) => {
20
+ var _a, _b, _c, _d, _e;
21
+ const field = fieldMap[fieldName];
22
+ if ((_a = field === null || field === void 0 ? void 0 : field.astNode) === null || _a === void 0 ? void 0 : _a.type.kind) {
23
+ switch ((_b = field.astNode) === null || _b === void 0 ? void 0 : _b.type.kind) {
24
+ case 'ListType':
25
+ case 'NonNullType':
26
+ case 'NamedType': {
27
+ const fieldTypeName = (0, utils_1.resolveTypeName)((_c = field.astNode) === null || _c === void 0 ? void 0 : _c.type);
28
+ const schemaType = schema.getType(fieldTypeName);
29
+ if ((schemaType === null || schemaType === void 0 ? void 0 : schemaType.astNode) !== undefined &&
30
+ (((_d = schemaType === null || schemaType === void 0 ? void 0 : schemaType.astNode) === null || _d === void 0 ? void 0 : _d.kind) === 'InterfaceTypeDefinition' ||
31
+ ((_e = schemaType === null || schemaType === void 0 ? void 0 : schemaType.astNode) === null || _e === void 0 ? void 0 : _e.kind) === 'ObjectTypeDefinition')) {
32
+ const getQueryTransformerImport = importContext.importGraphQLArtifact(fieldTypeName, constants_2.GET_QUERY_TRANSFORMER_IDENTIFIER);
33
+ const getMinimumFieldsImport = importContext.importGraphQLArtifact(fieldTypeName, constants_2.GET_MINIMUM_FIELDS_IDENTIFIER);
34
+ return (0, deindent_1.default) `
35
+ if (fieldName === '${fieldName}') {
36
+ return {
37
+ ${constants_2.GET_QUERY_TRANSFORMER_IDENTIFIER}: ${getQueryTransformerImport},
38
+ ${constants_2.GET_MINIMUM_FIELDS_IDENTIFIER}: ${getMinimumFieldsImport}
39
+ };
40
+ }
41
+ `;
42
+ }
43
+ }
44
+ }
45
+ }
46
+ return '';
47
+ })
48
+ .filter((statement) => statement !== '');
49
+ // default return when field does not have a schema defined type
50
+ queryTransformerStatements.push('return undefined;');
51
+ const eachFieldHandling = queryTransformerStatements.join('\n');
52
+ const queryTransformerFunctionsImport = importContext.importGraphQLArtifact(constants_2.TYPE_UTIL_IDENTIFIER, constants_2.QUERY_TRANSFORMER_IDENTIFIER);
53
+ return (0, deindent_1.default) `
54
+ export function ${constants_2.GET_QUERY_TRANSFORMER_IDENTIFIER}(fieldName: string): ${queryTransformerFunctionsImport} {
55
+ ${eachFieldHandling}
56
+ }
57
+ `;
58
+ }
59
+ exports.generateQueryTransformer = generateQueryTransformer;
60
+ function generateGetMinimumFields(isQueryType, def) {
61
+ const idNode = (0, key_1.findIdNode)(def);
62
+ const minFieldStatements = isQueryType
63
+ ? ''
64
+ : (0, interface_1.getMinimumFields)(idNode)
65
+ .map((field) => {
66
+ return (0, deindent_1.default) `
67
+ minimumFields.push({
68
+ kind: 'Field',
69
+ name: {
70
+ kind: 'Name',
71
+ value: '${field}',
72
+ }
73
+ });
74
+ `;
75
+ })
76
+ .join('\n');
77
+ return (0, deindent_1.default) `
78
+ export function ${constants_2.GET_MINIMUM_FIELDS_IDENTIFIER}(): ${constants_1.LUVIO_GRAPHQL_FIELD_NODE_IMPORT}[] {
79
+ const minimumFields = [];
80
+ ${minFieldStatements}
81
+ return minimumFields;
82
+ }
83
+ `;
84
+ }
85
+ exports.generateGetMinimumFields = generateGetMinimumFields;
86
+ function generate(graphqlDsl, typeName, def, importContext, _metadata) {
87
+ var _a;
88
+ const { schema } = graphqlDsl;
89
+ const isQueryType = ((_a = schema.getQueryType()) === null || _a === void 0 ? void 0 : _a.name) === typeName;
90
+ const queryTransformer = generateQueryTransformer(graphqlDsl, def, importContext);
91
+ const minimumFields = generateGetMinimumFields(isQueryType, def);
92
+ return (0, deindent_1.default) `
93
+ ${queryTransformer}
94
+ ${minimumFields}
95
+ `;
96
+ }
97
+ exports.generate = generate;
98
+ //# sourceMappingURL=query-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-transformer.js","sourceRoot":"","sources":["../../../../src/codegen/graphql/type/query-transformer.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