@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,11 +1,11 @@
1
1
  import { Subject, filter, map } from 'rxjs';
2
+ import { Mutex } from '@aws-amplify/core/internals/utils';
3
+ import { ConsoleLogger } from '@aws-amplify/core';
2
4
  import { ModelPredicateCreator } from '../predicates/index.mjs';
3
5
  import { QueryOne, OpType, isTargetNameAssociation } from '../types.mjs';
4
6
  import { isModelConstructor, validatePredicate, valuesEqual, STORAGE } from '../util.mjs';
5
7
  import { getIdentifierValue } from '../sync/utils.mjs';
6
8
  import getDefaultAdapter from './adapter/getDefaultAdapter/index.mjs';
7
- import { Mutex } from '@aws-amplify/core/internals/utils';
8
- import { ConsoleLogger } from '@aws-amplify/core';
9
9
 
10
10
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
11
11
  // SPDX-License-Identifier: Apache-2.0
@@ -39,9 +39,9 @@ class StorageClass {
39
39
  logger.debug('Starting Storage');
40
40
  let resolve;
41
41
  let reject;
42
- this.initialized = new Promise((res, rej) => {
43
- resolve = res;
44
- reject = rej;
42
+ this.initialized = new Promise((_resolve, _reject) => {
43
+ resolve = _resolve;
44
+ reject = _reject;
45
45
  });
46
46
  this.adapter.setUp(this.schema, this.namespaceResolver, this.modelInstanceCreator, this.getModelConstructorByModelName, this.sessionId).then(resolve, reject);
47
47
  await this.initialized;
@@ -118,7 +118,7 @@ class StorageClass {
118
118
  deleted = [deleted];
119
119
  }
120
120
  deleted.forEach(model => {
121
- const modelConstructor = Object.getPrototypeOf(model)
121
+ const resolvedModelConstructor = Object.getPrototypeOf(model)
122
122
  .constructor;
123
123
  let theCondition;
124
124
  if (!isModelConstructor(modelOrModelConstructor)) {
@@ -128,7 +128,7 @@ class StorageClass {
128
128
  : undefined;
129
129
  }
130
130
  this.pushStream.next({
131
- model: modelConstructor,
131
+ model: resolvedModelConstructor,
132
132
  opType: OpType.DELETE,
133
133
  element: model,
134
134
  mutator,
@@ -142,14 +142,14 @@ class StorageClass {
142
142
  if (!this.adapter) {
143
143
  throw new Error('Storage adapter is missing');
144
144
  }
145
- return await this.adapter.query(modelConstructor, predicate, pagination);
145
+ return this.adapter.query(modelConstructor, predicate, pagination);
146
146
  }
147
147
  async queryOne(modelConstructor, firstOrLast = QueryOne.FIRST) {
148
148
  await this.init();
149
149
  if (!this.adapter) {
150
150
  throw new Error('Storage adapter is missing');
151
151
  }
152
- return await this.adapter.queryOne(modelConstructor, firstOrLast);
152
+ return this.adapter.queryOne(modelConstructor, firstOrLast);
153
153
  }
154
154
  observe(modelConstructor, predicate, skipOwn) {
155
155
  const listenToAll = !modelConstructor;
@@ -209,7 +209,7 @@ class StorageClass {
209
209
  const [patches, source] = patchesTuple;
210
210
  const updatedElement = {};
211
211
  // extract array of updated fields from patches
212
- const updatedFields = (patches.map(patch => patch.path && patch.path[0]));
212
+ const updatedFields = patches.map(patch => patch.path && patch.path[0]);
213
213
  // check model def for association and replace with targetName if exists
214
214
  const modelConstructor = Object.getPrototypeOf(model)
215
215
  .constructor;
@@ -1 +1 @@
1
- {"version":3,"file":"storage.mjs","sources":["../../../src/storage/storage.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { filter, map, Subject } from 'rxjs';\nimport { ModelPredicateCreator } from '../predicates';\nimport { OpType, QueryOne, isTargetNameAssociation, } from '../types';\nimport { isModelConstructor, STORAGE, validatePredicate, valuesEqual, } from '../util';\nimport { getIdentifierValue } from '../sync/utils';\nimport getDefaultAdapter from './adapter/getDefaultAdapter';\nimport { Mutex } from '@aws-amplify/core/internals/utils';\nimport { ConsoleLogger } from '@aws-amplify/core';\nconst logger = new ConsoleLogger('DataStore');\nclass StorageClass {\n constructor(schema, namespaceResolver, getModelConstructorByModelName, modelInstanceCreator, adapter, sessionId) {\n this.schema = schema;\n this.namespaceResolver = namespaceResolver;\n this.getModelConstructorByModelName = getModelConstructorByModelName;\n this.modelInstanceCreator = modelInstanceCreator;\n this.adapter = adapter;\n this.sessionId = sessionId;\n this.adapter = this.adapter || getDefaultAdapter();\n this.pushStream = new Subject();\n }\n static getNamespace() {\n const namespace = {\n name: STORAGE,\n relationships: {},\n enums: {},\n models: {},\n nonModels: {},\n };\n return namespace;\n }\n async init() {\n if (this.initialized !== undefined) {\n await this.initialized;\n return;\n }\n logger.debug('Starting Storage');\n let resolve;\n let reject;\n this.initialized = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n this.adapter.setUp(this.schema, this.namespaceResolver, this.modelInstanceCreator, this.getModelConstructorByModelName, this.sessionId).then(resolve, reject);\n await this.initialized;\n }\n async save(model, condition, mutator, patchesTuple) {\n await this.init();\n if (!this.adapter) {\n throw new Error('Storage adapter is missing');\n }\n const result = await this.adapter.save(model, condition);\n result.forEach(r => {\n const [savedElement, opType] = r;\n // truthy when save is called by the Merger\n const syncResponse = !!mutator;\n let updateMutationInput;\n // don't attempt to calc mutation input when storage.save\n // is called by Merger, i.e., when processing an AppSync response\n if ((opType === OpType.UPDATE || opType === OpType.INSERT) &&\n !syncResponse) {\n //\n // TODO: LOOK!!!\n // the `model` used here is in effect regardless of what model\n // comes back from adapter.save().\n // Prior to fix, SQLite adapter had been returning two models\n // of different types, resulting in invalid outbox entries.\n //\n // the bug is essentially fixed in SQLite adapter.\n // leaving as-is, because it's currently unclear whether anything\n // depends on this remaining as-is.\n //\n updateMutationInput = this.getChangedFieldsInput(model, savedElement, patchesTuple);\n // // an update without changed user fields\n // => don't create mutationEvent\n if (updateMutationInput === null) {\n return result;\n }\n }\n const element = updateMutationInput || savedElement;\n const modelConstructor = Object.getPrototypeOf(savedElement)\n .constructor;\n this.pushStream.next({\n model: modelConstructor,\n opType,\n element,\n mutator,\n condition: (condition &&\n ModelPredicateCreator.getPredicates(condition, false)) ||\n null,\n savedElement,\n });\n });\n return result;\n }\n async delete(modelOrModelConstructor, condition, mutator) {\n await this.init();\n if (!this.adapter) {\n throw new Error('Storage adapter is missing');\n }\n let models;\n let deleted;\n [models, deleted] = await this.adapter.delete(modelOrModelConstructor, condition);\n const modelConstructor = isModelConstructor(modelOrModelConstructor)\n ? modelOrModelConstructor\n : Object.getPrototypeOf(modelOrModelConstructor || {})\n .constructor;\n const namespaceName = this.namespaceResolver(modelConstructor);\n const modelDefinition = this.schema.namespaces[namespaceName].models[modelConstructor.name];\n const modelIds = new Set(models.map(model => {\n const modelId = getIdentifierValue(modelDefinition, model);\n return modelId;\n }));\n if (!isModelConstructor(modelOrModelConstructor) &&\n !Array.isArray(deleted)) {\n deleted = [deleted];\n }\n deleted.forEach(model => {\n const modelConstructor = Object.getPrototypeOf(model)\n .constructor;\n let theCondition;\n if (!isModelConstructor(modelOrModelConstructor)) {\n const modelId = getIdentifierValue(modelDefinition, model);\n theCondition = modelIds.has(modelId)\n ? ModelPredicateCreator.getPredicates(condition, false)\n : undefined;\n }\n this.pushStream.next({\n model: modelConstructor,\n opType: OpType.DELETE,\n element: model,\n mutator,\n condition: theCondition || null,\n });\n });\n return [models, deleted];\n }\n async query(modelConstructor, predicate, pagination) {\n await this.init();\n if (!this.adapter) {\n throw new Error('Storage adapter is missing');\n }\n return await this.adapter.query(modelConstructor, predicate, pagination);\n }\n async queryOne(modelConstructor, firstOrLast = QueryOne.FIRST) {\n await this.init();\n if (!this.adapter) {\n throw new Error('Storage adapter is missing');\n }\n return await this.adapter.queryOne(modelConstructor, firstOrLast);\n }\n observe(modelConstructor, predicate, skipOwn) {\n const listenToAll = !modelConstructor;\n const { predicates, type } = (predicate && ModelPredicateCreator.getPredicates(predicate, false)) ||\n {};\n let result = this.pushStream\n .pipe(filter(({ mutator }) => {\n return !skipOwn || mutator !== skipOwn;\n }))\n .pipe(map(({ mutator: _mutator, ...message }) => message));\n if (!listenToAll) {\n result = result.pipe(filter(({ model, element }) => {\n if (modelConstructor !== model) {\n return false;\n }\n if (!!predicates && !!type) {\n return validatePredicate(element, type, predicates);\n }\n return true;\n }));\n }\n return result;\n }\n async clear(completeObservable = true) {\n this.initialized = undefined;\n if (!this.adapter) {\n throw new Error('Storage adapter is missing');\n }\n await this.adapter.clear();\n if (completeObservable) {\n this.pushStream.complete();\n }\n }\n async batchSave(modelConstructor, items, mutator) {\n await this.init();\n if (!this.adapter) {\n throw new Error('Storage adapter is missing');\n }\n const result = await this.adapter.batchSave(modelConstructor, items);\n result.forEach(([element, opType]) => {\n this.pushStream.next({\n model: modelConstructor,\n opType,\n element,\n mutator,\n condition: null,\n });\n });\n return result;\n }\n // returns null if no user fields were changed (determined by value comparison)\n getChangedFieldsInput(model, originalElement, patchesTuple) {\n const containsPatches = patchesTuple && patchesTuple.length;\n if (!containsPatches) {\n return null;\n }\n const [patches, source] = patchesTuple;\n const updatedElement = {};\n // extract array of updated fields from patches\n const updatedFields = (patches.map(patch => patch.path && patch.path[0]));\n // check model def for association and replace with targetName if exists\n const modelConstructor = Object.getPrototypeOf(model)\n .constructor;\n const namespace = this.namespaceResolver(modelConstructor);\n const { fields } = this.schema.namespaces[namespace].models[modelConstructor.name];\n const { primaryKey, compositeKeys = [] } = this.schema.namespaces[namespace].keys?.[modelConstructor.name] || {};\n // set original values for these fields\n updatedFields.forEach((field) => {\n const targetNames = isTargetNameAssociation(fields[field]?.association);\n if (Array.isArray(targetNames)) {\n // if field refers to a belongsTo relation, use the target field instead\n for (const targetName of targetNames) {\n // check field values by value. Ignore unchanged fields\n if (!valuesEqual(source[targetName], originalElement[targetName])) {\n // if the field was updated to 'undefined', replace with 'null' for compatibility with JSON and GraphQL\n updatedElement[targetName] =\n originalElement[targetName] === undefined\n ? null\n : originalElement[targetName];\n for (const fieldSet of compositeKeys) {\n // include all of the fields that comprise the composite key\n if (fieldSet.has(targetName)) {\n for (const compositeField of fieldSet) {\n updatedElement[compositeField] =\n originalElement[compositeField];\n }\n }\n }\n }\n }\n }\n else {\n // Backwards compatibility pre-CPK\n // if field refers to a belongsTo relation, use the target field instead\n const key = targetNames || field;\n // check field values by value. Ignore unchanged fields\n if (!valuesEqual(source[key], originalElement[key])) {\n // if the field was updated to 'undefined', replace with 'null' for compatibility with JSON and GraphQL\n updatedElement[key] =\n originalElement[key] === undefined ? null : originalElement[key];\n for (const fieldSet of compositeKeys) {\n // include all of the fields that comprise the composite key\n if (fieldSet.has(key)) {\n for (const compositeField of fieldSet) {\n updatedElement[compositeField] =\n originalElement[compositeField];\n }\n }\n }\n }\n }\n });\n // Exit early when there are no changes introduced in the update mutation\n if (Object.keys(updatedElement).length === 0) {\n return null;\n }\n // include field(s) from custom PK if one is specified for the model\n if (primaryKey && primaryKey.length) {\n for (const pkField of primaryKey) {\n updatedElement[pkField] = originalElement[pkField];\n }\n }\n const { id, _version, _lastChangedAt, _deleted } = originalElement;\n // For update mutations we only want to send fields with changes\n // and the required internal fields\n return {\n ...updatedElement,\n id,\n _version,\n _lastChangedAt,\n _deleted,\n };\n }\n}\nclass ExclusiveStorage {\n constructor(schema, namespaceResolver, getModelConstructorByModelName, modelInstanceCreator, adapter, sessionId) {\n this.mutex = new Mutex();\n this.storage = new StorageClass(schema, namespaceResolver, getModelConstructorByModelName, modelInstanceCreator, adapter, sessionId);\n }\n runExclusive(fn) {\n return this.mutex.runExclusive(fn.bind(this, this.storage));\n }\n async save(model, condition, mutator, patchesTuple) {\n return this.runExclusive(storage => storage.save(model, condition, mutator, patchesTuple));\n }\n async delete(modelOrModelConstructor, condition, mutator) {\n return this.runExclusive(storage => {\n if (isModelConstructor(modelOrModelConstructor)) {\n const modelConstructor = modelOrModelConstructor;\n return storage.delete(modelConstructor, condition, mutator);\n }\n else {\n const model = modelOrModelConstructor;\n return storage.delete(model, condition, mutator);\n }\n });\n }\n async query(modelConstructor, predicate, pagination) {\n return this.runExclusive(storage => storage.query(modelConstructor, predicate, pagination));\n }\n async queryOne(modelConstructor, firstOrLast = QueryOne.FIRST) {\n return this.runExclusive(storage => storage.queryOne(modelConstructor, firstOrLast));\n }\n static getNamespace() {\n return StorageClass.getNamespace();\n }\n observe(modelConstructor, predicate, skipOwn) {\n return this.storage.observe(modelConstructor, predicate, skipOwn);\n }\n async clear() {\n await this.runExclusive(storage => storage.clear());\n }\n batchSave(modelConstructor, items) {\n return this.storage.batchSave(modelConstructor, items);\n }\n async init() {\n return this.storage.init();\n }\n}\nexport { ExclusiveStorage };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.mjs","sources":["../../../src/storage/storage.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Subject, filter, map } from 'rxjs';\nimport { Mutex } from '@aws-amplify/core/internals/utils';\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { ModelPredicateCreator } from '../predicates';\nimport { OpType, QueryOne, isTargetNameAssociation, } from '../types';\nimport { STORAGE, isModelConstructor, validatePredicate, valuesEqual, } from '../util';\nimport { getIdentifierValue } from '../sync/utils';\nimport getDefaultAdapter from './adapter/getDefaultAdapter';\nconst logger = new ConsoleLogger('DataStore');\nclass StorageClass {\n constructor(schema, namespaceResolver, getModelConstructorByModelName, modelInstanceCreator, adapter, sessionId) {\n this.schema = schema;\n this.namespaceResolver = namespaceResolver;\n this.getModelConstructorByModelName = getModelConstructorByModelName;\n this.modelInstanceCreator = modelInstanceCreator;\n this.adapter = adapter;\n this.sessionId = sessionId;\n this.adapter = this.adapter || getDefaultAdapter();\n this.pushStream = new Subject();\n }\n static getNamespace() {\n const namespace = {\n name: STORAGE,\n relationships: {},\n enums: {},\n models: {},\n nonModels: {},\n };\n return namespace;\n }\n async init() {\n if (this.initialized !== undefined) {\n await this.initialized;\n return;\n }\n logger.debug('Starting Storage');\n let resolve;\n let reject;\n this.initialized = new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n this.adapter.setUp(this.schema, this.namespaceResolver, this.modelInstanceCreator, this.getModelConstructorByModelName, this.sessionId).then(resolve, reject);\n await this.initialized;\n }\n async save(model, condition, mutator, patchesTuple) {\n await this.init();\n if (!this.adapter) {\n throw new Error('Storage adapter is missing');\n }\n const result = await this.adapter.save(model, condition);\n result.forEach(r => {\n const [savedElement, opType] = r;\n // truthy when save is called by the Merger\n const syncResponse = !!mutator;\n let updateMutationInput;\n // don't attempt to calc mutation input when storage.save\n // is called by Merger, i.e., when processing an AppSync response\n if ((opType === OpType.UPDATE || opType === OpType.INSERT) &&\n !syncResponse) {\n //\n // TODO: LOOK!!!\n // the `model` used here is in effect regardless of what model\n // comes back from adapter.save().\n // Prior to fix, SQLite adapter had been returning two models\n // of different types, resulting in invalid outbox entries.\n //\n // the bug is essentially fixed in SQLite adapter.\n // leaving as-is, because it's currently unclear whether anything\n // depends on this remaining as-is.\n //\n updateMutationInput = this.getChangedFieldsInput(model, savedElement, patchesTuple);\n // // an update without changed user fields\n // => don't create mutationEvent\n if (updateMutationInput === null) {\n return result;\n }\n }\n const element = updateMutationInput || savedElement;\n const modelConstructor = Object.getPrototypeOf(savedElement)\n .constructor;\n this.pushStream.next({\n model: modelConstructor,\n opType,\n element,\n mutator,\n condition: (condition &&\n ModelPredicateCreator.getPredicates(condition, false)) ||\n null,\n savedElement,\n });\n });\n return result;\n }\n async delete(modelOrModelConstructor, condition, mutator) {\n await this.init();\n if (!this.adapter) {\n throw new Error('Storage adapter is missing');\n }\n let models;\n let deleted;\n [models, deleted] = await this.adapter.delete(modelOrModelConstructor, condition);\n const modelConstructor = isModelConstructor(modelOrModelConstructor)\n ? modelOrModelConstructor\n : Object.getPrototypeOf(modelOrModelConstructor || {})\n .constructor;\n const namespaceName = this.namespaceResolver(modelConstructor);\n const modelDefinition = this.schema.namespaces[namespaceName].models[modelConstructor.name];\n const modelIds = new Set(models.map(model => {\n const modelId = getIdentifierValue(modelDefinition, model);\n return modelId;\n }));\n if (!isModelConstructor(modelOrModelConstructor) &&\n !Array.isArray(deleted)) {\n deleted = [deleted];\n }\n deleted.forEach(model => {\n const resolvedModelConstructor = Object.getPrototypeOf(model)\n .constructor;\n let theCondition;\n if (!isModelConstructor(modelOrModelConstructor)) {\n const modelId = getIdentifierValue(modelDefinition, model);\n theCondition = modelIds.has(modelId)\n ? ModelPredicateCreator.getPredicates(condition, false)\n : undefined;\n }\n this.pushStream.next({\n model: resolvedModelConstructor,\n opType: OpType.DELETE,\n element: model,\n mutator,\n condition: theCondition || null,\n });\n });\n return [models, deleted];\n }\n async query(modelConstructor, predicate, pagination) {\n await this.init();\n if (!this.adapter) {\n throw new Error('Storage adapter is missing');\n }\n return this.adapter.query(modelConstructor, predicate, pagination);\n }\n async queryOne(modelConstructor, firstOrLast = QueryOne.FIRST) {\n await this.init();\n if (!this.adapter) {\n throw new Error('Storage adapter is missing');\n }\n return this.adapter.queryOne(modelConstructor, firstOrLast);\n }\n observe(modelConstructor, predicate, skipOwn) {\n const listenToAll = !modelConstructor;\n const { predicates, type } = (predicate && ModelPredicateCreator.getPredicates(predicate, false)) ||\n {};\n let result = this.pushStream\n .pipe(filter(({ mutator }) => {\n return !skipOwn || mutator !== skipOwn;\n }))\n .pipe(map(({ mutator: _mutator, ...message }) => message));\n if (!listenToAll) {\n result = result.pipe(filter(({ model, element }) => {\n if (modelConstructor !== model) {\n return false;\n }\n if (!!predicates && !!type) {\n return validatePredicate(element, type, predicates);\n }\n return true;\n }));\n }\n return result;\n }\n async clear(completeObservable = true) {\n this.initialized = undefined;\n if (!this.adapter) {\n throw new Error('Storage adapter is missing');\n }\n await this.adapter.clear();\n if (completeObservable) {\n this.pushStream.complete();\n }\n }\n async batchSave(modelConstructor, items, mutator) {\n await this.init();\n if (!this.adapter) {\n throw new Error('Storage adapter is missing');\n }\n const result = await this.adapter.batchSave(modelConstructor, items);\n result.forEach(([element, opType]) => {\n this.pushStream.next({\n model: modelConstructor,\n opType,\n element,\n mutator,\n condition: null,\n });\n });\n return result;\n }\n // returns null if no user fields were changed (determined by value comparison)\n getChangedFieldsInput(model, originalElement, patchesTuple) {\n const containsPatches = patchesTuple && patchesTuple.length;\n if (!containsPatches) {\n return null;\n }\n const [patches, source] = patchesTuple;\n const updatedElement = {};\n // extract array of updated fields from patches\n const updatedFields = patches.map(patch => patch.path && patch.path[0]);\n // check model def for association and replace with targetName if exists\n const modelConstructor = Object.getPrototypeOf(model)\n .constructor;\n const namespace = this.namespaceResolver(modelConstructor);\n const { fields } = this.schema.namespaces[namespace].models[modelConstructor.name];\n const { primaryKey, compositeKeys = [] } = this.schema.namespaces[namespace].keys?.[modelConstructor.name] || {};\n // set original values for these fields\n updatedFields.forEach((field) => {\n const targetNames = isTargetNameAssociation(fields[field]?.association);\n if (Array.isArray(targetNames)) {\n // if field refers to a belongsTo relation, use the target field instead\n for (const targetName of targetNames) {\n // check field values by value. Ignore unchanged fields\n if (!valuesEqual(source[targetName], originalElement[targetName])) {\n // if the field was updated to 'undefined', replace with 'null' for compatibility with JSON and GraphQL\n updatedElement[targetName] =\n originalElement[targetName] === undefined\n ? null\n : originalElement[targetName];\n for (const fieldSet of compositeKeys) {\n // include all of the fields that comprise the composite key\n if (fieldSet.has(targetName)) {\n for (const compositeField of fieldSet) {\n updatedElement[compositeField] =\n originalElement[compositeField];\n }\n }\n }\n }\n }\n }\n else {\n // Backwards compatibility pre-CPK\n // if field refers to a belongsTo relation, use the target field instead\n const key = targetNames || field;\n // check field values by value. Ignore unchanged fields\n if (!valuesEqual(source[key], originalElement[key])) {\n // if the field was updated to 'undefined', replace with 'null' for compatibility with JSON and GraphQL\n updatedElement[key] =\n originalElement[key] === undefined ? null : originalElement[key];\n for (const fieldSet of compositeKeys) {\n // include all of the fields that comprise the composite key\n if (fieldSet.has(key)) {\n for (const compositeField of fieldSet) {\n updatedElement[compositeField] =\n originalElement[compositeField];\n }\n }\n }\n }\n }\n });\n // Exit early when there are no changes introduced in the update mutation\n if (Object.keys(updatedElement).length === 0) {\n return null;\n }\n // include field(s) from custom PK if one is specified for the model\n if (primaryKey && primaryKey.length) {\n for (const pkField of primaryKey) {\n updatedElement[pkField] = originalElement[pkField];\n }\n }\n const { id, _version, _lastChangedAt, _deleted } = originalElement;\n // For update mutations we only want to send fields with changes\n // and the required internal fields\n return {\n ...updatedElement,\n id,\n _version,\n _lastChangedAt,\n _deleted,\n };\n }\n}\nclass ExclusiveStorage {\n constructor(schema, namespaceResolver, getModelConstructorByModelName, modelInstanceCreator, adapter, sessionId) {\n this.mutex = new Mutex();\n this.storage = new StorageClass(schema, namespaceResolver, getModelConstructorByModelName, modelInstanceCreator, adapter, sessionId);\n }\n runExclusive(fn) {\n return this.mutex.runExclusive(fn.bind(this, this.storage));\n }\n async save(model, condition, mutator, patchesTuple) {\n return this.runExclusive(storage => storage.save(model, condition, mutator, patchesTuple));\n }\n async delete(modelOrModelConstructor, condition, mutator) {\n return this.runExclusive(storage => {\n if (isModelConstructor(modelOrModelConstructor)) {\n const modelConstructor = modelOrModelConstructor;\n return storage.delete(modelConstructor, condition, mutator);\n }\n else {\n const model = modelOrModelConstructor;\n return storage.delete(model, condition, mutator);\n }\n });\n }\n async query(modelConstructor, predicate, pagination) {\n return this.runExclusive(storage => storage.query(modelConstructor, predicate, pagination));\n }\n async queryOne(modelConstructor, firstOrLast = QueryOne.FIRST) {\n return this.runExclusive(storage => storage.queryOne(modelConstructor, firstOrLast));\n }\n static getNamespace() {\n return StorageClass.getNamespace();\n }\n observe(modelConstructor, predicate, skipOwn) {\n return this.storage.observe(modelConstructor, predicate, skipOwn);\n }\n async clear() {\n await this.runExclusive(storage => storage.clear());\n }\n batchSave(modelConstructor, items) {\n return this.storage.batchSave(modelConstructor, items);\n }\n async init() {\n return this.storage.init();\n }\n}\nexport { ExclusiveStorage };\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { Observable } from 'rxjs';
2
- type ConnectionStatus = {
2
+ interface ConnectionStatus {
3
3
  online: boolean;
4
- };
4
+ }
5
5
  export default class DataStoreConnectivity {
6
6
  private connectionStatus;
7
7
  private observer;
@@ -1,10 +1,8 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { ReachabilityMonitor } from './datastoreReachability/index.mjs';
3
- import { ConsoleLogger } from '@aws-amplify/core';
4
3
 
5
4
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
6
5
  // SPDX-License-Identifier: Apache-2.0
7
- new ConsoleLogger('DataStore');
8
6
  const RECONNECTING_IN = 5000; // 5s this may be configurable in the future
9
7
  class DataStoreConnectivity {
10
8
  constructor() {
@@ -39,7 +37,6 @@ class DataStoreConnectivity {
39
37
  // for consistency with other background processors.
40
38
  async stop() {
41
39
  this.unsubscribe();
42
- return;
43
40
  }
44
41
  socketDisconnected() {
45
42
  if (this.observer && typeof this.observer.next === 'function') {
@@ -1 +1 @@
1
- {"version":3,"file":"datastoreConnectivity.mjs","sources":["../../../src/sync/datastoreConnectivity.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Observable } from 'rxjs';\nimport { ReachabilityMonitor } from './datastoreReachability';\nimport { ConsoleLogger } from '@aws-amplify/core';\nconst logger = new ConsoleLogger('DataStore');\nconst RECONNECTING_IN = 5000; // 5s this may be configurable in the future\nexport default class DataStoreConnectivity {\n constructor() {\n this.connectionStatus = {\n online: false,\n };\n }\n status() {\n if (this.observer) {\n throw new Error('Subscriber already exists');\n }\n return new Observable(observer => {\n this.observer = observer;\n // Will be used to forward socket connection changes, enhancing Reachability\n this.subscription = ReachabilityMonitor.subscribe(({ online }) => {\n this.connectionStatus.online = online;\n const observerResult = { ...this.connectionStatus }; // copyOf status\n observer.next(observerResult);\n });\n return () => {\n clearTimeout(this.timeout);\n this.unsubscribe();\n };\n });\n }\n unsubscribe() {\n if (this.subscription) {\n clearTimeout(this.timeout);\n this.subscription.unsubscribe();\n }\n }\n // for consistency with other background processors.\n async stop() {\n this.unsubscribe();\n return;\n }\n socketDisconnected() {\n if (this.observer && typeof this.observer.next === 'function') {\n this.observer.next({ online: false }); // Notify network issue from the socket\n this.timeout = setTimeout(() => {\n const observerResult = { ...this.connectionStatus }; // copyOf status\n this.observer.next(observerResult);\n }, RECONNECTING_IN); // giving time for socket cleanup and network status stabilization\n }\n }\n}\n"],"names":[],"mappings":";;;;AAAA;AACA;AAIe,IAAI,aAAa,CAAC,WAAW,EAAE;AAC9C,MAAM,eAAe,GAAG,IAAI,CAAC;AACd,MAAM,qBAAqB,CAAC;AAC3C,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,gBAAgB,GAAG;AAChC,YAAY,MAAM,EAAE,KAAK;AACzB,SAAS,CAAC;AACV,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAY,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AACzD,SAAS;AACT,QAAQ,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAI;AAC1C,YAAY,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACrC;AACA,YAAY,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK;AAC9E,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC;AACtD,gBAAgB,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACpE,gBAAgB,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC9C,aAAa,CAAC,CAAC;AACf,YAAY,OAAO,MAAM;AACzB,gBAAgB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3C,gBAAgB,IAAI,CAAC,WAAW,EAAE,CAAC;AACnC,aAAa,CAAC;AACd,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAY,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvC,YAAY,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AAC5C,SAAS;AACT,KAAK;AACL;AACA,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3B,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE;AACvE,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AAClD,YAAY,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM;AAC5C,gBAAgB,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACpE,gBAAgB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACnD,aAAa,EAAE,eAAe,CAAC,CAAC;AAChC,SAAS;AACT,KAAK;AACL;;;;"}
1
+ {"version":3,"file":"datastoreConnectivity.mjs","sources":["../../../src/sync/datastoreConnectivity.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Observable } from 'rxjs';\nimport { ReachabilityMonitor } from './datastoreReachability';\nconst RECONNECTING_IN = 5000; // 5s this may be configurable in the future\nexport default class DataStoreConnectivity {\n constructor() {\n this.connectionStatus = {\n online: false,\n };\n }\n status() {\n if (this.observer) {\n throw new Error('Subscriber already exists');\n }\n return new Observable(observer => {\n this.observer = observer;\n // Will be used to forward socket connection changes, enhancing Reachability\n this.subscription = ReachabilityMonitor.subscribe(({ online }) => {\n this.connectionStatus.online = online;\n const observerResult = { ...this.connectionStatus }; // copyOf status\n observer.next(observerResult);\n });\n return () => {\n clearTimeout(this.timeout);\n this.unsubscribe();\n };\n });\n }\n unsubscribe() {\n if (this.subscription) {\n clearTimeout(this.timeout);\n this.subscription.unsubscribe();\n }\n }\n // for consistency with other background processors.\n async stop() {\n this.unsubscribe();\n }\n socketDisconnected() {\n if (this.observer && typeof this.observer.next === 'function') {\n this.observer.next({ online: false }); // Notify network issue from the socket\n this.timeout = setTimeout(() => {\n const observerResult = { ...this.connectionStatus }; // copyOf status\n this.observer.next(observerResult);\n }, RECONNECTING_IN); // giving time for socket cleanup and network status stabilization\n }\n }\n}\n"],"names":[],"mappings":";;;AAAA;AACA;AAGA,MAAM,eAAe,GAAG,IAAI,CAAC;AACd,MAAM,qBAAqB,CAAC;AAC3C,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,gBAAgB,GAAG;AAChC,YAAY,MAAM,EAAE,KAAK;AACzB,SAAS,CAAC;AACV,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAY,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AACzD,SAAS;AACT,QAAQ,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAI;AAC1C,YAAY,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACrC;AACA,YAAY,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK;AAC9E,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC;AACtD,gBAAgB,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACpE,gBAAgB,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC9C,aAAa,CAAC,CAAC;AACf,YAAY,OAAO,MAAM;AACzB,gBAAgB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3C,gBAAgB,IAAI,CAAC,WAAW,EAAE,CAAC;AACnC,aAAa,CAAC;AACd,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAY,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvC,YAAY,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AAC5C,SAAS;AACT,KAAK;AACL;AACA,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3B,KAAK;AACL,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE;AACvE,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AAClD,YAAY,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM;AAC5C,gBAAgB,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACpE,gBAAgB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACnD,aAAa,EAAE,eAAe,CAAC,CAAC;AAChC,SAAS;AACT,KAAK;AACL;;;;"}
@@ -1,13 +1,13 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { ModelInstanceCreator } from '../datastore/datastore';
3
3
  import { ExclusiveStorage as Storage } from '../storage/storage';
4
- import { ConflictHandler, ControlMessageType, ErrorHandler, InternalSchema, ModelInit, MutableModel, NamespaceResolver, PersistentModelConstructor, SchemaModel, SchemaNamespace, TypeConstructorMap, ModelPredicate, AuthModeStrategy, ManagedIdentifier, OptionallyManagedIdentifier, AmplifyContext } from '../types';
4
+ import { AmplifyContext, AuthModeStrategy, ConflictHandler, ControlMessageType, ErrorHandler, InternalSchema, ManagedIdentifier, ModelInit, ModelPredicate, MutableModel, NamespaceResolver, OptionallyManagedIdentifier, PersistentModelConstructor, SchemaModel, SchemaNamespace, TypeConstructorMap } from '../types';
5
5
  import type { __modelMeta__ } from '../types';
6
6
  import DataStoreConnectivity from './datastoreConnectivity';
7
7
  import { TransformerMutationType } from './utils';
8
- type StartParams = {
8
+ interface StartParams {
9
9
  fullSyncInterval: number;
10
- };
10
+ }
11
11
  export declare class MutationEvent {
12
12
  readonly [__modelMeta__]: {
13
13
  identifier: OptionallyManagedIdentifier<MutationEvent, 'id'>;
@@ -1,6 +1,7 @@
1
1
  import { BackgroundProcessManager } from '@aws-amplify/core/internals/utils';
2
2
  import { ConsoleLogger, Hub } from '@aws-amplify/core';
3
3
  import { Observable, filter, of } from 'rxjs';
4
+ import { CONTROL_MSG as CONTROL_MSG$1, CONNECTION_STATE_CHANGE, ConnectionState } from '@aws-amplify/api-graphql';
4
5
  import { ModelPredicateCreator } from '../predicates/index.mjs';
5
6
  import { OpType } from '../types.mjs';
6
7
  import { getNow, USER, SYNC } from '../util.mjs';
@@ -11,7 +12,6 @@ import { MutationProcessor } from './processors/mutation.mjs';
11
12
  import { SubscriptionProcessor, CONTROL_MSG } from './processors/subscription.mjs';
12
13
  import { SyncProcessor } from './processors/sync.mjs';
13
14
  import { predicateToGraphQLCondition, createMutationInstanceFromModelOperation, getIdentifierValue } from './utils.mjs';
14
- import { CONTROL_MSG as CONTROL_MSG$1, CONNECTION_STATE_CHANGE, ConnectionState } from '@aws-amplify/api-graphql';
15
15
 
16
16
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
17
17
  // SPDX-License-Identifier: Apache-2.0
@@ -53,12 +53,13 @@ class SyncEngine {
53
53
  this.waitForSleepState = new Promise(resolve => {
54
54
  this.syncQueriesObservableStartSleeping = resolve;
55
55
  });
56
- const MutationEvent = this.modelClasses['MutationEvent'];
57
- this.outbox = new MutationEventOutbox(this.schema, MutationEvent, modelInstanceCreator, ownSymbol);
56
+ const MutationEventCtor = this.modelClasses
57
+ .MutationEvent;
58
+ this.outbox = new MutationEventOutbox(this.schema, MutationEventCtor, modelInstanceCreator, ownSymbol);
58
59
  this.modelMerger = new ModelMerger(this.outbox, ownSymbol);
59
60
  this.syncQueriesProcessor = new SyncProcessor(this.schema, this.syncPredicates, this.amplifyConfig, this.authModeStrategy, errorHandler, this.amplifyContext);
60
61
  this.subscriptionsProcessor = new SubscriptionProcessor(this.schema, this.syncPredicates, this.amplifyConfig, this.authModeStrategy, errorHandler, this.amplifyContext);
61
- this.mutationsProcessor = new MutationProcessor(this.schema, this.storage, this.userModelClasses, this.outbox, this.modelInstanceCreator, MutationEvent, this.amplifyConfig, this.authModeStrategy, errorHandler, conflictHandler, this.amplifyContext);
62
+ this.mutationsProcessor = new MutationProcessor(this.schema, this.storage, this.userModelClasses, this.outbox, this.modelInstanceCreator, MutationEventCtor, this.amplifyConfig, this.authModeStrategy, errorHandler, conflictHandler, this.amplifyContext);
62
63
  this.datastoreConnectivity =
63
64
  this.connectivityMonitor || new DataStoreConnectivity();
64
65
  }
@@ -76,7 +77,9 @@ class SyncEngine {
76
77
  }
77
78
  // this is awaited at the bottom. so, we don't need to register
78
79
  // this explicitly with the context. it's already contained.
79
- const startPromise = new Promise((doneStarting, failedStarting) => {
80
+ const startPromise = new Promise((resolve, reject) => {
81
+ const doneStarting = resolve;
82
+ const failedStarting = reject;
80
83
  this.datastoreConnectivity.status().subscribe(async ({ online }) => this.runningProcesses.isOpen &&
81
84
  this.runningProcesses.add(async (onTerminate) => {
82
85
  // From offline to online
@@ -88,24 +91,20 @@ class SyncEngine {
88
91
  active: this.online,
89
92
  },
90
93
  });
91
- let ctlSubsObservable;
92
- let dataSubsObservable;
93
- this.stopDisruptionListener =
94
- this.startDisruptionListener();
95
- //#region GraphQL Subscriptions
96
- [ctlSubsObservable, dataSubsObservable] =
97
- this.subscriptionsProcessor.start();
94
+ this.stopDisruptionListener = this.startDisruptionListener();
95
+ // #region GraphQL Subscriptions
96
+ const [ctlSubsObservable, dataSubsObservable] = this.subscriptionsProcessor.start();
98
97
  try {
99
- await new Promise((resolve, reject) => {
100
- onTerminate.then(reject);
98
+ await new Promise((_resolve, _reject) => {
99
+ onTerminate.then(_reject);
101
100
  const ctlSubsSubscription = ctlSubsObservable.subscribe({
102
101
  next: msg => {
103
102
  if (msg === CONTROL_MSG.CONNECTED) {
104
- resolve();
103
+ _resolve();
105
104
  }
106
105
  },
107
106
  error: err => {
108
- reject(err);
107
+ _reject(err);
109
108
  const handleDisconnect = this.disconnectionHandler();
110
109
  handleDisconnect(err);
111
110
  },
@@ -122,24 +121,24 @@ class SyncEngine {
122
121
  observer.next({
123
122
  type: ControlMessage.SYNC_ENGINE_SUBSCRIPTIONS_ESTABLISHED,
124
123
  });
125
- //#endregion
126
- //#region Base & Sync queries
124
+ // #endregion
125
+ // #region Base & Sync queries
127
126
  try {
128
- await new Promise((resolve, reject) => {
127
+ await new Promise((_resolve, _reject) => {
129
128
  const syncQuerySubscription = this.syncQueriesObservable().subscribe({
130
129
  next: message => {
131
130
  const { type } = message;
132
131
  if (type ===
133
132
  ControlMessage.SYNC_ENGINE_SYNC_QUERIES_READY) {
134
- resolve();
133
+ _resolve();
135
134
  }
136
135
  observer.next(message);
137
136
  },
138
137
  complete: () => {
139
- resolve();
138
+ _resolve();
140
139
  },
141
140
  error: error => {
142
- reject(error);
141
+ _reject(error);
143
142
  },
144
143
  });
145
144
  if (syncQuerySubscription) {
@@ -152,8 +151,8 @@ class SyncEngine {
152
151
  failedStarting();
153
152
  return;
154
153
  }
155
- //#endregion
156
- //#region process mutations (outbox)
154
+ // #endregion
155
+ // #region process mutations (outbox)
157
156
  subscriptions.push(this.mutationsProcessor
158
157
  .start()
159
158
  .subscribe(({ modelDefinition, model: item, hasMore }) => this.runningProcesses.add(async () => {
@@ -174,14 +173,14 @@ class SyncEngine {
174
173
  },
175
174
  });
176
175
  }, 'mutation processor event')));
177
- //#endregion
178
- //#region Merge subscriptions buffer
176
+ // #endregion
177
+ // #region Merge subscriptions buffer
179
178
  subscriptions.push(dataSubsObservable.subscribe(([_transformerMutationType, modelDefinition, item]) => this.runningProcesses.add(async () => {
180
179
  const modelConstructor = this.userModelClasses[modelDefinition.name];
181
180
  const model = this.modelInstanceCreator(modelConstructor, item);
182
181
  await this.storage.runExclusive(storage => this.modelMerger.merge(storage, model, modelDefinition));
183
182
  }, 'subscription dataSubsObservable event')));
184
- //#endregion
183
+ // #endregion
185
184
  }
186
185
  else if (!online) {
187
186
  this.online = online;
@@ -191,7 +190,9 @@ class SyncEngine {
191
190
  active: this.online,
192
191
  },
193
192
  });
194
- subscriptions.forEach(sub => sub.unsubscribe());
193
+ subscriptions.forEach(sub => {
194
+ sub.unsubscribe();
195
+ });
195
196
  subscriptions = [];
196
197
  }
197
198
  doneStarting();
@@ -206,7 +207,8 @@ class SyncEngine {
206
207
  .subscribe({
207
208
  next: async ({ opType, model, element, condition }) => this.runningProcesses.add(async () => {
208
209
  const namespace = this.schema.namespaces[this.namespaceResolver(model)];
209
- const MutationEventConstructor = this.modelClasses['MutationEvent'];
210
+ const MutationEventConstructor = this.modelClasses
211
+ .MutationEvent;
210
212
  const modelDefinition = this.getModelDefinition(model);
211
213
  const graphQLCondition = predicateToGraphQLCondition(condition, modelDefinition);
212
214
  const mutationEvent = createMutationInstanceFromModelOperation(namespace.relationships, this.getModelDefinition(model), opType, model, element, graphQLCondition, MutationEventConstructor, this.modelInstanceCreator);
@@ -249,7 +251,7 @@ class SyncEngine {
249
251
  });
250
252
  }
251
253
  async getModelsMetadataWithNextFullSync(currentTimeStamp) {
252
- const modelLastSync = new Map((await this.runningProcesses.add(() => this.getModelsMetadata(), 'sync/index getModelsMetadataWithNextFullSync')).map(({ namespace, model, lastSync, lastFullSync, fullSyncInterval, lastSyncPredicate, }) => {
254
+ const modelLastSync = new Map((await this.runningProcesses.add(() => this.getModelsMetadata(), 'sync/index getModelsMetadataWithNextFullSync')).map(({ namespace, model, lastSync, lastFullSync, fullSyncInterval }) => {
253
255
  const nextFullSync = lastFullSync + fullSyncInterval;
254
256
  const syncFrom = !lastFullSync || nextFullSync < currentTimeStamp
255
257
  ? 0 // perform full sync if expired
@@ -279,10 +281,12 @@ class SyncEngine {
279
281
  let start;
280
282
  let syncDuration;
281
283
  let lastStartedAt;
282
- await new Promise((resolve, reject) => {
284
+ await new Promise((resolve, _reject) => {
283
285
  if (!this.runningProcesses.isOpen)
284
286
  resolve();
285
- onTerminate.then(() => resolve());
287
+ onTerminate.then(() => {
288
+ resolve();
289
+ });
286
290
  syncQueriesSubscription = this.syncQueriesProcessor
287
291
  .start(modelLastSync)
288
292
  .subscribe({
@@ -342,7 +346,7 @@ class SyncEngine {
342
346
  });
343
347
  if (done) {
344
348
  const { name: modelName } = modelDefinition;
345
- //#region update last sync for type
349
+ // #region update last sync for type
346
350
  let modelMetadata = await this.getModelMetadata(namespace, modelName);
347
351
  const { lastFullSync, fullSyncInterval } = modelMetadata;
348
352
  syncInterval = fullSyncInterval;
@@ -358,7 +362,7 @@ class SyncEngine {
358
362
  : modelMetadata.lastFullSync;
359
363
  });
360
364
  await this.storage.save(modelMetadata, undefined, ownSymbol);
361
- //#endregion
365
+ // #endregion
362
366
  const counts = count.get(modelConstructor);
363
367
  this.modelSyncedStatus.set(modelConstructor, true);
364
368
  observer.next({
@@ -420,13 +424,13 @@ class SyncEngine {
420
424
  // TLDR; this is a lot of complexity here for a sleep(),
421
425
  // but, it's not clear to me yet how to support an
422
426
  // extensible, centralized cancelable `sleep()` elegantly.
423
- await this.runningProcesses.add(async (onTerminate) => {
427
+ await this.runningProcesses.add(async (onRunningProcessTerminate) => {
424
428
  let unsleep;
425
- const sleep = new Promise(_unsleep => {
426
- unsleep = _unsleep;
429
+ const sleep = new Promise(resolve => {
430
+ unsleep = resolve;
427
431
  setTimeout(unsleep, msNextFullSync);
428
432
  });
429
- onTerminate.then(() => {
433
+ onRunningProcessTerminate.then(() => {
430
434
  terminated = true;
431
435
  this.syncQueriesObservableStartSleeping();
432
436
  unsleep();
@@ -543,16 +547,16 @@ class SyncEngine {
543
547
  return result;
544
548
  }
545
549
  async getModelsMetadata() {
546
- const ModelMetadata = this.modelClasses
550
+ const ModelMetadataCtor = this.modelClasses
547
551
  .ModelMetadata;
548
- const modelsMetadata = await this.storage.query(ModelMetadata);
552
+ const modelsMetadata = await this.storage.query(ModelMetadataCtor);
549
553
  return modelsMetadata;
550
554
  }
551
555
  async getModelMetadata(namespace, model) {
552
- const ModelMetadata = this.modelClasses
556
+ const ModelMetadataCtor = this.modelClasses
553
557
  .ModelMetadata;
554
- const predicate = ModelPredicateCreator.createFromAST(this.schema.namespaces[SYNC].models[ModelMetadata.name], { and: [{ namespace: { eq: namespace } }, { model: { eq: model } }] });
555
- const [modelMetadata] = await this.storage.query(ModelMetadata, predicate, {
558
+ const predicate = ModelPredicateCreator.createFromAST(this.schema.namespaces[SYNC].models[ModelMetadataCtor.name], { and: [{ namespace: { eq: namespace } }, { model: { eq: model } }] });
559
+ const [modelMetadata] = await this.storage.query(ModelMetadataCtor, predicate, {
556
560
  page: 0,
557
561
  limit: 1,
558
562
  });