@aws-amplify/datastore 4.7.5 → 5.0.1-console-preview.4208d73.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 (182) hide show
  1. package/README.md +4 -0
  2. package/lib/authModeStrategies/defaultAuthStrategy.js +3 -2
  3. package/lib/authModeStrategies/index.js +3 -3
  4. package/lib/authModeStrategies/multiAuthStrategy.js +81 -24
  5. package/lib/datastore/datastore.d.ts +3 -4
  6. package/lib/datastore/datastore.js +361 -227
  7. package/lib/index.d.ts +1 -1
  8. package/lib/index.js +25 -12
  9. package/lib/predicates/index.js +46 -12
  10. package/lib/predicates/next.d.ts +2 -2
  11. package/lib/predicates/next.js +172 -74
  12. package/lib/predicates/sort.js +3 -4
  13. package/lib/ssr/index.js +1 -1
  14. package/lib/storage/adapter/AsyncStorageAdapter.js +240 -128
  15. package/lib/storage/adapter/AsyncStorageDatabase.js +100 -39
  16. package/lib/storage/adapter/InMemoryStore.js +68 -17
  17. package/lib/storage/adapter/InMemoryStore.native.js +5 -3
  18. package/lib/storage/adapter/IndexedDBAdapter.js +355 -199
  19. package/lib/storage/adapter/StorageAdapterBase.js +154 -85
  20. package/lib/storage/adapter/getDefaultAdapter/index.js +8 -9
  21. package/lib/storage/adapter/getDefaultAdapter/index.native.js +4 -3
  22. package/lib/storage/adapter/index.js +0 -1
  23. package/lib/storage/relationship.js +31 -21
  24. package/lib/storage/storage.d.ts +3 -3
  25. package/lib/storage/storage.js +143 -61
  26. package/lib/sync/datastoreConnectivity.d.ts +1 -1
  27. package/lib/sync/datastoreConnectivity.js +57 -9
  28. package/lib/sync/datastoreReachability/index.js +3 -3
  29. package/lib/sync/datastoreReachability/index.native.js +7 -5
  30. package/lib/sync/index.d.ts +1 -1
  31. package/lib/sync/index.js +193 -125
  32. package/lib/sync/merger.js +81 -10
  33. package/lib/sync/outbox.js +101 -30
  34. package/lib/sync/processors/errorMaps.d.ts +1 -1
  35. package/lib/sync/processors/errorMaps.js +41 -6
  36. package/lib/sync/processors/mutation.d.ts +1 -1
  37. package/lib/sync/processors/mutation.js +192 -101
  38. package/lib/sync/processors/subscription.d.ts +4 -1
  39. package/lib/sync/processors/subscription.js +190 -178
  40. package/lib/sync/processors/sync.d.ts +1 -1
  41. package/lib/sync/processors/sync.js +113 -47
  42. package/lib/sync/utils.d.ts +4 -4
  43. package/lib/sync/utils.js +162 -81
  44. package/lib/tsconfig.tsbuildinfo +1 -0
  45. package/lib/types.d.ts +138 -140
  46. package/lib/types.js +40 -5
  47. package/lib/util.d.ts +9 -17
  48. package/lib/util.js +216 -100
  49. package/lib-esm/authModeStrategies/defaultAuthStrategy.js +0 -1
  50. package/lib-esm/authModeStrategies/index.js +0 -1
  51. package/lib-esm/authModeStrategies/multiAuthStrategy.js +76 -21
  52. package/lib-esm/datastore/datastore.d.ts +3 -4
  53. package/lib-esm/datastore/datastore.js +206 -77
  54. package/lib-esm/index.d.ts +1 -1
  55. package/lib-esm/index.js +0 -1
  56. package/lib-esm/predicates/index.js +40 -7
  57. package/lib-esm/predicates/next.d.ts +2 -2
  58. package/lib-esm/predicates/next.js +148 -52
  59. package/lib-esm/predicates/sort.js +2 -4
  60. package/lib-esm/ssr/index.js +0 -1
  61. package/lib-esm/storage/adapter/AsyncStorageAdapter.js +203 -95
  62. package/lib-esm/storage/adapter/AsyncStorageDatabase.js +66 -5
  63. package/lib-esm/storage/adapter/InMemoryStore.js +52 -2
  64. package/lib-esm/storage/adapter/InMemoryStore.native.js +0 -1
  65. package/lib-esm/storage/adapter/IndexedDBAdapter.js +271 -138
  66. package/lib-esm/storage/adapter/StorageAdapterBase.js +130 -62
  67. package/lib-esm/storage/adapter/getDefaultAdapter/index.js +2 -5
  68. package/lib-esm/storage/adapter/getDefaultAdapter/index.native.js +0 -1
  69. package/lib-esm/storage/adapter/index.js +1 -1
  70. package/lib-esm/storage/relationship.js +27 -18
  71. package/lib-esm/storage/storage.d.ts +3 -3
  72. package/lib-esm/storage/storage.js +87 -9
  73. package/lib-esm/sync/datastoreConnectivity.d.ts +1 -1
  74. package/lib-esm/sync/datastoreConnectivity.js +48 -3
  75. package/lib-esm/sync/datastoreReachability/index.js +1 -2
  76. package/lib-esm/sync/datastoreReachability/index.native.js +1 -2
  77. package/lib-esm/sync/index.d.ts +1 -1
  78. package/lib-esm/sync/index.js +136 -72
  79. package/lib-esm/sync/merger.js +73 -3
  80. package/lib-esm/sync/outbox.js +75 -5
  81. package/lib-esm/sync/processors/errorMaps.d.ts +1 -1
  82. package/lib-esm/sync/processors/errorMaps.js +39 -5
  83. package/lib-esm/sync/processors/mutation.d.ts +1 -1
  84. package/lib-esm/sync/processors/mutation.js +130 -44
  85. package/lib-esm/sync/processors/subscription.d.ts +4 -1
  86. package/lib-esm/sync/processors/subscription.js +134 -126
  87. package/lib-esm/sync/processors/sync.d.ts +1 -1
  88. package/lib-esm/sync/processors/sync.js +74 -12
  89. package/lib-esm/sync/utils.d.ts +4 -4
  90. package/lib-esm/sync/utils.js +135 -55
  91. package/lib-esm/tsconfig.tsbuildinfo +1 -0
  92. package/lib-esm/types.d.ts +138 -140
  93. package/lib-esm/types.js +36 -2
  94. package/lib-esm/util.d.ts +9 -17
  95. package/lib-esm/util.js +96 -16
  96. package/package.json +139 -132
  97. package/src/authModeStrategies/multiAuthStrategy.ts +11 -12
  98. package/src/datastore/datastore.ts +32 -25
  99. package/src/predicates/sort.ts +3 -1
  100. package/src/storage/adapter/InMemoryStore.ts +1 -1
  101. package/src/storage/adapter/IndexedDBAdapter.ts +1 -1
  102. package/src/storage/adapter/StorageAdapterBase.ts +1 -1
  103. package/src/storage/adapter/getDefaultAdapter/index.ts +2 -3
  104. package/src/storage/storage.ts +1 -1
  105. package/src/sync/datastoreConnectivity.ts +2 -2
  106. package/src/sync/datastoreReachability/index.native.ts +1 -1
  107. package/src/sync/datastoreReachability/index.ts +1 -1
  108. package/src/sync/index.ts +69 -78
  109. package/src/sync/processors/mutation.ts +16 -10
  110. package/src/sync/processors/subscription.ts +55 -127
  111. package/src/sync/processors/sync.ts +8 -4
  112. package/src/sync/utils.ts +7 -8
  113. package/src/types.ts +4 -8
  114. package/src/util.ts +5 -6
  115. package/lib/.tsbuildinfo +0 -3
  116. package/lib/authModeStrategies/defaultAuthStrategy.js.map +0 -1
  117. package/lib/authModeStrategies/index.js.map +0 -1
  118. package/lib/authModeStrategies/multiAuthStrategy.js.map +0 -1
  119. package/lib/datastore/datastore.js.map +0 -1
  120. package/lib/index.js.map +0 -1
  121. package/lib/predicates/index.js.map +0 -1
  122. package/lib/predicates/next.js.map +0 -1
  123. package/lib/predicates/sort.js.map +0 -1
  124. package/lib/ssr/index.js.map +0 -1
  125. package/lib/storage/adapter/AsyncStorageAdapter.js.map +0 -1
  126. package/lib/storage/adapter/AsyncStorageDatabase.js.map +0 -1
  127. package/lib/storage/adapter/InMemoryStore.js.map +0 -1
  128. package/lib/storage/adapter/InMemoryStore.native.js.map +0 -1
  129. package/lib/storage/adapter/IndexedDBAdapter.js.map +0 -1
  130. package/lib/storage/adapter/StorageAdapterBase.js.map +0 -1
  131. package/lib/storage/adapter/getDefaultAdapter/index.js.map +0 -1
  132. package/lib/storage/adapter/getDefaultAdapter/index.native.js.map +0 -1
  133. package/lib/storage/adapter/index.js.map +0 -1
  134. package/lib/storage/relationship.js.map +0 -1
  135. package/lib/storage/storage.js.map +0 -1
  136. package/lib/sync/datastoreConnectivity.js.map +0 -1
  137. package/lib/sync/datastoreReachability/index.js.map +0 -1
  138. package/lib/sync/datastoreReachability/index.native.js.map +0 -1
  139. package/lib/sync/index.js.map +0 -1
  140. package/lib/sync/merger.js.map +0 -1
  141. package/lib/sync/outbox.js.map +0 -1
  142. package/lib/sync/processors/errorMaps.js.map +0 -1
  143. package/lib/sync/processors/mutation.js.map +0 -1
  144. package/lib/sync/processors/subscription.js.map +0 -1
  145. package/lib/sync/processors/sync.js.map +0 -1
  146. package/lib/sync/utils.js.map +0 -1
  147. package/lib/types.js.map +0 -1
  148. package/lib/util.js.map +0 -1
  149. package/lib-esm/.tsbuildinfo +0 -3
  150. package/lib-esm/authModeStrategies/defaultAuthStrategy.js.map +0 -1
  151. package/lib-esm/authModeStrategies/index.js.map +0 -1
  152. package/lib-esm/authModeStrategies/multiAuthStrategy.js.map +0 -1
  153. package/lib-esm/datastore/datastore.js.map +0 -1
  154. package/lib-esm/index.js.map +0 -1
  155. package/lib-esm/predicates/index.js.map +0 -1
  156. package/lib-esm/predicates/next.js.map +0 -1
  157. package/lib-esm/predicates/sort.js.map +0 -1
  158. package/lib-esm/ssr/index.js.map +0 -1
  159. package/lib-esm/storage/adapter/AsyncStorageAdapter.js.map +0 -1
  160. package/lib-esm/storage/adapter/AsyncStorageDatabase.js.map +0 -1
  161. package/lib-esm/storage/adapter/InMemoryStore.js.map +0 -1
  162. package/lib-esm/storage/adapter/InMemoryStore.native.js.map +0 -1
  163. package/lib-esm/storage/adapter/IndexedDBAdapter.js.map +0 -1
  164. package/lib-esm/storage/adapter/StorageAdapterBase.js.map +0 -1
  165. package/lib-esm/storage/adapter/getDefaultAdapter/index.js.map +0 -1
  166. package/lib-esm/storage/adapter/getDefaultAdapter/index.native.js.map +0 -1
  167. package/lib-esm/storage/adapter/index.js.map +0 -1
  168. package/lib-esm/storage/relationship.js.map +0 -1
  169. package/lib-esm/storage/storage.js.map +0 -1
  170. package/lib-esm/sync/datastoreConnectivity.js.map +0 -1
  171. package/lib-esm/sync/datastoreReachability/index.js.map +0 -1
  172. package/lib-esm/sync/datastoreReachability/index.native.js.map +0 -1
  173. package/lib-esm/sync/index.js.map +0 -1
  174. package/lib-esm/sync/merger.js.map +0 -1
  175. package/lib-esm/sync/outbox.js.map +0 -1
  176. package/lib-esm/sync/processors/errorMaps.js.map +0 -1
  177. package/lib-esm/sync/processors/mutation.js.map +0 -1
  178. package/lib-esm/sync/processors/subscription.js.map +0 -1
  179. package/lib-esm/sync/processors/sync.js.map +0 -1
  180. package/lib-esm/sync/utils.js.map +0 -1
  181. package/lib-esm/types.js.map +0 -1
  182. package/lib-esm/util.js.map +0 -1
