@aws-amplify/datastore 5.0.32 → 5.0.33-s-auth.30d0cd2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/dist/cjs/authModeStrategies/multiAuthStrategy.js +1 -1
  2. package/dist/cjs/authModeStrategies/multiAuthStrategy.js.map +1 -1
  3. package/dist/cjs/datastore/datastore.js +46 -41
  4. package/dist/cjs/datastore/datastore.js.map +1 -1
  5. package/dist/cjs/index.js +3 -1
  6. package/dist/cjs/index.js.map +1 -1
  7. package/dist/cjs/predicates/index.js +1 -0
  8. package/dist/cjs/predicates/index.js.map +1 -1
  9. package/dist/cjs/predicates/next.js +13 -12
  10. package/dist/cjs/predicates/next.js.map +1 -1
  11. package/dist/cjs/predicates/sort.js +2 -2
  12. package/dist/cjs/predicates/sort.js.map +1 -1
  13. package/dist/cjs/storage/adapter/AsyncStorageAdapter.js +21 -18
  14. package/dist/cjs/storage/adapter/AsyncStorageAdapter.js.map +1 -1
  15. package/dist/cjs/storage/adapter/AsyncStorageDatabase.js +10 -9
  16. package/dist/cjs/storage/adapter/AsyncStorageDatabase.js.map +1 -1
  17. package/dist/cjs/storage/adapter/InMemoryStore.js +4 -1
  18. package/dist/cjs/storage/adapter/InMemoryStore.js.map +1 -1
  19. package/dist/cjs/storage/adapter/IndexedDBAdapter.js +21 -23
  20. package/dist/cjs/storage/adapter/IndexedDBAdapter.js.map +1 -1
  21. package/dist/cjs/storage/adapter/StorageAdapterBase.js +7 -7
  22. package/dist/cjs/storage/adapter/StorageAdapterBase.js.map +1 -1
  23. package/dist/cjs/storage/adapter/getDefaultAdapter/index.js +4 -1
  24. package/dist/cjs/storage/adapter/getDefaultAdapter/index.js.map +1 -1
  25. package/dist/cjs/storage/adapter/getDefaultAdapter/index.native.js +1 -0
  26. package/dist/cjs/storage/adapter/getDefaultAdapter/index.native.js.map +1 -1
  27. package/dist/cjs/storage/relationship.js +1 -0
  28. package/dist/cjs/storage/relationship.js.map +1 -1
  29. package/dist/cjs/storage/storage.js +14 -14
  30. package/dist/cjs/storage/storage.js.map +1 -1
  31. package/dist/cjs/sync/datastoreConnectivity.js +0 -3
  32. package/dist/cjs/sync/datastoreConnectivity.js.map +1 -1
  33. package/dist/cjs/sync/index.js +47 -43
  34. package/dist/cjs/sync/index.js.map +1 -1
  35. package/dist/cjs/sync/merger.js +1 -1
  36. package/dist/cjs/sync/merger.js.map +1 -1
  37. package/dist/cjs/sync/outbox.js +19 -17
  38. package/dist/cjs/sync/outbox.js.map +1 -1
  39. package/dist/cjs/sync/processors/errorMaps.js.map +1 -1
  40. package/dist/cjs/sync/processors/mutation.js +31 -28
  41. package/dist/cjs/sync/processors/mutation.js.map +1 -1
  42. package/dist/cjs/sync/processors/subscription.js +21 -12
  43. package/dist/cjs/sync/processors/subscription.js.map +1 -1
  44. package/dist/cjs/sync/processors/sync.js +25 -21
  45. package/dist/cjs/sync/processors/sync.js.map +1 -1
  46. package/dist/cjs/sync/utils.js +20 -21
  47. package/dist/cjs/sync/utils.js.map +1 -1
  48. package/dist/cjs/types.js +1 -0
  49. package/dist/cjs/types.js.map +1 -1
  50. package/dist/cjs/util.js +46 -25
  51. package/dist/cjs/util.js.map +1 -1
  52. package/dist/esm/authModeStrategies/multiAuthStrategy.d.ts +1 -1
  53. package/dist/esm/authModeStrategies/multiAuthStrategy.mjs +1 -1
  54. package/dist/esm/authModeStrategies/multiAuthStrategy.mjs.map +1 -1
  55. package/dist/esm/datastore/datastore.d.ts +4 -6
  56. package/dist/esm/datastore/datastore.mjs +42 -34
  57. package/dist/esm/datastore/datastore.mjs.map +1 -1
  58. package/dist/esm/index.d.ts +1 -1
  59. package/dist/esm/index.mjs +2 -2
  60. package/dist/esm/index.mjs.map +1 -1
  61. package/dist/esm/predicates/index.mjs +1 -0
  62. package/dist/esm/predicates/index.mjs.map +1 -1
  63. package/dist/esm/predicates/next.d.ts +7 -7
  64. package/dist/esm/predicates/next.mjs +13 -12
  65. package/dist/esm/predicates/next.mjs.map +1 -1
  66. package/dist/esm/predicates/sort.d.ts +1 -1
  67. package/dist/esm/predicates/sort.mjs +2 -2
  68. package/dist/esm/predicates/sort.mjs.map +1 -1
  69. package/dist/esm/storage/adapter/AsyncStorageAdapter.d.ts +1 -1
  70. package/dist/esm/storage/adapter/AsyncStorageAdapter.mjs +21 -18
  71. package/dist/esm/storage/adapter/AsyncStorageAdapter.mjs.map +1 -1
  72. package/dist/esm/storage/adapter/AsyncStorageDatabase.mjs +10 -9
  73. package/dist/esm/storage/adapter/AsyncStorageDatabase.mjs.map +1 -1
  74. package/dist/esm/storage/adapter/InMemoryStore.mjs +4 -1
  75. package/dist/esm/storage/adapter/InMemoryStore.mjs.map +1 -1
  76. package/dist/esm/storage/adapter/IndexedDBAdapter.mjs +21 -23
  77. package/dist/esm/storage/adapter/IndexedDBAdapter.mjs.map +1 -1
  78. package/dist/esm/storage/adapter/StorageAdapterBase.d.ts +2 -2
  79. package/dist/esm/storage/adapter/StorageAdapterBase.mjs +7 -7
  80. package/dist/esm/storage/adapter/StorageAdapterBase.mjs.map +1 -1
  81. package/dist/esm/storage/adapter/getDefaultAdapter/index.mjs +3 -1
  82. package/dist/esm/storage/adapter/getDefaultAdapter/index.mjs.map +1 -1
  83. package/dist/esm/storage/adapter/getDefaultAdapter/index.native.mjs +1 -0
  84. package/dist/esm/storage/adapter/getDefaultAdapter/index.native.mjs.map +1 -1
  85. package/dist/esm/storage/adapter/index.d.ts +1 -1
  86. package/dist/esm/storage/relationship.mjs +1 -0
  87. package/dist/esm/storage/relationship.mjs.map +1 -1
  88. package/dist/esm/storage/storage.d.ts +11 -11
  89. package/dist/esm/storage/storage.mjs +10 -10
  90. package/dist/esm/storage/storage.mjs.map +1 -1
  91. package/dist/esm/sync/datastoreConnectivity.d.ts +2 -2
  92. package/dist/esm/sync/datastoreConnectivity.mjs +0 -3
  93. package/dist/esm/sync/datastoreConnectivity.mjs.map +1 -1
  94. package/dist/esm/sync/index.d.ts +3 -3
  95. package/dist/esm/sync/index.mjs +47 -43
  96. package/dist/esm/sync/index.mjs.map +1 -1
  97. package/dist/esm/sync/merger.d.ts +1 -1
  98. package/dist/esm/sync/merger.mjs +1 -1
  99. package/dist/esm/sync/merger.mjs.map +1 -1
  100. package/dist/esm/sync/outbox.d.ts +4 -4
  101. package/dist/esm/sync/outbox.mjs +19 -17
  102. package/dist/esm/sync/outbox.mjs.map +1 -1
  103. package/dist/esm/sync/processors/errorMaps.mjs.map +1 -1
  104. package/dist/esm/sync/processors/mutation.d.ts +5 -5
  105. package/dist/esm/sync/processors/mutation.mjs +31 -28
  106. package/dist/esm/sync/processors/mutation.mjs.map +1 -1
  107. package/dist/esm/sync/processors/subscription.d.ts +1 -1
  108. package/dist/esm/sync/processors/subscription.mjs +21 -12
  109. package/dist/esm/sync/processors/subscription.mjs.map +1 -1
  110. package/dist/esm/sync/processors/sync.d.ts +3 -3
  111. package/dist/esm/sync/processors/sync.mjs +13 -9
  112. package/dist/esm/sync/processors/sync.mjs.map +1 -1
  113. package/dist/esm/sync/utils.d.ts +11 -13
  114. package/dist/esm/sync/utils.mjs +20 -21
  115. package/dist/esm/sync/utils.mjs.map +1 -1
  116. package/dist/esm/types.d.ts +121 -131
  117. package/dist/esm/types.mjs +3 -2
  118. package/dist/esm/types.mjs.map +1 -1
  119. package/dist/esm/util.d.ts +5 -5
  120. package/dist/esm/util.mjs +46 -25
  121. package/dist/esm/util.mjs.map +1 -1
  122. package/package.json +74 -73
  123. package/src/authModeStrategies/multiAuthStrategy.ts +8 -4
  124. package/src/datastore/datastore.ts +145 -123
  125. package/src/index.ts +10 -8
  126. package/src/predicates/index.ts +10 -2
  127. package/src/predicates/next.ts +39 -28
  128. package/src/predicates/sort.ts +23 -26
  129. package/src/storage/adapter/AsyncStorageAdapter.ts +43 -25
  130. package/src/storage/adapter/AsyncStorageDatabase.ts +18 -10
  131. package/src/storage/adapter/InMemoryStore.ts +5 -1
  132. package/src/storage/adapter/IndexedDBAdapter.ts +50 -37
  133. package/src/storage/adapter/StorageAdapterBase.ts +24 -18
  134. package/src/storage/adapter/getDefaultAdapter/index.native.ts +1 -0
  135. package/src/storage/adapter/getDefaultAdapter/index.ts +4 -1
  136. package/src/storage/adapter/index.ts +2 -2
  137. package/src/storage/relationship.ts +5 -1
  138. package/src/storage/storage.ts +38 -30
  139. package/src/sync/datastoreConnectivity.ts +4 -6
  140. package/src/sync/index.ts +228 -230
  141. package/src/sync/merger.ts +4 -3
  142. package/src/sync/outbox.ts +26 -24
  143. package/src/sync/processors/errorMaps.ts +5 -0
  144. package/src/sync/processors/mutation.ts +80 -72
  145. package/src/sync/processors/subscription.ts +69 -53
  146. package/src/sync/processors/sync.ts +49 -37
  147. package/src/sync/utils.ts +60 -41
  148. package/src/types.ts +165 -165
  149. package/src/util.ts +89 -53
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","sources":["../../../src/sync/utils.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { GraphQLAuthError } from '@aws-amplify/api';\nimport { isEnumFieldType, isGraphQLScalarType, isPredicateObj, isSchemaModel, isSchemaModelWithAttributes, isTargetNameAssociation, isNonModelFieldType, OpType, ModelOperation, isPredicateGroup, } from '../types';\nimport { extractPrimaryKeyFieldNames, establishRelationAndKeys, IDENTIFIER_KEY_SEPARATOR, } from '../util';\nimport { ConsoleLogger } from '@aws-amplify/core';\nconst logger = new ConsoleLogger('DataStore');\nvar GraphQLOperationType;\n(function (GraphQLOperationType) {\n GraphQLOperationType[\"LIST\"] = \"query\";\n GraphQLOperationType[\"CREATE\"] = \"mutation\";\n GraphQLOperationType[\"UPDATE\"] = \"mutation\";\n GraphQLOperationType[\"DELETE\"] = \"mutation\";\n GraphQLOperationType[\"GET\"] = \"query\";\n})(GraphQLOperationType || (GraphQLOperationType = {}));\nexport var TransformerMutationType;\n(function (TransformerMutationType) {\n TransformerMutationType[\"CREATE\"] = \"Create\";\n TransformerMutationType[\"UPDATE\"] = \"Update\";\n TransformerMutationType[\"DELETE\"] = \"Delete\";\n TransformerMutationType[\"GET\"] = \"Get\";\n})(TransformerMutationType || (TransformerMutationType = {}));\nconst dummyMetadata = {\n _version: undefined,\n _lastChangedAt: undefined,\n _deleted: undefined,\n};\nconst metadataFields = (Object.keys(dummyMetadata));\nexport function getMetadataFields() {\n return metadataFields;\n}\nexport function 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 (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 (isSchemaModelWithAttributes(modelDefinition)) {\n modelDefinition.attributes.forEach(attr => {\n if (attr.properties && attr.properties.rules) {\n const rule = attr.properties.rules.find(rule => rule.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 (isGraphQLScalarType(field.type) || 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 (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] = establishRelationAndKeys(namespace);\n const connectedModelName = modelDefinition.fields[name].type['model'];\n const byPkIndex = relations[connectedModelName].indexes.find(([name]) => name === '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 (isNonModelFieldType(type)) {\n const typeDefinition = namespace.nonModels[type.nonModel];\n const scalarFields = Object.values(getScalarFields(typeDefinition)).map(({ name }) => name);\n const nested = [];\n Object.values(typeDefinition.fields).forEach(field => {\n const { type, name } = field;\n if (isNonModelFieldType(type)) {\n const typeDefinition = namespace.nonModels[type.nonModel];\n nested.push(`${name} { ${generateSelectionSet(namespace, typeDefinition)} }`);\n }\n });\n result.push(`${name} { ${scalarFields.join(' ')} ${nested.join(' ')} }`);\n }\n });\n return result;\n}\nexport function 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}\nexport function 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}\nexport function 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}\nexport function createMutationInstanceFromModelOperation(relationships, modelDefinition, opType, model, element, condition, MutationEventConstructor, modelInstanceCreator, id) {\n let operation;\n switch (opType) {\n case OpType.INSERT:\n operation = TransformerMutationType.CREATE;\n break;\n case OpType.UPDATE:\n operation = TransformerMutationType.UPDATE;\n break;\n case 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 = 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}\nexport function 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 = 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 */\nexport function 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 (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 */\nexport function 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 (isPredicateObj(current)) {\n fields.add(current.field);\n }\n else if (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 */\nexport function 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 */\nexport function 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 (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 */\nexport function 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}\nexport var 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 || (RTFError = {}));\nexport function 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}\nexport function 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}\nexport async function getModelAuthModes({ authModeStrategy, defaultAuthMode, modelName, schema, }) {\n const operations = Object.values(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}\nexport function 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}\nexport function 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}\nexport function getClientSideAuthError(error) {\n const clientSideAuthErrors = Object.values(GraphQLAuthError);\n const clientSideError = error &&\n error.message &&\n clientSideAuthErrors.find(clientError => error.message.includes(clientError));\n return clientSideError || null;\n}\nexport async 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)\nexport function getIdentifierValue(modelDefinition, model) {\n const pkFieldNames = extractPrimaryKeyFieldNames(modelDefinition);\n const idOrPk = pkFieldNames.map(f => model[f]).join(IDENTIFIER_KEY_SEPARATOR);\n return idOrPk;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.mjs","sources":["../../../src/sync/utils.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { GraphQLAuthError } from '@aws-amplify/api';\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { ModelOperation, OpType, isEnumFieldType, isGraphQLScalarType, isNonModelFieldType, isPredicateGroup, isPredicateObj, isSchemaModel, isSchemaModelWithAttributes, isTargetNameAssociation, } from '../types';\nimport { IDENTIFIER_KEY_SEPARATOR, establishRelationAndKeys, extractPrimaryKeyFieldNames, } from '../util';\nconst logger = new ConsoleLogger('DataStore');\nconst GraphQLOperationType = {\n LIST: 'query',\n CREATE: 'mutation',\n UPDATE: 'mutation',\n DELETE: 'mutation',\n GET: 'query',\n};\nexport var TransformerMutationType;\n(function (TransformerMutationType) {\n TransformerMutationType[\"CREATE\"] = \"Create\";\n TransformerMutationType[\"UPDATE\"] = \"Update\";\n TransformerMutationType[\"DELETE\"] = \"Delete\";\n TransformerMutationType[\"GET\"] = \"Get\";\n})(TransformerMutationType || (TransformerMutationType = {}));\nconst dummyMetadata = {\n _version: undefined,\n _lastChangedAt: undefined,\n _deleted: undefined,\n};\nconst metadataFields = Object.keys(dummyMetadata);\nexport function getMetadataFields() {\n return metadataFields;\n}\nexport function 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 (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 (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 (isGraphQLScalarType(field.type) || 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 (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] = 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 (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 (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}\nexport function 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}\nexport function 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}\nexport function 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}\nexport function createMutationInstanceFromModelOperation(relationships, modelDefinition, opType, model, element, condition, MutationEventConstructor, modelInstanceCreator, id) {\n let operation;\n switch (opType) {\n case OpType.INSERT:\n operation = TransformerMutationType.CREATE;\n break;\n case OpType.UPDATE:\n operation = TransformerMutationType.UPDATE;\n break;\n case 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 = 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}\nexport function 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 = 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 */\nexport function 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 (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 */\nexport function 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 (isPredicateObj(current)) {\n fields.add(current.field);\n }\n else if (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 */\nexport function 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 */\nexport function 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 (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 */\nexport function 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}\nexport var 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 || (RTFError = {}));\nexport function 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}\nexport function 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}\nexport async function getModelAuthModes({ authModeStrategy, defaultAuthMode, modelName, schema, }) {\n const operations = Object.values(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}\nexport function 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}\nexport function 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}\nexport function getClientSideAuthError(error) {\n const clientSideAuthErrors = Object.values(GraphQLAuthError);\n const clientSideError = error &&\n error.message &&\n clientSideAuthErrors.find(clientError => error.message.includes(clientError));\n return clientSideError || null;\n}\nexport async 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)\nexport function getIdentifierValue(modelDefinition, model) {\n const pkFieldNames = extractPrimaryKeyFieldNames(modelDefinition);\n const idOrPk = pkFieldNames.map(f => model[f]).join(IDENTIFIER_KEY_SEPARATOR);\n return idOrPk;\n}\n"],"names":[],"mappings":"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"}