@aws-amplify/datastore 3.14.5-unstable.2 → 3.14.5

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 (178) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/build.js +5 -0
  3. package/dist/aws-amplify-datastore.js +92853 -0
  4. package/dist/aws-amplify-datastore.js.map +1 -0
  5. package/dist/aws-amplify-datastore.min.js +65 -0
  6. package/dist/aws-amplify-datastore.min.js.map +1 -0
  7. package/index.js +7 -0
  8. package/lib/authModeStrategies/multiAuthStrategy.js +64 -6
  9. package/lib/authModeStrategies/multiAuthStrategy.js.map +1 -1
  10. package/lib/datastore/datastore.js +297 -703
  11. package/lib/datastore/datastore.js.map +1 -1
  12. package/lib/index.js +4 -6
  13. package/lib/index.js.map +1 -1
  14. package/lib/predicates/index.js +6 -127
  15. package/lib/predicates/index.js.map +1 -1
  16. package/lib/predicates/sort.js +4 -10
  17. package/lib/predicates/sort.js.map +1 -1
  18. package/lib/storage/adapter/AsyncStorageAdapter.js +381 -138
  19. package/lib/storage/adapter/AsyncStorageAdapter.js.map +1 -1
  20. package/lib/storage/adapter/AsyncStorageDatabase.js +98 -37
  21. package/lib/storage/adapter/AsyncStorageDatabase.js.map +1 -1
  22. package/lib/storage/adapter/InMemoryStore.js +67 -16
  23. package/lib/storage/adapter/InMemoryStore.js.map +1 -1
  24. package/lib/storage/adapter/InMemoryStore.native.js +4 -2
  25. package/lib/storage/adapter/InMemoryStore.native.js.map +1 -1
  26. package/lib/storage/adapter/IndexedDBAdapter.js +420 -272
  27. package/lib/storage/adapter/IndexedDBAdapter.js.map +1 -1
  28. package/lib/storage/adapter/getDefaultAdapter/index.js +5 -3
  29. package/lib/storage/adapter/getDefaultAdapter/index.js.map +1 -1
  30. package/lib/storage/adapter/getDefaultAdapter/index.native.js +4 -2
  31. package/lib/storage/adapter/getDefaultAdapter/index.native.js.map +1 -1
  32. package/lib/storage/storage.js +143 -72
  33. package/lib/storage/storage.js.map +1 -1
  34. package/lib/sync/datastoreConnectivity.js +55 -6
  35. package/lib/sync/datastoreConnectivity.js.map +1 -1
  36. package/lib/sync/datastoreReachability/index.native.js +4 -2
  37. package/lib/sync/datastoreReachability/index.native.js.map +1 -1
  38. package/lib/sync/index.js +124 -49
  39. package/lib/sync/index.js.map +1 -1
  40. package/lib/sync/merger.js +74 -8
  41. package/lib/sync/merger.js.map +1 -1
  42. package/lib/sync/outbox.js +97 -24
  43. package/lib/sync/outbox.js.map +1 -1
  44. package/lib/sync/processors/errorMaps.js +35 -5
  45. package/lib/sync/processors/errorMaps.js.map +1 -1
  46. package/lib/sync/processors/mutation.js +131 -47
  47. package/lib/sync/processors/mutation.js.map +1 -1
  48. package/lib/sync/processors/subscription.js +102 -29
  49. package/lib/sync/processors/subscription.js.map +1 -1
  50. package/lib/sync/processors/sync.js +102 -26
  51. package/lib/sync/processors/sync.js.map +1 -1
  52. package/lib/sync/utils.js +103 -40
  53. package/lib/sync/utils.js.map +1 -1
  54. package/lib/types.js +39 -9
  55. package/lib/types.js.map +1 -1
  56. package/lib/util.js +188 -192
  57. package/lib/util.js.map +1 -1
  58. package/lib-esm/authModeStrategies/multiAuthStrategy.js +57 -2
  59. package/lib-esm/authModeStrategies/multiAuthStrategy.js.map +1 -1
  60. package/lib-esm/datastore/datastore.d.ts +8 -59
  61. package/lib-esm/datastore/datastore.js +234 -642
  62. package/lib-esm/datastore/datastore.js.map +1 -1
  63. package/lib-esm/index.d.ts +2 -3
  64. package/lib-esm/index.js +1 -2
  65. package/lib-esm/index.js.map +1 -1
  66. package/lib-esm/predicates/index.d.ts +2 -16
  67. package/lib-esm/predicates/index.js +7 -128
  68. package/lib-esm/predicates/index.js.map +1 -1
  69. package/lib-esm/predicates/sort.js +4 -10
  70. package/lib-esm/predicates/sort.js.map +1 -1
  71. package/lib-esm/storage/adapter/AsyncStorageAdapter.d.ts +1 -2
  72. package/lib-esm/storage/adapter/AsyncStorageAdapter.js +349 -109
  73. package/lib-esm/storage/adapter/AsyncStorageAdapter.js.map +1 -1
  74. package/lib-esm/storage/adapter/AsyncStorageDatabase.js +68 -7
  75. package/lib-esm/storage/adapter/AsyncStorageDatabase.js.map +1 -1
  76. package/lib-esm/storage/adapter/InMemoryStore.d.ts +1 -1
  77. package/lib-esm/storage/adapter/InMemoryStore.js +52 -1
  78. package/lib-esm/storage/adapter/InMemoryStore.js.map +1 -1
  79. package/lib-esm/storage/adapter/IndexedDBAdapter.d.ts +2 -4
  80. package/lib-esm/storage/adapter/IndexedDBAdapter.js +368 -227
  81. package/lib-esm/storage/adapter/IndexedDBAdapter.js.map +1 -1
  82. package/lib-esm/storage/adapter/getDefaultAdapter/index.js.map +1 -1
  83. package/lib-esm/storage/storage.d.ts +6 -7
  84. package/lib-esm/storage/storage.js +101 -33
  85. package/lib-esm/storage/storage.js.map +1 -1
  86. package/lib-esm/sync/datastoreConnectivity.js +47 -1
  87. package/lib-esm/sync/datastoreConnectivity.js.map +1 -1
  88. package/lib-esm/sync/index.js +76 -4
  89. package/lib-esm/sync/index.js.map +1 -1
  90. package/lib-esm/sync/merger.js +67 -1
  91. package/lib-esm/sync/merger.js.map +1 -1
  92. package/lib-esm/sync/outbox.js +74 -1
  93. package/lib-esm/sync/outbox.js.map +1 -1
  94. package/lib-esm/sync/processors/errorMaps.js +32 -2
  95. package/lib-esm/sync/processors/errorMaps.js.map +1 -1
  96. package/lib-esm/sync/processors/mutation.js +93 -12
  97. package/lib-esm/sync/processors/mutation.js.map +1 -1
  98. package/lib-esm/sync/processors/subscription.js +69 -6
  99. package/lib-esm/sync/processors/subscription.js.map +1 -1
  100. package/lib-esm/sync/processors/sync.js +75 -2
  101. package/lib-esm/sync/processors/sync.js.map +1 -1
  102. package/lib-esm/sync/utils.d.ts +1 -1
  103. package/lib-esm/sync/utils.js +95 -32
  104. package/lib-esm/sync/utils.js.map +1 -1
  105. package/lib-esm/types.d.ts +10 -63
  106. package/lib-esm/types.js +38 -7
  107. package/lib-esm/types.js.map +1 -1
  108. package/lib-esm/util.d.ts +6 -39
  109. package/lib-esm/util.js +171 -171
  110. package/lib-esm/util.js.map +1 -1
  111. package/package.json +14 -21
  112. package/src/authModeStrategies/multiAuthStrategy.ts +2 -2
  113. package/src/datastore/datastore.ts +206 -699
  114. package/src/index.ts +0 -4
  115. package/src/predicates/index.ts +17 -143
  116. package/src/predicates/sort.ts +2 -8
  117. package/src/storage/adapter/AsyncStorageAdapter.ts +178 -56
  118. package/src/storage/adapter/AsyncStorageDatabase.ts +15 -16
  119. package/src/storage/adapter/InMemoryStore.ts +2 -5
  120. package/src/storage/adapter/IndexedDBAdapter.ts +191 -166
  121. package/src/storage/adapter/getDefaultAdapter/index.ts +2 -2
  122. package/src/storage/storage.ts +37 -56
  123. package/src/sync/datastoreConnectivity.ts +4 -4
  124. package/src/sync/index.ts +28 -22
  125. package/src/sync/merger.ts +1 -1
  126. package/src/sync/outbox.ts +6 -6
  127. package/src/sync/processors/errorMaps.ts +1 -1
  128. package/src/sync/processors/mutation.ts +19 -23
  129. package/src/sync/processors/subscription.ts +16 -20
  130. package/src/sync/processors/sync.ts +17 -17
  131. package/src/sync/utils.ts +48 -42
  132. package/src/types.ts +16 -128
  133. package/src/util.ts +150 -108
  134. package/webpack.config.dev.js +6 -0
  135. package/lib/authModeStrategies/defaultAuthStrategy.d.ts +0 -2
  136. package/lib/authModeStrategies/index.d.ts +0 -2
  137. package/lib/authModeStrategies/multiAuthStrategy.d.ts +0 -13
  138. package/lib/datastore/datastore.d.ts +0 -207
  139. package/lib/index.d.ts +0 -16
  140. package/lib/predicates/index.d.ts +0 -30
  141. package/lib/predicates/next.d.ts +0 -301
  142. package/lib/predicates/next.js +0 -816
  143. package/lib/predicates/next.js.map +0 -1
  144. package/lib/predicates/sort.d.ts +0 -8
  145. package/lib/ssr/index.d.ts +0 -3
  146. package/lib/storage/adapter/AsyncStorageAdapter.d.ts +0 -42
  147. package/lib/storage/adapter/AsyncStorageDatabase.d.ts +0 -39
  148. package/lib/storage/adapter/InMemoryStore.d.ts +0 -11
  149. package/lib/storage/adapter/InMemoryStore.native.d.ts +0 -1
  150. package/lib/storage/adapter/IndexedDBAdapter.d.ts +0 -61
  151. package/lib/storage/adapter/getDefaultAdapter/index.d.ts +0 -3
  152. package/lib/storage/adapter/getDefaultAdapter/index.native.d.ts +0 -3
  153. package/lib/storage/adapter/index.d.ts +0 -9
  154. package/lib/storage/relationship.d.ts +0 -140
  155. package/lib/storage/relationship.js +0 -335
  156. package/lib/storage/relationship.js.map +0 -1
  157. package/lib/storage/storage.d.ts +0 -50
  158. package/lib/sync/datastoreConnectivity.d.ts +0 -16
  159. package/lib/sync/datastoreReachability/index.d.ts +0 -3
  160. package/lib/sync/datastoreReachability/index.native.d.ts +0 -3
  161. package/lib/sync/index.d.ts +0 -89
  162. package/lib/sync/merger.d.ts +0 -17
  163. package/lib/sync/outbox.d.ts +0 -27
  164. package/lib/sync/processors/errorMaps.d.ts +0 -17
  165. package/lib/sync/processors/mutation.d.ts +0 -58
  166. package/lib/sync/processors/subscription.d.ts +0 -33
  167. package/lib/sync/processors/sync.d.ts +0 -28
  168. package/lib/sync/utils.d.ts +0 -42
  169. package/lib/types.d.ts +0 -554
  170. package/lib/util.d.ts +0 -189
  171. package/lib-esm/predicates/next.d.ts +0 -301
  172. package/lib-esm/predicates/next.js +0 -812
  173. package/lib-esm/predicates/next.js.map +0 -1
  174. package/lib-esm/storage/relationship.d.ts +0 -140
  175. package/lib-esm/storage/relationship.js +0 -333
  176. package/lib-esm/storage/relationship.js.map +0 -1
  177. package/src/predicates/next.ts +0 -967
  178. package/src/storage/relationship.ts +0 -272
