@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.
- package/dist/cjs/authModeStrategies/multiAuthStrategy.js +1 -1
- package/dist/cjs/authModeStrategies/multiAuthStrategy.js.map +1 -1
- package/dist/cjs/datastore/datastore.js +46 -41
- package/dist/cjs/datastore/datastore.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/predicates/index.js +1 -0
- package/dist/cjs/predicates/index.js.map +1 -1
- package/dist/cjs/predicates/next.js +13 -12
- package/dist/cjs/predicates/next.js.map +1 -1
- package/dist/cjs/predicates/sort.js +2 -2
- package/dist/cjs/predicates/sort.js.map +1 -1
- package/dist/cjs/storage/adapter/AsyncStorageAdapter.js +21 -18
- package/dist/cjs/storage/adapter/AsyncStorageAdapter.js.map +1 -1
- package/dist/cjs/storage/adapter/AsyncStorageDatabase.js +10 -9
- package/dist/cjs/storage/adapter/AsyncStorageDatabase.js.map +1 -1
- package/dist/cjs/storage/adapter/InMemoryStore.js +4 -1
- package/dist/cjs/storage/adapter/InMemoryStore.js.map +1 -1
- package/dist/cjs/storage/adapter/IndexedDBAdapter.js +21 -23
- package/dist/cjs/storage/adapter/IndexedDBAdapter.js.map +1 -1
- package/dist/cjs/storage/adapter/StorageAdapterBase.js +7 -7
- package/dist/cjs/storage/adapter/StorageAdapterBase.js.map +1 -1
- package/dist/cjs/storage/adapter/getDefaultAdapter/index.js +4 -1
- package/dist/cjs/storage/adapter/getDefaultAdapter/index.js.map +1 -1
- package/dist/cjs/storage/adapter/getDefaultAdapter/index.native.js +1 -0
- package/dist/cjs/storage/adapter/getDefaultAdapter/index.native.js.map +1 -1
- package/dist/cjs/storage/relationship.js +1 -0
- package/dist/cjs/storage/relationship.js.map +1 -1
- package/dist/cjs/storage/storage.js +14 -14
- package/dist/cjs/storage/storage.js.map +1 -1
- package/dist/cjs/sync/datastoreConnectivity.js +0 -3
- package/dist/cjs/sync/datastoreConnectivity.js.map +1 -1
- package/dist/cjs/sync/index.js +47 -43
- package/dist/cjs/sync/index.js.map +1 -1
- package/dist/cjs/sync/merger.js +1 -1
- package/dist/cjs/sync/merger.js.map +1 -1
- package/dist/cjs/sync/outbox.js +19 -17
- package/dist/cjs/sync/outbox.js.map +1 -1
- package/dist/cjs/sync/processors/errorMaps.js.map +1 -1
- package/dist/cjs/sync/processors/mutation.js +31 -28
- package/dist/cjs/sync/processors/mutation.js.map +1 -1
- package/dist/cjs/sync/processors/subscription.js +21 -12
- package/dist/cjs/sync/processors/subscription.js.map +1 -1
- package/dist/cjs/sync/processors/sync.js +25 -21
- package/dist/cjs/sync/processors/sync.js.map +1 -1
- package/dist/cjs/sync/utils.js +20 -21
- package/dist/cjs/sync/utils.js.map +1 -1
- package/dist/cjs/types.js +1 -0
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/util.js +46 -25
- package/dist/cjs/util.js.map +1 -1
- package/dist/esm/authModeStrategies/multiAuthStrategy.d.ts +1 -1
- package/dist/esm/authModeStrategies/multiAuthStrategy.mjs +1 -1
- package/dist/esm/authModeStrategies/multiAuthStrategy.mjs.map +1 -1
- package/dist/esm/datastore/datastore.d.ts +4 -6
- package/dist/esm/datastore/datastore.mjs +42 -34
- package/dist/esm/datastore/datastore.mjs.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/predicates/index.mjs +1 -0
- package/dist/esm/predicates/index.mjs.map +1 -1
- package/dist/esm/predicates/next.d.ts +7 -7
- package/dist/esm/predicates/next.mjs +13 -12
- package/dist/esm/predicates/next.mjs.map +1 -1
- package/dist/esm/predicates/sort.d.ts +1 -1
- package/dist/esm/predicates/sort.mjs +2 -2
- package/dist/esm/predicates/sort.mjs.map +1 -1
- package/dist/esm/storage/adapter/AsyncStorageAdapter.d.ts +1 -1
- package/dist/esm/storage/adapter/AsyncStorageAdapter.mjs +21 -18
- package/dist/esm/storage/adapter/AsyncStorageAdapter.mjs.map +1 -1
- package/dist/esm/storage/adapter/AsyncStorageDatabase.mjs +10 -9
- package/dist/esm/storage/adapter/AsyncStorageDatabase.mjs.map +1 -1
- package/dist/esm/storage/adapter/InMemoryStore.mjs +4 -1
- package/dist/esm/storage/adapter/InMemoryStore.mjs.map +1 -1
- package/dist/esm/storage/adapter/IndexedDBAdapter.mjs +21 -23
- package/dist/esm/storage/adapter/IndexedDBAdapter.mjs.map +1 -1
- package/dist/esm/storage/adapter/StorageAdapterBase.d.ts +2 -2
- package/dist/esm/storage/adapter/StorageAdapterBase.mjs +7 -7
- package/dist/esm/storage/adapter/StorageAdapterBase.mjs.map +1 -1
- package/dist/esm/storage/adapter/getDefaultAdapter/index.mjs +3 -1
- package/dist/esm/storage/adapter/getDefaultAdapter/index.mjs.map +1 -1
- package/dist/esm/storage/adapter/getDefaultAdapter/index.native.mjs +1 -0
- package/dist/esm/storage/adapter/getDefaultAdapter/index.native.mjs.map +1 -1
- package/dist/esm/storage/adapter/index.d.ts +1 -1
- package/dist/esm/storage/relationship.mjs +1 -0
- package/dist/esm/storage/relationship.mjs.map +1 -1
- package/dist/esm/storage/storage.d.ts +11 -11
- package/dist/esm/storage/storage.mjs +10 -10
- package/dist/esm/storage/storage.mjs.map +1 -1
- package/dist/esm/sync/datastoreConnectivity.d.ts +2 -2
- package/dist/esm/sync/datastoreConnectivity.mjs +0 -3
- package/dist/esm/sync/datastoreConnectivity.mjs.map +1 -1
- package/dist/esm/sync/index.d.ts +3 -3
- package/dist/esm/sync/index.mjs +47 -43
- package/dist/esm/sync/index.mjs.map +1 -1
- package/dist/esm/sync/merger.d.ts +1 -1
- package/dist/esm/sync/merger.mjs +1 -1
- package/dist/esm/sync/merger.mjs.map +1 -1
- package/dist/esm/sync/outbox.d.ts +4 -4
- package/dist/esm/sync/outbox.mjs +19 -17
- package/dist/esm/sync/outbox.mjs.map +1 -1
- package/dist/esm/sync/processors/errorMaps.mjs.map +1 -1
- package/dist/esm/sync/processors/mutation.d.ts +5 -5
- package/dist/esm/sync/processors/mutation.mjs +31 -28
- package/dist/esm/sync/processors/mutation.mjs.map +1 -1
- package/dist/esm/sync/processors/subscription.d.ts +1 -1
- package/dist/esm/sync/processors/subscription.mjs +21 -12
- package/dist/esm/sync/processors/subscription.mjs.map +1 -1
- package/dist/esm/sync/processors/sync.d.ts +3 -3
- package/dist/esm/sync/processors/sync.mjs +13 -9
- package/dist/esm/sync/processors/sync.mjs.map +1 -1
- package/dist/esm/sync/utils.d.ts +11 -13
- package/dist/esm/sync/utils.mjs +20 -21
- package/dist/esm/sync/utils.mjs.map +1 -1
- package/dist/esm/types.d.ts +121 -131
- package/dist/esm/types.mjs +3 -2
- package/dist/esm/types.mjs.map +1 -1
- package/dist/esm/util.d.ts +5 -5
- package/dist/esm/util.mjs +46 -25
- package/dist/esm/util.mjs.map +1 -1
- package/package.json +74 -73
- package/src/authModeStrategies/multiAuthStrategy.ts +8 -4
- package/src/datastore/datastore.ts +145 -123
- package/src/index.ts +10 -8
- package/src/predicates/index.ts +10 -2
- package/src/predicates/next.ts +39 -28
- package/src/predicates/sort.ts +23 -26
- package/src/storage/adapter/AsyncStorageAdapter.ts +43 -25
- package/src/storage/adapter/AsyncStorageDatabase.ts +18 -10
- package/src/storage/adapter/InMemoryStore.ts +5 -1
- package/src/storage/adapter/IndexedDBAdapter.ts +50 -37
- package/src/storage/adapter/StorageAdapterBase.ts +24 -18
- package/src/storage/adapter/getDefaultAdapter/index.native.ts +1 -0
- package/src/storage/adapter/getDefaultAdapter/index.ts +4 -1
- package/src/storage/adapter/index.ts +2 -2
- package/src/storage/relationship.ts +5 -1
- package/src/storage/storage.ts +38 -30
- package/src/sync/datastoreConnectivity.ts +4 -6
- package/src/sync/index.ts +228 -230
- package/src/sync/merger.ts +4 -3
- package/src/sync/outbox.ts +26 -24
- package/src/sync/processors/errorMaps.ts +5 -0
- package/src/sync/processors/mutation.ts +80 -72
- package/src/sync/processors/subscription.ts +69 -53
- package/src/sync/processors/sync.ts +49 -37
- package/src/sync/utils.ts +60 -41
- package/src/types.ts +165 -165
- package/src/util.ts +89 -53
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription.js","sources":["../../../../src/sync/processors/subscription.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SubscriptionProcessor = exports.USER_CREDENTIALS = exports.CONTROL_MSG = void 0;\nconst internals_1 = require(\"@aws-amplify/api/internals\");\nconst core_1 = require(\"@aws-amplify/core\");\nconst utils_1 = require(\"@aws-amplify/core/internals/utils\");\nconst rxjs_1 = require(\"rxjs\");\nconst types_1 = require(\"../../types\");\nconst utils_2 = require(\"../utils\");\nconst predicates_1 = require(\"../../predicates\");\nconst util_1 = require(\"../../util\");\nconst errorMaps_1 = require(\"./errorMaps\");\nconst api_graphql_1 = require(\"@aws-amplify/api-graphql\");\nconst logger = new core_1.ConsoleLogger('DataStore');\nvar CONTROL_MSG;\n(function (CONTROL_MSG) {\n CONTROL_MSG[\"CONNECTED\"] = \"CONNECTED\";\n})(CONTROL_MSG = exports.CONTROL_MSG || (exports.CONTROL_MSG = {}));\nvar USER_CREDENTIALS;\n(function (USER_CREDENTIALS) {\n USER_CREDENTIALS[USER_CREDENTIALS[\"none\"] = 0] = \"none\";\n USER_CREDENTIALS[USER_CREDENTIALS[\"unauth\"] = 1] = \"unauth\";\n USER_CREDENTIALS[USER_CREDENTIALS[\"auth\"] = 2] = \"auth\";\n})(USER_CREDENTIALS = exports.USER_CREDENTIALS || (exports.USER_CREDENTIALS = {}));\nclass SubscriptionProcessor {\n constructor(schema, syncPredicates, amplifyConfig = {}, authModeStrategy, errorHandler, amplifyContext = {\n InternalAPI: internals_1.InternalAPI,\n }) {\n this.schema = schema;\n this.syncPredicates = syncPredicates;\n this.amplifyConfig = amplifyConfig;\n this.authModeStrategy = authModeStrategy;\n this.errorHandler = errorHandler;\n this.amplifyContext = amplifyContext;\n this.typeQuery = new WeakMap();\n this.buffer = [];\n this.runningProcesses = new utils_1.BackgroundProcessManager();\n }\n buildSubscription(namespace, model, transformerMutationType, userCredentials, oidcTokenPayload, authMode, filterArg = false) {\n const { aws_appsync_authenticationType } = this.amplifyConfig;\n const { isOwner, ownerField, ownerValue } = this.getAuthorizationInfo(model, userCredentials, aws_appsync_authenticationType, oidcTokenPayload, authMode) || {};\n const [opType, opName, query] = (0, utils_2.buildSubscriptionGraphQLOperation)(namespace, model, transformerMutationType, isOwner, ownerField, filterArg);\n return { authMode, opType, opName, query, isOwner, ownerField, ownerValue };\n }\n getAuthorizationInfo(model, userCredentials, defaultAuthType, oidcTokenPayload, authMode) {\n const rules = (0, utils_2.getAuthorizationRules)(model);\n // Return null if user doesn't have proper credentials for private API with IAM auth\n const iamPrivateAuth = authMode === 'iam' &&\n rules.find(rule => rule.authStrategy === 'private' && rule.provider === 'iam');\n if (iamPrivateAuth && userCredentials === USER_CREDENTIALS.unauth) {\n return null;\n }\n // Group auth should take precedence over owner auth, so we are checking\n // if rule(s) have group authorization as well as if either the Cognito or\n // OIDC token has a groupClaim. If so, we are returning auth info before\n // any further owner-based auth checks.\n const groupAuthRules = rules.filter(rule => rule.authStrategy === 'groups' &&\n ['userPools', 'oidc'].includes(rule.provider));\n const validGroup = (authMode === 'oidc' || authMode === 'userPool') &&\n groupAuthRules.find(groupAuthRule => {\n // validate token against groupClaim\n if (oidcTokenPayload) {\n const oidcUserGroups = (0, utils_2.getUserGroupsFromToken)(oidcTokenPayload, groupAuthRule);\n return [...oidcUserGroups].find(userGroup => {\n return groupAuthRule.groups.find(group => group === userGroup);\n });\n }\n });\n if (validGroup) {\n return {\n authMode,\n isOwner: false,\n };\n }\n let ownerAuthInfo;\n if (ownerAuthInfo) {\n return ownerAuthInfo;\n }\n // Owner auth needs additional values to be returned in order to create the subscription with\n // the correct parameters so we are getting the owner value from the OIDC token via the\n // identityClaim from the auth rule.\n const oidcOwnerAuthRules = authMode === 'oidc' || authMode === 'userPool'\n ? rules.filter(rule => rule.authStrategy === 'owner' &&\n (rule.provider === 'oidc' || rule.provider === 'userPools'))\n : [];\n oidcOwnerAuthRules.forEach(ownerAuthRule => {\n const ownerValue = oidcTokenPayload[ownerAuthRule.identityClaim];\n const singleOwner = model.fields[ownerAuthRule.ownerField]?.isArray !== true;\n const isOwnerArgRequired = singleOwner && !ownerAuthRule.areSubscriptionsPublic;\n if (ownerValue) {\n ownerAuthInfo = {\n authMode,\n isOwner: isOwnerArgRequired,\n ownerField: ownerAuthRule.ownerField,\n ownerValue: String(ownerValue),\n };\n }\n });\n if (ownerAuthInfo) {\n return ownerAuthInfo;\n }\n // Fallback: return authMode or default auth type\n return {\n authMode: authMode || defaultAuthType,\n isOwner: false,\n };\n }\n hubQueryCompletionListener(completed, capsule) {\n const { payload: { event }, } = capsule;\n if (event === api_graphql_1.CONTROL_MSG.SUBSCRIPTION_ACK) {\n completed();\n }\n }\n start() {\n this.runningProcesses =\n this.runningProcesses || new utils_1.BackgroundProcessManager();\n const ctlObservable = new rxjs_1.Observable(observer => {\n const promises = [];\n // Creating subs for each model/operation combo so they can be unsubscribed\n // independently, since the auth retry behavior is asynchronous.\n let subscriptions = {};\n let oidcTokenPayload;\n let userCredentials = USER_CREDENTIALS.none;\n this.runningProcesses.add(async () => {\n try {\n // retrieving current AWS Credentials\n const credentials = (await (0, core_1.fetchAuthSession)()).tokens?.accessToken;\n userCredentials = credentials\n ? USER_CREDENTIALS.auth\n : USER_CREDENTIALS.unauth;\n }\n catch (err) {\n // best effort to get AWS credentials\n }\n try {\n // retrieving current token info from Cognito UserPools\n const session = await (0, core_1.fetchAuthSession)();\n oidcTokenPayload = session.tokens?.idToken?.payload;\n }\n catch (err) {\n // best effort to get jwt from Cognito\n }\n Object.values(this.schema.namespaces).forEach(namespace => {\n Object.values(namespace.models)\n .filter(({ syncable }) => syncable)\n .forEach(modelDefinition => this.runningProcesses.isOpen &&\n this.runningProcesses.add(async () => {\n const modelAuthModes = await (0, utils_2.getModelAuthModes)({\n authModeStrategy: this.authModeStrategy,\n defaultAuthMode: this.amplifyConfig.aws_appsync_authenticationType,\n modelName: modelDefinition.name,\n schema: this.schema,\n });\n // subscriptions are created only based on the READ auth mode(s)\n const readAuthModes = modelAuthModes.READ;\n subscriptions = {\n ...subscriptions,\n [modelDefinition.name]: {\n [utils_2.TransformerMutationType.CREATE]: [],\n [utils_2.TransformerMutationType.UPDATE]: [],\n [utils_2.TransformerMutationType.DELETE]: [],\n },\n };\n const operations = [\n utils_2.TransformerMutationType.CREATE,\n utils_2.TransformerMutationType.UPDATE,\n utils_2.TransformerMutationType.DELETE,\n ];\n const operationAuthModeAttempts = {\n [utils_2.TransformerMutationType.CREATE]: 0,\n [utils_2.TransformerMutationType.UPDATE]: 0,\n [utils_2.TransformerMutationType.DELETE]: 0,\n };\n const predicatesGroup = predicates_1.ModelPredicateCreator.getPredicates(this.syncPredicates.get(modelDefinition), false);\n const addFilterArg = predicatesGroup !== undefined;\n // Retry subscriptions that failed for one of the following reasons:\n // 1. unauthorized - retry with next auth mode (if available)\n // 2. RTF error - retry without sending filter arg. (filtering will fall back to clientside)\n const subscriptionRetry = async (operation, addFilter = addFilterArg) => {\n const { opType: transformerMutationType, opName, query, isOwner, ownerField, ownerValue, authMode, } = this.buildSubscription(namespace, modelDefinition, operation, userCredentials, oidcTokenPayload, readAuthModes[operationAuthModeAttempts[operation]], addFilter);\n const authToken = await (0, utils_2.getTokenForCustomAuth)(authMode, this.amplifyConfig);\n const variables = {};\n const customUserAgentDetails = {\n category: utils_1.Category.DataStore,\n action: utils_1.DataStoreAction.Subscribe,\n };\n if (addFilter && predicatesGroup) {\n variables['filter'] =\n (0, utils_2.predicateToGraphQLFilter)(predicatesGroup);\n }\n if (isOwner) {\n if (!ownerValue) {\n observer.error('Owner field required, sign in is needed in order to perform this operation');\n return;\n }\n variables[ownerField] = ownerValue;\n }\n logger.debug(`Attempting ${operation} subscription with authMode: ${readAuthModes[operationAuthModeAttempts[operation]]}`);\n const queryObservable = this.amplifyContext.InternalAPI.graphql({\n query,\n variables,\n ...{ authMode },\n authToken,\n }, undefined, customUserAgentDetails);\n let subscriptionReadyCallback;\n // TODO: consider onTerminate.then(() => API.cancel(...))\n subscriptions[modelDefinition.name][transformerMutationType].push(queryObservable.subscribe({\n next: result => {\n const { data, errors } = result;\n if (Array.isArray(errors) && errors.length > 0) {\n const messages = errors.map(({ message }) => message);\n logger.warn(`Skipping incoming subscription. Messages: ${messages.join('\\n')}`);\n this.drainBuffer();\n return;\n }\n const predicatesGroup = predicates_1.ModelPredicateCreator.getPredicates(this.syncPredicates.get(modelDefinition), false);\n // @ts-ignore\n const { [opName]: record } = data;\n // checking incoming subscription against syncPredicate.\n // once AppSync implements filters on subscriptions, we'll be\n // able to set these when establishing the subscription instead.\n // Until then, we'll need to filter inbound\n if (this.passesPredicateValidation(record, predicatesGroup)) {\n this.pushToBuffer(transformerMutationType, modelDefinition, record);\n }\n this.drainBuffer();\n },\n error: async (subscriptionError) => {\n const { errors: [{ message = '' } = {}], } = ({\n errors: [],\n } = subscriptionError);\n const isRTFError = \n // only attempt catch if a filter variable was added to the subscription query\n addFilter &&\n this.catchRTFError(message, modelDefinition, predicatesGroup);\n // Catch RTF errors\n if (isRTFError) {\n // Unsubscribe and clear subscription array for model/operation\n subscriptions[modelDefinition.name][transformerMutationType].forEach(subscription => subscription.unsubscribe());\n subscriptions[modelDefinition.name][transformerMutationType] = [];\n // retry subscription connection without filter\n subscriptionRetry(operation, false);\n return;\n }\n if (message.includes(api_graphql_1.CONTROL_MSG.REALTIME_SUBSCRIPTION_INIT_ERROR) ||\n message.includes(api_graphql_1.CONTROL_MSG.CONNECTION_FAILED)) {\n // Unsubscribe and clear subscription array for model/operation\n subscriptions[modelDefinition.name][transformerMutationType].forEach(subscription => subscription.unsubscribe());\n subscriptions[modelDefinition.name][transformerMutationType] = [];\n operationAuthModeAttempts[operation]++;\n if (operationAuthModeAttempts[operation] >=\n readAuthModes.length) {\n // last auth mode retry. Continue with error\n logger.debug(`${operation} subscription failed with authMode: ${readAuthModes[operationAuthModeAttempts[operation] - 1]}`);\n }\n else {\n // retry with different auth mode. Do not trigger\n // observer error or error handler\n logger.debug(`${operation} subscription failed with authMode: ${readAuthModes[operationAuthModeAttempts[operation] - 1]}. Retrying with authMode: ${readAuthModes[operationAuthModeAttempts[operation]]}`);\n subscriptionRetry(operation);\n return;\n }\n }\n logger.warn('subscriptionError', message);\n try {\n await this.errorHandler({\n recoverySuggestion: 'Ensure app code is up to date, auth directives exist and are correct on each model, and that server-side data has not been invalidated by a schema change. If the problem persists, search for or create an issue: https://github.com/aws-amplify/amplify-js/issues',\n localModel: null,\n message,\n model: modelDefinition.name,\n operation,\n errorType: (0, errorMaps_1.getSubscriptionErrorType)(subscriptionError),\n process: types_1.ProcessName.subscribe,\n remoteModel: null,\n cause: subscriptionError,\n });\n }\n catch (e) {\n logger.error('Subscription error handler failed with:', e);\n }\n if (typeof subscriptionReadyCallback === 'function') {\n subscriptionReadyCallback();\n }\n if (message.includes('\"errorType\":\"Unauthorized\"') ||\n message.includes('\"errorType\":\"OperationDisabled\"')) {\n return;\n }\n observer.error(message);\n },\n }));\n promises.push((async () => {\n let boundFunction;\n let removeBoundFunctionListener;\n await new Promise(res => {\n subscriptionReadyCallback = res;\n boundFunction = this.hubQueryCompletionListener.bind(this, res);\n removeBoundFunctionListener = core_1.Hub.listen('api', boundFunction);\n });\n removeBoundFunctionListener();\n })());\n };\n operations.forEach(op => subscriptionRetry(op));\n }));\n });\n this.runningProcesses.isOpen &&\n this.runningProcesses.add(() => Promise.all(promises).then(() => {\n observer.next(CONTROL_MSG.CONNECTED);\n }));\n }, 'subscription processor new subscriber');\n return this.runningProcesses.addCleaner(async () => {\n Object.keys(subscriptions).forEach(modelName => {\n subscriptions[modelName][utils_2.TransformerMutationType.CREATE].forEach(subscription => subscription.unsubscribe());\n subscriptions[modelName][utils_2.TransformerMutationType.UPDATE].forEach(subscription => subscription.unsubscribe());\n subscriptions[modelName][utils_2.TransformerMutationType.DELETE].forEach(subscription => subscription.unsubscribe());\n });\n });\n });\n const dataObservable = new rxjs_1.Observable(observer => {\n this.dataObserver = observer;\n this.drainBuffer();\n return this.runningProcesses.addCleaner(async () => {\n this.dataObserver = null;\n });\n });\n return [ctlObservable, dataObservable];\n }\n async stop() {\n await this.runningProcesses.close();\n await this.runningProcesses.open();\n }\n passesPredicateValidation(record, predicatesGroup) {\n if (!predicatesGroup) {\n return true;\n }\n const { predicates, type } = predicatesGroup;\n return (0, util_1.validatePredicate)(record, type, predicates);\n }\n pushToBuffer(transformerMutationType, modelDefinition, data) {\n this.buffer.push([transformerMutationType, modelDefinition, data]);\n }\n drainBuffer() {\n if (this.dataObserver) {\n this.buffer.forEach(data => this.dataObserver.next(data));\n this.buffer = [];\n }\n }\n /**\n * @returns true if the service returned an RTF subscription error\n * @remarks logs a warning with remediation instructions\n *\n */\n catchRTFError(message, modelDefinition, predicatesGroup) {\n const header = 'Backend subscriptions filtering error.\\n' +\n 'Subscriptions filtering will be applied clientside.\\n';\n const messageErrorTypeMap = {\n 'UnknownArgument: Unknown field argument filter': utils_2.RTFError.UnknownField,\n 'Filters exceed maximum attributes limit': utils_2.RTFError.MaxAttributes,\n 'Filters combination exceed maximum limit': utils_2.RTFError.MaxCombinations,\n 'filter uses same fieldName multiple time': utils_2.RTFError.RepeatedFieldname,\n \"The variables input contains a field name 'not'\": utils_2.RTFError.NotGroup,\n 'The variables input contains a field that is not defined for input object type': utils_2.RTFError.FieldNotInType,\n };\n const [_errorMsg, errorType] = Object.entries(messageErrorTypeMap).find(([errorMsg]) => message.includes(errorMsg)) || [];\n if (errorType !== undefined) {\n const remediationMessage = (0, utils_2.generateRTFRemediation)(errorType, modelDefinition, predicatesGroup);\n logger.warn(`${header}\\n${message}\\n${remediationMessage}`);\n return true;\n }\n return false;\n }\n}\nexports.SubscriptionProcessor = SubscriptionProcessor;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"subscription.js","sources":["../../../../src/sync/processors/subscription.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SubscriptionProcessor = exports.USER_CREDENTIALS = exports.CONTROL_MSG = void 0;\nconst internals_1 = require(\"@aws-amplify/api/internals\");\nconst core_1 = require(\"@aws-amplify/core\");\nconst utils_1 = require(\"@aws-amplify/core/internals/utils\");\nconst rxjs_1 = require(\"rxjs\");\nconst api_graphql_1 = require(\"@aws-amplify/api-graphql\");\nconst types_1 = require(\"../../types\");\nconst utils_2 = require(\"../utils\");\nconst predicates_1 = require(\"../../predicates\");\nconst util_1 = require(\"../../util\");\nconst errorMaps_1 = require(\"./errorMaps\");\nconst logger = new core_1.ConsoleLogger('DataStore');\nvar CONTROL_MSG;\n(function (CONTROL_MSG) {\n CONTROL_MSG[\"CONNECTED\"] = \"CONNECTED\";\n})(CONTROL_MSG = exports.CONTROL_MSG || (exports.CONTROL_MSG = {}));\nvar USER_CREDENTIALS;\n(function (USER_CREDENTIALS) {\n USER_CREDENTIALS[USER_CREDENTIALS[\"none\"] = 0] = \"none\";\n USER_CREDENTIALS[USER_CREDENTIALS[\"unauth\"] = 1] = \"unauth\";\n USER_CREDENTIALS[USER_CREDENTIALS[\"auth\"] = 2] = \"auth\";\n})(USER_CREDENTIALS = exports.USER_CREDENTIALS || (exports.USER_CREDENTIALS = {}));\nclass SubscriptionProcessor {\n constructor(schema, syncPredicates, amplifyConfig = {}, authModeStrategy, errorHandler, amplifyContext = {\n InternalAPI: internals_1.InternalAPI,\n }) {\n this.schema = schema;\n this.syncPredicates = syncPredicates;\n this.amplifyConfig = amplifyConfig;\n this.authModeStrategy = authModeStrategy;\n this.errorHandler = errorHandler;\n this.amplifyContext = amplifyContext;\n this.typeQuery = new WeakMap();\n this.buffer = [];\n this.runningProcesses = new utils_1.BackgroundProcessManager();\n }\n buildSubscription(namespace, model, transformerMutationType, userCredentials, oidcTokenPayload, authMode, filterArg = false) {\n const { aws_appsync_authenticationType } = this.amplifyConfig;\n const { isOwner, ownerField, ownerValue } = this.getAuthorizationInfo(model, userCredentials, aws_appsync_authenticationType, oidcTokenPayload, authMode) || {};\n const [opType, opName, query] = (0, utils_2.buildSubscriptionGraphQLOperation)(namespace, model, transformerMutationType, isOwner, ownerField, filterArg);\n return { authMode, opType, opName, query, isOwner, ownerField, ownerValue };\n }\n getAuthorizationInfo(model, userCredentials, defaultAuthType, oidcTokenPayload, authMode) {\n const rules = (0, utils_2.getAuthorizationRules)(model);\n // Return null if user doesn't have proper credentials for private API with IAM auth\n const iamPrivateAuth = authMode === 'iam' &&\n rules.find(rule => rule.authStrategy === 'private' && rule.provider === 'iam');\n if (iamPrivateAuth && userCredentials === USER_CREDENTIALS.unauth) {\n return null;\n }\n // Group auth should take precedence over owner auth, so we are checking\n // if rule(s) have group authorization as well as if either the Cognito or\n // OIDC token has a groupClaim. If so, we are returning auth info before\n // any further owner-based auth checks.\n const groupAuthRules = rules.filter(rule => rule.authStrategy === 'groups' &&\n ['userPools', 'oidc'].includes(rule.provider));\n const validGroup = (authMode === 'oidc' || authMode === 'userPool') &&\n // eslint-disable-next-line array-callback-return\n groupAuthRules.find(groupAuthRule => {\n // validate token against groupClaim\n if (oidcTokenPayload) {\n const oidcUserGroups = (0, utils_2.getUserGroupsFromToken)(oidcTokenPayload, groupAuthRule);\n return [...oidcUserGroups].find(userGroup => {\n return groupAuthRule.groups.find(group => group === userGroup);\n });\n }\n });\n if (validGroup) {\n return {\n authMode,\n isOwner: false,\n };\n }\n let ownerAuthInfo;\n if (ownerAuthInfo) {\n return ownerAuthInfo;\n }\n // Owner auth needs additional values to be returned in order to create the subscription with\n // the correct parameters so we are getting the owner value from the OIDC token via the\n // identityClaim from the auth rule.\n const oidcOwnerAuthRules = authMode === 'oidc' || authMode === 'userPool'\n ? rules.filter(rule => rule.authStrategy === 'owner' &&\n (rule.provider === 'oidc' || rule.provider === 'userPools'))\n : [];\n oidcOwnerAuthRules.forEach(ownerAuthRule => {\n const ownerValue = oidcTokenPayload[ownerAuthRule.identityClaim];\n const singleOwner = model.fields[ownerAuthRule.ownerField]?.isArray !== true;\n const isOwnerArgRequired = singleOwner && !ownerAuthRule.areSubscriptionsPublic;\n if (ownerValue) {\n ownerAuthInfo = {\n authMode,\n isOwner: isOwnerArgRequired,\n ownerField: ownerAuthRule.ownerField,\n ownerValue: String(ownerValue),\n };\n }\n });\n if (ownerAuthInfo) {\n return ownerAuthInfo;\n }\n // Fallback: return authMode or default auth type\n return {\n authMode: authMode || defaultAuthType,\n isOwner: false,\n };\n }\n hubQueryCompletionListener(completed, capsule) {\n const { payload: { event }, } = capsule;\n if (event === api_graphql_1.CONTROL_MSG.SUBSCRIPTION_ACK) {\n completed();\n }\n }\n start() {\n this.runningProcesses =\n this.runningProcesses || new utils_1.BackgroundProcessManager();\n const ctlObservable = new rxjs_1.Observable(observer => {\n const promises = [];\n // Creating subs for each model/operation combo so they can be unsubscribed\n // independently, since the auth retry behavior is asynchronous.\n let subscriptions = {};\n let oidcTokenPayload;\n let userCredentials = USER_CREDENTIALS.none;\n this.runningProcesses.add(async () => {\n try {\n // retrieving current AWS Credentials\n const credentials = (await (0, core_1.fetchAuthSession)()).tokens?.accessToken;\n userCredentials = credentials\n ? USER_CREDENTIALS.auth\n : USER_CREDENTIALS.unauth;\n }\n catch (err) {\n // best effort to get AWS credentials\n }\n try {\n // retrieving current token info from Cognito UserPools\n const session = await (0, core_1.fetchAuthSession)();\n oidcTokenPayload = session.tokens?.idToken?.payload;\n }\n catch (err) {\n // best effort to get jwt from Cognito\n }\n Object.values(this.schema.namespaces).forEach(namespace => {\n Object.values(namespace.models)\n .filter(({ syncable }) => syncable)\n .forEach(modelDefinition => this.runningProcesses.isOpen &&\n this.runningProcesses.add(async () => {\n const modelAuthModes = await (0, utils_2.getModelAuthModes)({\n authModeStrategy: this.authModeStrategy,\n defaultAuthMode: this.amplifyConfig.aws_appsync_authenticationType,\n modelName: modelDefinition.name,\n schema: this.schema,\n });\n // subscriptions are created only based on the READ auth mode(s)\n const readAuthModes = modelAuthModes.READ;\n subscriptions = {\n ...subscriptions,\n [modelDefinition.name]: {\n [utils_2.TransformerMutationType.CREATE]: [],\n [utils_2.TransformerMutationType.UPDATE]: [],\n [utils_2.TransformerMutationType.DELETE]: [],\n },\n };\n const operations = [\n utils_2.TransformerMutationType.CREATE,\n utils_2.TransformerMutationType.UPDATE,\n utils_2.TransformerMutationType.DELETE,\n ];\n const operationAuthModeAttempts = {\n [utils_2.TransformerMutationType.CREATE]: 0,\n [utils_2.TransformerMutationType.UPDATE]: 0,\n [utils_2.TransformerMutationType.DELETE]: 0,\n };\n const predicatesGroup = predicates_1.ModelPredicateCreator.getPredicates(this.syncPredicates.get(modelDefinition), false);\n const addFilterArg = predicatesGroup !== undefined;\n // Retry subscriptions that failed for one of the following reasons:\n // 1. unauthorized - retry with next auth mode (if available)\n // 2. RTF error - retry without sending filter arg. (filtering will fall back to clientside)\n const subscriptionRetry = async (operation, addFilter = addFilterArg) => {\n const { opType: transformerMutationType, opName, query, isOwner, ownerField, ownerValue, authMode, } = this.buildSubscription(namespace, modelDefinition, operation, userCredentials, oidcTokenPayload, readAuthModes[operationAuthModeAttempts[operation]], addFilter);\n const authToken = await (0, utils_2.getTokenForCustomAuth)(authMode, this.amplifyConfig);\n const variables = {};\n const customUserAgentDetails = {\n category: utils_1.Category.DataStore,\n action: utils_1.DataStoreAction.Subscribe,\n };\n if (addFilter && predicatesGroup) {\n variables.filter =\n (0, utils_2.predicateToGraphQLFilter)(predicatesGroup);\n }\n if (isOwner) {\n if (!ownerValue) {\n observer.error('Owner field required, sign in is needed in order to perform this operation');\n return;\n }\n variables[ownerField] = ownerValue;\n }\n logger.debug(`Attempting ${operation} subscription with authMode: ${readAuthModes[operationAuthModeAttempts[operation]]}`);\n const queryObservable = this.amplifyContext.InternalAPI.graphql({\n query,\n variables,\n ...{ authMode },\n authToken,\n }, undefined, customUserAgentDetails);\n let subscriptionReadyCallback;\n // TODO: consider onTerminate.then(() => API.cancel(...))\n subscriptions[modelDefinition.name][transformerMutationType].push(queryObservable.subscribe({\n next: result => {\n const { data, errors } = result;\n if (Array.isArray(errors) && errors.length > 0) {\n const messages = errors.map(({ message }) => message);\n logger.warn(`Skipping incoming subscription. Messages: ${messages.join('\\n')}`);\n this.drainBuffer();\n return;\n }\n const resolvedPredicatesGroup = predicates_1.ModelPredicateCreator.getPredicates(this.syncPredicates.get(modelDefinition), false);\n const { [opName]: record } = data;\n // checking incoming subscription against syncPredicate.\n // once AppSync implements filters on subscriptions, we'll be\n // able to set these when establishing the subscription instead.\n // Until then, we'll need to filter inbound\n if (this.passesPredicateValidation(record, resolvedPredicatesGroup)) {\n this.pushToBuffer(transformerMutationType, modelDefinition, record);\n }\n this.drainBuffer();\n },\n error: async (subscriptionError) => {\n const { errors: [{ message = '' } = {}], } = ({\n // eslint-disable-next-line no-empty-pattern\n errors: [],\n } = subscriptionError);\n const isRTFError = \n // only attempt catch if a filter variable was added to the subscription query\n addFilter &&\n this.catchRTFError(message, modelDefinition, predicatesGroup);\n // Catch RTF errors\n if (isRTFError) {\n // Unsubscribe and clear subscription array for model/operation\n subscriptions[modelDefinition.name][transformerMutationType].forEach(subscription => subscription.unsubscribe());\n subscriptions[modelDefinition.name][transformerMutationType] = [];\n // retry subscription connection without filter\n subscriptionRetry(operation, false);\n return;\n }\n if (message.includes(api_graphql_1.CONTROL_MSG.REALTIME_SUBSCRIPTION_INIT_ERROR) ||\n message.includes(api_graphql_1.CONTROL_MSG.CONNECTION_FAILED)) {\n // Unsubscribe and clear subscription array for model/operation\n subscriptions[modelDefinition.name][transformerMutationType].forEach(subscription => subscription.unsubscribe());\n subscriptions[modelDefinition.name][transformerMutationType] = [];\n operationAuthModeAttempts[operation]++;\n if (operationAuthModeAttempts[operation] >=\n readAuthModes.length) {\n // last auth mode retry. Continue with error\n logger.debug(`${operation} subscription failed with authMode: ${readAuthModes[operationAuthModeAttempts[operation] - 1]}`);\n }\n else {\n // retry with different auth mode. Do not trigger\n // observer error or error handler\n logger.debug(`${operation} subscription failed with authMode: ${readAuthModes[operationAuthModeAttempts[operation] - 1]}. Retrying with authMode: ${readAuthModes[operationAuthModeAttempts[operation]]}`);\n subscriptionRetry(operation);\n return;\n }\n }\n logger.warn('subscriptionError', message);\n try {\n // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression\n await this.errorHandler({\n recoverySuggestion: 'Ensure app code is up to date, auth directives exist and are correct on each model, and that server-side data has not been invalidated by a schema change. If the problem persists, search for or create an issue: https://github.com/aws-amplify/amplify-js/issues',\n localModel: null,\n message,\n model: modelDefinition.name,\n operation,\n errorType: (0, errorMaps_1.getSubscriptionErrorType)(subscriptionError),\n process: types_1.ProcessName.subscribe,\n remoteModel: null,\n cause: subscriptionError,\n });\n }\n catch (e) {\n logger.error('Subscription error handler failed with:', e);\n }\n if (typeof subscriptionReadyCallback === 'function') {\n subscriptionReadyCallback();\n }\n if (message.includes('\"errorType\":\"Unauthorized\"') ||\n message.includes('\"errorType\":\"OperationDisabled\"')) {\n return;\n }\n observer.error(message);\n },\n }));\n promises.push((async () => {\n let boundFunction;\n let removeBoundFunctionListener;\n await new Promise(resolve => {\n subscriptionReadyCallback = resolve;\n boundFunction = this.hubQueryCompletionListener.bind(this, resolve);\n removeBoundFunctionListener = core_1.Hub.listen('api', boundFunction);\n });\n removeBoundFunctionListener();\n })());\n };\n operations.forEach(op => subscriptionRetry(op));\n }));\n });\n this.runningProcesses.isOpen &&\n this.runningProcesses.add(() => Promise.all(promises).then(() => {\n observer.next(CONTROL_MSG.CONNECTED);\n }));\n }, 'subscription processor new subscriber');\n return this.runningProcesses.addCleaner(async () => {\n Object.keys(subscriptions).forEach(modelName => {\n subscriptions[modelName][utils_2.TransformerMutationType.CREATE].forEach(subscription => {\n subscription.unsubscribe();\n });\n subscriptions[modelName][utils_2.TransformerMutationType.UPDATE].forEach(subscription => {\n subscription.unsubscribe();\n });\n subscriptions[modelName][utils_2.TransformerMutationType.DELETE].forEach(subscription => {\n subscription.unsubscribe();\n });\n });\n });\n });\n const dataObservable = new rxjs_1.Observable(observer => {\n this.dataObserver = observer;\n this.drainBuffer();\n return this.runningProcesses.addCleaner(async () => {\n this.dataObserver = null;\n });\n });\n return [ctlObservable, dataObservable];\n }\n async stop() {\n await this.runningProcesses.close();\n await this.runningProcesses.open();\n }\n passesPredicateValidation(record, predicatesGroup) {\n if (!predicatesGroup) {\n return true;\n }\n const { predicates, type } = predicatesGroup;\n return (0, util_1.validatePredicate)(record, type, predicates);\n }\n pushToBuffer(transformerMutationType, modelDefinition, data) {\n this.buffer.push([transformerMutationType, modelDefinition, data]);\n }\n drainBuffer() {\n if (this.dataObserver) {\n this.buffer.forEach(data => {\n this.dataObserver.next(data);\n });\n this.buffer = [];\n }\n }\n /**\n * @returns true if the service returned an RTF subscription error\n * @remarks logs a warning with remediation instructions\n *\n */\n catchRTFError(message, modelDefinition, predicatesGroup) {\n const header = 'Backend subscriptions filtering error.\\n' +\n 'Subscriptions filtering will be applied clientside.\\n';\n const messageErrorTypeMap = {\n 'UnknownArgument: Unknown field argument filter': utils_2.RTFError.UnknownField,\n 'Filters exceed maximum attributes limit': utils_2.RTFError.MaxAttributes,\n 'Filters combination exceed maximum limit': utils_2.RTFError.MaxCombinations,\n 'filter uses same fieldName multiple time': utils_2.RTFError.RepeatedFieldname,\n \"The variables input contains a field name 'not'\": utils_2.RTFError.NotGroup,\n 'The variables input contains a field that is not defined for input object type': utils_2.RTFError.FieldNotInType,\n };\n const [_errorMsg, errorType] = Object.entries(messageErrorTypeMap).find(([errorMsg]) => message.includes(errorMsg)) || [];\n if (errorType !== undefined) {\n const remediationMessage = (0, utils_2.generateRTFRemediation)(errorType, modelDefinition, predicatesGroup);\n logger.warn(`${header}\\n${message}\\n${remediationMessage}`);\n return true;\n }\n return false;\n }\n}\nexports.SubscriptionProcessor = SubscriptionProcessor;\n"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.SyncProcessor = void 0;
|
|
5
5
|
const internals_1 = require("@aws-amplify/api/internals");
|
|
6
6
|
const rxjs_1 = require("rxjs");
|
|
7
|
-
const
|
|
8
|
-
const utils_1 = require("../utils");
|
|
9
|
-
const utils_2 = require("@aws-amplify/core/internals/utils");
|
|
7
|
+
const utils_1 = require("@aws-amplify/core/internals/utils");
|
|
10
8
|
const core_1 = require("@aws-amplify/core");
|
|
9
|
+
const types_1 = require("../../types");
|
|
10
|
+
const utils_2 = require("../utils");
|
|
11
11
|
const predicates_1 = require("../../predicates");
|
|
12
12
|
const errorMaps_1 = require("./errorMaps");
|
|
13
13
|
const opResultDefaults = {
|
|
@@ -25,7 +25,7 @@ class SyncProcessor {
|
|
|
25
25
|
this.errorHandler = errorHandler;
|
|
26
26
|
this.amplifyContext = amplifyContext;
|
|
27
27
|
this.typeQuery = new WeakMap();
|
|
28
|
-
this.runningProcesses = new
|
|
28
|
+
this.runningProcesses = new utils_1.BackgroundProcessManager();
|
|
29
29
|
amplifyContext.InternalAPI = amplifyContext.InternalAPI || internals_1.InternalAPI;
|
|
30
30
|
this.generateQueries();
|
|
31
31
|
}
|
|
@@ -34,7 +34,7 @@ class SyncProcessor {
|
|
|
34
34
|
Object.values(namespace.models)
|
|
35
35
|
.filter(({ syncable }) => syncable)
|
|
36
36
|
.forEach(model => {
|
|
37
|
-
const [[, ...opNameQuery]] = (0,
|
|
37
|
+
const [[, ...opNameQuery]] = (0, utils_2.buildGraphQLOperation)(namespace, model, 'LIST');
|
|
38
38
|
this.typeQuery.set(model, opNameQuery);
|
|
39
39
|
});
|
|
40
40
|
});
|
|
@@ -47,7 +47,7 @@ class SyncProcessor {
|
|
|
47
47
|
if (!predicatesGroup) {
|
|
48
48
|
return null;
|
|
49
49
|
}
|
|
50
|
-
return (0,
|
|
50
|
+
return (0, utils_2.predicateToGraphQLFilter)(predicatesGroup);
|
|
51
51
|
}
|
|
52
52
|
async retrievePage(modelDefinition, lastSync, nextToken, limit = null, filter, onTerminate) {
|
|
53
53
|
const [opName, query] = this.typeQuery.get(modelDefinition);
|
|
@@ -57,7 +57,7 @@ class SyncProcessor {
|
|
|
57
57
|
lastSync,
|
|
58
58
|
filter,
|
|
59
59
|
};
|
|
60
|
-
const modelAuthModes = await (0,
|
|
60
|
+
const modelAuthModes = await (0, utils_2.getModelAuthModes)({
|
|
61
61
|
authModeStrategy: this.authModeStrategy,
|
|
62
62
|
defaultAuthMode: this.amplifyConfig.aws_appsync_authenticationType,
|
|
63
63
|
modelName: modelDefinition.name,
|
|
@@ -88,7 +88,7 @@ class SyncProcessor {
|
|
|
88
88
|
if (authModeAttempts >= readAuthModes.length) {
|
|
89
89
|
const authMode = readAuthModes[authModeAttempts - 1];
|
|
90
90
|
logger.debug(`Sync failed with authMode: ${authMode}`, error);
|
|
91
|
-
if ((0,
|
|
91
|
+
if ((0, utils_2.getClientSideAuthError)(error) || (0, utils_2.getForbiddenError)(error)) {
|
|
92
92
|
// return empty list of data so DataStore will continue to sync other models
|
|
93
93
|
logger.warn(`User is unauthorized to query ${opName} with auth mode ${authMode}. No data could be returned.`);
|
|
94
94
|
return {
|
|
@@ -100,7 +100,7 @@ class SyncProcessor {
|
|
|
100
100
|
throw error;
|
|
101
101
|
}
|
|
102
102
|
logger.debug(`Sync failed with authMode: ${readAuthModes[authModeAttempts - 1]}. Retrying with authMode: ${readAuthModes[authModeAttempts]}`);
|
|
103
|
-
return
|
|
103
|
+
return authModeRetry();
|
|
104
104
|
}
|
|
105
105
|
};
|
|
106
106
|
const { data } = await authModeRetry();
|
|
@@ -113,16 +113,16 @@ class SyncProcessor {
|
|
|
113
113
|
};
|
|
114
114
|
}
|
|
115
115
|
async jitteredRetry({ query, variables, opName, modelDefinition, authMode, onTerminate, }) {
|
|
116
|
-
return
|
|
116
|
+
return (0, utils_1.jitteredExponentialRetry)(async (retriedQuery, retriedVariables) => {
|
|
117
117
|
try {
|
|
118
|
-
const authToken = await (0,
|
|
118
|
+
const authToken = await (0, utils_2.getTokenForCustomAuth)(authMode, this.amplifyConfig);
|
|
119
119
|
const customUserAgentDetails = {
|
|
120
|
-
category:
|
|
121
|
-
action:
|
|
120
|
+
category: utils_1.Category.DataStore,
|
|
121
|
+
action: utils_1.DataStoreAction.GraphQl,
|
|
122
122
|
};
|
|
123
123
|
return await this.amplifyContext.InternalAPI.graphql({
|
|
124
|
-
query,
|
|
125
|
-
variables,
|
|
124
|
+
query: retriedQuery,
|
|
125
|
+
variables: retriedVariables,
|
|
126
126
|
authMode,
|
|
127
127
|
authToken,
|
|
128
128
|
}, undefined, customUserAgentDetails);
|
|
@@ -130,10 +130,10 @@ class SyncProcessor {
|
|
|
130
130
|
}
|
|
131
131
|
catch (error) {
|
|
132
132
|
// Catch client-side (GraphQLAuthError) & 401/403 errors here so that we don't continue to retry
|
|
133
|
-
const clientOrForbiddenErrorMessage = (0,
|
|
133
|
+
const clientOrForbiddenErrorMessage = (0, utils_2.getClientSideAuthError)(error) || (0, utils_2.getForbiddenError)(error);
|
|
134
134
|
if (clientOrForbiddenErrorMessage) {
|
|
135
135
|
logger.error('Sync processor retry error:', error);
|
|
136
|
-
throw new
|
|
136
|
+
throw new utils_1.NonRetryableError(clientOrForbiddenErrorMessage);
|
|
137
137
|
}
|
|
138
138
|
const hasItems = Boolean(error?.data?.[opName]?.items);
|
|
139
139
|
const unauthorized = error?.errors &&
|
|
@@ -147,6 +147,7 @@ class SyncProcessor {
|
|
|
147
147
|
if (hasItems && otherErrors?.length) {
|
|
148
148
|
await Promise.all(otherErrors.map(async (err) => {
|
|
149
149
|
try {
|
|
150
|
+
// eslint-disable-next-line @typescript-eslint/no-confusing-void-expression
|
|
150
151
|
await this.errorHandler({
|
|
151
152
|
recoverySuggestion: 'Ensure app code is up to date, auth directives exist and are correct on each model, and that server-side data has not been invalidated by a schema change. If the problem persists, search for or create an issue: https://github.com/aws-amplify/amplify-js/issues',
|
|
152
153
|
localModel: null,
|
|
@@ -207,7 +208,7 @@ class SyncProcessor {
|
|
|
207
208
|
remoteModel: null,
|
|
208
209
|
cause: error,
|
|
209
210
|
});
|
|
210
|
-
throw new
|
|
211
|
+
throw new utils_1.NonRetryableError(error);
|
|
211
212
|
}
|
|
212
213
|
if (result.data?.[opName]?.items?.length) {
|
|
213
214
|
return result;
|
|
@@ -239,7 +240,8 @@ class SyncProcessor {
|
|
|
239
240
|
const filter = this.graphqlFilterFromPredicate(modelDefinition);
|
|
240
241
|
const parents = this.schema.namespaces[namespace].modelTopologicalOrdering.get(modelDefinition.name);
|
|
241
242
|
const promises = parents.map(parent => parentPromises.get(`${namespace}_${parent}`));
|
|
242
|
-
|
|
243
|
+
// eslint-disable-next-line no-async-promise-executor
|
|
244
|
+
const promise = new Promise(async (resolve) => {
|
|
243
245
|
await Promise.all(promises);
|
|
244
246
|
do {
|
|
245
247
|
/**
|
|
@@ -249,7 +251,8 @@ class SyncProcessor {
|
|
|
249
251
|
*/
|
|
250
252
|
if (!this.runningProcesses.isOpen) {
|
|
251
253
|
logger.debug(`Sync processor has been stopped, terminating sync for ${modelDefinition.name}`);
|
|
252
|
-
|
|
254
|
+
resolve();
|
|
255
|
+
return;
|
|
253
256
|
}
|
|
254
257
|
const limit = Math.min(maxRecordsToSync - recordsReceived, syncPageSize);
|
|
255
258
|
/**
|
|
@@ -262,6 +265,7 @@ class SyncProcessor {
|
|
|
262
265
|
}
|
|
263
266
|
catch (error) {
|
|
264
267
|
try {
|
|
268
|
+
// eslint-disable-next-line @typescript-eslint/no-confusing-void-expression
|
|
265
269
|
await this.errorHandler({
|
|
266
270
|
recoverySuggestion: 'Ensure app code is up to date, auth directives exist and are correct on each model, and that server-side data has not been invalidated by a schema change. If the problem persists, search for or create an issue: https://github.com/aws-amplify/amplify-js/issues',
|
|
267
271
|
localModel: null,
|
|
@@ -299,7 +303,7 @@ class SyncProcessor {
|
|
|
299
303
|
isFullSync: !lastSync,
|
|
300
304
|
});
|
|
301
305
|
} while (!done);
|
|
302
|
-
|
|
306
|
+
resolve();
|
|
303
307
|
});
|
|
304
308
|
parentPromises.set(`${namespace}_${modelDefinition.name}`, promise);
|
|
305
309
|
await promise;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sources":["../../../../src/sync/processors/sync.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SyncProcessor = void 0;\nconst internals_1 = require(\"@aws-amplify/api/internals\");\nconst rxjs_1 = require(\"rxjs\");\nconst types_1 = require(\"../../types\");\nconst utils_1 = require(\"../utils\");\nconst utils_2 = require(\"@aws-amplify/core/internals/utils\");\nconst core_1 = require(\"@aws-amplify/core\");\nconst predicates_1 = require(\"../../predicates\");\nconst errorMaps_1 = require(\"./errorMaps\");\nconst opResultDefaults = {\n items: [],\n nextToken: null,\n startedAt: null,\n};\nconst logger = new core_1.ConsoleLogger('DataStore');\nclass SyncProcessor {\n constructor(schema, syncPredicates, amplifyConfig = {}, authModeStrategy, errorHandler, amplifyContext) {\n this.schema = schema;\n this.syncPredicates = syncPredicates;\n this.amplifyConfig = amplifyConfig;\n this.authModeStrategy = authModeStrategy;\n this.errorHandler = errorHandler;\n this.amplifyContext = amplifyContext;\n this.typeQuery = new WeakMap();\n this.runningProcesses = new utils_2.BackgroundProcessManager();\n amplifyContext.InternalAPI = amplifyContext.InternalAPI || internals_1.InternalAPI;\n this.generateQueries();\n }\n generateQueries() {\n Object.values(this.schema.namespaces).forEach(namespace => {\n Object.values(namespace.models)\n .filter(({ syncable }) => syncable)\n .forEach(model => {\n const [[, ...opNameQuery]] = (0, utils_1.buildGraphQLOperation)(namespace, model, 'LIST');\n this.typeQuery.set(model, opNameQuery);\n });\n });\n }\n graphqlFilterFromPredicate(model) {\n if (!this.syncPredicates) {\n return null;\n }\n const predicatesGroup = predicates_1.ModelPredicateCreator.getPredicates(this.syncPredicates.get(model), false);\n if (!predicatesGroup) {\n return null;\n }\n return (0, utils_1.predicateToGraphQLFilter)(predicatesGroup);\n }\n async retrievePage(modelDefinition, lastSync, nextToken, limit = null, filter, onTerminate) {\n const [opName, query] = this.typeQuery.get(modelDefinition);\n const variables = {\n limit,\n nextToken,\n lastSync,\n filter,\n };\n const modelAuthModes = await (0, utils_1.getModelAuthModes)({\n authModeStrategy: this.authModeStrategy,\n defaultAuthMode: this.amplifyConfig.aws_appsync_authenticationType,\n modelName: modelDefinition.name,\n schema: this.schema,\n });\n // sync only needs the READ auth mode(s)\n const readAuthModes = modelAuthModes.READ;\n let authModeAttempts = 0;\n const authModeRetry = async () => {\n if (!this.runningProcesses.isOpen) {\n throw new Error('sync.retreievePage termination was requested. Exiting.');\n }\n try {\n logger.debug(`Attempting sync with authMode: ${readAuthModes[authModeAttempts]}`);\n const response = await this.jitteredRetry({\n query,\n variables,\n opName,\n modelDefinition,\n authMode: readAuthModes[authModeAttempts],\n onTerminate,\n });\n logger.debug(`Sync successful with authMode: ${readAuthModes[authModeAttempts]}`);\n return response;\n }\n catch (error) {\n authModeAttempts++;\n if (authModeAttempts >= readAuthModes.length) {\n const authMode = readAuthModes[authModeAttempts - 1];\n logger.debug(`Sync failed with authMode: ${authMode}`, error);\n if ((0, utils_1.getClientSideAuthError)(error) || (0, utils_1.getForbiddenError)(error)) {\n // return empty list of data so DataStore will continue to sync other models\n logger.warn(`User is unauthorized to query ${opName} with auth mode ${authMode}. No data could be returned.`);\n return {\n data: {\n [opName]: opResultDefaults,\n },\n };\n }\n throw error;\n }\n logger.debug(`Sync failed with authMode: ${readAuthModes[authModeAttempts - 1]}. Retrying with authMode: ${readAuthModes[authModeAttempts]}`);\n return await authModeRetry();\n }\n };\n const { data } = await authModeRetry();\n const { [opName]: opResult } = data;\n const { items, nextToken: newNextToken, startedAt } = opResult;\n return {\n nextToken: newNextToken,\n startedAt,\n items,\n };\n }\n async jitteredRetry({ query, variables, opName, modelDefinition, authMode, onTerminate, }) {\n return await (0, utils_2.jitteredExponentialRetry)(async (query, variables) => {\n try {\n const authToken = await (0, utils_1.getTokenForCustomAuth)(authMode, this.amplifyConfig);\n const customUserAgentDetails = {\n category: utils_2.Category.DataStore,\n action: utils_2.DataStoreAction.GraphQl,\n };\n return await this.amplifyContext.InternalAPI.graphql({\n query,\n variables,\n authMode,\n authToken,\n }, undefined, customUserAgentDetails);\n // TODO: onTerminate.then(() => API.cancel(...))\n }\n catch (error) {\n // Catch client-side (GraphQLAuthError) & 401/403 errors here so that we don't continue to retry\n const clientOrForbiddenErrorMessage = (0, utils_1.getClientSideAuthError)(error) || (0, utils_1.getForbiddenError)(error);\n if (clientOrForbiddenErrorMessage) {\n logger.error('Sync processor retry error:', error);\n throw new utils_2.NonRetryableError(clientOrForbiddenErrorMessage);\n }\n const hasItems = Boolean(error?.data?.[opName]?.items);\n const unauthorized = error?.errors &&\n error.errors.some(err => err.errorType === 'Unauthorized');\n const otherErrors = error?.errors &&\n error.errors.filter(err => err.errorType !== 'Unauthorized');\n const result = error;\n if (hasItems) {\n result.data[opName].items = result.data[opName].items.filter(item => item !== null);\n }\n if (hasItems && otherErrors?.length) {\n await Promise.all(otherErrors.map(async (err) => {\n try {\n await this.errorHandler({\n recoverySuggestion: 'Ensure app code is up to date, auth directives exist and are correct on each model, and that server-side data has not been invalidated by a schema change. If the problem persists, search for or create an issue: https://github.com/aws-amplify/amplify-js/issues',\n localModel: null,\n message: err.message,\n model: modelDefinition.name,\n operation: opName,\n errorType: (0, errorMaps_1.getSyncErrorType)(err),\n process: types_1.ProcessName.sync,\n remoteModel: null,\n cause: err,\n });\n }\n catch (e) {\n logger.error('Sync error handler failed with:', e);\n }\n }));\n core_1.Hub.dispatch('datastore', {\n event: 'nonApplicableDataReceived',\n data: {\n errors: otherErrors,\n modelName: modelDefinition.name,\n },\n });\n }\n /**\n * Handle $util.unauthorized() in resolver request mapper, which responses with something\n * like this:\n *\n * ```\n * {\n * \tdata: { syncYourModel: null },\n * \terrors: [\n * \t\t{\n * \t\t\tpath: ['syncLegacyJSONComments'],\n * \t\t\tdata: null,\n * \t\t\terrorType: 'Unauthorized',\n * \t\t\terrorInfo: null,\n * \t\t\tlocations: [{ line: 2, column: 3, sourceName: null }],\n * \t\t\tmessage:\n * \t\t\t\t'Not Authorized to access syncYourModel on type Query',\n * \t\t\t},\n * \t\t],\n * \t}\n * ```\n *\n * The correct handling for this is to signal that we've encountered a non-retryable error,\n * since the server has responded with an auth error and *NO DATA* at this point.\n */\n if (unauthorized) {\n this.errorHandler({\n recoverySuggestion: 'Ensure app code is up to date, auth directives exist and are correct on each model, and that server-side data has not been invalidated by a schema change. If the problem persists, search for or create an issue: https://github.com/aws-amplify/amplify-js/issues',\n localModel: null,\n message: error.message,\n model: modelDefinition.name,\n operation: opName,\n errorType: (0, errorMaps_1.getSyncErrorType)(error.errors[0]),\n process: types_1.ProcessName.sync,\n remoteModel: null,\n cause: error,\n });\n throw new utils_2.NonRetryableError(error);\n }\n if (result.data?.[opName]?.items?.length) {\n return result;\n }\n throw error;\n }\n }, [query, variables], undefined, onTerminate);\n }\n start(typesLastSync) {\n const { maxRecordsToSync, syncPageSize } = this.amplifyConfig;\n const parentPromises = new Map();\n const observable = new rxjs_1.Observable(observer => {\n const sortedTypesLastSyncs = Object.values(this.schema.namespaces).reduce((map, namespace) => {\n for (const modelName of Array.from(namespace.modelTopologicalOrdering.keys())) {\n const typeLastSync = typesLastSync.get(namespace.models[modelName]);\n map.set(namespace.models[modelName], typeLastSync);\n }\n return map;\n }, new Map());\n const allModelsReady = Array.from(sortedTypesLastSyncs.entries())\n .filter(([{ syncable }]) => syncable)\n .map(([modelDefinition, [namespace, lastSync]]) => this.runningProcesses.isOpen &&\n this.runningProcesses.add(async (onTerminate) => {\n let done = false;\n let nextToken = null;\n let startedAt = null;\n let items = null;\n let recordsReceived = 0;\n const filter = this.graphqlFilterFromPredicate(modelDefinition);\n const parents = this.schema.namespaces[namespace].modelTopologicalOrdering.get(modelDefinition.name);\n const promises = parents.map(parent => parentPromises.get(`${namespace}_${parent}`));\n const promise = new Promise(async (res) => {\n await Promise.all(promises);\n do {\n /**\n * If `runningProcesses` is not open, it means that the sync processor has been\n * stopped (for example by calling `DataStore.clear()` upstream) and has not yet\n * finished terminating and/or waiting for its background processes to complete.\n */\n if (!this.runningProcesses.isOpen) {\n logger.debug(`Sync processor has been stopped, terminating sync for ${modelDefinition.name}`);\n return res();\n }\n const limit = Math.min(maxRecordsToSync - recordsReceived, syncPageSize);\n /**\n * It's possible that `retrievePage` will fail.\n * If it does fail, continue merging the rest of the data,\n * and invoke the error handler for non-applicable data.\n */\n try {\n ({ items, nextToken, startedAt } = await this.retrievePage(modelDefinition, lastSync, nextToken, limit, filter, onTerminate));\n }\n catch (error) {\n try {\n await this.errorHandler({\n recoverySuggestion: 'Ensure app code is up to date, auth directives exist and are correct on each model, and that server-side data has not been invalidated by a schema change. If the problem persists, search for or create an issue: https://github.com/aws-amplify/amplify-js/issues',\n localModel: null,\n message: error.message,\n model: modelDefinition.name,\n operation: null,\n errorType: (0, errorMaps_1.getSyncErrorType)(error),\n process: types_1.ProcessName.sync,\n remoteModel: null,\n cause: error,\n });\n }\n catch (e) {\n logger.error('Sync error handler failed with:', e);\n }\n /**\n * If there's an error, this model fails, but the rest of the sync should\n * continue. To facilitate this, we explicitly mark this model as `done`\n * with no items and allow the loop to continue organically. This ensures\n * all callbacks (subscription messages) happen as normal, so anything\n * waiting on them knows the model is as done as it can be.\n */\n done = true;\n items = [];\n }\n recordsReceived += items.length;\n done =\n nextToken === null || recordsReceived >= maxRecordsToSync;\n observer.next({\n namespace,\n modelDefinition,\n items,\n done,\n startedAt,\n isFullSync: !lastSync,\n });\n } while (!done);\n res();\n });\n parentPromises.set(`${namespace}_${modelDefinition.name}`, promise);\n await promise;\n }, `adding model ${modelDefinition.name}`));\n Promise.all(allModelsReady).then(() => {\n observer.complete();\n });\n });\n return observable;\n }\n async stop() {\n logger.debug('stopping sync processor');\n await this.runningProcesses.close();\n await this.runningProcesses.open();\n logger.debug('sync processor stopped');\n }\n}\nexports.SyncProcessor = SyncProcessor;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync.js","sources":["../../../../src/sync/processors/sync.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SyncProcessor = void 0;\nconst internals_1 = require(\"@aws-amplify/api/internals\");\nconst rxjs_1 = require(\"rxjs\");\nconst utils_1 = require(\"@aws-amplify/core/internals/utils\");\nconst core_1 = require(\"@aws-amplify/core\");\nconst types_1 = require(\"../../types\");\nconst utils_2 = require(\"../utils\");\nconst predicates_1 = require(\"../../predicates\");\nconst errorMaps_1 = require(\"./errorMaps\");\nconst opResultDefaults = {\n items: [],\n nextToken: null,\n startedAt: null,\n};\nconst logger = new core_1.ConsoleLogger('DataStore');\nclass SyncProcessor {\n constructor(schema, syncPredicates, amplifyConfig = {}, authModeStrategy, errorHandler, amplifyContext) {\n this.schema = schema;\n this.syncPredicates = syncPredicates;\n this.amplifyConfig = amplifyConfig;\n this.authModeStrategy = authModeStrategy;\n this.errorHandler = errorHandler;\n this.amplifyContext = amplifyContext;\n this.typeQuery = new WeakMap();\n this.runningProcesses = new utils_1.BackgroundProcessManager();\n amplifyContext.InternalAPI = amplifyContext.InternalAPI || internals_1.InternalAPI;\n this.generateQueries();\n }\n generateQueries() {\n Object.values(this.schema.namespaces).forEach(namespace => {\n Object.values(namespace.models)\n .filter(({ syncable }) => syncable)\n .forEach(model => {\n const [[, ...opNameQuery]] = (0, utils_2.buildGraphQLOperation)(namespace, model, 'LIST');\n this.typeQuery.set(model, opNameQuery);\n });\n });\n }\n graphqlFilterFromPredicate(model) {\n if (!this.syncPredicates) {\n return null;\n }\n const predicatesGroup = predicates_1.ModelPredicateCreator.getPredicates(this.syncPredicates.get(model), false);\n if (!predicatesGroup) {\n return null;\n }\n return (0, utils_2.predicateToGraphQLFilter)(predicatesGroup);\n }\n async retrievePage(modelDefinition, lastSync, nextToken, limit = null, filter, onTerminate) {\n const [opName, query] = this.typeQuery.get(modelDefinition);\n const variables = {\n limit,\n nextToken,\n lastSync,\n filter,\n };\n const modelAuthModes = await (0, utils_2.getModelAuthModes)({\n authModeStrategy: this.authModeStrategy,\n defaultAuthMode: this.amplifyConfig.aws_appsync_authenticationType,\n modelName: modelDefinition.name,\n schema: this.schema,\n });\n // sync only needs the READ auth mode(s)\n const readAuthModes = modelAuthModes.READ;\n let authModeAttempts = 0;\n const authModeRetry = async () => {\n if (!this.runningProcesses.isOpen) {\n throw new Error('sync.retreievePage termination was requested. Exiting.');\n }\n try {\n logger.debug(`Attempting sync with authMode: ${readAuthModes[authModeAttempts]}`);\n const response = await this.jitteredRetry({\n query,\n variables,\n opName,\n modelDefinition,\n authMode: readAuthModes[authModeAttempts],\n onTerminate,\n });\n logger.debug(`Sync successful with authMode: ${readAuthModes[authModeAttempts]}`);\n return response;\n }\n catch (error) {\n authModeAttempts++;\n if (authModeAttempts >= readAuthModes.length) {\n const authMode = readAuthModes[authModeAttempts - 1];\n logger.debug(`Sync failed with authMode: ${authMode}`, error);\n if ((0, utils_2.getClientSideAuthError)(error) || (0, utils_2.getForbiddenError)(error)) {\n // return empty list of data so DataStore will continue to sync other models\n logger.warn(`User is unauthorized to query ${opName} with auth mode ${authMode}. No data could be returned.`);\n return {\n data: {\n [opName]: opResultDefaults,\n },\n };\n }\n throw error;\n }\n logger.debug(`Sync failed with authMode: ${readAuthModes[authModeAttempts - 1]}. Retrying with authMode: ${readAuthModes[authModeAttempts]}`);\n return authModeRetry();\n }\n };\n const { data } = await authModeRetry();\n const { [opName]: opResult } = data;\n const { items, nextToken: newNextToken, startedAt } = opResult;\n return {\n nextToken: newNextToken,\n startedAt,\n items,\n };\n }\n async jitteredRetry({ query, variables, opName, modelDefinition, authMode, onTerminate, }) {\n return (0, utils_1.jitteredExponentialRetry)(async (retriedQuery, retriedVariables) => {\n try {\n const authToken = await (0, utils_2.getTokenForCustomAuth)(authMode, this.amplifyConfig);\n const customUserAgentDetails = {\n category: utils_1.Category.DataStore,\n action: utils_1.DataStoreAction.GraphQl,\n };\n return await this.amplifyContext.InternalAPI.graphql({\n query: retriedQuery,\n variables: retriedVariables,\n authMode,\n authToken,\n }, undefined, customUserAgentDetails);\n // TODO: onTerminate.then(() => API.cancel(...))\n }\n catch (error) {\n // Catch client-side (GraphQLAuthError) & 401/403 errors here so that we don't continue to retry\n const clientOrForbiddenErrorMessage = (0, utils_2.getClientSideAuthError)(error) || (0, utils_2.getForbiddenError)(error);\n if (clientOrForbiddenErrorMessage) {\n logger.error('Sync processor retry error:', error);\n throw new utils_1.NonRetryableError(clientOrForbiddenErrorMessage);\n }\n const hasItems = Boolean(error?.data?.[opName]?.items);\n const unauthorized = error?.errors &&\n error.errors.some(err => err.errorType === 'Unauthorized');\n const otherErrors = error?.errors &&\n error.errors.filter(err => err.errorType !== 'Unauthorized');\n const result = error;\n if (hasItems) {\n result.data[opName].items = result.data[opName].items.filter(item => item !== null);\n }\n if (hasItems && otherErrors?.length) {\n await Promise.all(otherErrors.map(async (err) => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression\n await this.errorHandler({\n recoverySuggestion: 'Ensure app code is up to date, auth directives exist and are correct on each model, and that server-side data has not been invalidated by a schema change. If the problem persists, search for or create an issue: https://github.com/aws-amplify/amplify-js/issues',\n localModel: null,\n message: err.message,\n model: modelDefinition.name,\n operation: opName,\n errorType: (0, errorMaps_1.getSyncErrorType)(err),\n process: types_1.ProcessName.sync,\n remoteModel: null,\n cause: err,\n });\n }\n catch (e) {\n logger.error('Sync error handler failed with:', e);\n }\n }));\n core_1.Hub.dispatch('datastore', {\n event: 'nonApplicableDataReceived',\n data: {\n errors: otherErrors,\n modelName: modelDefinition.name,\n },\n });\n }\n /**\n * Handle $util.unauthorized() in resolver request mapper, which responses with something\n * like this:\n *\n * ```\n * {\n * \tdata: { syncYourModel: null },\n * \terrors: [\n * \t\t{\n * \t\t\tpath: ['syncLegacyJSONComments'],\n * \t\t\tdata: null,\n * \t\t\terrorType: 'Unauthorized',\n * \t\t\terrorInfo: null,\n * \t\t\tlocations: [{ line: 2, column: 3, sourceName: null }],\n * \t\t\tmessage:\n * \t\t\t\t'Not Authorized to access syncYourModel on type Query',\n * \t\t\t},\n * \t\t],\n * \t}\n * ```\n *\n * The correct handling for this is to signal that we've encountered a non-retryable error,\n * since the server has responded with an auth error and *NO DATA* at this point.\n */\n if (unauthorized) {\n this.errorHandler({\n recoverySuggestion: 'Ensure app code is up to date, auth directives exist and are correct on each model, and that server-side data has not been invalidated by a schema change. If the problem persists, search for or create an issue: https://github.com/aws-amplify/amplify-js/issues',\n localModel: null,\n message: error.message,\n model: modelDefinition.name,\n operation: opName,\n errorType: (0, errorMaps_1.getSyncErrorType)(error.errors[0]),\n process: types_1.ProcessName.sync,\n remoteModel: null,\n cause: error,\n });\n throw new utils_1.NonRetryableError(error);\n }\n if (result.data?.[opName]?.items?.length) {\n return result;\n }\n throw error;\n }\n }, [query, variables], undefined, onTerminate);\n }\n start(typesLastSync) {\n const { maxRecordsToSync, syncPageSize } = this.amplifyConfig;\n const parentPromises = new Map();\n const observable = new rxjs_1.Observable(observer => {\n const sortedTypesLastSyncs = Object.values(this.schema.namespaces).reduce((map, namespace) => {\n for (const modelName of Array.from(namespace.modelTopologicalOrdering.keys())) {\n const typeLastSync = typesLastSync.get(namespace.models[modelName]);\n map.set(namespace.models[modelName], typeLastSync);\n }\n return map;\n }, new Map());\n const allModelsReady = Array.from(sortedTypesLastSyncs.entries())\n .filter(([{ syncable }]) => syncable)\n .map(([modelDefinition, [namespace, lastSync]]) => this.runningProcesses.isOpen &&\n this.runningProcesses.add(async (onTerminate) => {\n let done = false;\n let nextToken = null;\n let startedAt = null;\n let items = null;\n let recordsReceived = 0;\n const filter = this.graphqlFilterFromPredicate(modelDefinition);\n const parents = this.schema.namespaces[namespace].modelTopologicalOrdering.get(modelDefinition.name);\n const promises = parents.map(parent => parentPromises.get(`${namespace}_${parent}`));\n // eslint-disable-next-line no-async-promise-executor\n const promise = new Promise(async (resolve) => {\n await Promise.all(promises);\n do {\n /**\n * If `runningProcesses` is not open, it means that the sync processor has been\n * stopped (for example by calling `DataStore.clear()` upstream) and has not yet\n * finished terminating and/or waiting for its background processes to complete.\n */\n if (!this.runningProcesses.isOpen) {\n logger.debug(`Sync processor has been stopped, terminating sync for ${modelDefinition.name}`);\n resolve();\n return;\n }\n const limit = Math.min(maxRecordsToSync - recordsReceived, syncPageSize);\n /**\n * It's possible that `retrievePage` will fail.\n * If it does fail, continue merging the rest of the data,\n * and invoke the error handler for non-applicable data.\n */\n try {\n ({ items, nextToken, startedAt } = await this.retrievePage(modelDefinition, lastSync, nextToken, limit, filter, onTerminate));\n }\n catch (error) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression\n await this.errorHandler({\n recoverySuggestion: 'Ensure app code is up to date, auth directives exist and are correct on each model, and that server-side data has not been invalidated by a schema change. If the problem persists, search for or create an issue: https://github.com/aws-amplify/amplify-js/issues',\n localModel: null,\n message: error.message,\n model: modelDefinition.name,\n operation: null,\n errorType: (0, errorMaps_1.getSyncErrorType)(error),\n process: types_1.ProcessName.sync,\n remoteModel: null,\n cause: error,\n });\n }\n catch (e) {\n logger.error('Sync error handler failed with:', e);\n }\n /**\n * If there's an error, this model fails, but the rest of the sync should\n * continue. To facilitate this, we explicitly mark this model as `done`\n * with no items and allow the loop to continue organically. This ensures\n * all callbacks (subscription messages) happen as normal, so anything\n * waiting on them knows the model is as done as it can be.\n */\n done = true;\n items = [];\n }\n recordsReceived += items.length;\n done =\n nextToken === null || recordsReceived >= maxRecordsToSync;\n observer.next({\n namespace,\n modelDefinition,\n items,\n done,\n startedAt,\n isFullSync: !lastSync,\n });\n } while (!done);\n resolve();\n });\n parentPromises.set(`${namespace}_${modelDefinition.name}`, promise);\n await promise;\n }, `adding model ${modelDefinition.name}`));\n Promise.all(allModelsReady).then(() => {\n observer.complete();\n });\n });\n return observable;\n }\n async stop() {\n logger.debug('stopping sync processor');\n await this.runningProcesses.close();\n await this.runningProcesses.open();\n logger.debug('sync processor stopped');\n }\n}\nexports.SyncProcessor = SyncProcessor;\n"],"names":[],"mappings":"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"}
|
package/dist/cjs/sync/utils.js
CHANGED
|
@@ -5,18 +5,17 @@ exports.getIdentifierValue = exports.getTokenForCustomAuth = exports.getClientSi
|
|
|
5
5
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
6
6
|
// SPDX-License-Identifier: Apache-2.0
|
|
7
7
|
const api_1 = require("@aws-amplify/api");
|
|
8
|
+
const core_1 = require("@aws-amplify/core");
|
|
8
9
|
const types_1 = require("../types");
|
|
9
10
|
const util_1 = require("../util");
|
|
10
|
-
const core_1 = require("@aws-amplify/core");
|
|
11
11
|
const logger = new core_1.ConsoleLogger('DataStore');
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
})(GraphQLOperationType || (GraphQLOperationType = {}));
|
|
12
|
+
const GraphQLOperationType = {
|
|
13
|
+
LIST: 'query',
|
|
14
|
+
CREATE: 'mutation',
|
|
15
|
+
UPDATE: 'mutation',
|
|
16
|
+
DELETE: 'mutation',
|
|
17
|
+
GET: 'query',
|
|
18
|
+
};
|
|
20
19
|
var TransformerMutationType;
|
|
21
20
|
(function (TransformerMutationType) {
|
|
22
21
|
TransformerMutationType["CREATE"] = "Create";
|
|
@@ -29,7 +28,7 @@ const dummyMetadata = {
|
|
|
29
28
|
_lastChangedAt: undefined,
|
|
30
29
|
_deleted: undefined,
|
|
31
30
|
};
|
|
32
|
-
const metadataFields =
|
|
31
|
+
const metadataFields = Object.keys(dummyMetadata);
|
|
33
32
|
function getMetadataFields() {
|
|
34
33
|
return metadataFields;
|
|
35
34
|
}
|
|
@@ -63,7 +62,7 @@ function getOwnerFields(modelDefinition) {
|
|
|
63
62
|
if ((0, types_1.isSchemaModelWithAttributes)(modelDefinition)) {
|
|
64
63
|
modelDefinition.attributes.forEach(attr => {
|
|
65
64
|
if (attr.properties && attr.properties.rules) {
|
|
66
|
-
const rule = attr.properties.rules.find(
|
|
65
|
+
const rule = attr.properties.rules.find(currentRule => currentRule.allow === 'owner');
|
|
67
66
|
if (rule && rule.ownerField) {
|
|
68
67
|
ownerFields.push(rule.ownerField);
|
|
69
68
|
}
|
|
@@ -105,8 +104,8 @@ function getConnectionFields(modelDefinition, namespace) {
|
|
|
105
104
|
if (association.targetNames && association.targetNames.length > 0) {
|
|
106
105
|
// Need to retrieve relations in order to get connected model keys
|
|
107
106
|
const [relations] = (0, util_1.establishRelationAndKeys)(namespace);
|
|
108
|
-
const connectedModelName = modelDefinition.fields[name].type
|
|
109
|
-
const byPkIndex = relations[connectedModelName].indexes.find(([
|
|
107
|
+
const connectedModelName = modelDefinition.fields[name].type.model;
|
|
108
|
+
const byPkIndex = relations[connectedModelName].indexes.find(([currentName]) => currentName === 'byPk');
|
|
110
109
|
const keyFields = byPkIndex && byPkIndex[1];
|
|
111
110
|
const keyFieldSelectionSet = keyFields?.join(' ');
|
|
112
111
|
// We rely on `_deleted` when we process the sync query (e.g. in batchSave in the adapters)
|
|
@@ -129,13 +128,13 @@ function getNonModelFields(namespace, modelDefinition) {
|
|
|
129
128
|
Object.values(modelDefinition.fields).forEach(({ name, type }) => {
|
|
130
129
|
if ((0, types_1.isNonModelFieldType)(type)) {
|
|
131
130
|
const typeDefinition = namespace.nonModels[type.nonModel];
|
|
132
|
-
const scalarFields = Object.values(getScalarFields(typeDefinition)).map(({ name }) =>
|
|
131
|
+
const scalarFields = Object.values(getScalarFields(typeDefinition)).map(({ name: currentName }) => currentName);
|
|
133
132
|
const nested = [];
|
|
134
133
|
Object.values(typeDefinition.fields).forEach(field => {
|
|
135
|
-
const { type, name } = field;
|
|
136
|
-
if ((0, types_1.isNonModelFieldType)(
|
|
137
|
-
const
|
|
138
|
-
nested.push(`${
|
|
134
|
+
const { type: fieldType, name: fieldName } = field;
|
|
135
|
+
if ((0, types_1.isNonModelFieldType)(fieldType)) {
|
|
136
|
+
const nonModelTypeDefinition = namespace.nonModels[fieldType.nonModel];
|
|
137
|
+
nested.push(`${fieldName} { ${generateSelectionSet(namespace, nonModelTypeDefinition)} }`);
|
|
139
138
|
}
|
|
140
139
|
});
|
|
141
140
|
result.push(`${name} { ${scalarFields.join(' ')} ${nested.join(' ')} }`);
|
|
@@ -339,7 +338,7 @@ exports.predicateToGraphQLCondition = predicateToGraphQLCondition;
|
|
|
339
338
|
/**
|
|
340
339
|
* @param predicatesGroup - Predicate Group
|
|
341
340
|
@returns GQL Filter Expression from Predicate Group
|
|
342
|
-
|
|
341
|
+
|
|
343
342
|
@remarks Flattens redundant list predicates
|
|
344
343
|
@example
|
|
345
344
|
|
|
@@ -653,8 +652,8 @@ function getForbiddenError(error) {
|
|
|
653
652
|
}
|
|
654
653
|
exports.getForbiddenError = getForbiddenError;
|
|
655
654
|
function resolveServiceErrorStatusCode(error) {
|
|
656
|
-
if (error
|
|
657
|
-
return Number(error
|
|
655
|
+
if (error?.$metadata?.httpStatusCode) {
|
|
656
|
+
return Number(error?.$metadata?.httpStatusCode);
|
|
658
657
|
}
|
|
659
658
|
else if (error?.originalError) {
|
|
660
659
|
return resolveServiceErrorStatusCode(error?.originalError);
|