@aws-amplify/api-graphql 4.0.18-unstable.b758843.0 → 4.0.18

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 (51) hide show
  1. package/dist/cjs/internals/APIClient.js +95 -34
  2. package/dist/cjs/internals/APIClient.js.map +1 -1
  3. package/dist/cjs/internals/generateClient.js +7 -0
  4. package/dist/cjs/internals/generateClient.js.map +1 -1
  5. package/dist/cjs/internals/generateCustomOperationsProperty.js +45 -0
  6. package/dist/cjs/internals/generateCustomOperationsProperty.js.map +1 -0
  7. package/dist/cjs/internals/operations/custom.js +289 -0
  8. package/dist/cjs/internals/operations/custom.js.map +1 -0
  9. package/dist/cjs/internals/operations/get.js +1 -1
  10. package/dist/cjs/internals/operations/get.js.map +1 -1
  11. package/dist/cjs/internals/operations/indexQuery.js +1 -1
  12. package/dist/cjs/internals/operations/indexQuery.js.map +1 -1
  13. package/dist/cjs/internals/operations/list.js +1 -1
  14. package/dist/cjs/internals/operations/list.js.map +1 -1
  15. package/dist/cjs/internals/operations/subscription.js +1 -1
  16. package/dist/cjs/internals/operations/subscription.js.map +1 -1
  17. package/dist/cjs/internals/server/generateClientWithAmplifyInstance.js +11 -1
  18. package/dist/cjs/internals/server/generateClientWithAmplifyInstance.js.map +1 -1
  19. package/dist/esm/internals/APIClient.d.ts +4 -4
  20. package/dist/esm/internals/APIClient.mjs +95 -34
  21. package/dist/esm/internals/APIClient.mjs.map +1 -1
  22. package/dist/esm/internals/generateClient.mjs +7 -0
  23. package/dist/esm/internals/generateClient.mjs.map +1 -1
  24. package/dist/esm/internals/generateCustomOperationsProperty.d.ts +8 -0
  25. package/dist/esm/internals/generateCustomOperationsProperty.mjs +41 -0
  26. package/dist/esm/internals/generateCustomOperationsProperty.mjs.map +1 -0
  27. package/dist/esm/internals/operations/custom.d.ts +60 -0
  28. package/dist/esm/internals/operations/custom.mjs +287 -0
  29. package/dist/esm/internals/operations/custom.mjs.map +1 -0
  30. package/dist/esm/internals/operations/get.mjs +1 -1
  31. package/dist/esm/internals/operations/get.mjs.map +1 -1
  32. package/dist/esm/internals/operations/indexQuery.mjs +1 -1
  33. package/dist/esm/internals/operations/indexQuery.mjs.map +1 -1
  34. package/dist/esm/internals/operations/list.mjs +1 -1
  35. package/dist/esm/internals/operations/list.mjs.map +1 -1
  36. package/dist/esm/internals/operations/subscription.mjs +1 -1
  37. package/dist/esm/internals/operations/subscription.mjs.map +1 -1
  38. package/dist/esm/internals/server/generateClientWithAmplifyInstance.mjs +12 -2
  39. package/dist/esm/internals/server/generateClientWithAmplifyInstance.mjs.map +1 -1
  40. package/dist/esm/types/index.d.ts +9 -1
  41. package/package.json +6 -6
  42. package/src/internals/APIClient.ts +138 -44
  43. package/src/internals/generateClient.ts +25 -1
  44. package/src/internals/generateCustomOperationsProperty.ts +89 -0
  45. package/src/internals/operations/custom.ts +382 -0
  46. package/src/internals/operations/get.ts +1 -1
  47. package/src/internals/operations/indexQuery.ts +1 -1
  48. package/src/internals/operations/list.ts +1 -1
  49. package/src/internals/operations/subscription.ts +3 -1
  50. package/src/internals/server/generateClientWithAmplifyInstance.ts +20 -1
  51. package/src/types/index.ts +11 -1
@@ -192,15 +192,37 @@ const graphQLOperationsInfo = {
192
192
  OBSERVE_QUERY: { operationPrefix: 'observeQuery', usePlural: false },
193
193
  };
194
194
  const SELECTION_SET_WILDCARD = '*';
195
+ function defaultSelectionSetForNonModel(nonModelDefinition) {
196
+ // fields that are explicitly part of the graphql schema;
197
+ const { fields } = nonModelDefinition;
198
+ const explicitFields = Object.values(fields)
199
+ // Default selection set omits non-model fields
200
+ .map(({ type, name }) => (typeof type === 'string' ||
201
+ (typeof type === 'object' && typeof type?.enum === 'string')) &&
202
+ name)
203
+ .filter(Boolean);
204
+ // fields used for owner auth rules that may or may not also
205
+ // be explicit on the model.
206
+ return Array.from(new Set(explicitFields));
207
+ }
195
208
  function defaultSelectionSetForModel(modelDefinition) {
196
209
  // fields that are explicitly part of the graphql schema; not
197
210
  // inferred from owner auth rules.
198
211
  const { fields } = modelDefinition;
199
212
  const explicitFields = Object.values(fields)
200
213
  // Default selection set omits model fields
201
- .map(({ type, name }) => (typeof type === 'string' ||
202
- (typeof type === 'object' && typeof type?.enum === 'string')) &&
203
- name)
214
+ .map(({ type, name }) => {
215
+ if (typeof type === 'string')
216
+ return name;
217
+ if (typeof type === 'object') {
218
+ if (typeof type?.enum === 'string') {
219
+ return name;
220
+ }
221
+ else if (typeof type?.nonModel === 'string') {
222
+ return `${name}.${SELECTION_SET_WILDCARD}`;
223
+ }
224
+ }
225
+ })
204
226
  .filter(Boolean);
205
227
  // fields used for owner auth rules that may or may not also
206
228
  // be explicit on the model.
@@ -227,34 +249,51 @@ const FIELD_IR = '';
227
249
  * }