package/src/index.ts CHANGED
@@ -3,8 +3,6 @@ export {
3
3
  DataStoreClass,
4
4
  initSchema,
5
5
  ModelInstanceCreator,
6
- AsyncCollection,
7
- AsyncItem,
8
6
  } from './datastore/datastore';
9
7
 
10
8
  export {
@@ -22,8 +20,6 @@ import {
22
20
  isModelConstructor,
23
21
  } from './util';
24
22
 
25
- export { NAMESPACES } from './util';
26
-
27
23
  export const utils = {
28
24
  USER,
29
25
  traverseModel,
@@ -8,7 +8,11 @@ import {
8
8
  ProducerModelPredicate,
9
9
  SchemaModel,
10
10
  } from '../types';
11
- import { extractPrimaryKeyFieldNames, extractPrimaryKeyValues } from '../util';
11
+ import {
12
+ exhaustiveCheck,
13
+ extractPrimaryKeyFieldNames,
14
+ extractPrimaryKeyValues,
15
+ } from '../util';
12
16
 
13
17
  export { ModelSortPredicateCreator } from './sort';
14
18
 
@@ -20,37 +24,6 @@ export function isPredicatesAll(
20
24
  return predicatesAllSet.has(predicate);
21
25
  }
22
26
 
23
- const groupKeys = new Set(['and', 'or', 'not']);
24
- const isGroup = o => {
25
- const keys = [...Object.keys(o)];
26
- return keys.length === 1 && groupKeys.has(keys[0]);
27
- };
28
-
29
- export const comparisonKeys = new Set([
30
- 'eq',
31
- 'ne',
32
- 'gt',
33
- 'lt',
34
- 'ge',
35
- 'le',
36
- 'contains',
37
- 'notContains',
38
- 'beginsWith',
39
- 'between',
40
- ]);
41
- const isComparison = o => {
42
- const keys = [...Object.keys(o)];
43
- return !Array.isArray(o) && keys.length === 1 && comparisonKeys.has(keys[0]);
44
- };
45
-
46
- const isValid = o => {
47
- if (Array.isArray(o)) {
48
- return o.every(v => isValid(v));
49
- } else {
50
- return Object.keys(o).length === 1;
51
- }
52
- };
53
-
54
27
  // This symbol is not used at runtime, only its type (unique symbol)
55
28
  export const PredicateAll = Symbol('A predicate that matches all records');
56
29
 
@@ -70,21 +43,20 @@ export class ModelPredicateCreator {
70
43
  PredicatesGroup<any>
71
44
  >();
72
45
 
73
- static createPredicateBuilder<T extends PersistentModel>(
46
+ private static createPredicateBuilder<T extends PersistentModel>(
74
47
  modelDefinition: SchemaModel
75
48
  ) {
76
49
  const { name: modelName } = modelDefinition;
77
50
  const fieldNames = new Set<keyof T>(Object.keys(modelDefinition.fields));
78
51
 
79
52
  let handler: ProxyHandler<ModelPredicate<T>>;
80
-
81
53
  const predicate = new Proxy(
82
54
  {} as ModelPredicate<T>,
83
55
  (handler = {
84
56
  get(
85
- _,
57
+ _target,
86
58
  propertyKey,
87
- self: ModelPredicate<T>
59
+ receiver: ModelPredicate<T>
88
60
  ): PredicateExpression<T, any> {
89
61
  const groupType = propertyKey as keyof PredicateGroups<T>;
90
62
 
@@ -108,7 +80,7 @@ export class ModelPredicateCreator {
108
80
 
109
81
  // Set the recorder group
110
82
  ModelPredicateCreator.predicateGroupsMap.set(
111
- tmpPredicateRecorder as any,
83
+ tmpPredicateRecorder,
112
84
  group
113
85
  );
114
86
 
@@ -117,15 +89,15 @@ export class ModelPredicateCreator {
117
89
 
118
90
  // Push the group to the top-level recorder
119
91
  ModelPredicateCreator.predicateGroupsMap
120
- .get(self as any)!
92
+ .get(receiver)!
121
93
  .predicates.push(group);
122
94
 
123
- return self;
95
+ return receiver;
124
96
  };
125
97
 
126
98
  return result;
127
99
  default:
128
- // intentionally blank.
100
+ exhaustiveCheck(groupType, false);
129
101
  }
130
102
 
131
103
  const field = propertyKey as keyof T;
@@ -141,9 +113,9 @@ export class ModelPredicateCreator {
141
113
  operand: any
142
114
  ) => {
143
115
  ModelPredicateCreator.predicateGroupsMap
144
- .get(self as any)!
116
+ .get(receiver)!
145
117
  .predicates.push({ field, operator, operand });
146
- return self;
118
+ return receiver;
147
119
  };
148
120
  return result;
149
121
  },
@@ -154,7 +126,7 @@ export class ModelPredicateCreator {
154
126
  type: 'and',
155
127
  predicates: [],
156
128
  };
157
- ModelPredicateCreator.predicateGroupsMap.set(predicate as any, group);
129
+ ModelPredicateCreator.predicateGroupsMap.set(predicate, group);
158
130
 
159
131
  return predicate;
160
132
  }
@@ -173,12 +145,12 @@ export class ModelPredicateCreator {
173
145
  throw new Error('The predicate is not valid');
174
146
  }
175
147
 
176
- return ModelPredicateCreator.predicateGroupsMap.get(predicate as any);
148
+ return ModelPredicateCreator.predicateGroupsMap.get(predicate);
177
149
  }
178
150
 
179
151
  // transforms cb-style predicate into Proxy
180
152
  static createFromExisting<T extends PersistentModel>(
181
- modelDefinition?: SchemaModel,
153
+ modelDefinition: SchemaModel,
182
154
  existing?: ProducerModelPredicate<T>
183
155
  ) {
184
156
  if (!existing || !modelDefinition) {
@@ -217,102 +189,4 @@ export class ModelPredicateCreator {
217
189
 
218
190
  return modelPredicate;
219
191
  }
220
-
221
- /**
222
- * Searches a `Model` table for records matching the given equalities object.
223
- *
224
- * This only matches against fields given in the equalities object. No other
225
- * fields are tested by the predicate.
226
- *
227
- * @param modelDefinition The model we need a predicate for.
228
- * @param flatEqualities An object holding field equalities to search for.
229
- */
230
- static createFromFlatEqualities<T extends PersistentModel>(
231
- modelDefinition: SchemaModel,
232
- flatEqualities: Record<string, any>
233
- ) {
234
- let predicate =
235
- ModelPredicateCreator.createPredicateBuilder<T>(modelDefinition);
236
-
237
- for (const [field, value] of Object.entries(flatEqualities)) {
238
- predicate = predicate[field]('eq' as any, value);
239
- }
240
-
241
- return predicate;
242
- }
243
-
244
- static createGroupFromExisting<T extends PersistentModel>(
245
- modelDefinition: SchemaModel,
246
- group: 'and' | 'or' | 'not',
247
- existingPredicates: (ProducerModelPredicate<T> | ModelPredicate<T>)[]
248
- ) {
249
- let outer =
250
- ModelPredicateCreator.createPredicateBuilder<T>(modelDefinition);
251
-
252
- outer = outer[group](seed => {
253
- let inner = seed;
254
- for (const existing of existingPredicates) {
255
- if (typeof existing === 'function') {
256
- inner = existing(inner);
257
- } else {
258
- ModelPredicateCreator.predicateGroupsMap
259
- .get(inner)
260
- ?.predicates.push(
261
- ModelPredicateCreator.predicateGroupsMap.get(
262
- existing as ModelPredicate<T>
263
- )!
264
- );
265
- }
266
- }
267
- return inner;
268
- });
269
-
270
- return outer;
271
- }
272
-
273
- static transformGraphQLtoPredicateAST(gql: any) {
274
- if (!isValid(gql)) {
275
- throw new Error('Invalid QGL AST: ' + gql);
276
- }
277
-
278
- if (isGroup(gql)) {
279
- const groupkey = Object.keys(gql)[0];
280
- const children = this.transformGraphQLtoPredicateAST(gql[groupkey]);
281
- return {
282
- type: groupkey,
283
- predicates: Array.isArray(children) ? children : [children],
284
- };
285
- } else if (isComparison(gql)) {
286
- const operatorKey = Object.keys(gql)[0];
287
- return {
288
- operator: operatorKey,
289
- operand: gql[operatorKey],
290
- };
291
- } else {
292
- if (Array.isArray(gql)) {
293
- return gql.map(o => this.transformGraphQLtoPredicateAST(o));
294
- } else {
295
- const fieldKey = Object.keys(gql)[0];
296
- return {
297
- field: fieldKey,
298
- ...this.transformGraphQLtoPredicateAST(gql[fieldKey]),
299
- };
300
- }
301
- }
302
- }
303
-
304
- static createFromAST(
305
- modelDefinition: SchemaModel,
306
- ast: any
307
- ): ModelPredicate<any> {
308
- const predicate =
309
- ModelPredicateCreator.createPredicateBuilder(modelDefinition);
310
-
311
- ModelPredicateCreator.predicateGroupsMap.set(
312
- predicate,
313
- this.transformGraphQLtoPredicateAST(ast)
314
- );
315
-
316
- return predicate;
317
- }
318
192
  }
@@ -35,7 +35,7 @@ export class ModelSortPredicateCreator {
35
35
  const result = (sortDirection: SortDirection) => {
36
36
  ModelSortPredicateCreator.sortPredicateGroupsMap
37
37
  .get(receiver)
38
- ?.push({ field, sortDirection });
38
+ .push({ field, sortDirection });
39
39
 
40
40
  return receiver;
41
41
  };
@@ -66,13 +66,7 @@ export class ModelSortPredicateCreator {
66
66
  throw new Error('The predicate is not valid');
67
67
  }
68
68
 
69
- const predicateGroup =
70
- ModelSortPredicateCreator.sortPredicateGroupsMap.get(predicate);
71
- if (predicateGroup) {
72
- return predicateGroup;
73
- } else {
74
- throw new Error('Predicate group not found');
75
- }
69
+ return ModelSortPredicateCreator.sortPredicateGroupsMap.get(predicate);
76
70
  }
77
71
 
78
72
  // transforms cb-style predicate into Proxy