@aws-amplify/api-graphql 4.0.2-unstable.51ed7b4.0 → 4.0.2-unstable.a5eb335.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/GraphQLAPI.js +1 -1
- package/dist/cjs/GraphQLAPI.js.map +1 -1
- package/dist/cjs/Providers/AWSAppSyncRealTimeProvider/index.js +1 -1
- package/dist/cjs/Providers/AWSAppSyncRealTimeProvider/index.js.map +1 -1
- package/dist/cjs/internals/APIClient.js +70 -45
- package/dist/cjs/internals/APIClient.js.map +1 -1
- package/dist/cjs/internals/InternalGraphQLAPI.js +13 -22
- package/dist/cjs/internals/InternalGraphQLAPI.js.map +1 -1
- package/dist/cjs/internals/generateModelsProperty.js +1 -1
- package/dist/cjs/internals/generateModelsProperty.js.map +1 -1
- package/dist/cjs/internals/operations/get.js +5 -5
- package/dist/cjs/internals/operations/get.js.map +1 -1
- package/dist/cjs/internals/operations/list.js +5 -5
- package/dist/cjs/internals/operations/list.js.map +1 -1
- package/dist/cjs/internals/operations/observeQuery.js +2 -2
- package/dist/cjs/internals/operations/observeQuery.js.map +1 -1
- package/dist/cjs/internals/operations/subscription.js +2 -1
- package/dist/cjs/internals/operations/subscription.js.map +1 -1
- package/dist/cjs/internals/server/generateModelsProperty.js +4 -4
- package/dist/cjs/internals/server/generateModelsProperty.js.map +1 -1
- package/dist/esm/GraphQLAPI.mjs +1 -1
- package/dist/esm/GraphQLAPI.mjs.map +1 -1
- package/dist/esm/Providers/AWSAppSyncRealTimeProvider/index.mjs +1 -1
- package/dist/esm/Providers/AWSAppSyncRealTimeProvider/index.mjs.map +1 -1
- package/dist/esm/internals/APIClient.d.ts +10 -19
- package/dist/esm/internals/APIClient.mjs +70 -45
- package/dist/esm/internals/APIClient.mjs.map +1 -1
- package/dist/esm/internals/InternalGraphQLAPI.d.ts +0 -11
- package/dist/esm/internals/InternalGraphQLAPI.mjs +13 -21
- package/dist/esm/internals/InternalGraphQLAPI.mjs.map +1 -1
- package/dist/esm/internals/generateModelsProperty.d.ts +1 -1
- package/dist/esm/internals/generateModelsProperty.mjs +1 -1
- package/dist/esm/internals/generateModelsProperty.mjs.map +1 -1
- package/dist/esm/internals/operations/get.d.ts +4 -1
- package/dist/esm/internals/operations/get.mjs +5 -5
- package/dist/esm/internals/operations/get.mjs.map +1 -1
- package/dist/esm/internals/operations/list.d.ts +3 -1
- package/dist/esm/internals/operations/list.mjs +5 -5
- package/dist/esm/internals/operations/list.mjs.map +1 -1
- package/dist/esm/internals/operations/observeQuery.d.ts +2 -1
- package/dist/esm/internals/operations/subscription.d.ts +3 -1
- package/dist/esm/internals/operations/subscription.mjs +2 -1
- package/dist/esm/internals/operations/subscription.mjs.map +1 -1
- package/dist/esm/internals/server/generateModelsProperty.d.ts +1 -1
- package/dist/esm/internals/server/generateModelsProperty.mjs +4 -4
- package/dist/esm/internals/server/generateModelsProperty.mjs.map +1 -1
- package/dist/esm/types/index.d.ts +10 -0
- package/package.json +8 -12
- package/src/GraphQLAPI.ts +2 -2
- package/src/Providers/AWSAppSyncRealTimeProvider/index.ts +9 -4
- package/src/internals/APIClient.ts +160 -104
- package/src/internals/InternalGraphQLAPI.ts +20 -30
- package/src/internals/generateModelsProperty.ts +8 -5
- package/src/internals/operations/get.ts +44 -34
- package/src/internals/operations/list.ts +38 -17
- package/src/internals/operations/observeQuery.ts +14 -10
- package/src/internals/operations/subscription.ts +13 -7
- package/src/internals/server/generateClient.ts +1 -1
- package/src/internals/server/generateModelsProperty.ts +18 -8
- package/src/types/index.ts +14 -0
- package/src/utils/ConnectionStateMonitor.ts +3 -1
- package/src/utils/findIndexByFields.ts +3 -1
|
@@ -37,14 +37,23 @@ function initializeModel(client, modelName, result, modelIntrospection, authMode
|
|
|
37
37
|
.map(([fieldName]) => fieldName);
|
|
38
38
|
return result.map(record => {
|
|
39
39
|
const initializedRelationalFields = {};
|
|
40
|
-
for (const
|
|
41
|
-
const
|
|
40
|
+
for (const fieldName of modelFields) {
|
|
41
|
+
const modelField = introModelFields[fieldName];
|
|
42
|
+
const modelFieldType = modelField?.type;
|
|
43
|
+
const relatedModelName = modelFieldType.model;
|
|
42
44
|
const relatedModel = modelIntrospection.models[relatedModelName];
|
|
43
45
|
const relatedModelPKFieldName = relatedModel.primaryKeyInfo.primaryKeyFieldName;
|
|
44
46
|
const relatedModelSKFieldNames = relatedModel.primaryKeyInfo.sortKeyFieldNames;
|
|
45
|
-
const relationType =
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
const relationType = modelField.association?.connectionType;
|
|
48
|
+
let connectionFields = [];
|
|
49
|
+
if (modelField.association &&
|
|
50
|
+
'associatedWith' in modelField.association) {
|
|
51
|
+
connectionFields = modelField.association.associatedWith;
|
|
52
|
+
}
|
|
53
|
+
let targetNames = [];
|
|
54
|
+
if (modelField.association && 'targetNames' in modelField.association) {
|
|
55
|
+
targetNames = modelField.association.targetNames;
|
|
56
|
+
}
|
|
48
57
|
switch (relationType) {
|
|
49
58
|
case connectionType.HAS_ONE:
|
|
50
59
|
case connectionType.BELONGS_TO:
|
|
@@ -54,7 +63,7 @@ function initializeModel(client, modelName, result, modelIntrospection, authMode
|
|
|
54
63
|
}
|
|
55
64
|
}, {});
|
|
56
65
|
if (context) {
|
|
57
|
-
initializedRelationalFields[
|
|
66
|
+
initializedRelationalFields[fieldName] = (contextSpec, options) => {
|
|
58
67
|
if (record[targetNames[0]]) {
|
|
59
68
|
return client.models[relatedModelName].get(contextSpec, {
|
|
60
69
|
[relatedModelPKFieldName]: record[targetNames[0]],
|
|
@@ -68,7 +77,7 @@ function initializeModel(client, modelName, result, modelIntrospection, authMode
|
|
|
68
77
|
};
|
|
69
78
|
}
|
|
70
79
|
else {
|
|
71
|
-
initializedRelationalFields[
|
|
80
|
+
initializedRelationalFields[fieldName] = (options) => {
|
|
72
81
|
if (record[targetNames[0]]) {
|
|
73
82
|
return client.models[relatedModelName].get({
|
|
74
83
|
[relatedModelPKFieldName]: record[targetNames[0]],
|
|
@@ -86,8 +95,14 @@ function initializeModel(client, modelName, result, modelIntrospection, authMode
|
|
|
86
95
|
const parentPk = introModel.primaryKeyInfo.primaryKeyFieldName;
|
|
87
96
|
const parentSK = introModel.primaryKeyInfo.sortKeyFieldNames;
|
|
88
97
|
// M:N check - TODO: refactor
|
|
89
|
-
|
|
90
|
-
|
|
98
|
+
const relatedModelField = relatedModel.fields[connectionFields[0]];
|
|
99
|
+
const relatedModelFieldType = relatedModelField.type;
|
|
100
|
+
if (relatedModelFieldType.model) {
|
|
101
|
+
let relatedTargetNames = [];
|
|
102
|
+
if (relatedModelField.association &&
|
|
103
|
+
'targetNames' in relatedModelField.association) {
|
|
104
|
+
relatedTargetNames = relatedModelField.association?.targetNames;
|
|
105
|
+
}
|
|
91
106
|
const hasManyFilter = relatedTargetNames.map((field, idx) => {
|
|
92
107
|
if (idx === 0) {
|
|
93
108
|
return { [field]: { eq: record[parentPk] } };
|
|
@@ -95,7 +110,7 @@ function initializeModel(client, modelName, result, modelIntrospection, authMode
|
|
|
95
110
|
return { [field]: { eq: record[parentSK[idx - 1]] } };
|
|
96
111
|
});
|
|
97
112
|
if (context) {
|
|
98
|
-
initializedRelationalFields[
|
|
113
|
+
initializedRelationalFields[fieldName] = (contextSpec, options) => {
|
|
99
114
|
if (record[parentPk]) {
|
|
100
115
|
return client.models[relatedModelName].list(contextSpec, {
|
|
101
116
|
filter: { and: hasManyFilter },
|
|
@@ -109,7 +124,7 @@ function initializeModel(client, modelName, result, modelIntrospection, authMode
|
|
|
109
124
|
};
|
|
110
125
|
}
|
|
111
126
|
else {
|
|
112
|
-
initializedRelationalFields[
|
|
127
|
+
initializedRelationalFields[fieldName] = (options) => {
|
|
113
128
|
if (record[parentPk]) {
|
|
114
129
|
return client.models[relatedModelName].list({
|
|
115
130
|
filter: { and: hasManyFilter },
|
|
@@ -131,7 +146,7 @@ function initializeModel(client, modelName, result, modelIntrospection, authMode
|
|
|
131
146
|
return { [field]: { eq: record[parentSK[idx - 1]] } };
|
|
132
147
|
});
|
|
133
148
|
if (context) {
|
|
134
|
-
initializedRelationalFields[
|
|
149
|
+
initializedRelationalFields[fieldName] = (contextSpec, options) => {
|
|
135
150
|
if (record[parentPk]) {
|
|
136
151
|
return client.models[relatedModelName].list(contextSpec, {
|
|
137
152
|
filter: { and: hasManyFilter },
|
|
@@ -145,7 +160,7 @@ function initializeModel(client, modelName, result, modelIntrospection, authMode
|
|
|
145
160
|
};
|
|
146
161
|
}
|
|
147
162
|
else {
|
|
148
|
-
initializedRelationalFields[
|
|
163
|
+
initializedRelationalFields[fieldName] = (options) => {
|
|
149
164
|
if (record[parentPk]) {
|
|
150
165
|
return client.models[relatedModelName].list({
|
|
151
166
|
filter: { and: hasManyFilter },
|
|
@@ -193,7 +208,7 @@ const FIELD_IR = '';
|
|
|
193
208
|
/**
|
|
194
209
|
* Generates nested Custom Selection Set IR from path
|
|
195
210
|
*
|
|
196
|
-
* @param
|
|
211
|
+
* @param modelDefinitions
|
|
197
212
|
* @param modelName
|
|
198
213
|
* @param selectionSet - array of object paths
|
|
199
214
|
* @example
|
|
@@ -209,22 +224,23 @@ const FIELD_IR = '';
|
|
|
209
224
|
* }
|
|
210
225
|
* ```
|
|
211
226
|
*/
|
|
212
|
-
function customSelectionSetToIR(
|
|
213
|
-
const modelDefinition =
|
|
227
|
+
function customSelectionSetToIR(modelDefinitions, modelName, selectionSet) {
|
|
228
|
+
const modelDefinition = modelDefinitions[modelName];
|
|
214
229
|
const { fields: modelFields } = modelDefinition;
|
|
215
230
|
return selectionSet.reduce((resultObj, path) => {
|
|
216
231
|
const [fieldName, nested, ...rest] = path.split('.');
|
|
217
232
|
if (nested) {
|
|
218
|
-
const
|
|
233
|
+
const fieldType = modelFields[fieldName]?.type;
|
|
234
|
+
const relatedModel = fieldType.model;
|
|
219
235
|
if (!relatedModel) {
|
|
220
236
|
// TODO: may need to change this to support custom types
|
|
221
237
|
throw Error(`${fieldName} is not a model field`);
|
|
222
238
|
}
|
|
223
|
-
const relatedModelDefinition =
|
|
239
|
+
const relatedModelDefinition = modelDefinitions[relatedModel];
|
|
224
240
|
const selectionSet = nested === SELECTION_SET_WILDCARD
|
|
225
241
|
? defaultSelectionSetIR(relatedModelDefinition)
|
|
226
242
|
: // if we have a path like 'field.anotherField' recursively build up selection set IR
|
|
227
|
-
customSelectionSetToIR(
|
|
243
|
+
customSelectionSetToIR(modelDefinitions, relatedModel, [
|
|
228
244
|
[nested, ...rest].join('.'),
|
|
229
245
|
]);
|
|
230
246
|
if (modelFields[fieldName]?.isArray) {
|
|
@@ -248,7 +264,7 @@ function customSelectionSetToIR(modelIntrospection, modelName, selectionSet) {
|
|
|
248
264
|
return resultObj;
|
|
249
265
|
}, {});
|
|
250
266
|
}
|
|
251
|
-
const defaultSelectionSetIR = relatedModelDefinition => {
|
|
267
|
+
const defaultSelectionSetIR = (relatedModelDefinition) => {
|
|
252
268
|
const defaultSelectionSet = defaultSelectionSetForModel(relatedModelDefinition);
|
|
253
269
|
const reduced = defaultSelectionSet.reduce((acc, curVal) => {
|
|
254
270
|
acc[curVal] = FIELD_IR;
|
|
@@ -288,17 +304,17 @@ function selectionSetIRToString(obj) {
|
|
|
288
304
|
});
|
|
289
305
|
return res.join(' ');
|
|
290
306
|
}
|
|
291
|
-
function generateSelectionSet(
|
|
292
|
-
const modelDefinition =
|
|
307
|
+
function generateSelectionSet(modelDefinitions, modelName, selectionSet) {
|
|
308
|
+
const modelDefinition = modelDefinitions[modelName];
|
|
293
309
|
if (!selectionSet) {
|
|
294
310
|
return defaultSelectionSetForModel(modelDefinition).join(' ');
|
|
295
311
|
}
|
|
296
|
-
const selSetIr = customSelectionSetToIR(
|
|
312
|
+
const selSetIr = customSelectionSetToIR(modelDefinitions, modelName, selectionSet);
|
|
297
313
|
const selSetString = selectionSetIRToString(selSetIr);
|
|
298
314
|
return selSetString;
|
|
299
315
|
}
|
|
300
|
-
function generateGraphQLDocument(
|
|
301
|
-
const modelDefinition =
|
|
316
|
+
function generateGraphQLDocument(modelDefinitions, modelName, modelOperation, listArgs) {
|
|
317
|
+
const modelDefinition = modelDefinitions[modelName];
|
|
302
318
|
const { name, pluralName, fields, primaryKeyInfo: { isCustomPrimaryKey, primaryKeyFieldName, sortKeyFieldNames, }, } = modelDefinition;
|
|
303
319
|
const { operationPrefix, usePlural } = graphQLOperationsInfo[modelOperation];
|
|
304
320
|
const { selectionSet } = listArgs || {};
|
|
@@ -313,7 +329,7 @@ function generateGraphQLDocument(modelIntrospection, modelName, modelOperation,
|
|
|
313
329
|
let graphQLOperationType;
|
|
314
330
|
let graphQLSelectionSet;
|
|
315
331
|
let graphQLArguments;
|
|
316
|
-
const selectionSetFields = generateSelectionSet(
|
|
332
|
+
const selectionSetFields = generateSelectionSet(modelDefinitions, modelName, selectionSet);
|
|
317
333
|
switch (modelOperation) {
|
|
318
334
|
case 'CREATE':
|
|
319
335
|
case 'UPDATE':
|
|
@@ -374,27 +390,33 @@ function buildGraphQLVariables(modelDefinition, operation, arg, modelIntrospecti
|
|
|
374
390
|
switch (operation) {
|
|
375
391
|
case 'CREATE':
|
|
376
392
|
variables = {
|
|
377
|
-
input:
|
|
393
|
+
input: arg
|
|
394
|
+
? normalizeMutationInput(arg, modelDefinition, modelIntrospection)
|
|
395
|
+
: {},
|
|
378
396
|
};
|
|
379
397
|
break;
|
|
380
398
|
case 'UPDATE':
|
|
381
399
|
// readonly fields are not updated
|
|
382
400
|
variables = {
|
|
383
|
-
input:
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
401
|
+
input: arg
|
|
402
|
+
? Object.fromEntries(Object.entries(normalizeMutationInput(arg, modelDefinition, modelIntrospection)).filter(([fieldName]) => {
|
|
403
|
+
const { isReadOnly } = fields[fieldName];
|
|
404
|
+
return !isReadOnly;
|
|
405
|
+
}))
|
|
406
|
+
: {},
|
|
387
407
|
};
|
|
388
408
|
break;
|
|
389
409
|
case 'READ':
|
|
390
410
|
case 'DELETE':
|
|
391
411
|
// only identifiers are sent
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
412
|
+
if (arg) {
|
|
413
|
+
variables = isCustomPrimaryKey
|
|
414
|
+
? [primaryKeyFieldName, ...sortKeyFieldNames].reduce((acc, fieldName) => {
|
|
415
|
+
acc[fieldName] = arg[fieldName];
|
|
416
|
+
return acc;
|
|
417
|
+
}, {})
|
|
418
|
+
: { [primaryKeyFieldName]: arg[primaryKeyFieldName] };
|
|
419
|
+
}
|
|
398
420
|
if (operation === 'DELETE') {
|
|
399
421
|
variables = { input: variables };
|
|
400
422
|
}
|
|
@@ -439,23 +461,26 @@ function buildGraphQLVariables(modelDefinition, operation, arg, modelIntrospecti
|
|
|
439
461
|
* ```
|
|
440
462
|
*
|
|
441
463
|
*/
|
|
442
|
-
function normalizeMutationInput(mutationInput, model,
|
|
464
|
+
function normalizeMutationInput(mutationInput, model, modelIntrospection) {
|
|
443
465
|
const { fields } = model;
|
|
444
466
|
const normalized = {};
|
|
445
467
|
Object.entries(mutationInput).forEach(([inputFieldName, inputValue]) => {
|
|
446
|
-
const
|
|
468
|
+
const fieldType = fields[inputFieldName]?.type;
|
|
469
|
+
const relatedModelName = fieldType?.model;
|
|
447
470
|
if (relatedModelName) {
|
|
448
471
|
const association = fields[inputFieldName]?.association;
|
|
449
|
-
const relatedModelDef =
|
|
472
|
+
const relatedModelDef = modelIntrospection.models[relatedModelName];
|
|
450
473
|
const relatedModelPkInfo = relatedModelDef.primaryKeyInfo;
|
|
451
|
-
if (association
|
|
452
|
-
|
|
453
|
-
|
|
474
|
+
if (association?.connectionType === connectionType.HAS_ONE) {
|
|
475
|
+
const associationHasOne = association;
|
|
476
|
+
associationHasOne.targetNames.forEach((targetName, idx) => {
|
|
477
|
+
const associatedFieldName = associationHasOne.associatedWith[idx];
|
|
454
478
|
normalized[targetName] = inputValue[associatedFieldName];
|
|
455
479
|
});
|
|
456
480
|
}
|
|
457
|
-
if (association
|
|
458
|
-
|
|
481
|
+
if (association?.connectionType === connectionType.BELONGS_TO) {
|
|
482
|
+
const associationBelongsTo = association;
|
|
483
|
+
associationBelongsTo.targetNames.forEach((targetName, idx) => {
|
|
459
484
|
if (idx === 0) {
|
|
460
485
|
const associatedFieldName = relatedModelPkInfo.primaryKeyFieldName;
|
|
461
486
|
normalized[targetName] = inputValue[associatedFieldName];
|
|
@@ -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 } 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' && 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 field of modelFields) {\n const relatedModelName = introModelFields[field].type.model;\n const relatedModel = modelIntrospection.models[relatedModelName];\n const relatedModelPKFieldName = relatedModel.primaryKeyInfo.primaryKeyFieldName;\n const relatedModelSKFieldNames = relatedModel.primaryKeyInfo.sortKeyFieldNames;\n const relationType = introModelFields[field].association.connectionType;\n const connectionFields = introModelFields[field].association.associatedWith;\n const targetNames = introModelFields[field].association?.targetNames || [];\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[field] = (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[field] = (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 if (relatedModel.fields[connectionFields[0]]?.type.model) {\n const relatedTargetNames = relatedModel.fields[connectionFields[0]].association.targetNames;\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[field] = (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[field] = (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[field] = (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[field] = (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 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 graphQLDocumentsCache = new Map();\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 .map(({ type, name }) => typeof type === 'string' && name) // Default selection set omits model fields\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 modelIntrospection\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(modelIntrospection, modelName, selectionSet) {\n const modelDefinition = modelIntrospection[modelName];\n const { fields: modelFields } = modelDefinition;\n return selectionSet.reduce((resultObj, path) => {\n const [fieldName, nested, ...rest] = path.split('.');\n if (nested) {\n const relatedModel = modelFields[fieldName]?.type?.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 const relatedModelDefinition = modelIntrospection[relatedModel];\n const selectionSet = nested === SELECTION_SET_WILDCARD\n ? defaultSelectionSetIR(relatedModelDefinition)\n : // if we have a path like 'field.anotherField' recursively build up selection set IR\n customSelectionSetToIR(modelIntrospection, relatedModel, [\n [nested, ...rest].join('.'),\n ]);\n if (modelFields[fieldName]?.isArray) {\n const existing = resultObj[fieldName] || {\n items: {},\n };\n const merged = { ...existing.items, ...selectionSet };\n resultObj[fieldName] = { items: merged };\n return resultObj;\n }\n const existingItems = resultObj[fieldName] || {};\n const merged = { ...existingItems, ...selectionSet };\n resultObj[fieldName] = merged;\n return resultObj;\n }\n const exists = Boolean(modelFields[fieldName]);\n if (!exists) {\n throw Error(`${fieldName} is not a field of model ${modelName}`);\n }\n resultObj[fieldName] = FIELD_IR;\n return resultObj;\n }, {});\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}\nexport function generateSelectionSet(modelIntrospection, modelName, selectionSet) {\n const modelDefinition = modelIntrospection[modelName];\n if (!selectionSet) {\n return defaultSelectionSetForModel(modelDefinition).join(' ');\n }\n const selSetIr = customSelectionSetToIR(modelIntrospection, modelName, selectionSet);\n const selSetString = selectionSetIRToString(selSetIr);\n return selSetString;\n}\nexport function generateGraphQLDocument(modelIntrospection, modelName, modelOperation, listArgs) {\n const modelDefinition = modelIntrospection[modelName];\n const { name, pluralName, fields, primaryKeyInfo: { isCustomPrimaryKey, primaryKeyFieldName, sortKeyFieldNames, }, } = modelDefinition;\n const { operationPrefix, usePlural } = graphQLOperationsInfo[modelOperation];\n const { selectionSet } = listArgs || {};\n const fromCache = graphQLDocumentsCache.get(name)?.get(modelOperation);\n if (fromCache !== undefined) {\n return fromCache;\n }\n if (!graphQLDocumentsCache.has(name)) {\n graphQLDocumentsCache.set(name, new Map());\n }\n const graphQLFieldName = `${operationPrefix}${usePlural ? pluralName : name}`;\n let graphQLOperationType;\n let graphQLSelectionSet;\n let graphQLArguments;\n const selectionSetFields = generateSelectionSet(modelIntrospection, 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 '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 graphQLDocumentsCache.get(name)?.set(modelOperation, graphQLDocument);\n return graphQLDocument;\n}\nexport function buildGraphQLVariables(modelDefinition, operation, arg, modelIntrospection) {\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: normalizeMutationInput(arg, modelDefinition, modelIntrospection),\n };\n break;\n case 'UPDATE':\n // readonly fields are not updated\n variables = {\n input: Object.fromEntries(Object.entries(normalizeMutationInput(arg, modelDefinition, modelIntrospection)).filter(([fieldName]) => {\n const { isReadOnly } = fields[fieldName];\n return !isReadOnly;\n })),\n };\n break;\n case 'READ':\n case 'DELETE':\n // only identifiers are sent\n variables = isCustomPrimaryKey\n ? [primaryKeyFieldName, ...sortKeyFieldNames].reduce((acc, fieldName) => {\n acc[fieldName] = arg[fieldName];\n return acc;\n }, {})\n : { [primaryKeyFieldName]: arg[primaryKeyFieldName] };\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 '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, modelDefinition) {\n const { fields } = model;\n const normalized = {};\n Object.entries(mutationInput).forEach(([inputFieldName, inputValue]) => {\n const relatedModelName = fields[inputFieldName]?.type?.model;\n if (relatedModelName) {\n const association = fields[inputFieldName]?.association;\n const relatedModelDef = modelDefinition.models[relatedModelName];\n const relatedModelPkInfo = relatedModelDef.primaryKeyInfo;\n if (association.connectionType === connectionType.HAS_ONE) {\n association.targetNames.forEach((targetName, idx) => {\n const associatedFieldName = association.associatedWith[idx];\n normalized[targetName] = inputValue[associatedFieldName];\n });\n }\n if (association.connectionType === connectionType.BELONGS_TO) {\n association.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"],"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, } 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' && 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 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 graphQLDocumentsCache = new Map();\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 .map(({ type, name }) => typeof type === 'string' && name) // Default selection set omits model fields\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 modelDefinition = modelDefinitions[modelName];\n const { fields: modelFields } = modelDefinition;\n return selectionSet.reduce((resultObj, path) => {\n const [fieldName, nested, ...rest] = path.split('.');\n if (nested) {\n const fieldType = modelFields[fieldName]?.type;\n const relatedModel = fieldType.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 const relatedModelDefinition = modelDefinitions[relatedModel];\n const selectionSet = nested === SELECTION_SET_WILDCARD\n ? defaultSelectionSetIR(relatedModelDefinition)\n : // if we have a path like 'field.anotherField' recursively build up selection set IR\n customSelectionSetToIR(modelDefinitions, relatedModel, [\n [nested, ...rest].join('.'),\n ]);\n if (modelFields[fieldName]?.isArray) {\n const existing = resultObj[fieldName] || {\n items: {},\n };\n const merged = { ...existing.items, ...selectionSet };\n resultObj[fieldName] = { items: merged };\n return resultObj;\n }\n const existingItems = resultObj[fieldName] || {};\n const merged = { ...existingItems, ...selectionSet };\n resultObj[fieldName] = merged;\n return resultObj;\n }\n const exists = Boolean(modelFields[fieldName]);\n if (!exists) {\n throw Error(`${fieldName} is not a field of model ${modelName}`);\n }\n resultObj[fieldName] = FIELD_IR;\n return resultObj;\n }, {});\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}\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) {\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 const fromCache = graphQLDocumentsCache.get(name)?.get(modelOperation);\n if (fromCache !== undefined) {\n return fromCache;\n }\n if (!graphQLDocumentsCache.has(name)) {\n graphQLDocumentsCache.set(name, new Map());\n }\n const graphQLFieldName = `${operationPrefix}${usePlural ? pluralName : name}`;\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 '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 graphQLDocumentsCache.get(name)?.set(modelOperation, graphQLDocument);\n return graphQLDocument;\n}\nexport function buildGraphQLVariables(modelDefinition, operation, arg, modelIntrospection) {\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 '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"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,6 @@ import { Observable } from 'rxjs';
|
|
|
3
3
|
import { AmplifyClassV6 } from '@aws-amplify/core';
|
|
4
4
|
import { CustomUserAgentDetails } from '@aws-amplify/core/internals/utils';
|
|
5
5
|
import { GraphQLResult, GraphQLOperation, GraphQLOptions } from '../types';
|
|
6
|
-
export declare const graphqlOperation: (query: any, variables?: {}, authToken?: string) => {
|
|
7
|
-
query: any;
|
|
8
|
-
variables: {};
|
|
9
|
-
authToken: string | undefined;
|
|
10
|
-
};
|
|
11
6
|
/**
|
|
12
7
|
* Export Cloud Logic APIs
|
|
13
8
|
*/
|
|
@@ -15,14 +10,8 @@ export declare class InternalGraphQLAPIClass {
|
|
|
15
10
|
/**
|
|
16
11
|
* @private
|
|
17
12
|
*/
|
|
18
|
-
private _options;
|
|
19
13
|
private appSyncRealTime;
|
|
20
14
|
private _api;
|
|
21
|
-
/**
|
|
22
|
-
* Initialize GraphQL API with AWS configuration
|
|
23
|
-
* @param {Object} options - Configuration object for API
|
|
24
|
-
*/
|
|
25
|
-
constructor(options: any);
|
|
26
15
|
getModuleName(): string;
|
|
27
16
|
private _headerBasedAuth;
|
|
28
17
|
/**
|
|
@@ -11,12 +11,7 @@ import { resolveLibraryOptions } from '../utils/resolveLibraryOptions.mjs';
|
|
|
11
11
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
12
12
|
// SPDX-License-Identifier: Apache-2.0
|
|
13
13
|
const USER_AGENT_HEADER = 'x-amz-user-agent';
|
|
14
|
-
|
|
15
|
-
const graphqlOperation = (query, variables = {}, authToken) => ({
|
|
16
|
-
query,
|
|
17
|
-
variables,
|
|
18
|
-
authToken,
|
|
19
|
-
});
|
|
14
|
+
new ConsoleLogger('GraphQLAPI');
|
|
20
15
|
const isAmplifyInstance = (amplify) => {
|
|
21
16
|
return typeof amplify !== 'function';
|
|
22
17
|
};
|
|
@@ -24,19 +19,17 @@ const isAmplifyInstance = (amplify) => {
|
|
|
24
19
|
* Export Cloud Logic APIs
|
|
25
20
|
*/
|
|
26
21
|
class InternalGraphQLAPIClass {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
22
|
+
constructor() {
|
|
23
|
+
/**
|
|
24
|
+
* @private
|
|
25
|
+
*/
|
|
26
|
+
this.appSyncRealTime = new AWSAppSyncRealTimeProvider();
|
|
32
27
|
this._api = {
|
|
33
28
|
post,
|
|
34
29
|
cancelREST: cancel,
|
|
35
30
|
isCancelErrorREST: isCancelError,
|
|
36
31
|
updateRequestToBeCancellable,
|
|
37
32
|
};
|
|
38
|
-
this._options = options;
|
|
39
|
-
logger.debug('API Options', this._options);
|
|
40
33
|
}
|
|
41
34
|
getModuleName() {
|
|
42
35
|
return 'InternalGraphQLAPI';
|
|
@@ -125,7 +118,7 @@ class InternalGraphQLAPIClass {
|
|
|
125
118
|
responsePromise = this._graphql(amplify, { query, variables, authMode }, headers, abortController, customUserAgentDetails);
|
|
126
119
|
}
|
|
127
120
|
else {
|
|
128
|
-
const wrapper = amplifyInstance => this._graphql(amplifyInstance, { query, variables, authMode }, headers, abortController, customUserAgentDetails);
|
|
121
|
+
const wrapper = (amplifyInstance) => this._graphql(amplifyInstance, { query, variables, authMode }, headers, abortController, customUserAgentDetails);
|
|
129
122
|
responsePromise = amplify(wrapper);
|
|
130
123
|
}
|
|
131
124
|
this._api.updateRequestToBeCancellable(responsePromise, abortController);
|
|
@@ -185,7 +178,7 @@ class InternalGraphQLAPIClass {
|
|
|
185
178
|
authMode !== 'userPool' &&
|
|
186
179
|
authMode !== 'iam' &&
|
|
187
180
|
authMode !== 'lambda')) {
|
|
188
|
-
signingServiceInfo =
|
|
181
|
+
signingServiceInfo = undefined;
|
|
189
182
|
}
|
|
190
183
|
else {
|
|
191
184
|
signingServiceInfo = {
|
|
@@ -225,7 +218,9 @@ class InternalGraphQLAPIClass {
|
|
|
225
218
|
}
|
|
226
219
|
response = {
|
|
227
220
|
data: {},
|
|
228
|
-
errors: [
|
|
221
|
+
errors: [
|
|
222
|
+
new GraphQLError(err.message, null, null, null, null, err),
|
|
223
|
+
],
|
|
229
224
|
};
|
|
230
225
|
}
|
|
231
226
|
const { errors } = response;
|
|
@@ -252,9 +247,6 @@ class InternalGraphQLAPIClass {
|
|
|
252
247
|
}
|
|
253
248
|
_graphqlSubscribe(amplify, { query, variables, authMode }, additionalHeaders = {}, customUserAgentDetails) {
|
|
254
249
|
const config = resolveConfig(amplify);
|
|
255
|
-
if (!this.appSyncRealTime) {
|
|
256
|
-
this.appSyncRealTime = new AWSAppSyncRealTimeProvider();
|
|
257
|
-
}
|
|
258
250
|
return this.appSyncRealTime.subscribe({
|
|
259
251
|
query: print(query),
|
|
260
252
|
variables,
|
|
@@ -266,7 +258,7 @@ class InternalGraphQLAPIClass {
|
|
|
266
258
|
}, customUserAgentDetails);
|
|
267
259
|
}
|
|
268
260
|
}
|
|
269
|
-
const InternalGraphQLAPI = new InternalGraphQLAPIClass(
|
|
261
|
+
const InternalGraphQLAPI = new InternalGraphQLAPIClass();
|
|
270
262
|
|
|
271
|
-
export { InternalGraphQLAPI, InternalGraphQLAPIClass
|
|
263
|
+
export { InternalGraphQLAPI, InternalGraphQLAPIClass };
|
|
272
264
|
//# sourceMappingURL=InternalGraphQLAPI.mjs.map
|