228
250
  * ```
229
251
  */
230
- function customSelectionSetToIR(modelDefinitions, modelName, selectionSet) {
231
- const dotNotationToObject = (path, modelName) => {
252
+ function customSelectionSetToIR(modelInstrospection, modelName, selectionSet) {
253
+ const dotNotationToObject = (path, modelOrNonModelName) => {
232
254
  const [fieldName, ...rest] = path.split('.');
233
- let result = {};
234
- if (rest.length === 0) {
235
- result = { [fieldName]: FIELD_IR };
255
+ const nested = rest[0];
256
+ const modelDefinition = modelInstrospection.models[modelOrNonModelName];
257
+ const modelFields = modelDefinition?.fields;
258
+ const relatedModel = modelFields?.[fieldName]?.type
259
+ ?.model;
260
+ const relatedModelDefinition = modelInstrospection.models[relatedModel];
261
+ const relatedNonModel = modelFields?.[fieldName]?.type?.nonModel;
262
+ const relatedNonModelDefinition = modelInstrospection.nonModels[relatedNonModel];
263
+ const isModelOrNonModelOrField = relatedModelDefinition
264
+ ? 'model'
265
+ : relatedNonModelDefinition
266
+ ? 'nonModel'
267
+ : 'field';
268
+ if (isModelOrNonModelOrField === 'nonModel') {
269
+ let result = {};
270
+ if (!nested) {
271
+ throw Error(`${fieldName} must declare a wildcard (*) or a field of custom type ${relatedNonModel}`);
272
+ }
273
+ if (nested === SELECTION_SET_WILDCARD) {
274
+ result = {
275
+ [fieldName]: nonModelsDefaultSelectionSetIR(relatedNonModelDefinition),
276
+ };
277
+ }
278
+ else {
279
+ result = {
280
+ [fieldName]: dotNotationToObject(rest.join('.'), relatedNonModel),
281
+ };
282
+ }
283
+ return result;
236
284
  }
237
- else {
238
- const nested = rest[0];
239
- const modelDefinition = modelDefinitions[modelName];
240
- const modelFields = modelDefinition.fields;
241
- const relatedModel = modelFields[fieldName]?.type
242
- ?.model;
243
- if (!relatedModel) {
244
- // TODO: may need to change this to support custom types
245
- throw Error(`${fieldName} is not a model field`);
285
+ else if (isModelOrNonModelOrField === 'model') {
286
+ let result = {};
287
+ if (!nested) {
288
+ throw Error(`${fieldName} must declare a wildcard (*) or a field of model ${relatedModel}`);
246
289
  }
247
290
  if (nested === SELECTION_SET_WILDCARD) {
248
- const relatedModelDefinition = modelDefinitions[relatedModel];
291
+ const relatedModelDefinition = modelInstrospection.models[relatedModel];
249
292
  result = {
250
- [fieldName]: defaultSelectionSetIR(relatedModelDefinition),
293
+ [fieldName]: modelsDefaultSelectionSetIR(relatedModelDefinition),
251
294
  };
252
295
  }
253
296
  else {
254
- const exists = Boolean(modelFields[fieldName]);
255
- if (!exists) {
256
- throw Error(`${fieldName} is not a field of model ${modelName}`);
257
- }
258
297
  result = {
259
298
  [fieldName]: dotNotationToObject(rest.join('.'), relatedModel),
260
299
  };
@@ -266,12 +305,29 @@ function customSelectionSetToIR(modelDefinitions, modelName, selectionSet) {
266
305
  },
267
306
  };
268
307
  }
308
+ return result;
309
+ }
310
+ else {
311
+ const modelField = modelFields?.[fieldName];
312
+ const nonModelDefinition = modelInstrospection.nonModels[modelOrNonModelName];
313
+ const nonModelField = nonModelDefinition?.fields?.[fieldName];
314
+ if (!nonModelDefinition) {
315
+ const isOwnerField = resolveOwnerFields(modelDefinition).includes(fieldName);
316
+ if (!modelField && !isOwnerField) {
317
+ throw Error(`${fieldName} is not a field of model ${modelOrNonModelName}`);
318
+ }
319
+ }
320
+ else {
321
+ if (!nonModelField) {
322
+ throw Error(`${fieldName} is not a field of custom type ${modelOrNonModelName}`);
323
+ }
324
+ }
325
+ return { [fieldName]: FIELD_IR };
269
326
  }
270
- return result;
271
327
  };
272
328
  return selectionSet.reduce((resultObj, path) => deepMergeSelectionSetObjects(dotNotationToObject(path, modelName), resultObj), {});
273
329
  }
274
- const defaultSelectionSetIR = (relatedModelDefinition) => {
330
+ const modelsDefaultSelectionSetIR = (relatedModelDefinition) => {
275
331
  const defaultSelectionSet = defaultSelectionSetForModel(relatedModelDefinition);
276
332
  const reduced = defaultSelectionSet.reduce((acc, curVal) => {
277
333
  acc[curVal] = FIELD_IR;
@@ -279,6 +335,14 @@ const defaultSelectionSetIR = (relatedModelDefinition) => {
279
335
  }, {});
280
336
  return reduced;
281
337
  };
338
+ const nonModelsDefaultSelectionSetIR = (relatedNonModelDefinition) => {
339
+ const defaultSelectionSet = defaultSelectionSetForNonModel(relatedNonModelDefinition);
340
+ const reduced = defaultSelectionSet.reduce((acc, curVal) => {
341
+ acc[curVal] = FIELD_IR;
342
+ return acc;
343
+ }, {});
344
+ return reduced;
345
+ };
282
346
  /**
283
347
  * Stringifies selection set IR
284
348
  * * @example
@@ -334,17 +398,14 @@ function deepMergeSelectionSetObjects(source, target) {
334
398
  }
335
399
  return target;
336
400
  }
337
- function generateSelectionSet(modelDefinitions, modelName, selectionSet) {
338
- const modelDefinition = modelDefinitions[modelName];
339
- if (!selectionSet) {
340
- return defaultSelectionSetForModel(modelDefinition).join(' ');
341
- }
342
- const selSetIr = customSelectionSetToIR(modelDefinitions, modelName, selectionSet);
401
+ function generateSelectionSet(modelInstrospection, modelName, selectionSet) {
402
+ const modelDefinition = modelInstrospection.models[modelName];
403
+ const selSetIr = customSelectionSetToIR(modelInstrospection, modelName, selectionSet ?? defaultSelectionSetForModel(modelDefinition));
343
404
  const selSetString = selectionSetIRToString(selSetIr);
344
405
  return selSetString;
345
406
  }
346
- function generateGraphQLDocument(modelDefinitions, modelName, modelOperation, listArgs, indexMeta) {
347
- const modelDefinition = modelDefinitions[modelName];
407
+ function generateGraphQLDocument(modelInstrospection, modelName, modelOperation, listArgs, indexMeta) {
408
+ const modelDefinition = modelInstrospection.models[modelName];
348
409
  const { name, pluralName, fields, primaryKeyInfo: { isCustomPrimaryKey, primaryKeyFieldName, sortKeyFieldNames, }, } = modelDefinition;
349
410
  const { operationPrefix, usePlural } = graphQLOperationsInfo[modelOperation];
350
411
  const { selectionSet } = listArgs || {};
@@ -372,7 +433,7 @@ function generateGraphQLDocument(modelDefinitions, modelName, modelOperation, li
372
433
  let graphQLOperationType;
373
434
  let graphQLSelectionSet;
374
435
  let graphQLArguments;
375
- const selectionSetFields = generateSelectionSet(modelDefinitions, modelName, selectionSet);
436
+ const selectionSetFields = generateSelectionSet(modelInstrospection, modelName, selectionSet);
376
437
  switch (modelOperation) {
377
438
  case 'CREATE':
378
439
  case 'UPDATE':
@@ -1 +1 @@
1
- {"version":3,"file":"APIClient.mjs","sources":["../../../src/internals/APIClient.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { resolveOwnerFields } from '../utils/resolveOwnerFields';\nimport { __authMode, __authToken, __headers, } from '../types';\nconst connectionType = {\n HAS_ONE: 'HAS_ONE',\n HAS_MANY: 'HAS_MANY',\n BELONGS_TO: 'BELONGS_TO',\n};\n/**\n *\n * @param GraphQL response object\n * @returns response object with `items` properties flattened\n */\nexport const flattenItems = (obj) => {\n const res = {};\n Object.entries(obj).forEach(([prop, value]) => {\n if (typeof value === 'object' && !Array.isArray(value) && value !== null) {\n if (value.items !== undefined) {\n res[prop] = value.items.map((item) => flattenItems(item));\n return;\n }\n res[prop] = flattenItems(value);\n return;\n }\n res[prop] = value;\n });\n return res;\n};\n// TODO: this should accept single result to support CRUD methods; create helper for array/list\nexport function initializeModel(client, modelName, result, modelIntrospection, authMode, authToken, context = false) {\n const introModel = modelIntrospection.models[modelName];\n const introModelFields = introModel.fields;\n const modelFields = Object.entries(introModelFields)\n .filter(([_, field]) => field?.type?.model !== undefined)\n .map(([fieldName]) => fieldName);\n return result.map(record => {\n const initializedRelationalFields = {};\n for (const fieldName of modelFields) {\n const modelField = introModelFields[fieldName];\n const modelFieldType = modelField?.type;\n const relatedModelName = modelFieldType.model;\n const relatedModel = modelIntrospection.models[relatedModelName];\n const relatedModelPKFieldName = relatedModel.primaryKeyInfo.primaryKeyFieldName;\n const relatedModelSKFieldNames = relatedModel.primaryKeyInfo.sortKeyFieldNames;\n const relationType = modelField.association?.connectionType;\n let connectionFields = [];\n if (modelField.association &&\n 'associatedWith' in modelField.association) {\n connectionFields = modelField.association.associatedWith;\n }\n let targetNames = [];\n if (modelField.association && 'targetNames' in modelField.association) {\n targetNames = modelField.association.targetNames;\n }\n switch (relationType) {\n case connectionType.HAS_ONE:\n case connectionType.BELONGS_TO:\n const sortKeyValues = relatedModelSKFieldNames.reduce((acc, curVal) => {\n if (record[curVal]) {\n return (acc[curVal] = record[curVal]);\n }\n }, {});\n if (context) {\n initializedRelationalFields[fieldName] = (contextSpec, options) => {\n if (record[targetNames[0]]) {\n return client.models[relatedModelName].get(contextSpec, {\n [relatedModelPKFieldName]: record[targetNames[0]],\n ...sortKeyValues,\n }, {\n authMode: options?.authMode || authMode,\n authToken: options?.authToken || authToken,\n });\n }\n return undefined;\n };\n }\n else {\n initializedRelationalFields[fieldName] = (options) => {\n if (record[targetNames[0]]) {\n return client.models[relatedModelName].get({\n [relatedModelPKFieldName]: record[targetNames[0]],\n ...sortKeyValues,\n }, {\n authMode: options?.authMode || authMode,\n authToken: options?.authToken || authToken,\n });\n }\n return undefined;\n };\n }\n break;\n case connectionType.HAS_MANY:\n const parentPk = introModel.primaryKeyInfo.primaryKeyFieldName;\n const parentSK = introModel.primaryKeyInfo.sortKeyFieldNames;\n // M:N check - TODO: refactor\n const relatedModelField = relatedModel.fields[connectionFields[0]];\n const relatedModelFieldType = relatedModelField.type;\n if (relatedModelFieldType.model) {\n let relatedTargetNames = [];\n if (relatedModelField.association &&\n 'targetNames' in relatedModelField.association) {\n relatedTargetNames = relatedModelField.association?.targetNames;\n }\n const hasManyFilter = relatedTargetNames.map((field, idx) => {\n if (idx === 0) {\n return { [field]: { eq: record[parentPk] } };\n }\n return { [field]: { eq: record[parentSK[idx - 1]] } };\n });\n if (context) {\n initializedRelationalFields[fieldName] = (contextSpec, options) => {\n if (record[parentPk]) {\n return client.models[relatedModelName].list(contextSpec, {\n filter: { and: hasManyFilter },\n limit: options?.limit,\n nextToken: options?.nextToken,\n authMode: options?.authMode || authMode,\n authToken: options?.authToken || authToken,\n });\n }\n return [];\n };\n }\n else {\n initializedRelationalFields[fieldName] = (options) => {\n if (record[parentPk]) {\n return client.models[relatedModelName].list({\n filter: { and: hasManyFilter },\n limit: options?.limit,\n nextToken: options?.nextToken,\n authMode: options?.authMode || authMode,\n authToken: options?.authToken || authToken,\n });\n }\n return [];\n };\n }\n break;\n }\n const hasManyFilter = connectionFields.map((field, idx) => {\n if (idx === 0) {\n return { [field]: { eq: record[parentPk] } };\n }\n return { [field]: { eq: record[parentSK[idx - 1]] } };\n });\n if (context) {\n initializedRelationalFields[fieldName] = (contextSpec, options) => {\n if (record[parentPk]) {\n return client.models[relatedModelName].list(contextSpec, {\n filter: { and: hasManyFilter },\n limit: options?.limit,\n nextToken: options?.nextToken,\n authMode: options?.authMode || authMode,\n authToken: options?.authToken || authToken,\n });\n }\n return [];\n };\n }\n else {\n initializedRelationalFields[fieldName] = (options) => {\n if (record[parentPk]) {\n return client.models[relatedModelName].list({\n filter: { and: hasManyFilter },\n limit: options?.limit,\n nextToken: options?.nextToken,\n authMode: options?.authMode || authMode,\n authToken: options?.authToken || authToken,\n });\n }\n return [];\n };\n }\n break;\n default:\n break;\n }\n }\n return { ...record, ...initializedRelationalFields };\n });\n}\nexport const graphQLOperationsInfo = {\n CREATE: { operationPrefix: 'create', usePlural: false },\n READ: { operationPrefix: 'get', usePlural: false },\n UPDATE: { operationPrefix: 'update', usePlural: false },\n DELETE: { operationPrefix: 'delete', usePlural: false },\n LIST: { operationPrefix: 'list', usePlural: true },\n INDEX_QUERY: { operationPrefix: '', usePlural: false },\n ONCREATE: { operationPrefix: 'onCreate', usePlural: false },\n ONUPDATE: { operationPrefix: 'onUpdate', usePlural: false },\n ONDELETE: { operationPrefix: 'onDelete', usePlural: false },\n OBSERVE_QUERY: { operationPrefix: 'observeQuery', usePlural: false },\n};\nconst SELECTION_SET_WILDCARD = '*';\nfunction defaultSelectionSetForModel(modelDefinition) {\n // fields that are explicitly part of the graphql schema; not\n // inferred from owner auth rules.\n const { fields } = modelDefinition;\n const explicitFields = Object.values(fields)\n // Default selection set omits model fields\n .map(({ type, name }) => (typeof type === 'string' ||\n (typeof type === 'object' && typeof type?.enum === 'string')) &&\n name)\n .filter(Boolean);\n // fields used for owner auth rules that may or may not also\n // be explicit on the model.\n const ownerFields = resolveOwnerFields(modelDefinition);\n return Array.from(new Set(explicitFields.concat(ownerFields)));\n}\nconst FIELD_IR = '';\n/**\n * Generates nested Custom Selection Set IR from path\n *\n * @param modelDefinitions\n * @param modelName\n * @param selectionSet - array of object paths\n * @example\n * ### Given\n * `selectionSet = ['id', 'comments.post.id']`\n * ### Returns\n * ```ts\n * {\n * id: '',\n * comments: {\n * items: { post: { id: '' } }\n * }\n * }\n * ```\n */\nexport function customSelectionSetToIR(modelDefinitions, modelName, selectionSet) {\n const dotNotationToObject = (path, modelName) => {\n const [fieldName, ...rest] = path.split('.');\n let result = {};\n if (rest.length === 0) {\n result = { [fieldName]: FIELD_IR };\n }\n else {\n const nested = rest[0];\n const modelDefinition = modelDefinitions[modelName];\n const modelFields = modelDefinition.fields;\n const relatedModel = modelFields[fieldName]?.type\n ?.model;\n if (!relatedModel) {\n // TODO: may need to change this to support custom types\n throw Error(`${fieldName} is not a model field`);\n }\n if (nested === SELECTION_SET_WILDCARD) {\n const relatedModelDefinition = modelDefinitions[relatedModel];\n result = {\n [fieldName]: defaultSelectionSetIR(relatedModelDefinition),\n };\n }\n else {\n const exists = Boolean(modelFields[fieldName]);\n if (!exists) {\n throw Error(`${fieldName} is not a field of model ${modelName}`);\n }\n result = {\n [fieldName]: dotNotationToObject(rest.join('.'), relatedModel),\n };\n }\n if (modelFields[fieldName]?.isArray) {\n result = {\n [fieldName]: {\n items: result[fieldName],\n },\n };\n }\n }\n return result;\n };\n return selectionSet.reduce((resultObj, path) => deepMergeSelectionSetObjects(dotNotationToObject(path, modelName), resultObj), {});\n}\nconst defaultSelectionSetIR = (relatedModelDefinition) => {\n const defaultSelectionSet = defaultSelectionSetForModel(relatedModelDefinition);\n const reduced = defaultSelectionSet.reduce((acc, curVal) => {\n acc[curVal] = FIELD_IR;\n return acc;\n }, {});\n return reduced;\n};\n/**\n * Stringifies selection set IR\n * * @example\n * ### Given\n * ```ts\n * {\n * id: '',\n * comments: {\n * items: { post: { id: '' } }\n * }\n * }\n * ```\n * ### Returns\n * `'id comments { items { post { id } } }'`\n */\nexport function selectionSetIRToString(obj) {\n const res = [];\n Object.entries(obj).forEach(([fieldName, value]) => {\n if (value === FIELD_IR) {\n res.push(fieldName);\n }\n else if (typeof value === 'object' && value !== null) {\n if (value?.items) {\n res.push(fieldName, '{', 'items', '{', selectionSetIRToString(value.items), '}', '}');\n }\n else {\n res.push(fieldName, '{', selectionSetIRToString(value), '}');\n }\n }\n });\n return res.join(' ');\n}\n/**\n * Recursively merges selection set objects from `source` onto `target`.\n *\n * `target` will be updated. `source` will be left alone.\n *\n * @param source The object to merge into target.\n * @param target The object to be mutated.\n */\nfunction deepMergeSelectionSetObjects(source, target) {\n const isObject = (obj) => obj && typeof obj === 'object';\n for (const key in source) {\n // This verification avoids 'Prototype Pollution' issue\n if (!source.hasOwnProperty(key))\n continue;\n if (target.hasOwnProperty(key) && isObject(target[key])) {\n deepMergeSelectionSetObjects(source[key], target[key]);\n }\n else {\n target[key] = source[key];\n }\n }\n return target;\n}\nexport function generateSelectionSet(modelDefinitions, modelName, selectionSet) {\n const modelDefinition = modelDefinitions[modelName];\n if (!selectionSet) {\n return defaultSelectionSetForModel(modelDefinition).join(' ');\n }\n const selSetIr = customSelectionSetToIR(modelDefinitions, modelName, selectionSet);\n const selSetString = selectionSetIRToString(selSetIr);\n return selSetString;\n}\nexport function generateGraphQLDocument(modelDefinitions, modelName, modelOperation, listArgs, indexMeta) {\n const modelDefinition = modelDefinitions[modelName];\n const { name, pluralName, fields, primaryKeyInfo: { isCustomPrimaryKey, primaryKeyFieldName, sortKeyFieldNames, }, } = modelDefinition;\n const { operationPrefix, usePlural } = graphQLOperationsInfo[modelOperation];\n const { selectionSet } = listArgs || {};\n let graphQLFieldName;\n let indexQueryArgs;\n if (operationPrefix) {\n graphQLFieldName = `${operationPrefix}${usePlural ? pluralName : name}`;\n }\n else if (indexMeta) {\n const { queryField, pk, sk = [] } = indexMeta;\n graphQLFieldName = queryField;\n const skQueryArgs = sk.reduce((acc, fieldName) => {\n const fieldType = fields[fieldName].type;\n acc[fieldName] = `Model${fieldType}KeyConditionInput`;\n return acc;\n }, {});\n indexQueryArgs = {\n [pk]: `${fields[pk].type}!`,\n ...skQueryArgs,\n };\n }\n else {\n throw new Error('Error generating GraphQL Document - invalid operation name');\n }\n let graphQLOperationType;\n let graphQLSelectionSet;\n let graphQLArguments;\n const selectionSetFields = generateSelectionSet(modelDefinitions, modelName, selectionSet);\n switch (modelOperation) {\n case 'CREATE':\n case 'UPDATE':\n case 'DELETE':\n graphQLArguments ??\n (graphQLArguments = {\n input: `${operationPrefix.charAt(0).toLocaleUpperCase() +\n operationPrefix.slice(1)}${name}Input!`,\n });\n graphQLOperationType ?? (graphQLOperationType = 'mutation');\n case 'READ':\n graphQLArguments ??\n (graphQLArguments = isCustomPrimaryKey\n ? [primaryKeyFieldName, ...sortKeyFieldNames].reduce((acc, fieldName) => {\n acc[fieldName] = `${fields[fieldName].type}!`;\n return acc;\n }, {})\n : {\n [primaryKeyFieldName]: `${fields[primaryKeyFieldName].type}!`,\n });\n graphQLSelectionSet ?? (graphQLSelectionSet = selectionSetFields);\n case 'LIST':\n graphQLArguments ??\n (graphQLArguments = {\n filter: `Model${name}FilterInput`,\n limit: 'Int',\n nextToken: 'String',\n });\n graphQLOperationType ?? (graphQLOperationType = 'query');\n graphQLSelectionSet ??\n (graphQLSelectionSet = `items { ${selectionSetFields} } nextToken __typename`);\n case 'INDEX_QUERY':\n graphQLArguments ??\n (graphQLArguments = {\n ...indexQueryArgs,\n filter: `Model${name}FilterInput`,\n limit: 'Int',\n nextToken: 'String',\n });\n graphQLOperationType ?? (graphQLOperationType = 'query');\n graphQLSelectionSet ??\n (graphQLSelectionSet = `items { ${selectionSetFields} } nextToken __typename`);\n case 'ONCREATE':\n case 'ONUPDATE':\n case 'ONDELETE':\n graphQLArguments ??\n (graphQLArguments = {\n filter: `ModelSubscription${name}FilterInput`,\n });\n graphQLOperationType ?? (graphQLOperationType = 'subscription');\n graphQLSelectionSet ?? (graphQLSelectionSet = selectionSetFields);\n break;\n case 'OBSERVE_QUERY':\n default:\n throw new Error('Internal error: Attempted to generate graphql document for observeQuery. Please report this error.');\n }\n const graphQLDocument = `${graphQLOperationType}${graphQLArguments\n ? `(${Object.entries(graphQLArguments).map(([fieldName, type]) => `\\$${fieldName}: ${type}`)})`\n : ''} { ${graphQLFieldName}${graphQLArguments\n ? `(${Object.keys(graphQLArguments).map(fieldName => `${fieldName}: \\$${fieldName}`)})`\n : ''} { ${graphQLSelectionSet} } }`;\n return graphQLDocument;\n}\nexport function buildGraphQLVariables(modelDefinition, operation, arg, modelIntrospection, indexMeta) {\n const { fields, primaryKeyInfo: { isCustomPrimaryKey, primaryKeyFieldName, sortKeyFieldNames, }, } = modelDefinition;\n let variables = {};\n // TODO: process input\n switch (operation) {\n case 'CREATE':\n variables = {\n input: arg\n ? normalizeMutationInput(arg, modelDefinition, modelIntrospection)\n : {},\n };\n break;\n case 'UPDATE':\n // readonly fields are not updated\n variables = {\n input: arg\n ? Object.fromEntries(Object.entries(normalizeMutationInput(arg, modelDefinition, modelIntrospection)).filter(([fieldName]) => {\n const { isReadOnly } = fields[fieldName];\n return !isReadOnly;\n }))\n : {},\n };\n break;\n case 'READ':\n case 'DELETE':\n // only identifiers are sent\n if (arg) {\n variables = isCustomPrimaryKey\n ? [primaryKeyFieldName, ...sortKeyFieldNames].reduce((acc, fieldName) => {\n acc[fieldName] = arg[fieldName];\n return acc;\n }, {})\n : { [primaryKeyFieldName]: arg[primaryKeyFieldName] };\n }\n if (operation === 'DELETE') {\n variables = { input: variables };\n }\n break;\n case 'LIST':\n if (arg?.filter) {\n variables.filter = arg.filter;\n }\n if (arg?.nextToken) {\n variables.nextToken = arg.nextToken;\n }\n if (arg?.limit) {\n variables.limit = arg.limit;\n }\n break;\n case 'INDEX_QUERY':\n const { pk, sk = [] } = indexMeta;\n variables[pk] = arg[pk];\n for (const skField of sk) {\n variables[skField] = arg[skField];\n }\n if (arg?.filter) {\n variables.filter = arg.filter;\n }\n if (arg?.nextToken) {\n variables.nextToken = arg.nextToken;\n }\n if (arg?.limit) {\n variables.limit = arg.limit;\n }\n break;\n case 'ONCREATE':\n case 'ONUPDATE':\n case 'ONDELETE':\n if (arg?.filter) {\n variables = { filter: arg.filter };\n }\n break;\n case 'OBSERVE_QUERY':\n throw new Error('Internal error: Attempted to build variables for observeQuery. Please report this error.');\n break;\n default:\n const exhaustiveCheck = operation;\n throw new Error(`Unhandled operation case: ${exhaustiveCheck}`);\n }\n return variables;\n}\n/**\n * Iterates over mutation input values and resolves any model inputs to their corresponding join fields/values\n *\n * @example\n * ### Usage\n * ```ts\n * const result = normalizeMutationInput({ post: post }, model, modelDefinition);\n * ```\n * ### Result\n * ```ts\n * { postId: \"abc123\" }\n * ```\n *\n */\nexport function normalizeMutationInput(mutationInput, model, modelIntrospection) {\n const { fields } = model;\n const normalized = {};\n Object.entries(mutationInput).forEach(([inputFieldName, inputValue]) => {\n const fieldType = fields[inputFieldName]?.type;\n const relatedModelName = fieldType?.model;\n if (relatedModelName) {\n const association = fields[inputFieldName]?.association;\n const relatedModelDef = modelIntrospection.models[relatedModelName];\n const relatedModelPkInfo = relatedModelDef.primaryKeyInfo;\n if (association?.connectionType === connectionType.HAS_ONE) {\n const associationHasOne = association;\n associationHasOne.targetNames.forEach((targetName, idx) => {\n const associatedFieldName = associationHasOne.associatedWith[idx];\n normalized[targetName] = inputValue[associatedFieldName];\n });\n }\n if (association?.connectionType === connectionType.BELONGS_TO) {\n const associationBelongsTo = association;\n associationBelongsTo.targetNames.forEach((targetName, idx) => {\n if (idx === 0) {\n const associatedFieldName = relatedModelPkInfo.primaryKeyFieldName;\n normalized[targetName] = inputValue[associatedFieldName];\n }\n else {\n const associatedFieldName = relatedModelPkInfo.sortKeyFieldNames[idx - 1];\n normalized[targetName] = inputValue[associatedFieldName];\n }\n });\n }\n }\n else {\n normalized[inputFieldName] = inputValue;\n }\n });\n return normalized;\n}\n/**\n * Produces a parameter object that can contains auth mode/token overrides\n * only if present in either `options` (first) or configured on the `client`\n * as a fallback.\n *\n * @param client Configured client from `generateClient`\n * @param options Args/Options obect from call site.\n * @returns\n */\nexport function authModeParams(client, options = {}) {\n return {\n authMode: options.authMode || client[__authMode],\n authToken: options.authToken || client[__authToken],\n };\n}\n/**\n * Retrieves custom headers from either the client or request options.\n * @param {client} V6Client | V6ClientSSRRequest | V6ClientSSRCookies - for extracting client headers\n * @param {requestHeaders} [CustomHeaders] - request headers\n * @returns {CustomHeaders} - custom headers\n */\nexport function getCustomHeaders(client, requestHeaders) {\n let headers = client[__headers] || {};\n // Individual request headers will take precedence over client headers.\n // We intentionally do *not* merge client and request headers.\n if (requestHeaders) {\n headers = requestHeaders;\n }\n return headers;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"APIClient.mjs","sources":["../../../src/internals/APIClient.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { resolveOwnerFields } from '../utils/resolveOwnerFields';\nimport { __authMode, __authToken, __headers, } from '../types';\nconst connectionType = {\n HAS_ONE: 'HAS_ONE',\n HAS_MANY: 'HAS_MANY',\n BELONGS_TO: 'BELONGS_TO',\n};\n/**\n *\n * @param GraphQL response object\n * @returns response object with `items` properties flattened\n */\nexport const flattenItems = (obj) => {\n const res = {};\n Object.entries(obj).forEach(([prop, value]) => {\n if (typeof value === 'object' && !Array.isArray(value) && value !== null) {\n if (value.items !== undefined) {\n res[prop] = value.items.map((item) => flattenItems(item));\n return;\n }\n res[prop] = flattenItems(value);\n return;\n }\n res[prop] = value;\n });\n return res;\n};\n// TODO: this should accept single result to support CRUD methods; create helper for array/list\nexport function initializeModel(client, modelName, result, modelIntrospection, authMode, authToken, context = false) {\n const introModel = modelIntrospection.models[modelName];\n const introModelFields = introModel.fields;\n const modelFields = Object.entries(introModelFields)\n .filter(([_, field]) => field?.type?.model !== undefined)\n .map(([fieldName]) => fieldName);\n return result.map(record => {\n const initializedRelationalFields = {};\n for (const fieldName of modelFields) {\n const modelField = introModelFields[fieldName];\n const modelFieldType = modelField?.type;\n const relatedModelName = modelFieldType.model;\n const relatedModel = modelIntrospection.models[relatedModelName];\n const relatedModelPKFieldName = relatedModel.primaryKeyInfo.primaryKeyFieldName;\n const relatedModelSKFieldNames = relatedModel.primaryKeyInfo.sortKeyFieldNames;\n const relationType = modelField.association?.connectionType;\n let connectionFields = [];\n if (modelField.association &&\n 'associatedWith' in modelField.association) {\n connectionFields = modelField.association.associatedWith;\n }\n let targetNames = [];\n if (modelField.association && 'targetNames' in modelField.association) {\n targetNames = modelField.association.targetNames;\n }\n switch (relationType) {\n case connectionType.HAS_ONE:\n case connectionType.BELONGS_TO:\n const sortKeyValues = relatedModelSKFieldNames.reduce((acc, curVal) => {\n if (record[curVal]) {\n return (acc[curVal] = record[curVal]);\n }\n }, {});\n if (context) {\n initializedRelationalFields[fieldName] = (contextSpec, options) => {\n if (record[targetNames[0]]) {\n return client.models[relatedModelName].get(contextSpec, {\n [relatedModelPKFieldName]: record[targetNames[0]],\n ...sortKeyValues,\n }, {\n authMode: options?.authMode || authMode,\n authToken: options?.authToken || authToken,\n });\n }\n return undefined;\n };\n }\n else {\n initializedRelationalFields[fieldName] = (options) => {\n if (record[targetNames[0]]) {\n return client.models[relatedModelName].get({\n [relatedModelPKFieldName]: record[targetNames[0]],\n ...sortKeyValues,\n }, {\n authMode: options?.authMode || authMode,\n authToken: options?.authToken || authToken,\n });\n }\n return undefined;\n };\n }\n break;\n case connectionType.HAS_MANY:\n const parentPk = introModel.primaryKeyInfo.primaryKeyFieldName;\n const parentSK = introModel.primaryKeyInfo.sortKeyFieldNames;\n // M:N check - TODO: refactor\n const relatedModelField = relatedModel.fields[connectionFields[0]];\n const relatedModelFieldType = relatedModelField.type;\n if (relatedModelFieldType.model) {\n let relatedTargetNames = [];\n if (relatedModelField.association &&\n 'targetNames' in relatedModelField.association) {\n relatedTargetNames = relatedModelField.association?.targetNames;\n }\n const hasManyFilter = relatedTargetNames.map((field, idx) => {\n if (idx === 0) {\n return { [field]: { eq: record[parentPk] } };\n }\n return { [field]: { eq: record[parentSK[idx - 1]] } };\n });\n if (context) {\n initializedRelationalFields[fieldName] = (contextSpec, options) => {\n if (record[parentPk]) {\n return client.models[relatedModelName].list(contextSpec, {\n filter: { and: hasManyFilter },\n limit: options?.limit,\n nextToken: options?.nextToken,\n authMode: options?.authMode || authMode,\n authToken: options?.authToken || authToken,\n });\n }\n return [];\n };\n }\n else {\n initializedRelationalFields[fieldName] = (options) => {\n if (record[parentPk]) {\n return client.models[relatedModelName].list({\n filter: { and: hasManyFilter },\n limit: options?.limit,\n nextToken: options?.nextToken,\n authMode: options?.authMode || authMode,\n authToken: options?.authToken || authToken,\n });\n }\n return [];\n };\n }\n break;\n }\n const hasManyFilter = connectionFields.map((field, idx) => {\n if (idx === 0) {\n return { [field]: { eq: record[parentPk] } };\n }\n return { [field]: { eq: record[parentSK[idx - 1]] } };\n });\n if (context) {\n initializedRelationalFields[fieldName] = (contextSpec, options) => {\n if (record[parentPk]) {\n return client.models[relatedModelName].list(contextSpec, {\n filter: { and: hasManyFilter },\n limit: options?.limit,\n nextToken: options?.nextToken,\n authMode: options?.authMode || authMode,\n authToken: options?.authToken || authToken,\n });\n }\n return [];\n };\n }\n else {\n initializedRelationalFields[fieldName] = (options) => {\n if (record[parentPk]) {\n return client.models[relatedModelName].list({\n filter: { and: hasManyFilter },\n limit: options?.limit,\n nextToken: options?.nextToken,\n authMode: options?.authMode || authMode,\n authToken: options?.authToken || authToken,\n });\n }\n return [];\n };\n }\n break;\n default:\n break;\n }\n }\n return { ...record, ...initializedRelationalFields };\n });\n}\nexport const graphQLOperationsInfo = {\n CREATE: { operationPrefix: 'create', usePlural: false },\n READ: { operationPrefix: 'get', usePlural: false },\n UPDATE: { operationPrefix: 'update', usePlural: false },\n DELETE: { operationPrefix: 'delete', usePlural: false },\n LIST: { operationPrefix: 'list', usePlural: true },\n INDEX_QUERY: { operationPrefix: '', usePlural: false },\n ONCREATE: { operationPrefix: 'onCreate', usePlural: false },\n ONUPDATE: { operationPrefix: 'onUpdate', usePlural: false },\n ONDELETE: { operationPrefix: 'onDelete', usePlural: false },\n OBSERVE_QUERY: { operationPrefix: 'observeQuery', usePlural: false },\n};\nconst SELECTION_SET_WILDCARD = '*';\nfunction defaultSelectionSetForNonModel(nonModelDefinition) {\n // fields that are explicitly part of the graphql schema;\n const { fields } = nonModelDefinition;\n const explicitFields = Object.values(fields)\n // Default selection set omits non-model fields\n .map(({ type, name }) => (typeof type === 'string' ||\n (typeof type === 'object' && typeof type?.enum === 'string')) &&\n name)\n .filter(Boolean);\n // fields used for owner auth rules that may or may not also\n // be explicit on the model.\n return Array.from(new Set(explicitFields));\n}\nfunction defaultSelectionSetForModel(modelDefinition) {\n // fields that are explicitly part of the graphql schema; not\n // inferred from owner auth rules.\n const { fields } = modelDefinition;\n const explicitFields = Object.values(fields)\n // Default selection set omits model fields\n .map(({ type, name }) => {\n if (typeof type === 'string')\n return name;\n if (typeof type === 'object') {\n if (typeof type?.enum === 'string') {\n return name;\n }\n else if (typeof type?.nonModel === 'string') {\n return `${name}.${SELECTION_SET_WILDCARD}`;\n }\n }\n })\n .filter(Boolean);\n // fields used for owner auth rules that may or may not also\n // be explicit on the model.\n const ownerFields = resolveOwnerFields(modelDefinition);\n return Array.from(new Set(explicitFields.concat(ownerFields)));\n}\nconst FIELD_IR = '';\n/**\n * Generates nested Custom Selection Set IR from path\n *\n * @param modelDefinitions\n * @param modelName\n * @param selectionSet - array of object paths\n * @example\n * ### Given\n * `selectionSet = ['id', 'comments.post.id']`\n * ### Returns\n * ```ts\n * {\n * id: '',\n * comments: {\n * items: { post: { id: '' } }\n * }\n * }\n * ```\n */\nexport function customSelectionSetToIR(modelInstrospection, modelName, selectionSet) {\n const dotNotationToObject = (path, modelOrNonModelName) => {\n const [fieldName, ...rest] = path.split('.');\n const nested = rest[0];\n const modelDefinition = modelInstrospection.models[modelOrNonModelName];\n const modelFields = modelDefinition?.fields;\n const relatedModel = modelFields?.[fieldName]?.type\n ?.model;\n const relatedModelDefinition = modelInstrospection.models[relatedModel];\n const relatedNonModel = modelFields?.[fieldName]?.type?.nonModel;\n const relatedNonModelDefinition = modelInstrospection.nonModels[relatedNonModel];\n const isModelOrNonModelOrField = relatedModelDefinition\n ? 'model'\n : relatedNonModelDefinition\n ? 'nonModel'\n : 'field';\n if (isModelOrNonModelOrField === 'nonModel') {\n let result = {};\n if (!nested) {\n throw Error(`${fieldName} must declare a wildcard (*) or a field of custom type ${relatedNonModel}`);\n }\n if (nested === SELECTION_SET_WILDCARD) {\n result = {\n [fieldName]: nonModelsDefaultSelectionSetIR(relatedNonModelDefinition),\n };\n }\n else {\n result = {\n [fieldName]: dotNotationToObject(rest.join('.'), relatedNonModel),\n };\n }\n return result;\n }\n else if (isModelOrNonModelOrField === 'model') {\n let result = {};\n if (!nested) {\n throw Error(`${fieldName} must declare a wildcard (*) or a field of model ${relatedModel}`);\n }\n if (nested === SELECTION_SET_WILDCARD) {\n const relatedModelDefinition = modelInstrospection.models[relatedModel];\n result = {\n [fieldName]: modelsDefaultSelectionSetIR(relatedModelDefinition),\n };\n }\n else {\n result = {\n [fieldName]: dotNotationToObject(rest.join('.'), relatedModel),\n };\n }\n if (modelFields[fieldName]?.isArray) {\n result = {\n [fieldName]: {\n items: result[fieldName],\n },\n };\n }\n return result;\n }\n else {\n const modelField = modelFields?.[fieldName];\n const nonModelDefinition = modelInstrospection.nonModels[modelOrNonModelName];\n const nonModelField = nonModelDefinition?.fields?.[fieldName];\n if (!nonModelDefinition) {\n const isOwnerField = resolveOwnerFields(modelDefinition).includes(fieldName);\n if (!modelField && !isOwnerField) {\n throw Error(`${fieldName} is not a field of model ${modelOrNonModelName}`);\n }\n }\n else {\n if (!nonModelField) {\n throw Error(`${fieldName} is not a field of custom type ${modelOrNonModelName}`);\n }\n }\n return { [fieldName]: FIELD_IR };\n }\n };\n return selectionSet.reduce((resultObj, path) => deepMergeSelectionSetObjects(dotNotationToObject(path, modelName), resultObj), {});\n}\nconst modelsDefaultSelectionSetIR = (relatedModelDefinition) => {\n const defaultSelectionSet = defaultSelectionSetForModel(relatedModelDefinition);\n const reduced = defaultSelectionSet.reduce((acc, curVal) => {\n acc[curVal] = FIELD_IR;\n return acc;\n }, {});\n return reduced;\n};\nconst nonModelsDefaultSelectionSetIR = (relatedNonModelDefinition) => {\n const defaultSelectionSet = defaultSelectionSetForNonModel(relatedNonModelDefinition);\n const reduced = defaultSelectionSet.reduce((acc, curVal) => {\n acc[curVal] = FIELD_IR;\n return acc;\n }, {});\n return reduced;\n};\n/**\n * Stringifies selection set IR\n * * @example\n * ### Given\n * ```ts\n * {\n * id: '',\n * comments: {\n * items: { post: { id: '' } }\n * }\n * }\n * ```\n * ### Returns\n * `'id comments { items { post { id } } }'`\n */\nexport function selectionSetIRToString(obj) {\n const res = [];\n Object.entries(obj).forEach(([fieldName, value]) => {\n if (value === FIELD_IR) {\n res.push(fieldName);\n }\n else if (typeof value === 'object' && value !== null) {\n if (value?.items) {\n res.push(fieldName, '{', 'items', '{', selectionSetIRToString(value.items), '}', '}');\n }\n else {\n res.push(fieldName, '{', selectionSetIRToString(value), '}');\n }\n }\n });\n return res.join(' ');\n}\n/**\n * Recursively merges selection set objects from `source` onto `target`.\n *\n * `target` will be updated. `source` will be left alone.\n *\n * @param source The object to merge into target.\n * @param target The object to be mutated.\n */\nfunction deepMergeSelectionSetObjects(source, target) {\n const isObject = (obj) => obj && typeof obj === 'object';\n for (const key in source) {\n // This verification avoids 'Prototype Pollution' issue\n if (!source.hasOwnProperty(key))\n continue;\n if (target.hasOwnProperty(key) && isObject(target[key])) {\n deepMergeSelectionSetObjects(source[key], target[key]);\n }\n else {\n target[key] = source[key];\n }\n }\n return target;\n}\nexport function generateSelectionSet(modelInstrospection, modelName, selectionSet) {\n const modelDefinition = modelInstrospection.models[modelName];\n const selSetIr = customSelectionSetToIR(modelInstrospection, modelName, selectionSet ?? defaultSelectionSetForModel(modelDefinition));\n const selSetString = selectionSetIRToString(selSetIr);\n return selSetString;\n}\nexport function generateGraphQLDocument(modelInstrospection, modelName, modelOperation, listArgs, indexMeta) {\n const modelDefinition = modelInstrospection.models[modelName];\n const { name, pluralName, fields, primaryKeyInfo: { isCustomPrimaryKey, primaryKeyFieldName, sortKeyFieldNames, }, } = modelDefinition;\n const { operationPrefix, usePlural } = graphQLOperationsInfo[modelOperation];\n const { selectionSet } = listArgs || {};\n let graphQLFieldName;\n let indexQueryArgs;\n if (operationPrefix) {\n graphQLFieldName = `${operationPrefix}${usePlural ? pluralName : name}`;\n }\n else if (indexMeta) {\n const { queryField, pk, sk = [] } = indexMeta;\n graphQLFieldName = queryField;\n const skQueryArgs = sk.reduce((acc, fieldName) => {\n const fieldType = fields[fieldName].type;\n acc[fieldName] = `Model${fieldType}KeyConditionInput`;\n return acc;\n }, {});\n indexQueryArgs = {\n [pk]: `${fields[pk].type}!`,\n ...skQueryArgs,\n };\n }\n else {\n throw new Error('Error generating GraphQL Document - invalid operation name');\n }\n let graphQLOperationType;\n let graphQLSelectionSet;\n let graphQLArguments;\n const selectionSetFields = generateSelectionSet(modelInstrospection, modelName, selectionSet);\n switch (modelOperation) {\n case 'CREATE':\n case 'UPDATE':\n case 'DELETE':\n graphQLArguments ??\n (graphQLArguments = {\n input: `${operationPrefix.charAt(0).toLocaleUpperCase() +\n operationPrefix.slice(1)}${name}Input!`,\n });\n graphQLOperationType ?? (graphQLOperationType = 'mutation');\n case 'READ':\n graphQLArguments ??\n (graphQLArguments = isCustomPrimaryKey\n ? [primaryKeyFieldName, ...sortKeyFieldNames].reduce((acc, fieldName) => {\n acc[fieldName] = `${fields[fieldName].type}!`;\n return acc;\n }, {})\n : {\n [primaryKeyFieldName]: `${fields[primaryKeyFieldName].type}!`,\n });\n graphQLSelectionSet ?? (graphQLSelectionSet = selectionSetFields);\n case 'LIST':\n graphQLArguments ??\n (graphQLArguments = {\n filter: `Model${name}FilterInput`,\n limit: 'Int',\n nextToken: 'String',\n });\n graphQLOperationType ?? (graphQLOperationType = 'query');\n graphQLSelectionSet ??\n (graphQLSelectionSet = `items { ${selectionSetFields} } nextToken __typename`);\n case 'INDEX_QUERY':\n graphQLArguments ??\n (graphQLArguments = {\n ...indexQueryArgs,\n filter: `Model${name}FilterInput`,\n limit: 'Int',\n nextToken: 'String',\n });\n graphQLOperationType ?? (graphQLOperationType = 'query');\n graphQLSelectionSet ??\n (graphQLSelectionSet = `items { ${selectionSetFields} } nextToken __typename`);\n case 'ONCREATE':\n case 'ONUPDATE':\n case 'ONDELETE':\n graphQLArguments ??\n (graphQLArguments = {\n filter: `ModelSubscription${name}FilterInput`,\n });\n graphQLOperationType ?? (graphQLOperationType = 'subscription');\n graphQLSelectionSet ?? (graphQLSelectionSet = selectionSetFields);\n break;\n case 'OBSERVE_QUERY':\n default:\n throw new Error('Internal error: Attempted to generate graphql document for observeQuery. Please report this error.');\n }\n const graphQLDocument = `${graphQLOperationType}${graphQLArguments\n ? `(${Object.entries(graphQLArguments).map(([fieldName, type]) => `\\$${fieldName}: ${type}`)})`\n : ''} { ${graphQLFieldName}${graphQLArguments\n ? `(${Object.keys(graphQLArguments).map(fieldName => `${fieldName}: \\$${fieldName}`)})`\n : ''} { ${graphQLSelectionSet} } }`;\n return graphQLDocument;\n}\nexport function buildGraphQLVariables(modelDefinition, operation, arg, modelIntrospection, indexMeta) {\n const { fields, primaryKeyInfo: { isCustomPrimaryKey, primaryKeyFieldName, sortKeyFieldNames, }, } = modelDefinition;\n let variables = {};\n // TODO: process input\n switch (operation) {\n case 'CREATE':\n variables = {\n input: arg\n ? normalizeMutationInput(arg, modelDefinition, modelIntrospection)\n : {},\n };\n break;\n case 'UPDATE':\n // readonly fields are not updated\n variables = {\n input: arg\n ? Object.fromEntries(Object.entries(normalizeMutationInput(arg, modelDefinition, modelIntrospection)).filter(([fieldName]) => {\n const { isReadOnly } = fields[fieldName];\n return !isReadOnly;\n }))\n : {},\n };\n break;\n case 'READ':\n case 'DELETE':\n // only identifiers are sent\n if (arg) {\n variables = isCustomPrimaryKey\n ? [primaryKeyFieldName, ...sortKeyFieldNames].reduce((acc, fieldName) => {\n acc[fieldName] = arg[fieldName];\n return acc;\n }, {})\n : { [primaryKeyFieldName]: arg[primaryKeyFieldName] };\n }\n if (operation === 'DELETE') {\n variables = { input: variables };\n }\n break;\n case 'LIST':\n if (arg?.filter) {\n variables.filter = arg.filter;\n }\n if (arg?.nextToken) {\n variables.nextToken = arg.nextToken;\n }\n if (arg?.limit) {\n variables.limit = arg.limit;\n }\n break;\n case 'INDEX_QUERY':\n const { pk, sk = [] } = indexMeta;\n variables[pk] = arg[pk];\n for (const skField of sk) {\n variables[skField] = arg[skField];\n }\n if (arg?.filter) {\n variables.filter = arg.filter;\n }\n if (arg?.nextToken) {\n variables.nextToken = arg.nextToken;\n }\n if (arg?.limit) {\n variables.limit = arg.limit;\n }\n break;\n case 'ONCREATE':\n case 'ONUPDATE':\n case 'ONDELETE':\n if (arg?.filter) {\n variables = { filter: arg.filter };\n }\n break;\n case 'OBSERVE_QUERY':\n throw new Error('Internal error: Attempted to build variables for observeQuery. Please report this error.');\n break;\n default:\n const exhaustiveCheck = operation;\n throw new Error(`Unhandled operation case: ${exhaustiveCheck}`);\n }\n return variables;\n}\n/**\n * Iterates over mutation input values and resolves any model inputs to their corresponding join fields/values\n *\n * @example\n * ### Usage\n * ```ts\n * const result = normalizeMutationInput({ post: post }, model, modelDefinition);\n * ```\n * ### Result\n * ```ts\n * { postId: \"abc123\" }\n * ```\n *\n */\nexport function normalizeMutationInput(mutationInput, model, modelIntrospection) {\n const { fields } = model;\n const normalized = {};\n Object.entries(mutationInput).forEach(([inputFieldName, inputValue]) => {\n const fieldType = fields[inputFieldName]?.type;\n const relatedModelName = fieldType?.model;\n if (relatedModelName) {\n const association = fields[inputFieldName]?.association;\n const relatedModelDef = modelIntrospection.models[relatedModelName];\n const relatedModelPkInfo = relatedModelDef.primaryKeyInfo;\n if (association?.connectionType === connectionType.HAS_ONE) {\n const associationHasOne = association;\n associationHasOne.targetNames.forEach((targetName, idx) => {\n const associatedFieldName = associationHasOne.associatedWith[idx];\n normalized[targetName] = inputValue[associatedFieldName];\n });\n }\n if (association?.connectionType === connectionType.BELONGS_TO) {\n const associationBelongsTo = association;\n associationBelongsTo.targetNames.forEach((targetName, idx) => {\n if (idx === 0) {\n const associatedFieldName = relatedModelPkInfo.primaryKeyFieldName;\n normalized[targetName] = inputValue[associatedFieldName];\n }\n else {\n const associatedFieldName = relatedModelPkInfo.sortKeyFieldNames[idx - 1];\n normalized[targetName] = inputValue[associatedFieldName];\n }\n });\n }\n }\n else {\n normalized[inputFieldName] = inputValue;\n }\n });\n return normalized;\n}\n/**\n * Produces a parameter object that can contains auth mode/token overrides\n * only if present in either `options` (first) or configured on the `client`\n * as a fallback.\n *\n * @param client Configured client from `generateClient`\n * @param options Args/Options obect from call site.\n * @returns\n */\nexport function authModeParams(client, options = {}) {\n return {\n authMode: options.authMode || client[__authMode],\n authToken: options.authToken || client[__authToken],\n };\n}\n/**\n * Retrieves custom headers from either the client or request options.\n * @param {client} V6Client | V6ClientSSRRequest | V6ClientSSRCookies - for extracting client headers\n * @param {requestHeaders} [CustomHeaders] - request headers\n * @returns {CustomHeaders} - custom headers\n */\nexport function getCustomHeaders(client, requestHeaders) {\n let headers = client[__headers] || {};\n // Individual request headers will take precedence over client headers.\n // We intentionally do *not* merge client and request headers.\n if (requestHeaders) {\n headers = requestHeaders;\n }\n return headers;\n}\n"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { graphql, cancel, isCancelError } from './v6.mjs';
3
3
  import { generateEnumsProperty } from './utils/generateEnumsProperty.mjs';
4
4
  import { generateModelsProperty } from './utils/generateModelsProperty.mjs';
5
5
  import { isApiGraphQLConfig } from './utils/isApiGraphQLProviderConfig.mjs';
6
+ import { generateCustomQueriesProperty, generateCustomMutationsProperty } from './generateCustomOperationsProperty.mjs';
6
7
  import { __amplify, __authMode, __authToken, __headers } from '../types/index.mjs';
7
8
  import { isConfigureEventWithResourceConfig } from './utils/isConfigureEventWithResourceConfig.mjs';
8
9
 
@@ -28,11 +29,15 @@ function generateClient(params) {
28
29
  isCancelError,
29
30
  models: emptyProperty,
30
31
  enums: emptyProperty,
32
+ queries: emptyProperty,
33
+ mutations: emptyProperty,
31
34
  };
32
35
  const apiGraphqlConfig = params.amplify.getConfig().API?.GraphQL;
33
36
  if (isApiGraphQLConfig(apiGraphqlConfig)) {
34
37
  client.models = generateModelsProperty(client, apiGraphqlConfig);
35
38
  client.enums = generateEnumsProperty(apiGraphqlConfig);
39
+ client.queries = generateCustomQueriesProperty(client, apiGraphqlConfig);
40
+ client.mutations = generateCustomMutationsProperty(client, apiGraphqlConfig);
36
41
  }
37
42
  else {
38
43
  // This happens when the `Amplify.configure()` call gets evaluated after the `generateClient()` call.
@@ -60,6 +65,8 @@ const generateModelsPropertyOnAmplifyConfigure = (clientRef) => {
60
65
  if (isApiGraphQLConfig(apiGraphQLConfig)) {
61
66
  clientRef.models = generateModelsProperty(clientRef, apiGraphQLConfig);
62
67
  clientRef.enums = generateEnumsProperty(apiGraphQLConfig);
68
+ clientRef.queries = generateCustomQueriesProperty(clientRef, apiGraphQLConfig);
69
+ clientRef.mutations = generateCustomMutationsProperty(clientRef, apiGraphQLConfig);
63
70
  }
64
71
  });
65
72
  };
