@aws-amplify/datastore 4.7.6-api-v6-models.b3abc9b.0 → 5.0.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 (187) 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 +38 -53
  5. package/lib/datastore/datastore.d.ts +4 -5
  6. package/lib/datastore/datastore.js +929 -1284
  7. package/lib/index.d.ts +1 -1
  8. package/lib/index.js +26 -13
  9. package/lib/predicates/index.js +54 -69
  10. package/lib/predicates/next.d.ts +2 -2
  11. package/lib/predicates/next.js +313 -462
  12. package/lib/predicates/sort.js +24 -28
  13. package/lib/ssr/index.js +2 -2
  14. package/lib/storage/adapter/AsyncStorageAdapter.js +120 -342
  15. package/lib/storage/adapter/AsyncStorageDatabase.js +217 -421
  16. package/lib/storage/adapter/InMemoryStore.js +28 -51
  17. package/lib/storage/adapter/InMemoryStore.native.js +5 -3
  18. package/lib/storage/adapter/IndexedDBAdapter.js +466 -871
  19. package/lib/storage/adapter/StorageAdapterBase.js +180 -330
  20. package/lib/storage/adapter/getDefaultAdapter/index.js +8 -10
  21. package/lib/storage/adapter/getDefaultAdapter/index.native.js +5 -4
  22. package/lib/storage/adapter/index.js +0 -1
  23. package/lib/storage/relationship.js +177 -253
  24. package/lib/storage/storage.d.ts +4 -4
  25. package/lib/storage/storage.js +255 -433
  26. package/lib/sync/datastoreConnectivity.d.ts +2 -2
  27. package/lib/sync/datastoreConnectivity.js +29 -39
  28. package/lib/sync/datastoreReachability/index.d.ts +1 -3
  29. package/lib/sync/datastoreReachability/index.js +3 -3
  30. package/lib/sync/datastoreReachability/index.native.d.ts +1 -3
  31. package/lib/sync/datastoreReachability/index.native.js +4 -5
  32. package/lib/sync/index.d.ts +2 -2
  33. package/lib/sync/index.js +522 -827
  34. package/lib/sync/merger.js +31 -63
  35. package/lib/sync/outbox.js +148 -232
  36. package/lib/sync/processors/errorMaps.d.ts +1 -1
  37. package/lib/sync/processors/errorMaps.js +30 -47
  38. package/lib/sync/processors/mutation.d.ts +2 -2
  39. package/lib/sync/processors/mutation.js +343 -502
  40. package/lib/sync/processors/subscription.d.ts +5 -2
  41. package/lib/sync/processors/subscription.js +283 -437
  42. package/lib/sync/processors/sync.d.ts +2 -2
  43. package/lib/sync/processors/sync.js +279 -404
  44. package/lib/sync/utils.d.ts +5 -4
  45. package/lib/sync/utils.js +267 -320
  46. package/lib/tsconfig.tsbuildinfo +1 -0
  47. package/lib/types.d.ts +138 -140
  48. package/lib/types.js +17 -24
  49. package/lib/util.d.ts +9 -17
  50. package/lib/util.js +387 -511
  51. package/lib-esm/authModeStrategies/defaultAuthStrategy.js +1 -2
  52. package/lib-esm/authModeStrategies/index.js +0 -1
  53. package/lib-esm/authModeStrategies/multiAuthStrategy.js +35 -52
  54. package/lib-esm/datastore/datastore.d.ts +4 -5
  55. package/lib-esm/datastore/datastore.js +888 -1247
  56. package/lib-esm/index.d.ts +1 -1
  57. package/lib-esm/index.js +6 -7
  58. package/lib-esm/predicates/index.js +53 -70
  59. package/lib-esm/predicates/next.d.ts +2 -2
  60. package/lib-esm/predicates/next.js +306 -459
  61. package/lib-esm/predicates/sort.js +23 -28
  62. package/lib-esm/ssr/index.js +1 -2
  63. package/lib-esm/storage/adapter/AsyncStorageAdapter.js +111 -338
  64. package/lib-esm/storage/adapter/AsyncStorageDatabase.js +212 -416
  65. package/lib-esm/storage/adapter/InMemoryStore.js +27 -52
  66. package/lib-esm/storage/adapter/InMemoryStore.native.js +0 -1
  67. package/lib-esm/storage/adapter/IndexedDBAdapter.js +438 -866
  68. package/lib-esm/storage/adapter/StorageAdapterBase.js +173 -325
  69. package/lib-esm/storage/adapter/getDefaultAdapter/index.js +2 -6
  70. package/lib-esm/storage/adapter/getDefaultAdapter/index.native.js +1 -2
  71. package/lib-esm/storage/adapter/index.js +1 -1
  72. package/lib-esm/storage/relationship.js +173 -251
  73. package/lib-esm/storage/storage.d.ts +4 -4
  74. package/lib-esm/storage/storage.js +242 -424
  75. package/lib-esm/sync/datastoreConnectivity.d.ts +2 -2
  76. package/lib-esm/sync/datastoreConnectivity.js +28 -39
  77. package/lib-esm/sync/datastoreReachability/index.d.ts +1 -3
  78. package/lib-esm/sync/datastoreReachability/index.js +2 -3
  79. package/lib-esm/sync/datastoreReachability/index.native.d.ts +1 -3
  80. package/lib-esm/sync/datastoreReachability/index.native.js +3 -4
  81. package/lib-esm/sync/index.d.ts +2 -2
  82. package/lib-esm/sync/index.js +502 -812
  83. package/lib-esm/sync/merger.js +28 -61
  84. package/lib-esm/sync/outbox.js +143 -228
  85. package/lib-esm/sync/processors/errorMaps.d.ts +1 -1
  86. package/lib-esm/sync/processors/errorMaps.js +32 -50
  87. package/lib-esm/sync/processors/mutation.d.ts +2 -2
  88. package/lib-esm/sync/processors/mutation.js +329 -490
  89. package/lib-esm/sync/processors/subscription.d.ts +5 -2
  90. package/lib-esm/sync/processors/subscription.js +266 -421
  91. package/lib-esm/sync/processors/sync.d.ts +2 -2
  92. package/lib-esm/sync/processors/sync.js +271 -397
  93. package/lib-esm/sync/utils.d.ts +5 -4
  94. package/lib-esm/sync/utils.js +252 -307
  95. package/lib-esm/tsconfig.tsbuildinfo +1 -0
  96. package/lib-esm/types.d.ts +138 -140
  97. package/lib-esm/types.js +16 -25
  98. package/lib-esm/util.d.ts +9 -17
  99. package/lib-esm/util.js +335 -497
  100. package/package.json +31 -26
  101. package/src/authModeStrategies/multiAuthStrategy.ts +15 -12
  102. package/src/datastore/datastore.ts +36 -35
  103. package/src/predicates/sort.ts +3 -1
  104. package/src/storage/adapter/InMemoryStore.ts +1 -1
  105. package/src/storage/adapter/IndexedDBAdapter.ts +2 -2
  106. package/src/storage/adapter/StorageAdapterBase.ts +2 -2
  107. package/src/storage/adapter/getDefaultAdapter/index.ts +1 -4
  108. package/src/storage/storage.ts +29 -24
  109. package/src/sync/datastoreConnectivity.ts +6 -6
  110. package/src/sync/datastoreReachability/index.native.ts +5 -3
  111. package/src/sync/datastoreReachability/index.ts +1 -1
  112. package/src/sync/index.ts +79 -89
  113. package/src/sync/processors/errorMaps.ts +7 -7
  114. package/src/sync/processors/mutation.ts +19 -13
  115. package/src/sync/processors/subscription.ts +221 -295
  116. package/src/sync/processors/sync.ts +11 -8
  117. package/src/sync/utils.ts +30 -15
  118. package/src/types.ts +4 -8
  119. package/src/util.ts +46 -9
  120. package/lib/.tsbuildinfo +0 -3
  121. package/lib/authModeStrategies/defaultAuthStrategy.js.map +0 -1
  122. package/lib/authModeStrategies/index.js.map +0 -1
  123. package/lib/authModeStrategies/multiAuthStrategy.js.map +0 -1
  124. package/lib/datastore/datastore.js.map +0 -1
  125. package/lib/index.js.map +0 -1
  126. package/lib/predicates/index.js.map +0 -1
  127. package/lib/predicates/next.js.map +0 -1
  128. package/lib/predicates/sort.js.map +0 -1
  129. package/lib/ssr/index.js.map +0 -1
  130. package/lib/storage/adapter/AsyncStorageAdapter.js.map +0 -1
  131. package/lib/storage/adapter/AsyncStorageDatabase.js.map +0 -1
  132. package/lib/storage/adapter/InMemoryStore.js.map +0 -1
  133. package/lib/storage/adapter/InMemoryStore.native.js.map +0 -1
  134. package/lib/storage/adapter/IndexedDBAdapter.js.map +0 -1
  135. package/lib/storage/adapter/StorageAdapterBase.js.map +0 -1
  136. package/lib/storage/adapter/getDefaultAdapter/index.js.map +0 -1
  137. package/lib/storage/adapter/getDefaultAdapter/index.native.js.map +0 -1
  138. package/lib/storage/adapter/index.js.map +0 -1
  139. package/lib/storage/relationship.js.map +0 -1
  140. package/lib/storage/storage.js.map +0 -1
  141. package/lib/sync/datastoreConnectivity.js.map +0 -1
  142. package/lib/sync/datastoreReachability/index.js.map +0 -1
  143. package/lib/sync/datastoreReachability/index.native.js.map +0 -1
  144. package/lib/sync/index.js.map +0 -1
  145. package/lib/sync/merger.js.map +0 -1
  146. package/lib/sync/outbox.js.map +0 -1
  147. package/lib/sync/processors/errorMaps.js.map +0 -1
  148. package/lib/sync/processors/mutation.js.map +0 -1
  149. package/lib/sync/processors/subscription.js.map +0 -1
  150. package/lib/sync/processors/sync.js.map +0 -1
  151. package/lib/sync/utils.js.map +0 -1
  152. package/lib/types.js.map +0 -1
  153. package/lib/util.js.map +0 -1
  154. package/lib-esm/.tsbuildinfo +0 -3
  155. package/lib-esm/authModeStrategies/defaultAuthStrategy.js.map +0 -1
  156. package/lib-esm/authModeStrategies/index.js.map +0 -1
  157. package/lib-esm/authModeStrategies/multiAuthStrategy.js.map +0 -1
  158. package/lib-esm/datastore/datastore.js.map +0 -1
  159. package/lib-esm/index.js.map +0 -1
  160. package/lib-esm/predicates/index.js.map +0 -1
  161. package/lib-esm/predicates/next.js.map +0 -1
  162. package/lib-esm/predicates/sort.js.map +0 -1
  163. package/lib-esm/ssr/index.js.map +0 -1
  164. package/lib-esm/storage/adapter/AsyncStorageAdapter.js.map +0 -1
  165. package/lib-esm/storage/adapter/AsyncStorageDatabase.js.map +0 -1
  166. package/lib-esm/storage/adapter/InMemoryStore.js.map +0 -1
  167. package/lib-esm/storage/adapter/InMemoryStore.native.js.map +0 -1
  168. package/lib-esm/storage/adapter/IndexedDBAdapter.js.map +0 -1
  169. package/lib-esm/storage/adapter/StorageAdapterBase.js.map +0 -1
  170. package/lib-esm/storage/adapter/getDefaultAdapter/index.js.map +0 -1
  171. package/lib-esm/storage/adapter/getDefaultAdapter/index.native.js.map +0 -1
  172. package/lib-esm/storage/adapter/index.js.map +0 -1
  173. package/lib-esm/storage/relationship.js.map +0 -1
  174. package/lib-esm/storage/storage.js.map +0 -1
  175. package/lib-esm/sync/datastoreConnectivity.js.map +0 -1
  176. package/lib-esm/sync/datastoreReachability/index.js.map +0 -1
  177. package/lib-esm/sync/datastoreReachability/index.native.js.map +0 -1
  178. package/lib-esm/sync/index.js.map +0 -1
  179. package/lib-esm/sync/merger.js.map +0 -1
  180. package/lib-esm/sync/outbox.js.map +0 -1
  181. package/lib-esm/sync/processors/errorMaps.js.map +0 -1
  182. package/lib-esm/sync/processors/mutation.js.map +0 -1
  183. package/lib-esm/sync/processors/subscription.js.map +0 -1
  184. package/lib-esm/sync/processors/sync.js.map +0 -1
  185. package/lib-esm/sync/utils.js.map +0 -1
  186. package/lib-esm/types.js.map +0 -1
  187. package/lib-esm/util.js.map +0 -1
