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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/dist/cjs/authModeStrategies/multiAuthStrategy.js +1 -1
  2. package/dist/cjs/authModeStrategies/multiAuthStrategy.js.map +1 -1
  3. package/dist/cjs/datastore/datastore.js +46 -41
  4. package/dist/cjs/datastore/datastore.js.map +1 -1
  5. package/dist/cjs/index.js +3 -1
  6. package/dist/cjs/index.js.map +1 -1
  7. package/dist/cjs/predicates/index.js +1 -0
  8. package/dist/cjs/predicates/index.js.map +1 -1
  9. package/dist/cjs/predicates/next.js +13 -12
  10. package/dist/cjs/predicates/next.js.map +1 -1
  11. package/dist/cjs/predicates/sort.js +2 -2
  12. package/dist/cjs/predicates/sort.js.map +1 -1
  13. package/dist/cjs/storage/adapter/AsyncStorageAdapter.js +21 -18
  14. package/dist/cjs/storage/adapter/AsyncStorageAdapter.js.map +1 -1
  15. package/dist/cjs/storage/adapter/AsyncStorageDatabase.js +10 -9
  16. package/dist/cjs/storage/adapter/AsyncStorageDatabase.js.map +1 -1
  17. package/dist/cjs/storage/adapter/InMemoryStore.js +4 -1
  18. package/dist/cjs/storage/adapter/InMemoryStore.js.map +1 -1
  19. package/dist/cjs/storage/adapter/IndexedDBAdapter.js +21 -23
  20. package/dist/cjs/storage/adapter/IndexedDBAdapter.js.map +1 -1
  21. package/dist/cjs/storage/adapter/StorageAdapterBase.js +7 -7
  22. package/dist/cjs/storage/adapter/StorageAdapterBase.js.map +1 -1
  23. package/dist/cjs/storage/adapter/getDefaultAdapter/index.js +4 -1
  24. package/dist/cjs/storage/adapter/getDefaultAdapter/index.js.map +1 -1
  25. package/dist/cjs/storage/adapter/getDefaultAdapter/index.native.js +1 -0
  26. package/dist/cjs/storage/adapter/getDefaultAdapter/index.native.js.map +1 -1
  27. package/dist/cjs/storage/relationship.js +1 -0
  28. package/dist/cjs/storage/relationship.js.map +1 -1
  29. package/dist/cjs/storage/storage.js +14 -14
  30. package/dist/cjs/storage/storage.js.map +1 -1
  31. package/dist/cjs/sync/datastoreConnectivity.js +0 -3
  32. package/dist/cjs/sync/datastoreConnectivity.js.map +1 -1
  33. package/dist/cjs/sync/index.js +47 -43
  34. package/dist/cjs/sync/index.js.map +1 -1
  35. package/dist/cjs/sync/merger.js +1 -1
  36. package/dist/cjs/sync/merger.js.map +1 -1
  37. package/dist/cjs/sync/outbox.js +19 -17
  38. package/dist/cjs/sync/outbox.js.map +1 -1
  39. package/dist/cjs/sync/processors/errorMaps.js.map +1 -1
  40. package/dist/cjs/sync/processors/mutation.js +31 -28
  41. package/dist/cjs/sync/processors/mutation.js.map +1 -1
  42. package/dist/cjs/sync/processors/subscription.js +21 -12
  43. package/dist/cjs/sync/processors/subscription.js.map +1 -1
  44. package/dist/cjs/sync/processors/sync.js +25 -21
  45. package/dist/cjs/sync/processors/sync.js.map +1 -1
  46. package/dist/cjs/sync/utils.js +20 -21
  47. package/dist/cjs/sync/utils.js.map +1 -1
  48. package/dist/cjs/types.js +1 -0
  49. package/dist/cjs/types.js.map +1 -1
  50. package/dist/cjs/util.js +46 -25
  51. package/dist/cjs/util.js.map +1 -1
  52. package/dist/esm/authModeStrategies/multiAuthStrategy.d.ts +1 -1
  53. package/dist/esm/authModeStrategies/multiAuthStrategy.mjs +1 -1
  54. package/dist/esm/authModeStrategies/multiAuthStrategy.mjs.map +1 -1
  55. package/dist/esm/datastore/datastore.d.ts +4 -6
  56. package/dist/esm/datastore/datastore.mjs +42 -34
  57. package/dist/esm/datastore/datastore.mjs.map +1 -1
  58. package/dist/esm/index.d.ts +1 -1
  59. package/dist/esm/index.mjs +2 -2
  60. package/dist/esm/index.mjs.map +1 -1
  61. package/dist/esm/predicates/index.mjs +1 -0
  62. package/dist/esm/predicates/index.mjs.map +1 -1
  63. package/dist/esm/predicates/next.d.ts +7 -7
  64. package/dist/esm/predicates/next.mjs +13 -12
  65. package/dist/esm/predicates/next.mjs.map +1 -1
  66. package/dist/esm/predicates/sort.d.ts +1 -1
  67. package/dist/esm/predicates/sort.mjs +2 -2
  68. package/dist/esm/predicates/sort.mjs.map +1 -1
  69. package/dist/esm/storage/adapter/AsyncStorageAdapter.d.ts +1 -1
  70. package/dist/esm/storage/adapter/AsyncStorageAdapter.mjs +21 -18
  71. package/dist/esm/storage/adapter/AsyncStorageAdapter.mjs.map +1 -1
  72. package/dist/esm/storage/adapter/AsyncStorageDatabase.mjs +10 -9
  73. package/dist/esm/storage/adapter/AsyncStorageDatabase.mjs.map +1 -1
  74. package/dist/esm/storage/adapter/InMemoryStore.mjs +4 -1
  75. package/dist/esm/storage/adapter/InMemoryStore.mjs.map +1 -1
  76. package/dist/esm/storage/adapter/IndexedDBAdapter.mjs +21 -23
  77. package/dist/esm/storage/adapter/IndexedDBAdapter.mjs.map +1 -1
  78. package/dist/esm/storage/adapter/StorageAdapterBase.d.ts +2 -2
  79. package/dist/esm/storage/adapter/StorageAdapterBase.mjs +7 -7
  80. package/dist/esm/storage/adapter/StorageAdapterBase.mjs.map +1 -1
  81. package/dist/esm/storage/adapter/getDefaultAdapter/index.mjs +3 -1
  82. package/dist/esm/storage/adapter/getDefaultAdapter/index.mjs.map +1 -1
  83. package/dist/esm/storage/adapter/getDefaultAdapter/index.native.mjs +1 -0
  84. package/dist/esm/storage/adapter/getDefaultAdapter/index.native.mjs.map +1 -1
  85. package/dist/esm/storage/adapter/index.d.ts +1 -1
  86. package/dist/esm/storage/relationship.mjs +1 -0
  87. package/dist/esm/storage/relationship.mjs.map +1 -1
  88. package/dist/esm/storage/storage.d.ts +11 -11
  89. package/dist/esm/storage/storage.mjs +10 -10
  90. package/dist/esm/storage/storage.mjs.map +1 -1
  91. package/dist/esm/sync/datastoreConnectivity.d.ts +2 -2
  92. package/dist/esm/sync/datastoreConnectivity.mjs +0 -3
  93. package/dist/esm/sync/datastoreConnectivity.mjs.map +1 -1
  94. package/dist/esm/sync/index.d.ts +3 -3
  95. package/dist/esm/sync/index.mjs +47 -43
  96. package/dist/esm/sync/index.mjs.map +1 -1
  97. package/dist/esm/sync/merger.d.ts +1 -1
  98. package/dist/esm/sync/merger.mjs +1 -1
  99. package/dist/esm/sync/merger.mjs.map +1 -1
  100. package/dist/esm/sync/outbox.d.ts +4 -4
  101. package/dist/esm/sync/outbox.mjs +19 -17
  102. package/dist/esm/sync/outbox.mjs.map +1 -1
  103. package/dist/esm/sync/processors/errorMaps.mjs.map +1 -1
  104. package/dist/esm/sync/processors/mutation.d.ts +5 -5
  105. package/dist/esm/sync/processors/mutation.mjs +31 -28
  106. package/dist/esm/sync/processors/mutation.mjs.map +1 -1
  107. package/dist/esm/sync/processors/subscription.d.ts +1 -1
  108. package/dist/esm/sync/processors/subscription.mjs +21 -12
  109. package/dist/esm/sync/processors/subscription.mjs.map +1 -1
  110. package/dist/esm/sync/processors/sync.d.ts +3 -3
  111. package/dist/esm/sync/processors/sync.mjs +13 -9
  112. package/dist/esm/sync/processors/sync.mjs.map +1 -1
  113. package/dist/esm/sync/utils.d.ts +11 -13
  114. package/dist/esm/sync/utils.mjs +20 -21
  115. package/dist/esm/sync/utils.mjs.map +1 -1
  116. package/dist/esm/types.d.ts +121 -131
  117. package/dist/esm/types.mjs +3 -2
  118. package/dist/esm/types.mjs.map +1 -1
  119. package/dist/esm/util.d.ts +5 -5
  120. package/dist/esm/util.mjs +46 -25
  121. package/dist/esm/util.mjs.map +1 -1
  122. package/package.json +74 -73
  123. package/src/authModeStrategies/multiAuthStrategy.ts +8 -4
  124. package/src/datastore/datastore.ts +145 -123
  125. package/src/index.ts +10 -8
  126. package/src/predicates/index.ts +10 -2
  127. package/src/predicates/next.ts +39 -28
  128. package/src/predicates/sort.ts +23 -26
  129. package/src/storage/adapter/AsyncStorageAdapter.ts +43 -25
  130. package/src/storage/adapter/AsyncStorageDatabase.ts +18 -10
  131. package/src/storage/adapter/InMemoryStore.ts +5 -1
  132. package/src/storage/adapter/IndexedDBAdapter.ts +50 -37
  133. package/src/storage/adapter/StorageAdapterBase.ts +24 -18
  134. package/src/storage/adapter/getDefaultAdapter/index.native.ts +1 -0
  135. package/src/storage/adapter/getDefaultAdapter/index.ts +4 -1
  136. package/src/storage/adapter/index.ts +2 -2
  137. package/src/storage/relationship.ts +5 -1
  138. package/src/storage/storage.ts +38 -30
  139. package/src/sync/datastoreConnectivity.ts +4 -6
  140. package/src/sync/index.ts +228 -230
  141. package/src/sync/merger.ts +4 -3
  142. package/src/sync/outbox.ts +26 -24
  143. package/src/sync/processors/errorMaps.ts +5 -0
  144. package/src/sync/processors/mutation.ts +80 -72
  145. package/src/sync/processors/subscription.ts +69 -53
  146. package/src/sync/processors/sync.ts +49 -37
  147. package/src/sync/utils.ts +60 -41
  148. package/src/types.ts +165 -165
  149. package/src/util.ts +89 -53
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sources":["../../../src/storage/storage.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExclusiveStorage = void 0;\nconst tslib_1 = require(\"tslib\");\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst rxjs_1 = require(\"rxjs\");\nconst predicates_1 = require(\"../predicates\");\nconst types_1 = require(\"../types\");\nconst util_1 = require(\"../util\");\nconst utils_1 = require(\"../sync/utils\");\nconst getDefaultAdapter_1 = tslib_1.__importDefault(require(\"./adapter/getDefaultAdapter\"));\nconst utils_2 = require(\"@aws-amplify/core/internals/utils\");\nconst core_1 = require(\"@aws-amplify/core\");\nconst logger = new core_1.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 || (0, getDefaultAdapter_1.default)();\n this.pushStream = new rxjs_1.Subject();\n }\n static getNamespace() {\n const namespace = {\n name: util_1.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 === types_1.OpType.UPDATE || opType === types_1.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 predicates_1.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 = (0, util_1.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 = (0, utils_1.getIdentifierValue)(modelDefinition, model);\n return modelId;\n }));\n if (!(0, util_1.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 (!(0, util_1.isModelConstructor)(modelOrModelConstructor)) {\n const modelId = (0, utils_1.getIdentifierValue)(modelDefinition, model);\n theCondition = modelIds.has(modelId)\n ? predicates_1.ModelPredicateCreator.getPredicates(condition, false)\n : undefined;\n }\n this.pushStream.next({\n model: modelConstructor,\n opType: types_1.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 = types_1.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 && predicates_1.ModelPredicateCreator.getPredicates(predicate, false)) ||\n {};\n let result = this.pushStream\n .pipe((0, rxjs_1.filter)(({ mutator }) => {\n return !skipOwn || mutator !== skipOwn;\n }))\n .pipe((0, rxjs_1.map)(({ mutator: _mutator, ...message }) => message));\n if (!listenToAll) {\n result = result.pipe((0, rxjs_1.filter)(({ model, element }) => {\n if (modelConstructor !== model) {\n return false;\n }\n if (!!predicates && !!type) {\n return (0, util_1.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 = (0, types_1.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 (!(0, util_1.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 (!(0, util_1.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 utils_2.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 ((0, util_1.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 = types_1.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}\nexports.ExclusiveStorage = ExclusiveStorage;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sources":["../../../src/storage/storage.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExclusiveStorage = void 0;\nconst tslib_1 = require(\"tslib\");\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst rxjs_1 = require(\"rxjs\");\nconst utils_1 = require(\"@aws-amplify/core/internals/utils\");\nconst core_1 = require(\"@aws-amplify/core\");\nconst predicates_1 = require(\"../predicates\");\nconst types_1 = require(\"../types\");\nconst util_1 = require(\"../util\");\nconst utils_2 = require(\"../sync/utils\");\nconst getDefaultAdapter_1 = tslib_1.__importDefault(require(\"./adapter/getDefaultAdapter\"));\nconst logger = new core_1.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 || (0, getDefaultAdapter_1.default)();\n this.pushStream = new rxjs_1.Subject();\n }\n static getNamespace() {\n const namespace = {\n name: util_1.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 === types_1.OpType.UPDATE || opType === types_1.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 predicates_1.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 = (0, util_1.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 = (0, utils_2.getIdentifierValue)(modelDefinition, model);\n return modelId;\n }));\n if (!(0, util_1.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 (!(0, util_1.isModelConstructor)(modelOrModelConstructor)) {\n const modelId = (0, utils_2.getIdentifierValue)(modelDefinition, model);\n theCondition = modelIds.has(modelId)\n ? predicates_1.ModelPredicateCreator.getPredicates(condition, false)\n : undefined;\n }\n this.pushStream.next({\n model: resolvedModelConstructor,\n opType: types_1.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 = types_1.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 && predicates_1.ModelPredicateCreator.getPredicates(predicate, false)) ||\n {};\n let result = this.pushStream\n .pipe((0, rxjs_1.filter)(({ mutator }) => {\n return !skipOwn || mutator !== skipOwn;\n }))\n .pipe((0, rxjs_1.map)(({ mutator: _mutator, ...message }) => message));\n if (!listenToAll) {\n result = result.pipe((0, rxjs_1.filter)(({ model, element }) => {\n if (modelConstructor !== model) {\n return false;\n }\n if (!!predicates && !!type) {\n return (0, util_1.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 = (0, types_1.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 (!(0, util_1.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 (!(0, util_1.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 utils_1.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 ((0, util_1.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 = types_1.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}\nexports.ExclusiveStorage = ExclusiveStorage;\n"],"names":[],"mappings":"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"}
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
5
5
  // SPDX-License-Identifier: Apache-2.0