@@ -1 +1 @@
1
- {"version":3,"file":"generateClient.mjs","sources":["../../../src/internals/generateClient.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Hub } from '@aws-amplify/core';\nimport { graphql, cancel, isCancelError } from './v6';\nimport { generateEnumsProperty } from './utils/generateEnumsProperty';\nimport { generateModelsProperty } from './utils/generateModelsProperty';\nimport { isApiGraphQLConfig } from './utils/isApiGraphQLProviderConfig';\nimport { __amplify, __authMode, __authToken, __headers, } from '../types';\nimport { isConfigureEventWithResourceConfig } from './utils/isConfigureEventWithResourceConfig';\n/**\n * @private\n *\n * Creates a client that can be used to make GraphQL requests, using a provided `AmplifyClassV6`\n * compatible context object for config and auth fetching.\n *\n * @param params\n * @returns\n */\nexport function generateClient(params) {\n const client = {\n [__amplify]: params.amplify,\n [__authMode]: params.authMode,\n [__authToken]: params.authToken,\n [__headers]: params.headers,\n graphql,\n cancel,\n isCancelError,\n models: emptyProperty,\n enums: emptyProperty,\n };\n const apiGraphqlConfig = params.amplify.getConfig().API?.GraphQL;\n if (isApiGraphQLConfig(apiGraphqlConfig)) {\n client.models = generateModelsProperty(client, apiGraphqlConfig);\n client.enums = generateEnumsProperty(apiGraphqlConfig);\n }\n else {\n // This happens when the `Amplify.configure()` call gets evaluated after the `generateClient()` call.\n //\n // Cause: when the `generateClient()` and the `Amplify.configure()` calls are located in\n // different source files, script bundlers may randomly arrange their orders in the production\n // bundle.\n //\n // With the current implementation, the `client.models` instance created by `generateClient()`\n // will be rebuilt on every `Amplify.configure()` call that's provided with a valid GraphQL\n // provider configuration.\n //\n // TODO: revisit, and reverify this approach when enabling multiple clients for multi-endpoints\n // configuration.\n generateModelsPropertyOnAmplifyConfigure(client);\n }\n return client;\n}\nconst generateModelsPropertyOnAmplifyConfigure = (clientRef) => {\n Hub.listen('core', coreEvent => {\n if (!isConfigureEventWithResourceConfig(coreEvent.payload)) {\n return;\n }\n const apiGraphQLConfig = coreEvent.payload.data.API?.GraphQL;\n if (isApiGraphQLConfig(apiGraphQLConfig)) {\n clientRef.models = generateModelsProperty(clientRef, apiGraphQLConfig);\n clientRef.enums = generateEnumsProperty(apiGraphQLConfig);\n }\n });\n};\nconst emptyProperty = new Proxy({}, {\n get() {\n throw new Error('Client could not be generated. This is likely due to `Amplify.configure()` not being called prior to `generateClient()` or because the configuration passed to `Amplify.configure()` is missing GraphQL provider configuration.');\n },\n});\n"],"names":[],"mappings":";;;;;;;;AAAA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAC,MAAM,EAAE;AACvC,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO;AACnC,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ;AACrC,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS;AACvC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO;AACnC,QAAQ,OAAO;AACf,QAAQ,MAAM;AACd,QAAQ,aAAa;AACrB,QAAQ,MAAM,EAAE,aAAa;AAC7B,QAAQ,KAAK,EAAE,aAAa;AAC5B,KAAK,CAAC;AACN,IAAI,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC;AACrE,IAAI,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,EAAE;AAC9C,QAAQ,MAAM,CAAC,MAAM,GAAG,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AACzE,QAAQ,MAAM,CAAC,KAAK,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;AAC/D,KAAK;AACL,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,wCAAwC,CAAC,MAAM,CAAC,CAAC;AACzD,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,MAAM,wCAAwC,GAAG,CAAC,SAAS,KAAK;AAChE,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,IAAI;AACpC,QAAQ,IAAI,CAAC,kCAAkC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AACpE,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;AACrE,QAAQ,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,EAAE;AAClD,YAAY,SAAS,CAAC,MAAM,GAAG,sBAAsB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AACnF,YAAY,SAAS,CAAC,KAAK,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;AACtE,SAAS;AACT,KAAK,CAAC,CAAC;AACP,CAAC,CAAC;AACF,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;AACpC,IAAI,GAAG,GAAG;AACV,QAAQ,MAAM,IAAI,KAAK,CAAC,iOAAiO,CAAC,CAAC;AAC3P,KAAK;AACL,CAAC,CAAC;;;;"}
1
+ {"version":3,"file":"generateClient.mjs","sources":["../../../src/internals/generateClient.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Hub } from '@aws-amplify/core';\nimport { graphql, cancel, isCancelError } from './v6';\nimport { generateEnumsProperty } from './utils/generateEnumsProperty';\nimport { generateModelsProperty } from './utils/generateModelsProperty';\nimport { isApiGraphQLConfig } from './utils/isApiGraphQLProviderConfig';\nimport { generateCustomQueriesProperty, generateCustomMutationsProperty, } from './generateCustomOperationsProperty';\nimport { __amplify, __authMode, __authToken, __headers, } from '../types';\nimport { isConfigureEventWithResourceConfig } from './utils/isConfigureEventWithResourceConfig';\n/**\n * @private\n *\n * Creates a client that can be used to make GraphQL requests, using a provided `AmplifyClassV6`\n * compatible context object for config and auth fetching.\n *\n * @param params\n * @returns\n */\nexport function generateClient(params) {\n const client = {\n [__amplify]: params.amplify,\n [__authMode]: params.authMode,\n [__authToken]: params.authToken,\n [__headers]: params.headers,\n graphql,\n cancel,\n isCancelError,\n models: emptyProperty,\n enums: emptyProperty,\n queries: emptyProperty,\n mutations: emptyProperty,\n };\n const apiGraphqlConfig = params.amplify.getConfig().API?.GraphQL;\n if (isApiGraphQLConfig(apiGraphqlConfig)) {\n client.models = generateModelsProperty(client, apiGraphqlConfig);\n client.enums = generateEnumsProperty(apiGraphqlConfig);\n client.queries = generateCustomQueriesProperty(client, apiGraphqlConfig);\n client.mutations = generateCustomMutationsProperty(client, apiGraphqlConfig);\n }\n else {\n // This happens when the `Amplify.configure()` call gets evaluated after the `generateClient()` call.\n //\n // Cause: when the `generateClient()` and the `Amplify.configure()` calls are located in\n // different source files, script bundlers may randomly arrange their orders in the production\n // bundle.\n //\n // With the current implementation, the `client.models` instance created by `generateClient()`\n // will be rebuilt on every `Amplify.configure()` call that's provided with a valid GraphQL\n // provider configuration.\n //\n // TODO: revisit, and reverify this approach when enabling multiple clients for multi-endpoints\n // configuration.\n generateModelsPropertyOnAmplifyConfigure(client);\n }\n return client;\n}\nconst generateModelsPropertyOnAmplifyConfigure = (clientRef) => {\n Hub.listen('core', coreEvent => {\n if (!isConfigureEventWithResourceConfig(coreEvent.payload)) {\n return;\n }\n const apiGraphQLConfig = coreEvent.payload.data.API?.GraphQL;\n if (isApiGraphQLConfig(apiGraphQLConfig)) {\n clientRef.models = generateModelsProperty(clientRef, apiGraphQLConfig);\n clientRef.enums = generateEnumsProperty(apiGraphQLConfig);\n clientRef.queries = generateCustomQueriesProperty(clientRef, apiGraphQLConfig);\n clientRef.mutations = generateCustomMutationsProperty(clientRef, apiGraphQLConfig);\n }\n });\n};\nconst emptyProperty = new Proxy({}, {\n get() {\n throw new Error('Client could not be generated. This is likely due to `Amplify.configure()` not being called prior to `generateClient()` or because the configuration passed to `Amplify.configure()` is missing GraphQL provider configuration.');\n },\n});\n"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAC,MAAM,EAAE;AACvC,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO;AACnC,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ;AACrC,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS;AACvC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO;AACnC,QAAQ,OAAO;AACf,QAAQ,MAAM;AACd,QAAQ,aAAa;AACrB,QAAQ,MAAM,EAAE,aAAa;AAC7B,QAAQ,KAAK,EAAE,aAAa;AAC5B,QAAQ,OAAO,EAAE,aAAa;AAC9B,QAAQ,SAAS,EAAE,aAAa;AAChC,KAAK,CAAC;AACN,IAAI,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC;AACrE,IAAI,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,EAAE;AAC9C,QAAQ,MAAM,CAAC,MAAM,GAAG,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AACzE,QAAQ,MAAM,CAAC,KAAK,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;AAC/D,QAAQ,MAAM,CAAC,OAAO,GAAG,6BAA6B,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AACjF,QAAQ,MAAM,CAAC,SAAS,GAAG,+BAA+B,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AACrF,KAAK;AACL,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,wCAAwC,CAAC,MAAM,CAAC,CAAC;AACzD,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,MAAM,wCAAwC,GAAG,CAAC,SAAS,KAAK;AAChE,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,IAAI;AACpC,QAAQ,IAAI,CAAC,kCAAkC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AACpE,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;AACrE,QAAQ,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,EAAE;AAClD,YAAY,SAAS,CAAC,MAAM,GAAG,sBAAsB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AACnF,YAAY,SAAS,CAAC,KAAK,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;AACtE,YAAY,SAAS,CAAC,OAAO,GAAG,6BAA6B,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAC3F,YAAY,SAAS,CAAC,SAAS,GAAG,+BAA+B,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAC/F,SAAS;AACT,KAAK,CAAC,CAAC;AACP,CAAC,CAAC;AACF,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;AACpC,IAAI,GAAG,GAAG;AACV,QAAQ,MAAM,IAAI,KAAK,CAAC,iOAAiO,CAAC,CAAC;AAC3P,KAAK;AACL,CAAC,CAAC;;;;"}
@@ -0,0 +1,8 @@
1
+ import { CustomQueries, CustomMutations } from '@aws-amplify/data-schema-types';
2
+ import { V6Client } from '../types';
3
+ import { GraphQLProviderConfig } from '@aws-amplify/core/internals/utils';
4
+ type OpTypes = 'queries' | 'mutations';
5
+ export declare function generateCustomOperationsProperty<T extends Record<any, any>, OpType extends OpTypes>(client: V6Client<Record<string, any>>, config: GraphQLProviderConfig['GraphQL'], operationsType: OpType): OpType extends 'queries' ? CustomQueries<T> : CustomMutations<T>;
6
+ export declare function generateCustomMutationsProperty<T extends Record<any, any>>(client: V6Client<Record<string, any>>, config: GraphQLProviderConfig['GraphQL']): CustomMutations<T>;
7
+ export declare function generateCustomQueriesProperty<T extends Record<any, any>>(client: V6Client<Record<string, any>>, config: GraphQLProviderConfig['GraphQL']): CustomQueries<T>;
8
+ export {};
@@ -0,0 +1,41 @@
1
+ import { __amplify } from '../types/index.mjs';
2
+ import { customOpFactory } from './operations/custom.mjs';
3
+
4
+ const operationTypeMap = {
5
+ queries: 'query',
6
+ mutations: 'mutation',
7
+ };
8
+ function generateCustomOperationsProperty(client, config, operationsType) {
9
+ // some bundlers end up with `Amplify.configure` being called *after* generate client.
10
+ // if that occurs, we need to *not error* while we wait. handling for late configuration
11
+ // occurs in `generateClient()`. we do not need to subscribe to Hub events here.
12
+ if (!config) {
13
+ return {};
14
+ }
15
+ const modelIntrospection = config.modelIntrospection;
16
+ // model intro schema might be absent if there's not actually a configured GraphQL API
17
+ if (!modelIntrospection) {
18
+ return {};
19
+ }
20
+ // custom operations will be absent from model intro schema if no custom ops
21
+ // are present on the source schema.
22
+ const operations = modelIntrospection[operationsType];
23
+ if (!operations) {
24
+ return {};
25
+ }
26
+ const ops = {};
27
+ const useContext = client[__amplify] === null;
28
+ for (const operation of Object.values(operations)) {
29
+ ops[operation.name] = customOpFactory(client, modelIntrospection, operationTypeMap[operationsType], operation, useContext);
30
+ }
31
+ return ops;
32
+ }
33
+ function generateCustomMutationsProperty(client, config) {
34
+ return generateCustomOperationsProperty(client, config, 'mutations');
35
+ }
36
+ function generateCustomQueriesProperty(client, config) {
37
+ return generateCustomOperationsProperty(client, config, 'queries');
38
+ }
39
+
40
+ export { generateCustomMutationsProperty, generateCustomOperationsProperty, generateCustomQueriesProperty };
41
+ //# sourceMappingURL=generateCustomOperationsProperty.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateCustomOperationsProperty.mjs","sources":["../../../src/internals/generateCustomOperationsProperty.ts"],"sourcesContent":["import { __amplify } from '../types';\nimport { customOpFactory } from './operations/custom';\nconst operationTypeMap = {\n queries: 'query',\n mutations: 'mutation',\n};\nexport function generateCustomOperationsProperty(client, config, operationsType) {\n // some bundlers end up with `Amplify.configure` being called *after* generate client.\n // if that occurs, we need to *not error* while we wait. handling for late configuration\n // occurs in `generateClient()`. we do not need to subscribe to Hub events here.\n if (!config) {\n return {};\n }\n const modelIntrospection = config.modelIntrospection;\n // model intro schema might be absent if there's not actually a configured GraphQL API\n if (!modelIntrospection) {\n return {};\n }\n // custom operations will be absent from model intro schema if no custom ops\n // are present on the source schema.\n const operations = modelIntrospection[operationsType];\n if (!operations) {\n return {};\n }\n const ops = {};\n const useContext = client[__amplify] === null;\n for (const operation of Object.values(operations)) {\n ops[operation.name] = customOpFactory(client, modelIntrospection, operationTypeMap[operationsType], operation, useContext);\n }\n return ops;\n}\nexport function generateCustomMutationsProperty(client, config) {\n return generateCustomOperationsProperty(client, config, 'mutations');\n}\nexport function generateCustomQueriesProperty(client, config) {\n return generateCustomOperationsProperty(client, config, 'queries');\n}\n"],"names":[],"mappings":";;;AAEA,MAAM,gBAAgB,GAAG;AACzB,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,SAAS,EAAE,UAAU;AACzB,CAAC,CAAC;AACK,SAAS,gCAAgC,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE;AACjF;AACA;AACA;AACA,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACzD;AACA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC7B,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL;AACA;AACA,IAAI,MAAM,UAAU,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;AAC1D,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;AACnB,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;AAClD,IAAI,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvD,QAAQ,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACnI,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACM,SAAS,+BAA+B,CAAC,MAAM,EAAE,MAAM,EAAE;AAChE,IAAI,OAAO,gCAAgC,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACzE,CAAC;AACM,SAAS,6BAA6B,CAAC,MAAM,EAAE,MAAM,EAAE;AAC9D,IAAI,OAAO,gCAAgC,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACvE;;;;"}
@@ -0,0 +1,60 @@
1
+ import { AmplifyServer } from '@aws-amplify/core/internals/adapter-core';
2
+ import { AuthModeParams, ClientWithModels, GraphQLOptionsV6, ListArgs, QueryArgs } from '../../types';
3
+ import { ModelIntrospectionSchema, CustomOperation } from '@aws-amplify/core/internals/utils';
4
+ /**
5
+ * Builds an operation function, embedded with all client and context data, that
6
+ * can be attached to a client as a custom query or mutation.
7
+ *
8
+ * If we have this source schema:
9
+ *
10
+ * ```typescript
11
+ * a.schema({
12
+ * echo: a.query()
13
+ * .arguments({input: a.string().required()})
14
+ * .returns(a.string())
15
+ * })
16
+ * ```
17
+ *
18
+ * Our model intro schema will contain an entry like this:
19
+ *
20
+ * ```ts
21
+ * {
22
+ * queries: {
23
+ * echo: {
24
+ * name: "echo",
25
+ * isArray: false,
26
+ * type: 'String',
27
+ * isRequired: false,
28
+ * arguments: {
29
+ * input: {
30
+ * name: 'input',
31
+ * isArray: false,
32
+ * type: String,
33
+ * isRequired: true
34
+ * }
35
+ * }
36
+ * }
37
+ * }
38
+ * }
39
+ * ```
40
+ *
41
+ * The `echo` object is used to build the `echo' method that goes here:
42
+ *
43
+ * ```typescript
44
+ * const client = generateClent()
45
+ * const { data } = await client.queries.echo({input: 'a string'});
46
+ * // ^
47
+ * // |
48
+ * // +-- This one right here.
49
+ * //
50
+ * ```
51
+ *
52
+ *
53
+ * @param client The client to run graphql queries through.
54
+ * @param modelIntrospection The model introspection schema the op comes from.
55
+ * @param operationType The broad category of graphql operation.
56
+ * @param operation The operation definition from the introspection schema.
57
+ * @param useContext Whether the function needs to accept an SSR context.
58
+ * @returns The operation function to attach to query, mutations, etc.
59
+ */
60
+ export declare function customOpFactory(client: ClientWithModels, modelIntrospection: ModelIntrospectionSchema, operationType: 'query' | 'mutation', operation: CustomOperation, useContext: boolean): ((contextSpec: AmplifyServer.ContextSpec & GraphQLOptionsV6<unknown, string>, arg?: QueryArgs, options?: AuthModeParams & ListArgs) => Promise<any>) | ((arg?: QueryArgs, options?: AuthModeParams & ListArgs) => Promise<any>);