@@ -5,7 +5,7 @@ import { ConflictHandler, ControlMessageType, ErrorHandler, InternalSchema, Mode
5
5
  import type { __modelMeta__ } from '../types';
6
6
  import DataStoreConnectivity from './datastoreConnectivity';
7
7
  import { TransformerMutationType } from './utils';
8
- declare type StartParams = {
8
+ type StartParams = {
9
9
  fullSyncInterval: number;
10
10
  };
11
11
  export declare class MutationEvent {
@@ -1,8 +1,79 @@
1
- import { __awaiter, __generator, __read, __spread, __values } from "tslib";
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ var __read = (this && this.__read) || function (o, n) {
38
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
39
+ if (!m) return o;
40
+ var i = m.call(o), r, ar = [], e;
41
+ try {
42
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
43
+ }
44
+ catch (error) { e = { error: error }; }
45
+ finally {
46
+ try {
47
+ if (r && !r.done && (m = i["return"])) m.call(i);
48
+ }
49
+ finally { if (e) throw e.error; }
50
+ }
51
+ return ar;
52
+ };
53
+ var __values = (this && this.__values) || function(o) {
54
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
55
+ if (m) return m.call(o);
56
+ if (o && typeof o.length === "number") return {
57
+ next: function () {
58
+ if (o && i >= o.length) o = void 0;
59
+ return { value: o && o[i++], done: !o };
60
+ }
61
+ };
62
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
63
+ };
64
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
65
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
66
+ if (ar || !(i in from)) {
67
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
68
+ ar[i] = from[i];
69
+ }
70
+ }
71
+ return to.concat(ar || Array.prototype.slice.call(from));
72
+ };
2
73
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
74
  // SPDX-License-Identifier: Apache-2.0
4
- import { browserOrNode, ConsoleLogger as Logger, BackgroundProcessManager, Hub, } from '@aws-amplify/core';
5
- import { CONTROL_MSG as PUBSUB_CONTROL_MSG, CONNECTION_STATE_CHANGE as PUBSUB_CONNECTION_STATE_CHANGE, ConnectionState, } from '@aws-amplify/pubsub';
75
+ import { Logger, BackgroundProcessManager, } from '@aws-amplify/core/internals/utils';
76
+ import { Hub } from '@aws-amplify/core';
6
77
  import Observable from 'zen-observable-ts';
7
78
  import { ModelPredicateCreator } from '../predicates';
8
79
  import { OpType, } from '../types';
@@ -14,7 +85,7 @@ import { MutationProcessor } from './processors/mutation';
14
85
  import { CONTROL_MSG, SubscriptionProcessor } from './processors/subscription';
15
86
  import { SyncProcessor } from './processors/sync';
16
87
  import { createMutationInstanceFromModelOperation, getIdentifierValue, predicateToGraphQLCondition, } from './utils';
17
- var isNode = browserOrNode().isNode;
88
+ import { CONTROL_MSG as PUBSUB_CONTROL_MSG, ConnectionState, CONNECTION_STATE_CHANGE as PUBSUB_CONNECTION_STATE_CHANGE, } from '@aws-amplify/api-graphql';
18
89
  var logger = new Logger('DataStore');
19
90
  var ownSymbol = Symbol('sync');
20
91
  export var ControlMessage;
@@ -32,8 +103,8 @@ export var ControlMessage;
32
103
  })(ControlMessage || (ControlMessage = {}));