6
6
  const rxjs_1 = require("rxjs");
7
7
  const datastoreReachability_1 = require("./datastoreReachability");
8
- const core_1 = require("@aws-amplify/core");
9
- new core_1.ConsoleLogger('DataStore');
10
8
  const RECONNECTING_IN = 5000; // 5s this may be configurable in the future
11
9
  class DataStoreConnectivity {
12
10
  constructor() {
@@ -41,7 +39,6 @@ class DataStoreConnectivity {
41
39
  // for consistency with other background processors.
42
40
  async stop() {
43
41
  this.unsubscribe();
44
- return;
45
42
  }
46
43
  socketDisconnected() {
47
44
  if (this.observer && typeof this.observer.next === 'function') {
@@ -1 +1 @@
1
- {"version":3,"file":"datastoreConnectivity.js","sources":["../../../src/sync/datastoreConnectivity.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst rxjs_1 = require(\"rxjs\");\nconst datastoreReachability_1 = require(\"./datastoreReachability\");\nconst core_1 = require(\"@aws-amplify/core\");\nconst logger = new core_1.ConsoleLogger('DataStore');\nconst RECONNECTING_IN = 5000; // 5s this may be configurable in the future\nclass 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 rxjs_1.Observable(observer => {\n this.observer = observer;\n // Will be used to forward socket connection changes, enhancing Reachability\n this.subscription = datastoreReachability_1.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}\nexports.default = DataStoreConnectivity;\n"],"names":[],"mappings":";;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D;AACA;AACA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/B,MAAM,uBAAuB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;AACnE,MAAM,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAC7B,IAAI,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE;AACrD,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,qBAAqB,CAAC;AAC5B,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,MAAM,CAAC,UAAU,CAAC,QAAQ,IAAI;AACjD,YAAY,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACrC;AACA,YAAY,IAAI,CAAC,YAAY,GAAG,uBAAuB,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK;AACtG,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,CAAC;AACD,OAAO,CAAC,OAAO,GAAG,qBAAqB;;"}
1
+ {"version":3,"file":"datastoreConnectivity.js","sources":["../../../src/sync/datastoreConnectivity.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst rxjs_1 = require(\"rxjs\");\nconst datastoreReachability_1 = require(\"./datastoreReachability\");\nconst RECONNECTING_IN = 5000; // 5s this may be configurable in the future\nclass 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 rxjs_1.Observable(observer => {\n this.observer = observer;\n // Will be used to forward socket connection changes, enhancing Reachability\n this.subscription = datastoreReachability_1.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}\nexports.default = DataStoreConnectivity;\n"],"names":[],"mappings":";;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D;AACA;AACA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/B,MAAM,uBAAuB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;AACnE,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,qBAAqB,CAAC;AAC5B,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,MAAM,CAAC,UAAU,CAAC,QAAQ,IAAI;AACjD,YAAY,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACrC;AACA,YAAY,IAAI,CAAC,YAAY,GAAG,uBAAuB,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK;AACtG,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,CAAC;AACD,OAAO,CAAC,OAAO,GAAG,qBAAqB;;"}
@@ -8,6 +8,7 @@ const tslib_1 = require("tslib");
8
8
  const utils_1 = require("@aws-amplify/core/internals/utils");
9
9
  const core_1 = require("@aws-amplify/core");
10
10
  const rxjs_1 = require("rxjs");
11
+ const api_graphql_1 = require("@aws-amplify/api-graphql");
11
12
  const predicates_1 = require("../predicates");
12
13
  const types_1 = require("../types");
13
14
  const util_1 = require("../util");
@@ -18,7 +19,6 @@ const mutation_1 = require("./processors/mutation");
18
19
  const subscription_1 = require("./processors/subscription");
19
20
  const sync_1 = require("./processors/sync");
20
21
  const utils_2 = require("./utils");
21
- const api_graphql_1 = require("@aws-amplify/api-graphql");
22
22
  const logger = new core_1.ConsoleLogger('DataStore');
23
23
  const ownSymbol = Symbol('sync');
24
24
  var ControlMessage;
@@ -57,12 +57,13 @@ class SyncEngine {
57
57
  this.waitForSleepState = new Promise(resolve => {
58
58
  this.syncQueriesObservableStartSleeping = resolve;
59
59
  });
60
- const MutationEvent = this.modelClasses['MutationEvent'];
61
- this.outbox = new outbox_1.MutationEventOutbox(this.schema, MutationEvent, modelInstanceCreator, ownSymbol);
60
+ const MutationEventCtor = this.modelClasses
61
+ .MutationEvent;
62
+ this.outbox = new outbox_1.MutationEventOutbox(this.schema, MutationEventCtor, modelInstanceCreator, ownSymbol);
62
63
  this.modelMerger = new merger_1.ModelMerger(this.outbox, ownSymbol);
63
64
  this.syncQueriesProcessor = new sync_1.SyncProcessor(this.schema, this.syncPredicates, this.amplifyConfig, this.authModeStrategy, errorHandler, this.amplifyContext);
64
65
  this.subscriptionsProcessor = new subscription_1.SubscriptionProcessor(this.schema, this.syncPredicates, this.amplifyConfig, this.authModeStrategy, errorHandler, this.amplifyContext);
65
- this.mutationsProcessor = new mutation_1.MutationProcessor(this.schema, this.storage, this.userModelClasses, this.outbox, this.modelInstanceCreator, MutationEvent, this.amplifyConfig, this.authModeStrategy, errorHandler, conflictHandler, this.amplifyContext);
66
+ this.mutationsProcessor = new mutation_1.MutationProcessor(this.schema, this.storage, this.userModelClasses, this.outbox, this.modelInstanceCreator, MutationEventCtor, this.amplifyConfig, this.authModeStrategy, errorHandler, conflictHandler, this.amplifyContext);
66
67
  this.datastoreConnectivity =
67
68
  this.connectivityMonitor || new datastoreConnectivity_1.default();
68
69
  }
@@ -80,7 +81,9 @@ class SyncEngine {
80
81
  }
81
82
  // this is awaited at the bottom. so, we don't need to register
82
83
  // this explicitly with the context. it's already contained.
83
- const startPromise = new Promise((doneStarting, failedStarting) => {
84
+ const startPromise = new Promise((resolve, reject) => {
85
+ const doneStarting = resolve;
86
+ const failedStarting = reject;
84
87
  this.datastoreConnectivity.status().subscribe(async ({ online }) => this.runningProcesses.isOpen &&
85
88
  this.runningProcesses.add(async (onTerminate) => {
86
89
  // From offline to online
@@ -92,24 +95,20 @@ class SyncEngine {
92
95
  active: this.online,
93
96
  },
94
97
  });
95
- let ctlSubsObservable;
96
- let dataSubsObservable;
97
- this.stopDisruptionListener =
98
- this.startDisruptionListener();
99
- //#region GraphQL Subscriptions
100
- [ctlSubsObservable, dataSubsObservable] =
101
- this.subscriptionsProcessor.start();
98
+ this.stopDisruptionListener = this.startDisruptionListener();
99
+ // #region GraphQL Subscriptions
100
+ const [ctlSubsObservable, dataSubsObservable] = this.subscriptionsProcessor.start();
102
101
  try {
103
- await new Promise((resolve, reject) => {
104
- onTerminate.then(reject);
102
+ await new Promise((_resolve, _reject) => {
103
+ onTerminate.then(_reject);
105
104
  const ctlSubsSubscription = ctlSubsObservable.subscribe({
106
105
  next: msg => {
107
106
  if (msg === subscription_1.CONTROL_MSG.CONNECTED) {
108
- resolve();
107
+ _resolve();
109
108
  }
110
109
  },
111
110
  error: err => {
112
- reject(err);
111
+ _reject(err);
113
112
  const handleDisconnect = this.disconnectionHandler();
114
113
  handleDisconnect(err);
115
114
  },
@@ -126,24 +125,24 @@ class SyncEngine {
126
125
  observer.next({
127
126
  type: ControlMessage.SYNC_ENGINE_SUBSCRIPTIONS_ESTABLISHED,
128
127
  });
129
- //#endregion
130
- //#region Base & Sync queries
128
+ // #endregion
129
+ // #region Base & Sync queries
131
130
  try {
132
- await new Promise((resolve, reject) => {
131
+ await new Promise((_resolve, _reject) => {
133
132
  const syncQuerySubscription = this.syncQueriesObservable().subscribe({
134
133
  next: message => {
135
134
  const { type } = message;
136
135
  if (type ===
137
136
  ControlMessage.SYNC_ENGINE_SYNC_QUERIES_READY) {
138
- resolve();
137
+ _resolve();
139
138
  }
140
139
  observer.next(message);
141
140
  },
142
141
  complete: () => {
143
- resolve();
142
+ _resolve();
144
143
  },
145
144
  error: error => {
146
- reject(error);
145
+ _reject(error);
147
146
  },
148
147
  });
149
148
  if (syncQuerySubscription) {
@@ -156,8 +155,8 @@ class SyncEngine {
156
155
  failedStarting();
157
156
  return;
158
157
  }
159
- //#endregion
160
- //#region process mutations (outbox)
158
+ // #endregion
159
+ // #region process mutations (outbox)
161
160
  subscriptions.push(this.mutationsProcessor
162
161
  .start()
163
162
  .subscribe(({ modelDefinition, model: item, hasMore }) => this.runningProcesses.add(async () => {
@@ -178,14 +177,14 @@ class SyncEngine {
178
177
  },
179
178
  });
180
179
  }, 'mutation processor event')));
181
- //#endregion
182
- //#region Merge subscriptions buffer
180
+ // #endregion
181
+ // #region Merge subscriptions buffer
183
182
  subscriptions.push(dataSubsObservable.subscribe(([_transformerMutationType, modelDefinition, item]) => this.runningProcesses.add(async () => {
184
183
  const modelConstructor = this.userModelClasses[modelDefinition.name];
185
184
  const model = this.modelInstanceCreator(modelConstructor, item);
186
185
  await this.storage.runExclusive(storage => this.modelMerger.merge(storage, model, modelDefinition));
187
186
  }, 'subscription dataSubsObservable event')));
188
- //#endregion
187
+ // #endregion
189
188
  }
190
189
  else if (!online) {
191
190
  this.online = online;
@@ -195,7 +194,9 @@ class SyncEngine {
195
194
  active: this.online,
196
195
  },
197
196
  });
198
- subscriptions.forEach(sub => sub.unsubscribe());
197
+ subscriptions.forEach(sub => {
198
+ sub.unsubscribe();
199
+ });
199
200
  subscriptions = [];
200
201
  }
201
202
  doneStarting();
@@ -210,7 +211,8 @@ class SyncEngine {
210
211
  .subscribe({
211
212
  next: async ({ opType, model, element, condition }) => this.runningProcesses.add(async () => {
212
213
  const namespace = this.schema.namespaces[this.namespaceResolver(model)];
213
- const MutationEventConstructor = this.modelClasses['MutationEvent'];
214
+ const MutationEventConstructor = this.modelClasses
215
+ .MutationEvent;
214
216
  const modelDefinition = this.getModelDefinition(model);
215
217
  const graphQLCondition = (0, utils_2.predicateToGraphQLCondition)(condition, modelDefinition);
216
218
  const mutationEvent = (0, utils_2.createMutationInstanceFromModelOperation)(namespace.relationships, this.getModelDefinition(model), opType, model, element, graphQLCondition, MutationEventConstructor, this.modelInstanceCreator);
@@ -253,7 +255,7 @@ class SyncEngine {
253
255
  });
254
256
  }
255
257
  async getModelsMetadataWithNextFullSync(currentTimeStamp) {
256
- const modelLastSync = new Map((await this.runningProcesses.add(() => this.getModelsMetadata(), 'sync/index getModelsMetadataWithNextFullSync')).map(({ namespace, model, lastSync, lastFullSync, fullSyncInterval, lastSyncPredicate, }) => {
258
+ const modelLastSync = new Map((await this.runningProcesses.add(() => this.getModelsMetadata(), 'sync/index getModelsMetadataWithNextFullSync')).map(({ namespace, model, lastSync, lastFullSync, fullSyncInterval }) => {
257
259
  const nextFullSync = lastFullSync + fullSyncInterval;
258
260
  const syncFrom = !lastFullSync || nextFullSync < currentTimeStamp
259
261
  ? 0 // perform full sync if expired
@@ -283,10 +285,12 @@ class SyncEngine {
283
285
  let start;
284
286
  let syncDuration;
285
287
  let lastStartedAt;
286
- await new Promise((resolve, reject) => {
288
+ await new Promise((resolve, _reject) => {
287
289
  if (!this.runningProcesses.isOpen)
288
290
  resolve();
289
- onTerminate.then(() => resolve());
291
+ onTerminate.then(() => {
292
+ resolve();
293
+ });
290
294
  syncQueriesSubscription = this.syncQueriesProcessor
291
295
  .start(modelLastSync)
292
296
  .subscribe({
@@ -346,7 +350,7 @@ class SyncEngine {
346
350
  });
347
351
  if (done) {
348
352
  const { name: modelName } = modelDefinition;
349
- //#region update last sync for type
353
+ // #region update last sync for type
350
354
  let modelMetadata = await this.getModelMetadata(namespace, modelName);
351
355
  const { lastFullSync, fullSyncInterval } = modelMetadata;
352
356
  syncInterval = fullSyncInterval;
@@ -362,7 +366,7 @@ class SyncEngine {
362
366
  : modelMetadata.lastFullSync;
363
367
  });
364
368
  await this.storage.save(modelMetadata, undefined, ownSymbol);
365
- //#endregion
369
+ // #endregion
366
370
  const counts = count.get(modelConstructor);
367
371
  this.modelSyncedStatus.set(modelConstructor, true);
368
372
  observer.next({
@@ -424,13 +428,13 @@ class SyncEngine {
424
428
  // TLDR; this is a lot of complexity here for a sleep(),
425
429
  // but, it's not clear to me yet how to support an
426
430
  // extensible, centralized cancelable `sleep()` elegantly.
427
- await this.runningProcesses.add(async (onTerminate) => {
431
+ await this.runningProcesses.add(async (onRunningProcessTerminate) => {
428
432
  let unsleep;
429
- const sleep = new Promise(_unsleep => {
430
- unsleep = _unsleep;
433
+ const sleep = new Promise(resolve => {
434
+ unsleep = resolve;
431
435
  setTimeout(unsleep, msNextFullSync);
432
436
  });
433
- onTerminate.then(() => {
437
+ onRunningProcessTerminate.then(() => {
434
438
  terminated = true;
435
439
  this.syncQueriesObservableStartSleeping();
436
440
  unsleep();
@@ -547,16 +551,16 @@ class SyncEngine {
547
551
  return result;
548
552
  }
549
553
  async getModelsMetadata() {
550
- const ModelMetadata = this.modelClasses
554
+ const ModelMetadataCtor = this.modelClasses
551
555
  .ModelMetadata;
552
- const modelsMetadata = await this.storage.query(ModelMetadata);
556
+ const modelsMetadata = await this.storage.query(ModelMetadataCtor);
553
557
  return modelsMetadata;
554
558
  }
555
559
  async getModelMetadata(namespace, model) {
556
- const ModelMetadata = this.modelClasses
560
+ const ModelMetadataCtor = this.modelClasses
557
561
  .ModelMetadata;
558
- const predicate = predicates_1.ModelPredicateCreator.createFromAST(this.schema.namespaces[util_1.SYNC].models[ModelMetadata.name], { and: [{ namespace: { eq: namespace } }, { model: { eq: model } }] });
559
- const [modelMetadata] = await this.storage.query(ModelMetadata, predicate, {
562
+ const predicate = predicates_1.ModelPredicateCreator.createFromAST(this.schema.namespaces[util_1.SYNC].models[ModelMetadataCtor.name], { and: [{ namespace: { eq: namespace } }, { model: { eq: model } }] });
563
+ const [modelMetadata] = await this.storage.query(ModelMetadataCtor, predicate, {
560
564
  page: 0,
561
565
  limit: 1,
562
566
  });