@aws-amplify/datastore 5.0.82 → 5.0.83-local-stack.00864ae.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/datastore/datastore.js +2 -2
- package/dist/cjs/datastore/datastore.js.map +1 -1
- package/dist/cjs/predicates/index.js +2 -2
- package/dist/cjs/predicates/index.js.map +1 -1
- package/dist/cjs/predicates/next.js +3 -3
- package/dist/cjs/predicates/next.js.map +1 -1
- package/dist/cjs/storage/adapter/InMemoryStore.js +2 -2
- package/dist/cjs/storage/adapter/InMemoryStore.js.map +1 -1
- package/dist/cjs/storage/adapter/InMemoryStore.native.js +1 -2
- package/dist/cjs/storage/adapter/InMemoryStore.native.js.map +1 -1
- package/dist/cjs/sync/index.js +1 -1
- package/dist/cjs/sync/index.js.map +1 -1
- package/dist/cjs/sync/processors/errorMaps.js +5 -5
- package/dist/cjs/sync/processors/errorMaps.js.map +1 -1
- package/dist/cjs/sync/processors/subscription.js +2 -2
- package/dist/cjs/sync/processors/subscription.js.map +1 -1
- package/dist/cjs/sync/utils.js +23 -23
- package/dist/cjs/sync/utils.js.map +1 -1
- package/dist/cjs/types.js +40 -29
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/util.js +13 -14
- package/dist/cjs/util.js.map +1 -1
- package/dist/esm/datastore/datastore.d.ts +1 -1
- package/dist/esm/index.d.ts +3 -3
- package/dist/esm/util.d.ts +5 -5
- package/package.json +74 -75
package/dist/cjs/sync/utils.js
CHANGED
|
@@ -1,7 +1,27 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.
|
|
4
|
+
exports.RTFError = exports.TransformerMutationType = void 0;
|
|
5
|
+
exports.getMetadataFields = getMetadataFields;
|
|
6
|
+
exports.generateSelectionSet = generateSelectionSet;
|
|
7
|
+
exports.getAuthorizationRules = getAuthorizationRules;
|
|
8
|
+
exports.buildSubscriptionGraphQLOperation = buildSubscriptionGraphQLOperation;
|
|
9
|
+
exports.buildGraphQLOperation = buildGraphQLOperation;
|
|
10
|
+
exports.createMutationInstanceFromModelOperation = createMutationInstanceFromModelOperation;
|
|
11
|
+
exports.predicateToGraphQLCondition = predicateToGraphQLCondition;
|
|
12
|
+
exports.predicateToGraphQLFilter = predicateToGraphQLFilter;
|
|
13
|
+
exports.filterFields = filterFields;
|
|
14
|
+
exports.dynamicAuthFields = dynamicAuthFields;
|
|
15
|
+
exports.countFilterCombinations = countFilterCombinations;
|
|
16
|
+
exports.repeatedFieldInGroup = repeatedFieldInGroup;
|
|
17
|
+
exports.generateRTFRemediation = generateRTFRemediation;
|
|
18
|
+
exports.getUserGroupsFromToken = getUserGroupsFromToken;
|
|
19
|
+
exports.getModelAuthModes = getModelAuthModes;
|
|
20
|
+
exports.getForbiddenError = getForbiddenError;
|
|
21
|
+
exports.resolveServiceErrorStatusCode = resolveServiceErrorStatusCode;
|
|
22
|
+
exports.getClientSideAuthError = getClientSideAuthError;
|
|
23
|
+
exports.getTokenForCustomAuth = getTokenForCustomAuth;
|
|
24
|
+
exports.getIdentifierValue = getIdentifierValue;
|
|
5
25
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
6
26
|
// SPDX-License-Identifier: Apache-2.0
|
|
7
27
|
const api_1 = require("@aws-amplify/api");
|
|
@@ -22,7 +42,7 @@ var TransformerMutationType;
|
|
|
22
42
|
TransformerMutationType["UPDATE"] = "Update";
|
|
23
43
|
TransformerMutationType["DELETE"] = "Delete";
|
|
24
44
|
TransformerMutationType["GET"] = "Get";
|
|
25
|
-
})(TransformerMutationType
|
|
45
|
+
})(TransformerMutationType || (exports.TransformerMutationType = TransformerMutationType = {}));
|
|
26
46
|
const dummyMetadata = {
|
|
27
47
|
_version: undefined,
|
|
28
48
|
_lastChangedAt: undefined,
|
|
@@ -32,7 +52,6 @@ const metadataFields = Object.keys(dummyMetadata);
|
|
|
32
52
|
function getMetadataFields() {
|
|
33
53
|
return metadataFields;
|
|
34
54
|
}
|
|
35
|
-
exports.getMetadataFields = getMetadataFields;
|
|
36
55
|
function generateSelectionSet(namespace, modelDefinition) {
|
|
37
56
|
const scalarFields = getScalarFields(modelDefinition);
|
|
38
57
|
const nonModelFields = getNonModelFields(namespace, modelDefinition);
|
|
@@ -49,7 +68,6 @@ function generateSelectionSet(namespace, modelDefinition) {
|
|
|
49
68
|
const result = scalarAndMetadataFields.join('\n');
|
|
50
69
|
return result;
|
|
51
70
|
}
|
|
52
|
-
exports.generateSelectionSet = generateSelectionSet;
|
|
53
71
|
function getImplicitOwnerField(modelDefinition, scalarFields) {
|
|
54
72
|
const ownerFields = getOwnerFields(modelDefinition);
|
|
55
73
|
if (!scalarFields.owner && ownerFields.includes('owner')) {
|
|
@@ -190,7 +208,6 @@ function getAuthorizationRules(modelDefinition) {
|
|
|
190
208
|
});
|
|
191
209
|
return resultRules;
|
|
192
210
|
}
|
|
193
|
-
exports.getAuthorizationRules = getAuthorizationRules;
|
|
194
211
|
function buildSubscriptionGraphQLOperation(namespace, modelDefinition, transformerMutationType, isOwnerAuthorization, ownerField, filterArg = false) {
|
|
195
212
|
const selectionSet = generateSelectionSet(namespace, modelDefinition);
|
|
196
213
|
const { name: typeName } = modelDefinition;
|
|
@@ -217,7 +234,6 @@ function buildSubscriptionGraphQLOperation(namespace, modelDefinition, transform
|
|
|
217
234
|
}`,
|
|
218
235
|
];
|
|
219
236
|
}
|
|
220
|
-
exports.buildSubscriptionGraphQLOperation = buildSubscriptionGraphQLOperation;
|
|
221
237
|
function buildGraphQLOperation(namespace, modelDefinition, graphQLOpType) {
|
|
222
238
|
let selectionSet = generateSelectionSet(namespace, modelDefinition);
|
|
223
239
|
const { name: typeName, pluralName: pluralTypeName } = modelDefinition;
|
|
@@ -276,7 +292,6 @@ function buildGraphQLOperation(namespace, modelDefinition, graphQLOpType) {
|
|
|
276
292
|
],
|
|
277
293
|
];
|
|
278
294
|
}
|
|
279
|
-
exports.buildGraphQLOperation = buildGraphQLOperation;
|
|
280
295
|
function createMutationInstanceFromModelOperation(relationships, modelDefinition, opType, model, element, condition, MutationEventConstructor, modelInstanceCreator, id) {
|
|
281
296
|
let operation;
|
|
282
297
|
switch (opType) {
|
|
@@ -318,7 +333,6 @@ function createMutationInstanceFromModelOperation(relationships, modelDefinition
|
|
|
318
333
|
});
|
|
319
334
|
return mutationEvent;
|
|
320
335
|
}
|
|
321
|
-
exports.createMutationInstanceFromModelOperation = createMutationInstanceFromModelOperation;
|
|
322
336
|
function predicateToGraphQLCondition(predicate, modelDefinition) {
|
|
323
337
|
const result = {};
|
|
324
338
|
if (!predicate || !Array.isArray(predicate.predicates)) {
|
|
@@ -334,7 +348,6 @@ function predicateToGraphQLCondition(predicate, modelDefinition) {
|
|
|
334
348
|
const keyFields = (0, util_1.extractPrimaryKeyFieldNames)(modelDefinition);
|
|
335
349
|
return predicateToGraphQLFilter(predicate, keyFields);
|
|
336
350
|
}
|
|
337
|
-
exports.predicateToGraphQLCondition = predicateToGraphQLCondition;
|
|
338
351
|
/**
|
|
339
352
|
* @param predicatesGroup - Predicate Group
|
|
340
353
|
@returns GQL Filter Expression from Predicate Group
|
|
@@ -406,7 +419,6 @@ function predicateToGraphQLFilter(predicatesGroup, fieldsToOmit = [], root = tru
|
|
|
406
419
|
}
|
|
407
420
|
return result;
|
|
408
421
|
}
|
|
409
|
-
exports.predicateToGraphQLFilter = predicateToGraphQLFilter;
|
|
410
422
|
/**
|
|
411
423
|
*
|
|
412
424
|
* @param group - selective sync predicate group
|
|
@@ -429,7 +441,6 @@ function filterFields(group) {
|
|
|
429
441
|
}
|
|
430
442
|
return fields;
|
|
431
443
|
}
|
|
432
|
-
exports.filterFields = filterFields;
|
|
433
444
|
/**
|
|
434
445
|
*
|
|
435
446
|
* @param modelDefinition
|
|
@@ -449,7 +460,6 @@ function dynamicAuthFields(modelDefinition) {
|
|
|
449
460
|
}
|
|
450
461
|
return fields;
|
|
451
462
|
}
|
|
452
|
-
exports.dynamicAuthFields = dynamicAuthFields;
|
|
453
463
|
/**
|
|
454
464
|
*
|
|
455
465
|
* @param group - selective sync predicate group
|
|
@@ -482,7 +492,6 @@ function countFilterCombinations(group) {
|
|
|
482
492
|
// if we didn't encounter any OR groups, default to 1
|
|
483
493
|
return count || 1;
|
|
484
494
|
}
|
|
485
|
-
exports.countFilterCombinations = countFilterCombinations;
|
|
486
495
|
/**
|
|
487
496
|
*
|
|
488
497
|
* @param group - selective sync predicate group
|
|
@@ -534,7 +543,6 @@ function repeatedFieldInGroup(group) {
|
|
|
534
543
|
}
|
|
535
544
|
return null;
|
|
536
545
|
}
|
|
537
|
-
exports.repeatedFieldInGroup = repeatedFieldInGroup;
|
|
538
546
|
var RTFError;
|
|
539
547
|
(function (RTFError) {
|
|
540
548
|
RTFError[RTFError["UnknownField"] = 0] = "UnknownField";
|
|
@@ -543,7 +551,7 @@ var RTFError;
|
|
|
543
551
|
RTFError[RTFError["RepeatedFieldname"] = 3] = "RepeatedFieldname";
|
|
544
552
|
RTFError[RTFError["NotGroup"] = 4] = "NotGroup";
|
|
545
553
|
RTFError[RTFError["FieldNotInType"] = 5] = "FieldNotInType";
|
|
546
|
-
})(RTFError
|
|
554
|
+
})(RTFError || (exports.RTFError = RTFError = {}));
|
|
547
555
|
function generateRTFRemediation(errorType, modelDefinition, predicatesGroup) {
|
|
548
556
|
const selSyncFields = filterFields(predicatesGroup);
|
|
549
557
|
const selSyncFieldStr = [...selSyncFields].join(', ');
|
|
@@ -585,7 +593,6 @@ function generateRTFRemediation(errorType, modelDefinition, predicatesGroup) {
|
|
|
585
593
|
return '';
|
|
586
594
|
}
|
|
587
595
|
}
|
|
588
|
-
exports.generateRTFRemediation = generateRTFRemediation;
|
|
589
596
|
function getUserGroupsFromToken(token, rule) {
|
|
590
597
|
// validate token against groupClaim
|
|
591
598
|
let userGroups = token[rule.groupClaim] || [];
|
|
@@ -601,7 +608,6 @@ function getUserGroupsFromToken(token, rule) {
|
|
|
601
608
|
}
|
|
602
609
|
return userGroups;
|
|
603
610
|
}
|
|
604
|
-
exports.getUserGroupsFromToken = getUserGroupsFromToken;
|
|
605
611
|
async function getModelAuthModes({ authModeStrategy, defaultAuthMode, modelName, schema, }) {
|
|
606
612
|
const operations = Object.values(types_1.ModelOperation);
|
|
607
613
|
const modelAuthModes = {
|
|
@@ -634,7 +640,6 @@ async function getModelAuthModes({ authModeStrategy, defaultAuthMode, modelName,
|
|
|
634
640
|
}
|
|
635
641
|
return modelAuthModes;
|
|
636
642
|
}
|
|
637
|
-
exports.getModelAuthModes = getModelAuthModes;
|
|
638
643
|
function getForbiddenError(error) {
|
|
639
644
|
const forbiddenErrorCodes = [401, 403];
|
|
640
645
|
let forbiddenError;
|
|
@@ -650,7 +655,6 @@ function getForbiddenError(error) {
|
|
|
650
655
|
}
|
|
651
656
|
return null;
|
|
652
657
|
}
|
|
653
|
-
exports.getForbiddenError = getForbiddenError;
|
|
654
658
|
function resolveServiceErrorStatusCode(error) {
|
|
655
659
|
if (error?.$metadata?.httpStatusCode) {
|
|
656
660
|
return Number(error?.$metadata?.httpStatusCode);
|
|
@@ -662,7 +666,6 @@ function resolveServiceErrorStatusCode(error) {
|
|
|
662
666
|
return null;
|
|
663
667
|
}
|
|
664
668
|
}
|
|
665
|
-
exports.resolveServiceErrorStatusCode = resolveServiceErrorStatusCode;
|
|
666
669
|
function getClientSideAuthError(error) {
|
|
667
670
|
const clientSideAuthErrors = Object.values(api_1.GraphQLAuthError);
|
|
668
671
|
const clientSideError = error &&
|
|
@@ -670,7 +673,6 @@ function getClientSideAuthError(error) {
|
|
|
670
673
|
clientSideAuthErrors.find(clientError => error.message.includes(clientError));
|
|
671
674
|
return clientSideError || null;
|
|
672
675
|
}
|
|
673
|
-
exports.getClientSideAuthError = getClientSideAuthError;
|
|
674
676
|
async function getTokenForCustomAuth(authMode, amplifyConfig = {}) {
|
|
675
677
|
if (authMode === 'lambda') {
|
|
676
678
|
const { authProviders: { functionAuthProvider } = { functionAuthProvider: null }, } = amplifyConfig;
|
|
@@ -689,12 +691,10 @@ async function getTokenForCustomAuth(authMode, amplifyConfig = {}) {
|
|
|
689
691
|
}
|
|
690
692
|
}
|
|
691
693
|
}
|
|
692
|
-
exports.getTokenForCustomAuth = getTokenForCustomAuth;
|
|
693
694
|
// Util that takes a modelDefinition and model and returns either the id value(s) or the custom primary key value(s)
|
|
694
695
|
function getIdentifierValue(modelDefinition, model) {
|
|
695
696
|
const pkFieldNames = (0, util_1.extractPrimaryKeyFieldNames)(modelDefinition);
|
|
696
697
|
const idOrPk = pkFieldNames.map(f => model[f]).join(util_1.IDENTIFIER_KEY_SEPARATOR);
|
|
697
698
|
return idOrPk;
|
|
698
699
|
}
|
|
699
|
-
exports.getIdentifierValue = getIdentifierValue;
|
|
700
700
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../src/sync/utils.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getIdentifierValue = exports.getTokenForCustomAuth = exports.getClientSideAuthError = exports.resolveServiceErrorStatusCode = exports.getForbiddenError = exports.getModelAuthModes = exports.getUserGroupsFromToken = exports.generateRTFRemediation = exports.RTFError = exports.repeatedFieldInGroup = exports.countFilterCombinations = exports.dynamicAuthFields = exports.filterFields = exports.predicateToGraphQLFilter = exports.predicateToGraphQLCondition = exports.createMutationInstanceFromModelOperation = exports.buildGraphQLOperation = exports.buildSubscriptionGraphQLOperation = exports.getAuthorizationRules = exports.generateSelectionSet = exports.getMetadataFields = exports.TransformerMutationType = void 0;\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst api_1 = require(\"@aws-amplify/api\");\nconst core_1 = require(\"@aws-amplify/core\");\nconst types_1 = require(\"../types\");\nconst util_1 = require(\"../util\");\nconst logger = new core_1.ConsoleLogger('DataStore');\nconst GraphQLOperationType = {\n LIST: 'query',\n CREATE: 'mutation',\n UPDATE: 'mutation',\n DELETE: 'mutation',\n GET: 'query',\n};\nvar TransformerMutationType;\n(function (TransformerMutationType) {\n TransformerMutationType[\"CREATE\"] = \"Create\";\n TransformerMutationType[\"UPDATE\"] = \"Update\";\n TransformerMutationType[\"DELETE\"] = \"Delete\";\n TransformerMutationType[\"GET\"] = \"Get\";\n})(TransformerMutationType = exports.TransformerMutationType || (exports.TransformerMutationType = {}));\nconst dummyMetadata = {\n _version: undefined,\n _lastChangedAt: undefined,\n _deleted: undefined,\n};\nconst metadataFields = Object.keys(dummyMetadata);\nfunction getMetadataFields() {\n return metadataFields;\n}\nexports.getMetadataFields = getMetadataFields;\nfunction generateSelectionSet(namespace, modelDefinition) {\n const scalarFields = getScalarFields(modelDefinition);\n const nonModelFields = getNonModelFields(namespace, modelDefinition);\n const implicitOwnerField = getImplicitOwnerField(modelDefinition, scalarFields);\n let scalarAndMetadataFields = Object.values(scalarFields)\n .map(({ name }) => name)\n .concat(implicitOwnerField)\n .concat(nonModelFields);\n if ((0, types_1.isSchemaModel)(modelDefinition)) {\n scalarAndMetadataFields = scalarAndMetadataFields\n .concat(getMetadataFields())\n .concat(getConnectionFields(modelDefinition, namespace));\n }\n const result = scalarAndMetadataFields.join('\\n');\n return result;\n}\nexports.generateSelectionSet = generateSelectionSet;\nfunction getImplicitOwnerField(modelDefinition, scalarFields) {\n const ownerFields = getOwnerFields(modelDefinition);\n if (!scalarFields.owner && ownerFields.includes('owner')) {\n return ['owner'];\n }\n return [];\n}\nfunction getOwnerFields(modelDefinition) {\n const ownerFields = [];\n if ((0, types_1.isSchemaModelWithAttributes)(modelDefinition)) {\n modelDefinition.attributes.forEach(attr => {\n if (attr.properties && attr.properties.rules) {\n const rule = attr.properties.rules.find(currentRule => currentRule.allow === 'owner');\n if (rule && rule.ownerField) {\n ownerFields.push(rule.ownerField);\n }\n }\n });\n }\n return ownerFields;\n}\nfunction getScalarFields(modelDefinition) {\n const { fields } = modelDefinition;\n const result = Object.values(fields)\n .filter(field => {\n if ((0, types_1.isGraphQLScalarType)(field.type) || (0, types_1.isEnumFieldType)(field.type)) {\n return true;\n }\n return false;\n })\n .reduce((acc, field) => {\n acc[field.name] = field;\n return acc;\n }, {});\n return result;\n}\n// Used for generating the selection set for queries and mutations\nfunction getConnectionFields(modelDefinition, namespace) {\n const result = [];\n Object.values(modelDefinition.fields)\n .filter(({ association }) => association && Object.keys(association).length)\n .forEach(({ name, association }) => {\n const { connectionType } = association || {};\n switch (connectionType) {\n case 'HAS_ONE':\n case 'HAS_MANY':\n // Intentionally blank\n break;\n case 'BELONGS_TO':\n if ((0, types_1.isTargetNameAssociation)(association)) {\n // New codegen (CPK)\n if (association.targetNames && association.targetNames.length > 0) {\n // Need to retrieve relations in order to get connected model keys\n const [relations] = (0, util_1.establishRelationAndKeys)(namespace);\n const connectedModelName = modelDefinition.fields[name].type.model;\n const byPkIndex = relations[connectedModelName].indexes.find(([currentName]) => currentName === 'byPk');\n const keyFields = byPkIndex && byPkIndex[1];\n const keyFieldSelectionSet = keyFields?.join(' ');\n // We rely on `_deleted` when we process the sync query (e.g. in batchSave in the adapters)\n result.push(`${name} { ${keyFieldSelectionSet} _deleted }`);\n }\n else {\n // backwards-compatability for schema generated prior to custom primary key support\n result.push(`${name} { id _deleted }`);\n }\n }\n break;\n default:\n throw new Error(`Invalid connection type ${connectionType}`);\n }\n });\n return result;\n}\nfunction getNonModelFields(namespace, modelDefinition) {\n const result = [];\n Object.values(modelDefinition.fields).forEach(({ name, type }) => {\n if ((0, types_1.isNonModelFieldType)(type)) {\n const typeDefinition = namespace.nonModels[type.nonModel];\n const scalarFields = Object.values(getScalarFields(typeDefinition)).map(({ name: currentName }) => currentName);\n const nested = [];\n Object.values(typeDefinition.fields).forEach(field => {\n const { type: fieldType, name: fieldName } = field;\n if ((0, types_1.isNonModelFieldType)(fieldType)) {\n const nonModelTypeDefinition = namespace.nonModels[fieldType.nonModel];\n nested.push(`${fieldName} { ${generateSelectionSet(namespace, nonModelTypeDefinition)} }`);\n }\n });\n result.push(`${name} { ${scalarFields.join(' ')} ${nested.join(' ')} }`);\n }\n });\n return result;\n}\nfunction getAuthorizationRules(modelDefinition) {\n // Searching for owner authorization on attributes\n const authConfig = []\n .concat(modelDefinition.attributes || [])\n .find(attr => attr && attr.type === 'auth');\n const { properties: { rules = [] } = {} } = authConfig || {};\n const resultRules = [];\n // Multiple rules can be declared for allow: owner\n rules.forEach(rule => {\n // setting defaults for backwards compatibility with old cli\n const { identityClaim = 'cognito:username', ownerField = 'owner', operations = ['create', 'update', 'delete', 'read'], provider = 'userPools', groupClaim = 'cognito:groups', allow: authStrategy = 'iam', groups = [], groupsField = '', } = rule;\n const isReadAuthorized = operations.includes('read');\n const isOwnerAuth = authStrategy === 'owner';\n if (!isReadAuthorized && !isOwnerAuth) {\n return;\n }\n const authRule = {\n identityClaim,\n ownerField,\n provider,\n groupClaim,\n authStrategy,\n groups,\n groupsField,\n areSubscriptionsPublic: false,\n };\n if (isOwnerAuth) {\n // look for the subscription level override\n // only pay attention to the public level\n const modelConfig = []\n .concat(modelDefinition.attributes || [])\n .find(attr => attr && attr.type === 'model');\n // find the subscriptions level. ON is default\n const { properties: { subscriptions: { level = 'on' } = {} } = {} } = modelConfig || {};\n // treat subscriptions as public for owner auth with unprotected reads\n // when `read` is omitted from `operations`\n authRule.areSubscriptionsPublic =\n !operations.includes('read') || level === 'public';\n }\n if (isOwnerAuth) {\n // owner rules has least priority\n resultRules.push(authRule);\n return;\n }\n resultRules.unshift(authRule);\n });\n return resultRules;\n}\nexports.getAuthorizationRules = getAuthorizationRules;\nfunction buildSubscriptionGraphQLOperation(namespace, modelDefinition, transformerMutationType, isOwnerAuthorization, ownerField, filterArg = false) {\n const selectionSet = generateSelectionSet(namespace, modelDefinition);\n const { name: typeName } = modelDefinition;\n const opName = `on${transformerMutationType}${typeName}`;\n const docArgs = [];\n const opArgs = [];\n if (filterArg) {\n docArgs.push(`$filter: ModelSubscription${typeName}FilterInput`);\n opArgs.push('filter: $filter');\n }\n if (isOwnerAuthorization) {\n docArgs.push(`$${ownerField}: String!`);\n opArgs.push(`${ownerField}: $${ownerField}`);\n }\n const docStr = docArgs.length ? `(${docArgs.join(',')})` : '';\n const opStr = opArgs.length ? `(${opArgs.join(',')})` : '';\n return [\n transformerMutationType,\n opName,\n `subscription operation${docStr}{\n\t\t\t${opName}${opStr}{\n\t\t\t\t${selectionSet}\n\t\t\t}\n\t\t}`,\n ];\n}\nexports.buildSubscriptionGraphQLOperation = buildSubscriptionGraphQLOperation;\nfunction buildGraphQLOperation(namespace, modelDefinition, graphQLOpType) {\n let selectionSet = generateSelectionSet(namespace, modelDefinition);\n const { name: typeName, pluralName: pluralTypeName } = modelDefinition;\n let operation;\n let documentArgs;\n let operationArgs;\n let transformerMutationType;\n switch (graphQLOpType) {\n case 'LIST':\n operation = `sync${pluralTypeName}`;\n documentArgs = `($limit: Int, $nextToken: String, $lastSync: AWSTimestamp, $filter: Model${typeName}FilterInput)`;\n operationArgs =\n '(limit: $limit, nextToken: $nextToken, lastSync: $lastSync, filter: $filter)';\n selectionSet = `items {\n\t\t\t\t\t\t\t${selectionSet}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnextToken\n\t\t\t\t\t\tstartedAt`;\n break;\n case 'CREATE':\n operation = `create${typeName}`;\n documentArgs = `($input: Create${typeName}Input!)`;\n operationArgs = '(input: $input)';\n transformerMutationType = TransformerMutationType.CREATE;\n break;\n case 'UPDATE':\n operation = `update${typeName}`;\n documentArgs = `($input: Update${typeName}Input!, $condition: Model${typeName}ConditionInput)`;\n operationArgs = '(input: $input, condition: $condition)';\n transformerMutationType = TransformerMutationType.UPDATE;\n break;\n case 'DELETE':\n operation = `delete${typeName}`;\n documentArgs = `($input: Delete${typeName}Input!, $condition: Model${typeName}ConditionInput)`;\n operationArgs = '(input: $input, condition: $condition)';\n transformerMutationType = TransformerMutationType.DELETE;\n break;\n case 'GET':\n operation = `get${typeName}`;\n documentArgs = `($id: ID!)`;\n operationArgs = '(id: $id)';\n transformerMutationType = TransformerMutationType.GET;\n break;\n default:\n throw new Error(`Invalid graphQlOpType ${graphQLOpType}`);\n }\n return [\n [\n transformerMutationType,\n operation,\n `${GraphQLOperationType[graphQLOpType]} operation${documentArgs}{\n\t\t${operation}${operationArgs}{\n\t\t\t${selectionSet}\n\t\t}\n\t}`,\n ],\n ];\n}\nexports.buildGraphQLOperation = buildGraphQLOperation;\nfunction createMutationInstanceFromModelOperation(relationships, modelDefinition, opType, model, element, condition, MutationEventConstructor, modelInstanceCreator, id) {\n let operation;\n switch (opType) {\n case types_1.OpType.INSERT:\n operation = TransformerMutationType.CREATE;\n break;\n case types_1.OpType.UPDATE:\n operation = TransformerMutationType.UPDATE;\n break;\n case types_1.OpType.DELETE:\n operation = TransformerMutationType.DELETE;\n break;\n default:\n throw new Error(`Invalid opType ${opType}`);\n }\n // stringify nested objects of type AWSJSON\n // this allows us to return parsed JSON to users (see `castInstanceType()` in datastore.ts),\n // but still send the object correctly over the wire\n const replacer = (k, v) => {\n const isAWSJSON = k &&\n v !== null &&\n typeof v === 'object' &&\n modelDefinition.fields[k] &&\n modelDefinition.fields[k].type === 'AWSJSON';\n if (isAWSJSON) {\n return JSON.stringify(v);\n }\n return v;\n };\n const modelId = getIdentifierValue(modelDefinition, element);\n const optionalId = types_1.OpType.INSERT && id ? { id } : {};\n const mutationEvent = modelInstanceCreator(MutationEventConstructor, {\n ...optionalId,\n data: JSON.stringify(element, replacer),\n modelId,\n model: model.name,\n operation: operation,\n condition: JSON.stringify(condition),\n });\n return mutationEvent;\n}\nexports.createMutationInstanceFromModelOperation = createMutationInstanceFromModelOperation;\nfunction predicateToGraphQLCondition(predicate, modelDefinition) {\n const result = {};\n if (!predicate || !Array.isArray(predicate.predicates)) {\n return result;\n }\n // This is compatible with how the GQL Transform currently generates the Condition Input,\n // i.e. any PK and SK fields are omitted and can't be used as conditions.\n // However, I think this limits usability.\n // What if we want to delete all records where SK > some value\n // Or all records where PK = some value but SKs are different values\n // TODO: if the Transform gets updated we'll need to modify this logic to only omit\n // key fields from the predicate/condition when ALL of the keyFields are present and using `eq` operators\n const keyFields = (0, util_1.extractPrimaryKeyFieldNames)(modelDefinition);\n return predicateToGraphQLFilter(predicate, keyFields);\n}\nexports.predicateToGraphQLCondition = predicateToGraphQLCondition;\n/**\n * @param predicatesGroup - Predicate Group\n @returns GQL Filter Expression from Predicate Group\n\n @remarks Flattens redundant list predicates\n @example\n\n ```js\n { and:[{ and:[{ username: { eq: 'bob' }}] }] }\n ```\n Becomes\n ```js\n { and:[{ username: { eq: 'bob' }}] }\n ```\n */\nfunction predicateToGraphQLFilter(predicatesGroup, fieldsToOmit = [], root = true) {\n const result = {};\n if (!predicatesGroup || !Array.isArray(predicatesGroup.predicates)) {\n return result;\n }\n const { type, predicates } = predicatesGroup;\n const isList = type === 'and' || type === 'or';\n result[type] = isList ? [] : {};\n const children = [];\n predicates.forEach(predicate => {\n if ((0, types_1.isPredicateObj)(predicate)) {\n const { field, operator, operand } = predicate;\n if (fieldsToOmit.includes(field))\n return;\n const gqlField = {\n [field]: { [operator]: operand },\n };\n children.push(gqlField);\n return;\n }\n const child = predicateToGraphQLFilter(predicate, fieldsToOmit, false);\n if (Object.keys(child).length > 0) {\n children.push(child);\n }\n });\n // flatten redundant list predicates\n if (children.length === 1) {\n const [child] = children;\n if (\n // any nested list node\n (isList && !root) ||\n // root list node where the only child is also a list node\n (isList && root && ('and' in child || 'or' in child))) {\n delete result[type];\n Object.assign(result, child);\n return result;\n }\n }\n children.forEach(child => {\n if (isList) {\n result[type].push(child);\n }\n else {\n result[type] = child;\n }\n });\n if (isList) {\n if (result[type].length === 0)\n return {};\n }\n else {\n if (Object.keys(result[type]).length === 0)\n return {};\n }\n return result;\n}\nexports.predicateToGraphQLFilter = predicateToGraphQLFilter;\n/**\n *\n * @param group - selective sync predicate group\n * @returns set of distinct field names in the filter group\n */\nfunction filterFields(group) {\n const fields = new Set();\n if (!group || !Array.isArray(group.predicates))\n return fields;\n const { predicates } = group;\n const stack = [...predicates];\n while (stack.length > 0) {\n const current = stack.pop();\n if ((0, types_1.isPredicateObj)(current)) {\n fields.add(current.field);\n }\n else if ((0, types_1.isPredicateGroup)(current)) {\n stack.push(...current.predicates);\n }\n }\n return fields;\n}\nexports.filterFields = filterFields;\n/**\n *\n * @param modelDefinition\n * @returns set of field names used with dynamic auth modes configured for the provided model definition\n */\nfunction dynamicAuthFields(modelDefinition) {\n const rules = getAuthorizationRules(modelDefinition);\n const fields = new Set();\n for (const rule of rules) {\n if (rule.groupsField && !rule.groups.length) {\n // dynamic group rule will have no values in `rule.groups`\n fields.add(rule.groupsField);\n }\n else if (rule.ownerField) {\n fields.add(rule.ownerField);\n }\n }\n return fields;\n}\nexports.dynamicAuthFields = dynamicAuthFields;\n/**\n *\n * @param group - selective sync predicate group\n * @returns the total number of OR'd predicates in the filter group\n *\n * @example returns 2\n * ```js\n * { type: \"or\", predicates: [\n * { field: \"username\", operator: \"beginsWith\", operand: \"a\" },\n * { field: \"title\", operator: \"contains\", operand: \"abc\" },\n * ]}\n * ```\n */\nfunction countFilterCombinations(group) {\n if (!group || !Array.isArray(group.predicates))\n return 0;\n let count = 0;\n const stack = [group];\n while (stack.length > 0) {\n const current = stack.pop();\n if ((0, types_1.isPredicateGroup)(current)) {\n const { predicates, type } = current;\n // ignore length = 1; groups with 1 predicate will get flattened when converted to gqlFilter\n if (type === 'or' && predicates.length > 1) {\n count += predicates.length;\n }\n stack.push(...predicates);\n }\n }\n // if we didn't encounter any OR groups, default to 1\n return count || 1;\n}\nexports.countFilterCombinations = countFilterCombinations;\n/**\n *\n * @param group - selective sync predicate group\n * @returns name of repeated field | null\n *\n * @example returns \"username\"\n * ```js\n * { type: \"and\", predicates: [\n * \t\t{ field: \"username\", operator: \"beginsWith\", operand: \"a\" },\n * \t\t{ field: \"username\", operator: \"contains\", operand: \"abc\" },\n * ] }\n * ```\n */\nfunction repeatedFieldInGroup(group) {\n if (!group || !Array.isArray(group.predicates))\n return null;\n // convert to filter in order to flatten redundant groups\n const gqlFilter = predicateToGraphQLFilter(group);\n const stack = [gqlFilter];\n const hasGroupRepeatedFields = (fields) => {\n const seen = {};\n for (const f of fields) {\n const [fieldName] = Object.keys(f);\n if (seen[fieldName]) {\n return fieldName;\n }\n seen[fieldName] = true;\n }\n return null;\n };\n while (stack.length > 0) {\n const current = stack.pop();\n const [key] = Object.keys(current);\n const values = current[key];\n if (!Array.isArray(values)) {\n return null;\n }\n // field value will be single object\n const predicateObjects = values.filter(v => !Array.isArray(Object.values(v)[0]));\n // group value will be an array\n const predicateGroups = values.filter(v => Array.isArray(Object.values(v)[0]));\n if (key === 'and') {\n const repeatedField = hasGroupRepeatedFields(predicateObjects);\n if (repeatedField) {\n return repeatedField;\n }\n }\n stack.push(...predicateGroups);\n }\n return null;\n}\nexports.repeatedFieldInGroup = repeatedFieldInGroup;\nvar RTFError;\n(function (RTFError) {\n RTFError[RTFError[\"UnknownField\"] = 0] = \"UnknownField\";\n RTFError[RTFError[\"MaxAttributes\"] = 1] = \"MaxAttributes\";\n RTFError[RTFError[\"MaxCombinations\"] = 2] = \"MaxCombinations\";\n RTFError[RTFError[\"RepeatedFieldname\"] = 3] = \"RepeatedFieldname\";\n RTFError[RTFError[\"NotGroup\"] = 4] = \"NotGroup\";\n RTFError[RTFError[\"FieldNotInType\"] = 5] = \"FieldNotInType\";\n})(RTFError = exports.RTFError || (exports.RTFError = {}));\nfunction generateRTFRemediation(errorType, modelDefinition, predicatesGroup) {\n const selSyncFields = filterFields(predicatesGroup);\n const selSyncFieldStr = [...selSyncFields].join(', ');\n const dynamicAuthModeFields = dynamicAuthFields(modelDefinition);\n const dynamicAuthFieldsStr = [...dynamicAuthModeFields].join(', ');\n const filterCombinations = countFilterCombinations(predicatesGroup);\n const repeatedField = repeatedFieldInGroup(predicatesGroup);\n switch (errorType) {\n case RTFError.UnknownField:\n return (`Your API was generated with an older version of the CLI that doesn't support backend subscription filtering.` +\n 'To enable backend subscription filtering, upgrade your Amplify CLI to the latest version and push your app by running `amplify upgrade` followed by `amplify push`');\n case RTFError.MaxAttributes: {\n let message = `Your selective sync expression for ${modelDefinition.name} contains ${selSyncFields.size} different model fields: ${selSyncFieldStr}.\\n\\n`;\n if (dynamicAuthModeFields.size > 0) {\n message +=\n `Note: the number of fields you can use with selective sync is affected by @auth rules configured on the model.\\n\\n` +\n `Dynamic auth modes, such as owner auth and dynamic group auth each utilize 1 field.\\n` +\n `You currently have ${dynamicAuthModeFields.size} dynamic auth mode(s) configured on this model: ${dynamicAuthFieldsStr}.`;\n }\n return message;\n }\n case RTFError.MaxCombinations: {\n let message = `Your selective sync expression for ${modelDefinition.name} contains ${filterCombinations} field combinations (total number of predicates in an OR expression).\\n\\n`;\n if (dynamicAuthModeFields.size > 0) {\n message +=\n `Note: the number of fields you can use with selective sync is affected by @auth rules configured on the model.\\n\\n` +\n `Dynamic auth modes, such as owner auth and dynamic group auth factor in to the number of combinations you're using.\\n` +\n `You currently have ${dynamicAuthModeFields.size} dynamic auth mode(s) configured on this model: ${dynamicAuthFieldsStr}.`;\n }\n return message;\n }\n case RTFError.RepeatedFieldname:\n return `Your selective sync expression for ${modelDefinition.name} contains multiple entries for ${repeatedField} in the same AND group.`;\n case RTFError.NotGroup:\n return (`Your selective sync expression for ${modelDefinition.name} uses a \\`not\\` group. If you'd like to filter subscriptions in the backend, ` +\n `rewrite your expression using \\`ne\\` or \\`notContains\\` operators.`);\n case RTFError.FieldNotInType:\n // no remediation instructions. We'll surface the message directly\n return '';\n }\n}\nexports.generateRTFRemediation = generateRTFRemediation;\nfunction getUserGroupsFromToken(token, rule) {\n // validate token against groupClaim\n let userGroups = token[rule.groupClaim] || [];\n if (typeof userGroups === 'string') {\n let parsedGroups;\n try {\n parsedGroups = JSON.parse(userGroups);\n }\n catch (e) {\n parsedGroups = userGroups;\n }\n userGroups = [].concat(parsedGroups);\n }\n return userGroups;\n}\nexports.getUserGroupsFromToken = getUserGroupsFromToken;\nasync function getModelAuthModes({ authModeStrategy, defaultAuthMode, modelName, schema, }) {\n const operations = Object.values(types_1.ModelOperation);\n const modelAuthModes = {\n CREATE: [],\n READ: [],\n UPDATE: [],\n DELETE: [],\n };\n try {\n await Promise.all(operations.map(async (operation) => {\n const authModes = await authModeStrategy({\n schema,\n modelName,\n operation,\n });\n if (typeof authModes === 'string') {\n modelAuthModes[operation] = [authModes];\n }\n else if (Array.isArray(authModes) && authModes.length) {\n modelAuthModes[operation] = authModes;\n }\n else {\n // Use default auth mode if nothing is returned from authModeStrategy\n modelAuthModes[operation] = [defaultAuthMode];\n }\n }));\n }\n catch (error) {\n logger.debug(`Error getting auth modes for model: ${modelName}`, error);\n }\n return modelAuthModes;\n}\nexports.getModelAuthModes = getModelAuthModes;\nfunction getForbiddenError(error) {\n const forbiddenErrorCodes = [401, 403];\n let forbiddenError;\n if (error && error.errors) {\n forbiddenError = error.errors.find(err => forbiddenErrorCodes.includes(resolveServiceErrorStatusCode(err)));\n }\n else if (error && error.message) {\n forbiddenError = error;\n }\n if (forbiddenError) {\n return (forbiddenError.message ??\n `Request failed with status code ${resolveServiceErrorStatusCode(forbiddenError)}`);\n }\n return null;\n}\nexports.getForbiddenError = getForbiddenError;\nfunction resolveServiceErrorStatusCode(error) {\n if (error?.$metadata?.httpStatusCode) {\n return Number(error?.$metadata?.httpStatusCode);\n }\n else if (error?.originalError) {\n return resolveServiceErrorStatusCode(error?.originalError);\n }\n else {\n return null;\n }\n}\nexports.resolveServiceErrorStatusCode = resolveServiceErrorStatusCode;\nfunction getClientSideAuthError(error) {\n const clientSideAuthErrors = Object.values(api_1.GraphQLAuthError);\n const clientSideError = error &&\n error.message &&\n clientSideAuthErrors.find(clientError => error.message.includes(clientError));\n return clientSideError || null;\n}\nexports.getClientSideAuthError = getClientSideAuthError;\nasync function getTokenForCustomAuth(authMode, amplifyConfig = {}) {\n if (authMode === 'lambda') {\n const { authProviders: { functionAuthProvider } = { functionAuthProvider: null }, } = amplifyConfig;\n if (functionAuthProvider && typeof functionAuthProvider === 'function') {\n try {\n const { token } = await functionAuthProvider();\n return token;\n }\n catch (error) {\n throw new Error(`Error retrieving token from \\`functionAuthProvider\\`: ${error}`);\n }\n }\n else {\n // TODO: add docs link once available\n throw new Error('You must provide a `functionAuthProvider` function to `DataStore.configure` when using lambda');\n }\n }\n}\nexports.getTokenForCustomAuth = getTokenForCustomAuth;\n// Util that takes a modelDefinition and model and returns either the id value(s) or the custom primary key value(s)\nfunction getIdentifierValue(modelDefinition, model) {\n const pkFieldNames = (0, util_1.extractPrimaryKeyFieldNames)(modelDefinition);\n const idOrPk = pkFieldNames.map(f => model[f]).join(util_1.IDENTIFIER_KEY_SEPARATOR);\n return idOrPk;\n}\nexports.getIdentifierValue = getIdentifierValue;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../src/sync/utils.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RTFError = exports.TransformerMutationType = void 0;\nexports.getMetadataFields = getMetadataFields;\nexports.generateSelectionSet = generateSelectionSet;\nexports.getAuthorizationRules = getAuthorizationRules;\nexports.buildSubscriptionGraphQLOperation = buildSubscriptionGraphQLOperation;\nexports.buildGraphQLOperation = buildGraphQLOperation;\nexports.createMutationInstanceFromModelOperation = createMutationInstanceFromModelOperation;\nexports.predicateToGraphQLCondition = predicateToGraphQLCondition;\nexports.predicateToGraphQLFilter = predicateToGraphQLFilter;\nexports.filterFields = filterFields;\nexports.dynamicAuthFields = dynamicAuthFields;\nexports.countFilterCombinations = countFilterCombinations;\nexports.repeatedFieldInGroup = repeatedFieldInGroup;\nexports.generateRTFRemediation = generateRTFRemediation;\nexports.getUserGroupsFromToken = getUserGroupsFromToken;\nexports.getModelAuthModes = getModelAuthModes;\nexports.getForbiddenError = getForbiddenError;\nexports.resolveServiceErrorStatusCode = resolveServiceErrorStatusCode;\nexports.getClientSideAuthError = getClientSideAuthError;\nexports.getTokenForCustomAuth = getTokenForCustomAuth;\nexports.getIdentifierValue = getIdentifierValue;\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst api_1 = require(\"@aws-amplify/api\");\nconst core_1 = require(\"@aws-amplify/core\");\nconst types_1 = require(\"../types\");\nconst util_1 = require(\"../util\");\nconst logger = new core_1.ConsoleLogger('DataStore');\nconst GraphQLOperationType = {\n LIST: 'query',\n CREATE: 'mutation',\n UPDATE: 'mutation',\n DELETE: 'mutation',\n GET: 'query',\n};\nvar TransformerMutationType;\n(function (TransformerMutationType) {\n TransformerMutationType[\"CREATE\"] = \"Create\";\n TransformerMutationType[\"UPDATE\"] = \"Update\";\n TransformerMutationType[\"DELETE\"] = \"Delete\";\n TransformerMutationType[\"GET\"] = \"Get\";\n})(TransformerMutationType || (exports.TransformerMutationType = TransformerMutationType = {}));\nconst dummyMetadata = {\n _version: undefined,\n _lastChangedAt: undefined,\n _deleted: undefined,\n};\nconst metadataFields = Object.keys(dummyMetadata);\nfunction getMetadataFields() {\n return metadataFields;\n}\nfunction generateSelectionSet(namespace, modelDefinition) {\n const scalarFields = getScalarFields(modelDefinition);\n const nonModelFields = getNonModelFields(namespace, modelDefinition);\n const implicitOwnerField = getImplicitOwnerField(modelDefinition, scalarFields);\n let scalarAndMetadataFields = Object.values(scalarFields)\n .map(({ name }) => name)\n .concat(implicitOwnerField)\n .concat(nonModelFields);\n if ((0, types_1.isSchemaModel)(modelDefinition)) {\n scalarAndMetadataFields = scalarAndMetadataFields\n .concat(getMetadataFields())\n .concat(getConnectionFields(modelDefinition, namespace));\n }\n const result = scalarAndMetadataFields.join('\\n');\n return result;\n}\nfunction getImplicitOwnerField(modelDefinition, scalarFields) {\n const ownerFields = getOwnerFields(modelDefinition);\n if (!scalarFields.owner && ownerFields.includes('owner')) {\n return ['owner'];\n }\n return [];\n}\nfunction getOwnerFields(modelDefinition) {\n const ownerFields = [];\n if ((0, types_1.isSchemaModelWithAttributes)(modelDefinition)) {\n modelDefinition.attributes.forEach(attr => {\n if (attr.properties && attr.properties.rules) {\n const rule = attr.properties.rules.find(currentRule => currentRule.allow === 'owner');\n if (rule && rule.ownerField) {\n ownerFields.push(rule.ownerField);\n }\n }\n });\n }\n return ownerFields;\n}\nfunction getScalarFields(modelDefinition) {\n const { fields } = modelDefinition;\n const result = Object.values(fields)\n .filter(field => {\n if ((0, types_1.isGraphQLScalarType)(field.type) || (0, types_1.isEnumFieldType)(field.type)) {\n return true;\n }\n return false;\n })\n .reduce((acc, field) => {\n acc[field.name] = field;\n return acc;\n }, {});\n return result;\n}\n// Used for generating the selection set for queries and mutations\nfunction getConnectionFields(modelDefinition, namespace) {\n const result = [];\n Object.values(modelDefinition.fields)\n .filter(({ association }) => association && Object.keys(association).length)\n .forEach(({ name, association }) => {\n const { connectionType } = association || {};\n switch (connectionType) {\n case 'HAS_ONE':\n case 'HAS_MANY':\n // Intentionally blank\n break;\n case 'BELONGS_TO':\n if ((0, types_1.isTargetNameAssociation)(association)) {\n // New codegen (CPK)\n if (association.targetNames && association.targetNames.length > 0) {\n // Need to retrieve relations in order to get connected model keys\n const [relations] = (0, util_1.establishRelationAndKeys)(namespace);\n const connectedModelName = modelDefinition.fields[name].type.model;\n const byPkIndex = relations[connectedModelName].indexes.find(([currentName]) => currentName === 'byPk');\n const keyFields = byPkIndex && byPkIndex[1];\n const keyFieldSelectionSet = keyFields?.join(' ');\n // We rely on `_deleted` when we process the sync query (e.g. in batchSave in the adapters)\n result.push(`${name} { ${keyFieldSelectionSet} _deleted }`);\n }\n else {\n // backwards-compatability for schema generated prior to custom primary key support\n result.push(`${name} { id _deleted }`);\n }\n }\n break;\n default:\n throw new Error(`Invalid connection type ${connectionType}`);\n }\n });\n return result;\n}\nfunction getNonModelFields(namespace, modelDefinition) {\n const result = [];\n Object.values(modelDefinition.fields).forEach(({ name, type }) => {\n if ((0, types_1.isNonModelFieldType)(type)) {\n const typeDefinition = namespace.nonModels[type.nonModel];\n const scalarFields = Object.values(getScalarFields(typeDefinition)).map(({ name: currentName }) => currentName);\n const nested = [];\n Object.values(typeDefinition.fields).forEach(field => {\n const { type: fieldType, name: fieldName } = field;\n if ((0, types_1.isNonModelFieldType)(fieldType)) {\n const nonModelTypeDefinition = namespace.nonModels[fieldType.nonModel];\n nested.push(`${fieldName} { ${generateSelectionSet(namespace, nonModelTypeDefinition)} }`);\n }\n });\n result.push(`${name} { ${scalarFields.join(' ')} ${nested.join(' ')} }`);\n }\n });\n return result;\n}\nfunction getAuthorizationRules(modelDefinition) {\n // Searching for owner authorization on attributes\n const authConfig = []\n .concat(modelDefinition.attributes || [])\n .find(attr => attr && attr.type === 'auth');\n const { properties: { rules = [] } = {} } = authConfig || {};\n const resultRules = [];\n // Multiple rules can be declared for allow: owner\n rules.forEach(rule => {\n // setting defaults for backwards compatibility with old cli\n const { identityClaim = 'cognito:username', ownerField = 'owner', operations = ['create', 'update', 'delete', 'read'], provider = 'userPools', groupClaim = 'cognito:groups', allow: authStrategy = 'iam', groups = [], groupsField = '', } = rule;\n const isReadAuthorized = operations.includes('read');\n const isOwnerAuth = authStrategy === 'owner';\n if (!isReadAuthorized && !isOwnerAuth) {\n return;\n }\n const authRule = {\n identityClaim,\n ownerField,\n provider,\n groupClaim,\n authStrategy,\n groups,\n groupsField,\n areSubscriptionsPublic: false,\n };\n if (isOwnerAuth) {\n // look for the subscription level override\n // only pay attention to the public level\n const modelConfig = []\n .concat(modelDefinition.attributes || [])\n .find(attr => attr && attr.type === 'model');\n // find the subscriptions level. ON is default\n const { properties: { subscriptions: { level = 'on' } = {} } = {} } = modelConfig || {};\n // treat subscriptions as public for owner auth with unprotected reads\n // when `read` is omitted from `operations`\n authRule.areSubscriptionsPublic =\n !operations.includes('read') || level === 'public';\n }\n if (isOwnerAuth) {\n // owner rules has least priority\n resultRules.push(authRule);\n return;\n }\n resultRules.unshift(authRule);\n });\n return resultRules;\n}\nfunction buildSubscriptionGraphQLOperation(namespace, modelDefinition, transformerMutationType, isOwnerAuthorization, ownerField, filterArg = false) {\n const selectionSet = generateSelectionSet(namespace, modelDefinition);\n const { name: typeName } = modelDefinition;\n const opName = `on${transformerMutationType}${typeName}`;\n const docArgs = [];\n const opArgs = [];\n if (filterArg) {\n docArgs.push(`$filter: ModelSubscription${typeName}FilterInput`);\n opArgs.push('filter: $filter');\n }\n if (isOwnerAuthorization) {\n docArgs.push(`$${ownerField}: String!`);\n opArgs.push(`${ownerField}: $${ownerField}`);\n }\n const docStr = docArgs.length ? `(${docArgs.join(',')})` : '';\n const opStr = opArgs.length ? `(${opArgs.join(',')})` : '';\n return [\n transformerMutationType,\n opName,\n `subscription operation${docStr}{\n\t\t\t${opName}${opStr}{\n\t\t\t\t${selectionSet}\n\t\t\t}\n\t\t}`,\n ];\n}\nfunction buildGraphQLOperation(namespace, modelDefinition, graphQLOpType) {\n let selectionSet = generateSelectionSet(namespace, modelDefinition);\n const { name: typeName, pluralName: pluralTypeName } = modelDefinition;\n let operation;\n let documentArgs;\n let operationArgs;\n let transformerMutationType;\n switch (graphQLOpType) {\n case 'LIST':\n operation = `sync${pluralTypeName}`;\n documentArgs = `($limit: Int, $nextToken: String, $lastSync: AWSTimestamp, $filter: Model${typeName}FilterInput)`;\n operationArgs =\n '(limit: $limit, nextToken: $nextToken, lastSync: $lastSync, filter: $filter)';\n selectionSet = `items {\n\t\t\t\t\t\t\t${selectionSet}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnextToken\n\t\t\t\t\t\tstartedAt`;\n break;\n case 'CREATE':\n operation = `create${typeName}`;\n documentArgs = `($input: Create${typeName}Input!)`;\n operationArgs = '(input: $input)';\n transformerMutationType = TransformerMutationType.CREATE;\n break;\n case 'UPDATE':\n operation = `update${typeName}`;\n documentArgs = `($input: Update${typeName}Input!, $condition: Model${typeName}ConditionInput)`;\n operationArgs = '(input: $input, condition: $condition)';\n transformerMutationType = TransformerMutationType.UPDATE;\n break;\n case 'DELETE':\n operation = `delete${typeName}`;\n documentArgs = `($input: Delete${typeName}Input!, $condition: Model${typeName}ConditionInput)`;\n operationArgs = '(input: $input, condition: $condition)';\n transformerMutationType = TransformerMutationType.DELETE;\n break;\n case 'GET':\n operation = `get${typeName}`;\n documentArgs = `($id: ID!)`;\n operationArgs = '(id: $id)';\n transformerMutationType = TransformerMutationType.GET;\n break;\n default:\n throw new Error(`Invalid graphQlOpType ${graphQLOpType}`);\n }\n return [\n [\n transformerMutationType,\n operation,\n `${GraphQLOperationType[graphQLOpType]} operation${documentArgs}{\n\t\t${operation}${operationArgs}{\n\t\t\t${selectionSet}\n\t\t}\n\t}`,\n ],\n ];\n}\nfunction createMutationInstanceFromModelOperation(relationships, modelDefinition, opType, model, element, condition, MutationEventConstructor, modelInstanceCreator, id) {\n let operation;\n switch (opType) {\n case types_1.OpType.INSERT:\n operation = TransformerMutationType.CREATE;\n break;\n case types_1.OpType.UPDATE:\n operation = TransformerMutationType.UPDATE;\n break;\n case types_1.OpType.DELETE:\n operation = TransformerMutationType.DELETE;\n break;\n default:\n throw new Error(`Invalid opType ${opType}`);\n }\n // stringify nested objects of type AWSJSON\n // this allows us to return parsed JSON to users (see `castInstanceType()` in datastore.ts),\n // but still send the object correctly over the wire\n const replacer = (k, v) => {\n const isAWSJSON = k &&\n v !== null &&\n typeof v === 'object' &&\n modelDefinition.fields[k] &&\n modelDefinition.fields[k].type === 'AWSJSON';\n if (isAWSJSON) {\n return JSON.stringify(v);\n }\n return v;\n };\n const modelId = getIdentifierValue(modelDefinition, element);\n const optionalId = types_1.OpType.INSERT && id ? { id } : {};\n const mutationEvent = modelInstanceCreator(MutationEventConstructor, {\n ...optionalId,\n data: JSON.stringify(element, replacer),\n modelId,\n model: model.name,\n operation: operation,\n condition: JSON.stringify(condition),\n });\n return mutationEvent;\n}\nfunction predicateToGraphQLCondition(predicate, modelDefinition) {\n const result = {};\n if (!predicate || !Array.isArray(predicate.predicates)) {\n return result;\n }\n // This is compatible with how the GQL Transform currently generates the Condition Input,\n // i.e. any PK and SK fields are omitted and can't be used as conditions.\n // However, I think this limits usability.\n // What if we want to delete all records where SK > some value\n // Or all records where PK = some value but SKs are different values\n // TODO: if the Transform gets updated we'll need to modify this logic to only omit\n // key fields from the predicate/condition when ALL of the keyFields are present and using `eq` operators\n const keyFields = (0, util_1.extractPrimaryKeyFieldNames)(modelDefinition);\n return predicateToGraphQLFilter(predicate, keyFields);\n}\n/**\n * @param predicatesGroup - Predicate Group\n @returns GQL Filter Expression from Predicate Group\n\n @remarks Flattens redundant list predicates\n @example\n\n ```js\n { and:[{ and:[{ username: { eq: 'bob' }}] }] }\n ```\n Becomes\n ```js\n { and:[{ username: { eq: 'bob' }}] }\n ```\n */\nfunction predicateToGraphQLFilter(predicatesGroup, fieldsToOmit = [], root = true) {\n const result = {};\n if (!predicatesGroup || !Array.isArray(predicatesGroup.predicates)) {\n return result;\n }\n const { type, predicates } = predicatesGroup;\n const isList = type === 'and' || type === 'or';\n result[type] = isList ? [] : {};\n const children = [];\n predicates.forEach(predicate => {\n if ((0, types_1.isPredicateObj)(predicate)) {\n const { field, operator, operand } = predicate;\n if (fieldsToOmit.includes(field))\n return;\n const gqlField = {\n [field]: { [operator]: operand },\n };\n children.push(gqlField);\n return;\n }\n const child = predicateToGraphQLFilter(predicate, fieldsToOmit, false);\n if (Object.keys(child).length > 0) {\n children.push(child);\n }\n });\n // flatten redundant list predicates\n if (children.length === 1) {\n const [child] = children;\n if (\n // any nested list node\n (isList && !root) ||\n // root list node where the only child is also a list node\n (isList && root && ('and' in child || 'or' in child))) {\n delete result[type];\n Object.assign(result, child);\n return result;\n }\n }\n children.forEach(child => {\n if (isList) {\n result[type].push(child);\n }\n else {\n result[type] = child;\n }\n });\n if (isList) {\n if (result[type].length === 0)\n return {};\n }\n else {\n if (Object.keys(result[type]).length === 0)\n return {};\n }\n return result;\n}\n/**\n *\n * @param group - selective sync predicate group\n * @returns set of distinct field names in the filter group\n */\nfunction filterFields(group) {\n const fields = new Set();\n if (!group || !Array.isArray(group.predicates))\n return fields;\n const { predicates } = group;\n const stack = [...predicates];\n while (stack.length > 0) {\n const current = stack.pop();\n if ((0, types_1.isPredicateObj)(current)) {\n fields.add(current.field);\n }\n else if ((0, types_1.isPredicateGroup)(current)) {\n stack.push(...current.predicates);\n }\n }\n return fields;\n}\n/**\n *\n * @param modelDefinition\n * @returns set of field names used with dynamic auth modes configured for the provided model definition\n */\nfunction dynamicAuthFields(modelDefinition) {\n const rules = getAuthorizationRules(modelDefinition);\n const fields = new Set();\n for (const rule of rules) {\n if (rule.groupsField && !rule.groups.length) {\n // dynamic group rule will have no values in `rule.groups`\n fields.add(rule.groupsField);\n }\n else if (rule.ownerField) {\n fields.add(rule.ownerField);\n }\n }\n return fields;\n}\n/**\n *\n * @param group - selective sync predicate group\n * @returns the total number of OR'd predicates in the filter group\n *\n * @example returns 2\n * ```js\n * { type: \"or\", predicates: [\n * { field: \"username\", operator: \"beginsWith\", operand: \"a\" },\n * { field: \"title\", operator: \"contains\", operand: \"abc\" },\n * ]}\n * ```\n */\nfunction countFilterCombinations(group) {\n if (!group || !Array.isArray(group.predicates))\n return 0;\n let count = 0;\n const stack = [group];\n while (stack.length > 0) {\n const current = stack.pop();\n if ((0, types_1.isPredicateGroup)(current)) {\n const { predicates, type } = current;\n // ignore length = 1; groups with 1 predicate will get flattened when converted to gqlFilter\n if (type === 'or' && predicates.length > 1) {\n count += predicates.length;\n }\n stack.push(...predicates);\n }\n }\n // if we didn't encounter any OR groups, default to 1\n return count || 1;\n}\n/**\n *\n * @param group - selective sync predicate group\n * @returns name of repeated field | null\n *\n * @example returns \"username\"\n * ```js\n * { type: \"and\", predicates: [\n * \t\t{ field: \"username\", operator: \"beginsWith\", operand: \"a\" },\n * \t\t{ field: \"username\", operator: \"contains\", operand: \"abc\" },\n * ] }\n * ```\n */\nfunction repeatedFieldInGroup(group) {\n if (!group || !Array.isArray(group.predicates))\n return null;\n // convert to filter in order to flatten redundant groups\n const gqlFilter = predicateToGraphQLFilter(group);\n const stack = [gqlFilter];\n const hasGroupRepeatedFields = (fields) => {\n const seen = {};\n for (const f of fields) {\n const [fieldName] = Object.keys(f);\n if (seen[fieldName]) {\n return fieldName;\n }\n seen[fieldName] = true;\n }\n return null;\n };\n while (stack.length > 0) {\n const current = stack.pop();\n const [key] = Object.keys(current);\n const values = current[key];\n if (!Array.isArray(values)) {\n return null;\n }\n // field value will be single object\n const predicateObjects = values.filter(v => !Array.isArray(Object.values(v)[0]));\n // group value will be an array\n const predicateGroups = values.filter(v => Array.isArray(Object.values(v)[0]));\n if (key === 'and') {\n const repeatedField = hasGroupRepeatedFields(predicateObjects);\n if (repeatedField) {\n return repeatedField;\n }\n }\n stack.push(...predicateGroups);\n }\n return null;\n}\nvar RTFError;\n(function (RTFError) {\n RTFError[RTFError[\"UnknownField\"] = 0] = \"UnknownField\";\n RTFError[RTFError[\"MaxAttributes\"] = 1] = \"MaxAttributes\";\n RTFError[RTFError[\"MaxCombinations\"] = 2] = \"MaxCombinations\";\n RTFError[RTFError[\"RepeatedFieldname\"] = 3] = \"RepeatedFieldname\";\n RTFError[RTFError[\"NotGroup\"] = 4] = \"NotGroup\";\n RTFError[RTFError[\"FieldNotInType\"] = 5] = \"FieldNotInType\";\n})(RTFError || (exports.RTFError = RTFError = {}));\nfunction generateRTFRemediation(errorType, modelDefinition, predicatesGroup) {\n const selSyncFields = filterFields(predicatesGroup);\n const selSyncFieldStr = [...selSyncFields].join(', ');\n const dynamicAuthModeFields = dynamicAuthFields(modelDefinition);\n const dynamicAuthFieldsStr = [...dynamicAuthModeFields].join(', ');\n const filterCombinations = countFilterCombinations(predicatesGroup);\n const repeatedField = repeatedFieldInGroup(predicatesGroup);\n switch (errorType) {\n case RTFError.UnknownField:\n return (`Your API was generated with an older version of the CLI that doesn't support backend subscription filtering.` +\n 'To enable backend subscription filtering, upgrade your Amplify CLI to the latest version and push your app by running `amplify upgrade` followed by `amplify push`');\n case RTFError.MaxAttributes: {\n let message = `Your selective sync expression for ${modelDefinition.name} contains ${selSyncFields.size} different model fields: ${selSyncFieldStr}.\\n\\n`;\n if (dynamicAuthModeFields.size > 0) {\n message +=\n `Note: the number of fields you can use with selective sync is affected by @auth rules configured on the model.\\n\\n` +\n `Dynamic auth modes, such as owner auth and dynamic group auth each utilize 1 field.\\n` +\n `You currently have ${dynamicAuthModeFields.size} dynamic auth mode(s) configured on this model: ${dynamicAuthFieldsStr}.`;\n }\n return message;\n }\n case RTFError.MaxCombinations: {\n let message = `Your selective sync expression for ${modelDefinition.name} contains ${filterCombinations} field combinations (total number of predicates in an OR expression).\\n\\n`;\n if (dynamicAuthModeFields.size > 0) {\n message +=\n `Note: the number of fields you can use with selective sync is affected by @auth rules configured on the model.\\n\\n` +\n `Dynamic auth modes, such as owner auth and dynamic group auth factor in to the number of combinations you're using.\\n` +\n `You currently have ${dynamicAuthModeFields.size} dynamic auth mode(s) configured on this model: ${dynamicAuthFieldsStr}.`;\n }\n return message;\n }\n case RTFError.RepeatedFieldname:\n return `Your selective sync expression for ${modelDefinition.name} contains multiple entries for ${repeatedField} in the same AND group.`;\n case RTFError.NotGroup:\n return (`Your selective sync expression for ${modelDefinition.name} uses a \\`not\\` group. If you'd like to filter subscriptions in the backend, ` +\n `rewrite your expression using \\`ne\\` or \\`notContains\\` operators.`);\n case RTFError.FieldNotInType:\n // no remediation instructions. We'll surface the message directly\n return '';\n }\n}\nfunction getUserGroupsFromToken(token, rule) {\n // validate token against groupClaim\n let userGroups = token[rule.groupClaim] || [];\n if (typeof userGroups === 'string') {\n let parsedGroups;\n try {\n parsedGroups = JSON.parse(userGroups);\n }\n catch (e) {\n parsedGroups = userGroups;\n }\n userGroups = [].concat(parsedGroups);\n }\n return userGroups;\n}\nasync function getModelAuthModes({ authModeStrategy, defaultAuthMode, modelName, schema, }) {\n const operations = Object.values(types_1.ModelOperation);\n const modelAuthModes = {\n CREATE: [],\n READ: [],\n UPDATE: [],\n DELETE: [],\n };\n try {\n await Promise.all(operations.map(async (operation) => {\n const authModes = await authModeStrategy({\n schema,\n modelName,\n operation,\n });\n if (typeof authModes === 'string') {\n modelAuthModes[operation] = [authModes];\n }\n else if (Array.isArray(authModes) && authModes.length) {\n modelAuthModes[operation] = authModes;\n }\n else {\n // Use default auth mode if nothing is returned from authModeStrategy\n modelAuthModes[operation] = [defaultAuthMode];\n }\n }));\n }\n catch (error) {\n logger.debug(`Error getting auth modes for model: ${modelName}`, error);\n }\n return modelAuthModes;\n}\nfunction getForbiddenError(error) {\n const forbiddenErrorCodes = [401, 403];\n let forbiddenError;\n if (error && error.errors) {\n forbiddenError = error.errors.find(err => forbiddenErrorCodes.includes(resolveServiceErrorStatusCode(err)));\n }\n else if (error && error.message) {\n forbiddenError = error;\n }\n if (forbiddenError) {\n return (forbiddenError.message ??\n `Request failed with status code ${resolveServiceErrorStatusCode(forbiddenError)}`);\n }\n return null;\n}\nfunction resolveServiceErrorStatusCode(error) {\n if (error?.$metadata?.httpStatusCode) {\n return Number(error?.$metadata?.httpStatusCode);\n }\n else if (error?.originalError) {\n return resolveServiceErrorStatusCode(error?.originalError);\n }\n else {\n return null;\n }\n}\nfunction getClientSideAuthError(error) {\n const clientSideAuthErrors = Object.values(api_1.GraphQLAuthError);\n const clientSideError = error &&\n error.message &&\n clientSideAuthErrors.find(clientError => error.message.includes(clientError));\n return clientSideError || null;\n}\nasync function getTokenForCustomAuth(authMode, amplifyConfig = {}) {\n if (authMode === 'lambda') {\n const { authProviders: { functionAuthProvider } = { functionAuthProvider: null }, } = amplifyConfig;\n if (functionAuthProvider && typeof functionAuthProvider === 'function') {\n try {\n const { token } = await functionAuthProvider();\n return token;\n }\n catch (error) {\n throw new Error(`Error retrieving token from \\`functionAuthProvider\\`: ${error}`);\n }\n }\n else {\n // TODO: add docs link once available\n throw new Error('You must provide a `functionAuthProvider` function to `DataStore.configure` when using lambda');\n }\n }\n}\n// Util that takes a modelDefinition and model and returns either the id value(s) or the custom primary key value(s)\nfunction getIdentifierValue(modelDefinition, model) {\n const pkFieldNames = (0, util_1.extractPrimaryKeyFieldNames)(modelDefinition);\n const idOrPk = pkFieldNames.map(f => model[f]).join(util_1.IDENTIFIER_KEY_SEPARATOR);\n return idOrPk;\n}\n"],"names":[],"mappings":"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"}
|