33
104
  var SyncEngine = /** @class */ (function () {
34
105
  function SyncEngine(schema, namespaceResolver, modelClasses, userModelClasses, storage, modelInstanceCreator, conflictHandler, errorHandler, syncPredicates, amplifyConfig, authModeStrategy, amplifyContext, connectivityMonitor) {
35
- var _this = this;
36
106
  if (amplifyConfig === void 0) { amplifyConfig = {}; }
107
+ var _this = this;
37
108
  this.schema = schema;
38
109
  this.namespaceResolver = namespaceResolver;
39
110
  this.modelClasses = modelClasses;
@@ -99,7 +170,7 @@ var SyncEngine = /** @class */ (function () {
99
170
  return __generator(this, function (_b) {
100
171
  switch (_b.label) {
101
172
  case 0:
102
- if (!(online && !this.online)) return [3 /*break*/, 10];
173
+ if (!(online && !this.online)) return [3 /*break*/, 9];
103
174
  this.online = online;
104
175
  observer.next({
105
176
  type: ControlMessage.SYNC_ENGINE_NETWORK_STATUS,
@@ -108,17 +179,13 @@ var SyncEngine = /** @class */ (function () {
108
179
  },
109
180
  });
110
181
  dataSubsObservable = void 0;
111
- if (!isNode) return [3 /*break*/, 1];
112
- logger.warn('Realtime disabled when in a server-side environment');
113
- return [3 /*break*/, 6];
114
- case 1:
115
182
  this.stopDisruptionListener =
116
183
  this.startDisruptionListener();
117
184
  //#region GraphQL Subscriptions
118
185
  _a = __read(this.subscriptionsProcessor.start(), 2), ctlSubsObservable_1 = _a[0], dataSubsObservable = _a[1];
119
- _b.label = 2;
120
- case 2:
121
- _b.trys.push([2, 4, , 5]);
186
+ _b.label = 1;
187
+ case 1:
188
+ _b.trys.push([1, 3, , 4]);
122
189
  return [4 /*yield*/, new Promise(function (resolve, reject) {
123
190
  onTerminate.then(reject);
124
191
  var ctlSubsSubscription = ctlSubsObservable_1.subscribe({
@@ -135,22 +202,22 @@ var SyncEngine = /** @class */ (function () {
135
202
  });
136
203
  subscriptions.push(ctlSubsSubscription);
137
204
  })];
138
- case 3:
205
+ case 2:
139
206
  _b.sent();
140
- return [3 /*break*/, 5];
141
- case 4:
207
+ return [3 /*break*/, 4];
208
+ case 3:
142
209
  err_2 = _b.sent();
143
210
  observer.error(err_2);
144
211
  failedStarting();
145
212
  return [2 /*return*/];
146
- case 5:
213
+ case 4:
147
214
  logger.log('Realtime ready');
148
215
  observer.next({
149
216
  type: ControlMessage.SYNC_ENGINE_SUBSCRIPTIONS_ESTABLISHED,
150
217
  });
151
- _b.label = 6;
152
- case 6:
153
- _b.trys.push([6, 8, , 9]);
218
+ _b.label = 5;
219
+ case 5:
220
+ _b.trys.push([5, 7, , 8]);
154
221
  return [4 /*yield*/, new Promise(function (resolve, reject) {
155
222
  var syncQuerySubscription = _this.syncQueriesObservable().subscribe({
156
223
  next: function (message) {
@@ -172,15 +239,15 @@ var SyncEngine = /** @class */ (function () {
172
239
  subscriptions.push(syncQuerySubscription);
173
240
  }
174
241
  })];
175
- case 7:
242
+ case 6:
176
243
  _b.sent();
177
- return [3 /*break*/, 9];
178
- case 8:
244
+ return [3 /*break*/, 8];
245
+ case 7:
179
246
  error_1 = _b.sent();
180
247
  observer.error(error_1);
181
248
  failedStarting();
182
249
  return [2 /*return*/];
183
- case 9:
250
+ case 8:
184
251
  //#endregion
185
252
  //#region process mutations (outbox)
186
253
  subscriptions.push(this.mutationsProcessor
@@ -220,31 +287,28 @@ var SyncEngine = /** @class */ (function () {
220
287
  }));
221
288
  //#endregion
222
289
  //#region Merge subscriptions buffer
223
- // TODO: extract to function
224
- if (!isNode) {
225
- subscriptions.push(dataSubsObservable.subscribe(function (_a) {
226
- var _b = __read(_a, 3), _transformerMutationType = _b[0], modelDefinition = _b[1], item = _b[2];
227
- return _this.runningProcesses.add(function () { return __awaiter(_this, void 0, void 0, function () {
228
- var modelConstructor, model;
229
- var _this = this;
230
- return __generator(this, function (_a) {
231
- switch (_a.label) {
232
- case 0:
233
- modelConstructor = this.userModelClasses[modelDefinition.name];
234
- model = this.modelInstanceCreator(modelConstructor, item);
235
- return [4 /*yield*/, this.storage.runExclusive(function (storage) {
236
- return _this.modelMerger.merge(storage, model, modelDefinition);
237
- })];
238
- case 1:
239
- _a.sent();
240
- return [2 /*return*/];
241
- }
242
- });
243
- }); }, 'subscription dataSubsObservable event');
244
- }));
245
- }
246
- return [3 /*break*/, 11];
247
- case 10:
290
+ subscriptions.push(dataSubsObservable.subscribe(function (_a) {
291
+ var _b = __read(_a, 3), _transformerMutationType = _b[0], modelDefinition = _b[1], item = _b[2];
292
+ return _this.runningProcesses.add(function () { return __awaiter(_this, void 0, void 0, function () {
293
+ var modelConstructor, model;
294
+ var _this = this;
295
+ return __generator(this, function (_a) {
296
+ switch (_a.label) {
297
+ case 0:
298
+ modelConstructor = this.userModelClasses[modelDefinition.name];
299
+ model = this.modelInstanceCreator(modelConstructor, item);
300
+ return [4 /*yield*/, this.storage.runExclusive(function (storage) {
301
+ return _this.modelMerger.merge(storage, model, modelDefinition);
302
+ })];
303
+ case 1:
304
+ _a.sent();
305
+ return [2 /*return*/];
306
+ }
307
+ });
308
+ }); }, 'subscription dataSubsObservable event');
309
+ }));
310
+ return [3 /*break*/, 10];
311
+ case 9:
248
312
  if (!online) {
249
313
  this.online = online;
250
314
  observer.next({
@@ -256,8 +320,8 @@ var SyncEngine = /** @class */ (function () {
256
320
  subscriptions.forEach(function (sub) { return sub.unsubscribe(); });
257
321
  subscriptions = [];
258
322
  }
259
- _b.label = 11;
260
- case 11:
323
+ _b.label = 10;
324
+ case 10:
261
325
  doneStarting();
262
326
  return [2 /*return*/];
263
327
  }
@@ -388,13 +452,13 @@ var SyncEngine = /** @class */ (function () {
388
452
  terminated = false;
389
453
  _loop_1 = function () {
390
454
  var count, modelLastSync, paginatingModels, lastFullSyncStartedAt, syncInterval, start, syncDuration, lastStartedAt, msNextFullSync;
391
- return __generator(this, function (_a) {
392
- switch (_a.label) {
455
+ return __generator(this, function (_b) {
456
+ switch (_b.label) {
393
457
  case 0:
394
458
  count = new WeakMap();
395
459
  return [4 /*yield*/, this_1.getModelsMetadataWithNextFullSync(Date.now())];
396
460
  case 1:
397
- modelLastSync = _a.sent();
461
+ modelLastSync = _b.sent();
398
462
  paginatingModels = new Set(modelLastSync.keys());
399
463
  return [4 /*yield*/, new Promise(function (resolve, reject) {
400
464
  if (!_this.runningProcesses.isOpen)
@@ -429,13 +493,13 @@ var SyncEngine = /** @class */ (function () {
429
493
  * merged individually. Otherwise, we can merge them in batches.
430
494
  */
431
495
  return [4 /*yield*/, this.storage.runExclusive(function (storage) { return __awaiter(_this, void 0, void 0, function () {
432
- var idsInOutbox, oneByOne, page, opTypeCount, oneByOne_1, oneByOne_1_1, item, opType, e_1_1, _a, _b, _c, counts;
433
- var e_1, _d;
434
- return __generator(this, function (_e) {
435
- switch (_e.label) {
496
+ var idsInOutbox, oneByOne, page, opTypeCount, oneByOne_1, oneByOne_1_1, item, opType, e_1_1, _a, _b, _c, _d, counts;
497
+ var e_1, _e;
498
+ return __generator(this, function (_f) {
499
+ switch (_f.label) {
436
500
  case 0: return [4 /*yield*/, this.outbox.getModelIds(storage)];
437
501
  case 1:
438
- idsInOutbox = _e.sent();
502
+ idsInOutbox = _f.sent();
439
503
  oneByOne = [];
440
504
  page = items.filter(function (item) {
441
505
  var itemId = getIdentifierValue(modelDefinition, item);
@@ -446,41 +510,42 @@ var SyncEngine = /** @class */ (function () {
446
510
  return false;
447
511
  });
448
512
  opTypeCount = [];
449
- _e.label = 2;
513
+ _f.label = 2;
450
514
  case 2:
451
- _e.trys.push([2, 7, 8, 9]);
515
+ _f.trys.push([2, 7, 8, 9]);
452
516
  oneByOne_1 = __values(oneByOne), oneByOne_1_1 = oneByOne_1.next();
453
- _e.label = 3;
517
+ _f.label = 3;
454
518
  case 3:
455
519
  if (!!oneByOne_1_1.done) return [3 /*break*/, 6];
456
520
  item = oneByOne_1_1.value;
457
521
  return [4 /*yield*/, this.modelMerger.merge(storage, item, modelDefinition)];
458
522
  case 4:
459
- opType = _e.sent();
523
+ opType = _f.sent();
460
524
  if (opType !== undefined) {
461
525
  opTypeCount.push([item, opType]);
462
526
  }
463
- _e.label = 5;
527
+ _f.label = 5;
464
528
  case 5:
465
529
  oneByOne_1_1 = oneByOne_1.next();
466
530
  return [3 /*break*/, 3];
467
531
  case 6: return [3 /*break*/, 9];
468
532
  case 7:
469
- e_1_1 = _e.sent();
533
+ e_1_1 = _f.sent();
470
534
  e_1 = { error: e_1_1 };
471
535
  return [3 /*break*/, 9];
472
536
  case 8:
473
537
  try {
474
- if (oneByOne_1_1 && !oneByOne_1_1.done && (_d = oneByOne_1.return)) _d.call(oneByOne_1);
538
+ if (oneByOne_1_1 && !oneByOne_1_1.done && (_e = oneByOne_1.return)) _e.call(oneByOne_1);
475
539
  }
476
540
  finally { if (e_1) throw e_1.error; }
477
541
  return [7 /*endfinally*/];
478
542
  case 9:
479
543
  _b = (_a = opTypeCount.push).apply;
480
544
  _c = [opTypeCount];
545
+ _d = [[]];
481
546
  return [4 /*yield*/, this.modelMerger.mergePage(storage, modelConstructor, page, modelDefinition)];
482
547
  case 10:
483
- _b.apply(_a, _c.concat([__spread.apply(void 0, [(_e.sent())])]));
548
+ _b.apply(_a, _c.concat([__spreadArray.apply(void 0, _d.concat([__read.apply(void 0, [(_f.sent())]), false]))]));
484
549
  counts = count.get(modelConstructor);
485
550
  opTypeCount.forEach(function (_a) {
486
551
  var _b = __read(_a, 2), opType = _b[1];
@@ -495,7 +560,7 @@ var SyncEngine = /** @class */ (function () {
495
560
  counts.deleted++;
496
561
  break;
497
562
  default:
498
- throw new Error("Invalid opType " + opType);
563
+ throw new Error("Invalid opType ".concat(opType));
499
564
  }
500
565
  });
501
566
  return [2 /*return*/];
@@ -570,7 +635,7 @@ var SyncEngine = /** @class */ (function () {
570
635
  });
571
636
  })];
572
637
  case 2:
573
- _a.sent();
638
+ _b.sent();
574
639
  if (!lastFullSyncStartedAt) {
575
640
  msNextFullSync = syncInterval - syncDuration;
576
641
  }
@@ -580,7 +645,7 @@ var SyncEngine = /** @class */ (function () {
580
645
  syncInterval -
581
646
  (lastStartedAt + syncDuration);
582
647
  }
583
- logger.debug("Next fullSync in " + msNextFullSync / 1000 + " seconds. (" + new Date(Date.now() + msNextFullSync) + ")");
648
+ logger.debug("Next fullSync in ".concat(msNextFullSync / 1000, " seconds. (").concat(new Date(Date.now() + msNextFullSync), ")"));
584
649
  // TODO: create `BackgroundProcessManager.sleep()` ... but, need to put
585
650
  // a lot of thought into what that contract looks like to
586
651
  // support possible use-cases:
@@ -626,7 +691,7 @@ var SyncEngine = /** @class */ (function () {
626
691
  // TLDR; this is a lot of complexity here for a sleep(),
627
692
  // but, it's not clear to me yet how to support an
628
693
  // extensible, centralized cancelable `sleep()` elegantly.
629
- _a.sent();
694
+ _b.sent();
630
695
  this_1.unsleepSyncQueriesObservable = null;
631
696
  this_1.waitForSleepState = new Promise(function (resolve) {
632
697
  _this.syncQueriesObservableStartSleeping = resolve;
@@ -1023,4 +1088,3 @@ var SyncEngine = /** @class */ (function () {
1023
1088
  return SyncEngine;
1024
1089
  }());
1025
1090
  export { SyncEngine };
1026
- //# sourceMappingURL=index.js.map
@@ -1,4 +1,75 @@
1
- import { __awaiter, __generator, __read, __spread, __values } from "tslib";
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ var __read = (this && this.__read) || function (o, n) {
38
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
39
+ if (!m) return o;
40
+ var i = m.call(o), r, ar = [], e;
41
+ try {
42
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
43
+ }
44
+ catch (error) { e = { error: error }; }
45
+ finally {
46
+ try {
47
+ if (r && !r.done && (m = i["return"])) m.call(i);
48
+ }
49
+ finally { if (e) throw e.error; }
50
+ }
51
+ return ar;
52
+ };
53
+ var __values = (this && this.__values) || function(o) {
54
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
55
+ if (m) return m.call(o);
56
+ if (o && typeof o.length === "number") return {
57
+ next: function () {
58
+ if (o && i >= o.length) o = void 0;
59
+ return { value: o && o[i++], done: !o };
60
+ }
61
+ };
62
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
63
+ };
64
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
65
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
66
+ if (ar || !(i in from)) {
67
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
68
+ ar[i] = from[i];
69
+ }
70
+ }
71
+ return to.concat(ar || Array.prototype.slice.call(from));
72
+ };
2
73
  import { OpType, } from '../types';
3
74
  import { getIdentifierValue } from './utils';
4
75
  // https://github.com/aws-amplify/amplify-js/blob/datastore-docs/packages/datastore/docs/sync-engine.md#merger
@@ -61,7 +132,7 @@ var ModelMerger = /** @class */ (function () {
61
132
  }
62
133
  finally { if (e_1) throw e_1.error; }
63
134
  }
64
- page = __spread(itemsMap.values());
135
+ page = __spreadArray([], __read(itemsMap.values()), false);
65
136
  return [4 /*yield*/, storage.batchSave(modelConstructor, page, this.ownSymbol)];
66
137
  case 1: return [2 /*return*/, _b.sent()];
67
138
  }
@@ -71,4 +142,3 @@ var ModelMerger = /** @class */ (function () {
71
142
  return ModelMerger;
72
143
  }());
73
144
  export { ModelMerger };
74
- //# sourceMappingURL=merger.js.map
@@ -1,4 +1,77 @@
1
- import { __assign, __awaiter, __generator, __read, __rest } from "tslib";
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ var __rest = (this && this.__rest) || function (s, e) {
49
+ var t = {};
50
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
51
+ t[p] = s[p];
52
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
53
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
54
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
55
+ t[p[i]] = s[p[i]];
56
+ }
57
+ return t;
58
+ };
59
+ var __read = (this && this.__read) || function (o, n) {
60
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
61
+ if (!m) return o;
62
+ var i = m.call(o), r, ar = [], e;
63
+ try {
64
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
65
+ }
66
+ catch (error) { e = { error: error }; }
67
+ finally {
68
+ try {
69
+ if (r && !r.done && (m = i["return"])) m.call(i);
70
+ }
71
+ finally { if (e) throw e.error; }
72
+ }
73
+ return ar;
74
+ };
2
75
  import { ModelPredicateCreator } from '../predicates';
3
76
  import { QueryOne, } from '../types';
4
77
  import { USER, SYNC, valuesEqual } from '../util';
@@ -233,9 +306,7 @@ var MutationEventOutbox = /** @class */ (function () {
233
306
  MutationEventOutbox.prototype.mergeUserFields = function (previous, current) {
234
307
  var _a = JSON.parse(previous.data), _version = _a._version, _lastChangedAt = _a._lastChangedAt, _deleted = _a._deleted, previousData = __rest(_a, ["_version", "_lastChangedAt", "_deleted"]);
235
308
  var _b = JSON.parse(current.data), __version = _b._version, __lastChangedAt = _b._lastChangedAt, __deleted = _b._deleted, currentData = __rest(_b, ["_version", "_lastChangedAt", "_deleted"]);
236
- var data = JSON.stringify(__assign(__assign({ _version: _version,
237
- _lastChangedAt: _lastChangedAt,
238
- _deleted: _deleted }, previousData), currentData));
309
+ var data = JSON.stringify(__assign(__assign({ _version: _version, _lastChangedAt: _lastChangedAt, _deleted: _deleted }, previousData), currentData));
239
310
  return this.modelInstanceCreator(this.MutationEvent, __assign(__assign({}, current), { data: data }));
240
311
  };
241
312
  /*
@@ -274,4 +345,3 @@ var MutationEventOutbox = /** @class */ (function () {
274
345
  return MutationEventOutbox;
275
346
  }());
276
347
  export { MutationEventOutbox };
277
- //# sourceMappingURL=outbox.js.map
@@ -1,5 +1,5 @@
1
1
  import { ErrorType } from '../../types';
2
- export declare type ErrorMap = Partial<{
2
+ export type ErrorMap = Partial<{
3
3
  [key in ErrorType]: (error: Error) => boolean;
4
4
  }>;
5
5
  export declare const mutationErrorMap: ErrorMap;