@aws-amplify/api-graphql 4.0.1-api-v6-models.3eb7748.0 → 4.0.1-api-v6-models.9493d4d.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.
@@ -147,7 +147,7 @@ exports.graphQLOperationsInfo = {
147
147
  ONDELETE: { operationPrefix: 'onDelete', usePlural: false },
148
148
  };
149
149
  var graphQLDocumentsCache = new Map();
150
- var SELECTION_SET_ALL_NESTED = '*';
150
+ var SELECTION_SET_WILDCARD = '*';
151
151
  function defaultSelectionSetForModel(modelDefinition) {
152
152
  // fields that are explicitly part of the graphql schema; not
153
153
  // inferred from owner auth rules.
@@ -184,71 +184,54 @@ var FIELD_IR = '';
184
184
  * ```
185
185
  */
186
186
  function customSelectionSetToIR(modelIntrospection, modelName, selectionSet) {
187
- var e_2, _a;
188
- var _b, _c, _d, _e;
189
187
  var modelDefinition = modelIntrospection[modelName];
190
- var fields = modelDefinition.fields;
191
- var intermediateSelectionSet = {};
192
- try {
193
- for (var selectionSet_1 = tslib_1.__values(selectionSet), selectionSet_1_1 = selectionSet_1.next(); !selectionSet_1_1.done; selectionSet_1_1 = selectionSet_1.next()) {
194
- var f = selectionSet_1_1.value;
195
- var nested = f.includes('.');
196
- if (nested) {
197
- var _f = tslib_1.__read(f.split('.'), 2), modelFieldName = _f[0], selectedField = _f[1];
198
- var relatedModel = (_c = (_b = fields[modelFieldName]) === null || _b === void 0 ? void 0 : _b.type) === null || _c === void 0 ? void 0 : _c.model;
199
- if (!relatedModel) {
200
- // TODO: may need to change this to support custom types
201
- throw Error("".concat(modelFieldName, " is not a model field"));
202
- }
203
- if (selectedField === SELECTION_SET_ALL_NESTED) {
204
- var relatedModelDefinition = modelIntrospection[relatedModel];
205
- var defaultSelectionSet = defaultSelectionSetForModel(relatedModelDefinition);
206
- var reduced = defaultSelectionSet.reduce(function (acc, curVal) {
207
- acc[curVal] = FIELD_IR;
208
- return acc;
209
- }, {});
210
- if ((_d = fields[modelFieldName]) === null || _d === void 0 ? void 0 : _d.isArray) {
211
- intermediateSelectionSet[modelFieldName] = {
212
- items: reduced,
213
- };
214
- }
215
- else {
216
- intermediateSelectionSet[modelFieldName] = reduced;
217
- }
218
- }
219
- else {
220
- var getNestedSelSet = customSelectionSetToIR(modelIntrospection, relatedModel, [selectedField]);
221
- if ((_e = fields[modelFieldName]) === null || _e === void 0 ? void 0 : _e.isArray) {
222
- var existing = intermediateSelectionSet[modelFieldName] || { items: {} };
223
- var merged = tslib_1.__assign(tslib_1.__assign({}, existing.items), getNestedSelSet);
224
- intermediateSelectionSet[modelFieldName] = { items: merged };
225
- }
226
- else {
227
- var existingItems = intermediateSelectionSet[modelFieldName] || {};
228
- var merged = tslib_1.__assign(tslib_1.__assign({}, existingItems), getNestedSelSet);
229
- intermediateSelectionSet[modelFieldName] = merged;
230
- }
231
- }
188
+ var modelFields = modelDefinition.fields;
189
+ return selectionSet.reduce(function (resultObj, path) {
190
+ var _a, _b, _c;
191
+ var _d = tslib_1.__read(path.split('.')), fieldName = _d[0], nested = _d[1], rest = _d.slice(2);
192
+ if (nested) {
193
+ var relatedModel = (_b = (_a = modelFields[fieldName]) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.model;
194
+ if (!relatedModel) {
195
+ // TODO: may need to change this to support custom types
196
+ throw Error("".concat(fieldName, " is not a model field"));
232
197
  }
233
- else {
234
- var exists = Boolean(fields[f]);
235
- if (!exists) {
236
- throw Error("".concat(f, " is not a field of model ").concat(modelName));
237
- }
238
- intermediateSelectionSet[f] = FIELD_IR;
198
+ var relatedModelDefinition = modelIntrospection[relatedModel];
199
+ var selectionSet_1 = nested === SELECTION_SET_WILDCARD
200
+ ? defaultSelectionSetIR(relatedModelDefinition)
201
+ : // if we have a path like 'field.anotherField' recursively build up selection set IR
202
+ customSelectionSetToIR(modelIntrospection, relatedModel, [
203
+ tslib_1.__spreadArray([nested], tslib_1.__read(rest), false).join('.'),
204
+ ]);
205
+ if ((_c = modelFields[fieldName]) === null || _c === void 0 ? void 0 : _c.isArray) {
206
+ var existing = resultObj[fieldName] || {
207
+ items: {},
208
+ };
209
+ var merged_1 = tslib_1.__assign(tslib_1.__assign({}, existing.items), selectionSet_1);
210
+ resultObj[fieldName] = { items: merged_1 };
211
+ return resultObj;
239
212
  }
213
+ var existingItems = resultObj[fieldName] || {};
214
+ var merged = tslib_1.__assign(tslib_1.__assign({}, existingItems), selectionSet_1);
215
+ resultObj[fieldName] = merged;
216
+ return resultObj;
240
217
  }
241
- }
242
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
243
- finally {
244
- try {
245
- if (selectionSet_1_1 && !selectionSet_1_1.done && (_a = selectionSet_1.return)) _a.call(selectionSet_1);
218
+ var exists = Boolean(modelFields[fieldName]);
219
+ if (!exists) {
220
+ throw Error("".concat(fieldName, " is not a field of model ").concat(modelName));
246
221
  }
247
- finally { if (e_2) throw e_2.error; }
248
- }
249
- return intermediateSelectionSet;
222
+ resultObj[fieldName] = FIELD_IR;
223
+ return resultObj;
224
+ }, {});
250
225
  }
251
226
  exports.customSelectionSetToIR = customSelectionSetToIR;
227
+ var defaultSelectionSetIR = function (relatedModelDefinition) {
228
+ var defaultSelectionSet = defaultSelectionSetForModel(relatedModelDefinition);
229
+ var reduced = defaultSelectionSet.reduce(function (acc, curVal) {
230
+ acc[curVal] = FIELD_IR;
231
+ return acc;
232
+ }, {});
233
+ return reduced;
234
+ };
252
235
  /**
253
236
  * Stringifies selection set IR
254
237
  * * @example