@@ -1,5 +1,4 @@
1
1
  // Default behavior is to use the primary auth mode for an API,
2
2
  // so we are returning an empty array so that DataStore will default
3
3
  // to using the primary auth mode.
4
- export var defaultAuthStrategy = function () { return []; };
5
- //# sourceMappingURL=defaultAuthStrategy.js.map
4
+ export const defaultAuthStrategy = () => [];
@@ -2,4 +2,3 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  export { defaultAuthStrategy } from './defaultAuthStrategy';
4
4
  export { multiAuthStrategy } from './multiAuthStrategy';
5
- //# sourceMappingURL=index.js.map
@@ -1,8 +1,6 @@
1
- import { __awaiter, __generator, __read, __spread } from "tslib";
2
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
2
  // SPDX-License-Identifier: Apache-2.0
4
- import { Auth } from '@aws-amplify/auth';
5
- import { GRAPHQL_AUTH_MODE } from '@aws-amplify/api-graphql';
3
+ import { fetchAuthSession } from '@aws-amplify/core';
6
4
  import { ModelAttributeAuthProvider, ModelAttributeAuthAllow, } from '../types';
7
5
  function getProviderFromRule(rule) {
8
6
  // private with no provider means userPools
@@ -16,21 +14,21 @@ function getProviderFromRule(rule) {
16
14
  return rule.provider;
17
15
  }
18
16
  function sortAuthRulesWithPriority(rules) {
19
- var allowSortPriority = [
17
+ const allowSortPriority = [
20
18
  ModelAttributeAuthAllow.CUSTOM,
21
19
  ModelAttributeAuthAllow.OWNER,
22
20
  ModelAttributeAuthAllow.GROUPS,
23
21
  ModelAttributeAuthAllow.PRIVATE,
24
22
  ModelAttributeAuthAllow.PUBLIC,
25
23
  ];
26
- var providerSortPriority = [
24
+ const providerSortPriority = [
27
25
  ModelAttributeAuthProvider.FUNCTION,
28
26
  ModelAttributeAuthProvider.USER_POOLS,
29
27
  ModelAttributeAuthProvider.OIDC,
30
28
  ModelAttributeAuthProvider.IAM,
31
29
  ModelAttributeAuthProvider.API_KEY,
32
30
  ];
33
- return __spread(rules).sort(function (a, b) {
31
+ return [...rules].sort((a, b) => {
34
32
  if (a.allow === b.allow) {
35
33
  return (providerSortPriority.indexOf(getProviderFromRule(a)) -
36
34
  providerSortPriority.indexOf(getProviderFromRule(b)));
@@ -38,17 +36,16 @@ function sortAuthRulesWithPriority(rules) {
38
36
  return (allowSortPriority.indexOf(a.allow) - allowSortPriority.indexOf(b.allow));
39
37
  });
40
38
  }
41
- function getAuthRules(_a) {
42
- var rules = _a.rules, currentUser = _a.currentUser;
39
+ function getAuthRules({ rules, currentUser, }) {
43
40
  // Using Set to ensure uniqueness
44
- var authModes = new Set();
45
- rules.forEach(function (rule) {
41
+ const authModes = new Set();
42
+ rules.forEach(rule => {
46
43
  switch (rule.allow) {
47
44
  case ModelAttributeAuthAllow.CUSTOM:
48
45
  // custom with no provider -> function
49
46
  if (!rule.provider ||
50
47
  rule.provider === ModelAttributeAuthProvider.FUNCTION) {
51
- authModes.add(GRAPHQL_AUTH_MODE.AWS_LAMBDA);
48
+ authModes.add('lambda');
52
49
  }
53
50
  break;
54
51
  case ModelAttributeAuthAllow.GROUPS:
@@ -56,10 +53,10 @@ function getAuthRules(_a) {
56
53
  // We shouldn't attempt User Pool or OIDC if there isn't an authenticated user
57
54
  if (currentUser) {
58
55
  if (rule.provider === ModelAttributeAuthProvider.USER_POOLS) {
59
- authModes.add(GRAPHQL_AUTH_MODE.AMAZON_COGNITO_USER_POOLS);
56
+ authModes.add('userPool');
60
57
  }
61
58
  else if (rule.provider === ModelAttributeAuthProvider.OIDC) {
62
- authModes.add(GRAPHQL_AUTH_MODE.OPENID_CONNECT);
59
+ authModes.add('oidc');
63
60
  }
64
61
  }
65
62
  break;
@@ -70,22 +67,22 @@ function getAuthRules(_a) {
70
67
  // private with no provider means userPools
71
68
  if (!rule.provider ||
72
69
  rule.provider === ModelAttributeAuthProvider.USER_POOLS) {
73
- authModes.add(GRAPHQL_AUTH_MODE.AMAZON_COGNITO_USER_POOLS);
70
+ authModes.add('userPool');
74
71
  }
75
72
  else if (rule.provider === ModelAttributeAuthProvider.IAM) {
76
- authModes.add(GRAPHQL_AUTH_MODE.AWS_IAM);
73
+ authModes.add('iam');
77
74
  }
78
75
  }
79
76
  break;
80
77
  }
81
78
  case ModelAttributeAuthAllow.PUBLIC: {
82
79
  if (rule.provider === ModelAttributeAuthProvider.IAM) {
83
- authModes.add(GRAPHQL_AUTH_MODE.AWS_IAM);
80
+ authModes.add('iam');
84
81
  }
85
82
  else if (!rule.provider ||
86
83
  rule.provider === ModelAttributeAuthProvider.API_KEY) {
87
84
  // public with no provider means apiKey
88
- authModes.add(GRAPHQL_AUTH_MODE.API_KEY);
85
+ authModes.add('apiKey');
89
86
  }
90
87
  break;
91
88
  }
@@ -106,39 +103,25 @@ function getAuthRules(_a) {
106
103
  * @param param0 The `{schema, modelName}` to inspect.
107
104
  * @returns A sorted array of auth modes to attempt.
108
105
  */
109
- export var multiAuthStrategy = function (amplifyContext) {
110
- return function (_a) {
111
- var schema = _a.schema, modelName = _a.modelName;
112
- return __awaiter(void 0, void 0, void 0, function () {
113
- var currentUser, e_1, attributes, authAttribute, sortedRules;
114
- var _b;
115
- return __generator(this, function (_c) {
116
- switch (_c.label) {
117
- case 0:
118
- amplifyContext.Auth = amplifyContext.Auth || Auth;
119
- _c.label = 1;
120
- case 1:
121
- _c.trys.push([1, 3, , 4]);
122
- return [4 /*yield*/, amplifyContext.Auth.currentAuthenticatedUser()];
123
- case 2:
124
- currentUser = _c.sent();
125
- return [3 /*break*/, 4];
126
- case 3:
127
- e_1 = _c.sent();
128
- return [3 /*break*/, 4];
129
- case 4:
130
- attributes = schema.namespaces.user.models[modelName].attributes;
131
- if (attributes) {
132
- authAttribute = attributes.find(function (attr) { return attr.type === 'auth'; });
133
- if ((_b = authAttribute === null || authAttribute === void 0 ? void 0 : authAttribute.properties) === null || _b === void 0 ? void 0 : _b.rules) {
134
- sortedRules = sortAuthRulesWithPriority(authAttribute.properties.rules);
135
- return [2 /*return*/, getAuthRules({ currentUser: currentUser, rules: sortedRules })];
136
- }
137
- }
138
- return [2 /*return*/, []];
139
- }
140
- });
141
- });
142
- };
106
+ export const multiAuthStrategy = (amplifyContext) => async ({ schema, modelName }) => {
107
+ let currentUser;
108
+ try {
109
+ const authSession = await fetchAuthSession();
110
+ if (authSession.tokens.accessToken) {
111
+ // the user is authenticated
112
+ currentUser = authSession;
113
+ }
114
+ }
115
+ catch (e) {
116
+ // No current user
117
+ }
118
+ const { attributes } = schema.namespaces.user.models[modelName];
119
+ if (attributes) {
120
+ const authAttribute = attributes.find(attr => attr.type === 'auth');
121
+ if (authAttribute?.properties?.rules) {
122
+ const sortedRules = sortAuthRulesWithPriority(authAttribute.properties.rules);
123
+ return getAuthRules({ currentUser, rules: sortedRules });
124
+ }
125
+ }
126
+ return [];
143
127
  };
144
- //# sourceMappingURL=multiAuthStrategy.js.map
@@ -1,6 +1,6 @@
1
- import Observable from 'zen-observable-ts';
1
+ import { Observable } from 'rxjs';
2
2
  import { PredicateAll } from '../predicates';
3
- import { ConflictHandler, DataStoreConfig, NonModelTypeConstructor, ProducerPaginationInput, PersistentModel, PersistentModelConstructor, Schema, SubscriptionMessage, DataStoreSnapshot, TypeConstructorMap, ErrorHandler, ObserveQueryOptions, PersistentModelMetaData, IdentifierFieldOrIdentifierObject, RecursiveModelPredicateExtender, ModelPredicateExtender } from '../types';
3
+ import { ConflictHandler, DataStoreConfig, ProducerPaginationInput, PersistentModel, PersistentModelConstructor, Schema, SubscriptionMessage, DataStoreSnapshot, TypeConstructorMap, ErrorHandler, ObserveQueryOptions, PersistentModelMetaData, IdentifierFieldOrIdentifierObject, RecursiveModelPredicateExtender, ModelPredicateExtender } from '../types';
4
4
  export declare let syncClasses: TypeConstructorMap;
5
5
  /**
6
6
  * Describes whether and to what a model is attached for lazy loading purposes.
@@ -41,8 +41,8 @@ export declare function attached<T extends PersistentModel | PersistentModel[]>(
41
41
  *
42
42
  * @param instance A model instance
43
43
  */
44
- export declare const getAttachment: (instance: Readonly<Record<string, any>>) => ModelAttachment.Detached | ModelAttachment;
45
- declare const initSchema: (userSchema: Schema) => Record<string, PersistentModelConstructor<any> | NonModelTypeConstructor<unknown>>;
44
+ export declare const getAttachment: (instance: PersistentModel) => ModelAttachment;
45
+ declare const initSchema: (userSchema: Schema) => TypeConstructorMap;
46
46
  /**
47
47
  * Constructs a model and records it with its metadata in a weakset. Allows for
48
48
  * the separate storage of core model fields and Amplify/DataStore metadata
@@ -92,7 +92,6 @@ export declare class AsyncCollection<T> implements AsyncIterable<T> {
92
92
  }): Promise<T[]>;
93
93
  }
94
94
  declare class DataStore {
95
- private Auth;
96
95
  private InternalAPI;
97
96
  private Cache;
98
97
  private amplifyConfig;