@aws-amplify/datastore 3.12.6-next.13 → 3.12.6-next.32

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 (162) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/lib/authModeStrategies/multiAuthStrategy.js +17 -64
  3. package/lib/authModeStrategies/multiAuthStrategy.js.map +1 -1
  4. package/lib/datastore/datastore.js +682 -469
  5. package/lib/datastore/datastore.js.map +1 -1
  6. package/lib/index.js +2 -4
  7. package/lib/index.js.map +1 -1
  8. package/lib/predicates/index.js +12 -2
  9. package/lib/predicates/index.js.map +1 -1
  10. package/lib/storage/adapter/AsyncStorageAdapter.js +393 -298
  11. package/lib/storage/adapter/AsyncStorageAdapter.js.map +1 -1
  12. package/lib/storage/adapter/AsyncStorageDatabase.js +97 -122
  13. package/lib/storage/adapter/AsyncStorageDatabase.js.map +1 -1
  14. package/lib/storage/adapter/InMemoryStore.js +16 -67
  15. package/lib/storage/adapter/InMemoryStore.js.map +1 -1
  16. package/lib/storage/adapter/InMemoryStore.native.js +2 -4
  17. package/lib/storage/adapter/InMemoryStore.native.js.map +1 -1
  18. package/lib/storage/adapter/IndexedDBAdapter.js +497 -404
  19. package/lib/storage/adapter/IndexedDBAdapter.js.map +1 -1
  20. package/lib/storage/adapter/getDefaultAdapter/index.js +3 -5
  21. package/lib/storage/adapter/getDefaultAdapter/index.js.map +1 -1
  22. package/lib/storage/adapter/getDefaultAdapter/index.native.js +2 -4
  23. package/lib/storage/adapter/getDefaultAdapter/index.native.js.map +1 -1
  24. package/lib/storage/storage.js +129 -151
  25. package/lib/storage/storage.js.map +1 -1
  26. package/lib/sync/datastoreConnectivity.js +13 -17
  27. package/lib/sync/datastoreConnectivity.js.map +1 -1
  28. package/lib/sync/datastoreReachability/index.native.js +2 -4
  29. package/lib/sync/datastoreReachability/index.native.js.map +1 -1
  30. package/lib/sync/index.js +544 -488
  31. package/lib/sync/index.js.map +1 -1
  32. package/lib/sync/merger.js +21 -80
  33. package/lib/sync/merger.js.map +1 -1
  34. package/lib/sync/outbox.js +95 -162
  35. package/lib/sync/outbox.js.map +1 -1
  36. package/lib/sync/processors/errorMaps.js +4 -34
  37. package/lib/sync/processors/errorMaps.js.map +1 -1
  38. package/lib/sync/processors/mutation.js +285 -312
  39. package/lib/sync/processors/mutation.js.map +1 -1
  40. package/lib/sync/processors/subscription.js +218 -259
  41. package/lib/sync/processors/subscription.js.map +1 -1
  42. package/lib/sync/processors/sync.js +141 -212
  43. package/lib/sync/processors/sync.js.map +1 -1
  44. package/lib/sync/utils.js +50 -61
  45. package/lib/sync/utils.js.map +1 -1
  46. package/lib/types.js +13 -39
  47. package/lib/types.js.map +1 -1
  48. package/lib/util.js +429 -242
  49. package/lib/util.js.map +1 -1
  50. package/lib-esm/authModeStrategies/multiAuthStrategy.d.ts +11 -0
  51. package/lib-esm/authModeStrategies/multiAuthStrategy.js +13 -57
  52. package/lib-esm/authModeStrategies/multiAuthStrategy.js.map +1 -1
  53. package/lib-esm/datastore/datastore.d.ts +107 -17
  54. package/lib-esm/datastore/datastore.js +649 -433
  55. package/lib-esm/datastore/datastore.js.map +1 -1
  56. package/lib-esm/index.d.ts +3 -19
  57. package/lib-esm/predicates/index.d.ts +3 -2
  58. package/lib-esm/predicates/index.js +13 -3
  59. package/lib-esm/predicates/index.js.map +1 -1
  60. package/lib-esm/storage/adapter/AsyncStorageAdapter.d.ts +4 -3
  61. package/lib-esm/storage/adapter/AsyncStorageAdapter.js +356 -258
  62. package/lib-esm/storage/adapter/AsyncStorageAdapter.js.map +1 -1
  63. package/lib-esm/storage/adapter/AsyncStorageDatabase.d.ts +14 -4
  64. package/lib-esm/storage/adapter/AsyncStorageDatabase.js +67 -92
  65. package/lib-esm/storage/adapter/AsyncStorageDatabase.js.map +1 -1
  66. package/lib-esm/storage/adapter/InMemoryStore.js +1 -52
  67. package/lib-esm/storage/adapter/InMemoryStore.js.map +1 -1
  68. package/lib-esm/storage/adapter/IndexedDBAdapter.d.ts +26 -4
  69. package/lib-esm/storage/adapter/IndexedDBAdapter.js +446 -346
  70. package/lib-esm/storage/adapter/IndexedDBAdapter.js.map +1 -1
  71. package/lib-esm/storage/adapter/index.d.ts +1 -1
  72. package/lib-esm/storage/storage.d.ts +1 -1
  73. package/lib-esm/storage/storage.js +94 -113
  74. package/lib-esm/storage/storage.js.map +1 -1
  75. package/lib-esm/sync/datastoreConnectivity.d.ts +1 -0
  76. package/lib-esm/sync/datastoreConnectivity.js +10 -11
  77. package/lib-esm/sync/datastoreConnectivity.js.map +1 -1
  78. package/lib-esm/sync/index.d.ts +31 -5
  79. package/lib-esm/sync/index.js +525 -466
  80. package/lib-esm/sync/index.js.map +1 -1
  81. package/lib-esm/sync/merger.d.ts +9 -3
  82. package/lib-esm/sync/merger.js +14 -73
  83. package/lib-esm/sync/merger.js.map +1 -1
  84. package/lib-esm/sync/outbox.d.ts +2 -2
  85. package/lib-esm/sync/outbox.js +79 -146
  86. package/lib-esm/sync/outbox.js.map +1 -1
  87. package/lib-esm/sync/processors/errorMaps.js +1 -31
  88. package/lib-esm/sync/processors/errorMaps.js.map +1 -1
  89. package/lib-esm/sync/processors/mutation.d.ts +2 -0
  90. package/lib-esm/sync/processors/mutation.js +271 -295
  91. package/lib-esm/sync/processors/mutation.js.map +1 -1
  92. package/lib-esm/sync/processors/subscription.d.ts +2 -0
  93. package/lib-esm/sync/processors/subscription.js +214 -245
  94. package/lib-esm/sync/processors/subscription.js.map +1 -1
  95. package/lib-esm/sync/processors/sync.d.ts +2 -1
  96. package/lib-esm/sync/processors/sync.js +127 -195
  97. package/lib-esm/sync/processors/sync.js.map +1 -1
  98. package/lib-esm/sync/utils.d.ts +3 -2
  99. package/lib-esm/sync/utils.js +45 -57
  100. package/lib-esm/sync/utils.js.map +1 -1
  101. package/lib-esm/types.d.ts +65 -26
  102. package/lib-esm/types.js +10 -38
  103. package/lib-esm/types.js.map +1 -1
  104. package/lib-esm/util.d.ts +67 -24
  105. package/lib-esm/util.js +420 -233
  106. package/lib-esm/util.js.map +1 -1
  107. package/package.json +14 -7
  108. package/src/authModeStrategies/multiAuthStrategy.ts +12 -1
  109. package/src/datastore/datastore.ts +798 -397
  110. package/src/predicates/index.ts +32 -10
  111. package/src/storage/adapter/AsyncStorageAdapter.ts +309 -93
  112. package/src/storage/adapter/AsyncStorageDatabase.ts +74 -26
  113. package/src/storage/adapter/IndexedDBAdapter.ts +358 -134
  114. package/src/storage/adapter/index.ts +1 -1
  115. package/src/storage/storage.ts +69 -22
  116. package/src/sync/datastoreConnectivity.ts +6 -0
  117. package/src/sync/index.ts +521 -412
  118. package/src/sync/merger.ts +20 -4
  119. package/src/sync/outbox.ts +22 -9
  120. package/src/sync/processors/mutation.ts +188 -150
  121. package/src/sync/processors/subscription.ts +289 -253
  122. package/src/sync/processors/sync.ts +151 -138
  123. package/src/sync/utils.ts +67 -12
  124. package/src/types.ts +182 -30
  125. package/src/util.ts +505 -176
  126. package/build.js +0 -5
  127. package/dist/aws-amplify-datastore.js +0 -98255
  128. package/dist/aws-amplify-datastore.js.map +0 -1
  129. package/dist/aws-amplify-datastore.min.js +0 -66
  130. package/dist/aws-amplify-datastore.min.js.map +0 -1
  131. package/index.js +0 -7
  132. package/lib/authModeStrategies/defaultAuthStrategy.d.ts +0 -2
  133. package/lib/authModeStrategies/index.d.ts +0 -2
  134. package/lib/authModeStrategies/multiAuthStrategy.d.ts +0 -2
  135. package/lib/datastore/datastore.d.ts +0 -66
  136. package/lib/index.d.ts +0 -31
  137. package/lib/predicates/index.d.ts +0 -15
  138. package/lib/predicates/sort.d.ts +0 -8
  139. package/lib/ssr/index.d.ts +0 -3
  140. package/lib/storage/adapter/AsyncStorageAdapter.d.ts +0 -40
  141. package/lib/storage/adapter/AsyncStorageDatabase.d.ts +0 -29
  142. package/lib/storage/adapter/InMemoryStore.d.ts +0 -11
  143. package/lib/storage/adapter/InMemoryStore.native.d.ts +0 -1
  144. package/lib/storage/adapter/IndexedDBAdapter.d.ts +0 -37
  145. package/lib/storage/adapter/getDefaultAdapter/index.d.ts +0 -3
  146. package/lib/storage/adapter/getDefaultAdapter/index.native.d.ts +0 -3
  147. package/lib/storage/adapter/index.d.ts +0 -9
  148. package/lib/storage/storage.d.ts +0 -49
  149. package/lib/sync/datastoreConnectivity.d.ts +0 -15
  150. package/lib/sync/datastoreReachability/index.d.ts +0 -3
  151. package/lib/sync/datastoreReachability/index.native.d.ts +0 -3
  152. package/lib/sync/index.d.ts +0 -63
  153. package/lib/sync/merger.d.ts +0 -11
  154. package/lib/sync/outbox.d.ts +0 -27
  155. package/lib/sync/processors/errorMaps.d.ts +0 -17
  156. package/lib/sync/processors/mutation.d.ts +0 -56
  157. package/lib/sync/processors/subscription.d.ts +0 -31
  158. package/lib/sync/processors/sync.d.ts +0 -27
  159. package/lib/sync/utils.d.ts +0 -41
  160. package/lib/types.d.ts +0 -462
  161. package/lib/util.d.ts +0 -113
  162. package/webpack.config.dev.js +0 -6
@@ -1,41 +0,0 @@
1
- import { GRAPHQL_AUTH_MODE } from '@aws-amplify/api-graphql';
2
- import { GraphQLAuthError } from '@aws-amplify/api';
3
- import { ModelInstanceCreator } from '../datastore/datastore';
4
- import { AuthorizationRule, GraphQLCondition, GraphQLFilter, OpType, PersistentModel, PersistentModelConstructor, PredicatesGroup, RelationshipType, SchemaModel, SchemaNamespace, SchemaNonModel, ModelOperation, InternalSchema, AuthModeStrategy } from '../types';
5
- import { MutationEvent } from './';
6
- declare enum GraphQLOperationType {
7
- LIST = "query",
8
- CREATE = "mutation",
9
- UPDATE = "mutation",
10
- DELETE = "mutation",
11
- GET = "query"
12
- }
13
- export declare enum TransformerMutationType {
14
- CREATE = "Create",
15
- UPDATE = "Update",
16
- DELETE = "Delete",
17
- GET = "Get"
18
- }
19
- export declare function getMetadataFields(): ReadonlyArray<string>;
20
- export declare function generateSelectionSet(namespace: SchemaNamespace, modelDefinition: SchemaModel | SchemaNonModel): string;
21
- export declare function getAuthorizationRules(modelDefinition: SchemaModel): AuthorizationRule[];
22
- export declare function buildSubscriptionGraphQLOperation(namespace: SchemaNamespace, modelDefinition: SchemaModel, transformerMutationType: TransformerMutationType, isOwnerAuthorization: boolean, ownerField: string): [TransformerMutationType, string, string];
23
- export declare function buildGraphQLOperation(namespace: SchemaNamespace, modelDefinition: SchemaModel, graphQLOpType: keyof typeof GraphQLOperationType): [TransformerMutationType, string, string][];
24
- export declare function createMutationInstanceFromModelOperation<T extends PersistentModel>(relationships: RelationshipType, modelDefinition: SchemaModel, opType: OpType, model: PersistentModelConstructor<T>, element: T, condition: GraphQLCondition, MutationEventConstructor: PersistentModelConstructor<MutationEvent>, modelInstanceCreator: ModelInstanceCreator, id?: string): MutationEvent;
25
- export declare function predicateToGraphQLCondition(predicate: PredicatesGroup<any>): GraphQLCondition;
26
- export declare function predicateToGraphQLFilter(predicatesGroup: PredicatesGroup<any>): GraphQLFilter;
27
- export declare function getUserGroupsFromToken(token: {
28
- [field: string]: any;
29
- }, rule: AuthorizationRule): string[];
30
- export declare function getModelAuthModes({ authModeStrategy, defaultAuthMode, modelName, schema, }: {
31
- authModeStrategy: AuthModeStrategy;
32
- defaultAuthMode: GRAPHQL_AUTH_MODE;
33
- modelName: string;
34
- schema: InternalSchema;
35
- }): Promise<{
36
- [key in ModelOperation]: GRAPHQL_AUTH_MODE[];
37
- }>;
38
- export declare function getForbiddenError(error: any): any;
39
- export declare function getClientSideAuthError(error: any): GraphQLAuthError;
40
- export declare function getTokenForCustomAuth(authMode: GRAPHQL_AUTH_MODE, amplifyConfig?: Record<string, any>): Promise<string | undefined>;
41
- export {};
package/lib/types.d.ts DELETED
@@ -1,462 +0,0 @@
1
- import { ModelInstanceCreator } from './datastore/datastore';
2
- import { PredicateAll } from './predicates';
3
- import { GRAPHQL_AUTH_MODE } from '@aws-amplify/api-graphql';
4
- import { Auth } from '@aws-amplify/auth';
5
- import { API } from '@aws-amplify/api';
6
- import Cache from '@aws-amplify/cache';
7
- import { Adapter } from './storage/adapter';
8
- export declare type Schema = UserSchema & {
9
- version: string;
10
- };
11
- export declare type UserSchema = {
12
- models: SchemaModels;
13
- nonModels?: SchemaNonModels;
14
- relationships?: RelationshipType;
15
- keys?: ModelKeys;
16
- enums: SchemaEnums;
17
- modelTopologicalOrdering?: Map<string, string[]>;
18
- };
19
- export declare type InternalSchema = {
20
- namespaces: SchemaNamespaces;
21
- version: string;
22
- };
23
- export declare type SchemaNamespaces = Record<string, SchemaNamespace>;
24
- export declare type SchemaNamespace = UserSchema & {
25
- name: string;
26
- };
27
- export declare type SchemaModels = Record<string, SchemaModel>;
28
- export declare type SchemaModel = {
29
- name: string;
30
- pluralName: string;
31
- attributes?: ModelAttributes;
32
- fields: ModelFields;
33
- syncable?: boolean;
34
- };
35
- export declare function isSchemaModel(obj: any): obj is SchemaModel;
36
- export declare type SchemaNonModels = Record<string, SchemaNonModel>;
37
- export declare type SchemaNonModel = {
38
- name: string;
39
- fields: ModelFields;
40
- };
41
- declare type SchemaEnums = Record<string, SchemaEnum>;
42
- declare type SchemaEnum = {
43
- name: string;
44
- values: string[];
45
- };
46
- export declare type ModelAssociation = AssociatedWith | TargetNameAssociation;
47
- declare type AssociatedWith = {
48
- connectionType: 'HAS_MANY' | 'HAS_ONE';
49
- associatedWith: string;
50
- targetName?: string;
51
- };
52
- export declare function isAssociatedWith(obj: any): obj is AssociatedWith;
53
- declare type TargetNameAssociation = {
54
- connectionType: 'BELONGS_TO';
55
- targetName: string;
56
- };
57
- export declare function isTargetNameAssociation(obj: any): obj is TargetNameAssociation;
58
- export declare type ModelAttributes = ModelAttribute[];
59
- declare type ModelAttribute = {
60
- type: string;
61
- properties?: Record<string, any>;
62
- };
63
- export declare type ModelAuthRule = {
64
- allow: string;
65
- provider?: string;
66
- operations?: string[];
67
- ownerField?: string;
68
- identityClaim?: string;
69
- groups?: string[];
70
- groupClaim?: string;
71
- groupsField?: string;
72
- };
73
- export declare type ModelAttributeAuth = {
74
- type: 'auth';
75
- properties: {
76
- rules: ModelAuthRule[];
77
- };
78
- };
79
- export declare function isModelAttributeAuth(attr: ModelAttribute): attr is ModelAttributeAuth;
80
- declare type ModelAttributeKey = {
81
- type: 'key';
82
- properties: {
83
- name?: string;
84
- fields: string[];
85
- };
86
- };
87
- declare type ModelAttributePrimaryKey = {
88
- type: 'key';
89
- properties: {
90
- fields: string[];
91
- };
92
- };
93
- declare type ModelAttributeCompositeKey = {
94
- type: 'key';
95
- properties: {
96
- name: string;
97
- fields: [string, string, string, string?, string?];
98
- };
99
- };
100
- export declare function isModelAttributeKey(attr: ModelAttribute): attr is ModelAttributeKey;
101
- export declare function isModelAttributePrimaryKey(attr: ModelAttribute): attr is ModelAttributePrimaryKey;
102
- export declare function isModelAttributeCompositeKey(attr: ModelAttribute): attr is ModelAttributeCompositeKey;
103
- export declare type ModelAttributeAuthProperty = {
104
- allow: ModelAttributeAuthAllow;
105
- identityClaim?: string;
106
- groupClaim?: string;
107
- groups?: string[];
108
- operations?: string[];
109
- ownerField?: string;
110
- provider?: ModelAttributeAuthProvider;
111
- };
112
- export declare enum ModelAttributeAuthAllow {
113
- CUSTOM = "custom",
114
- OWNER = "owner",
115
- GROUPS = "groups",
116
- PRIVATE = "private",
117
- PUBLIC = "public"
118
- }
119
- export declare enum ModelAttributeAuthProvider {
120
- FUNCTION = "function",
121
- USER_POOLS = "userPools",
122
- OIDC = "oidc",
123
- IAM = "iam",
124
- API_KEY = "apiKey"
125
- }
126
- export declare type ModelFields = Record<string, ModelField>;
127
- export declare enum GraphQLScalarType {
128
- ID = 0,
129
- String = 1,
130
- Int = 2,
131
- Float = 3,
132
- Boolean = 4,
133
- AWSDate = 5,
134
- AWSTime = 6,
135
- AWSDateTime = 7,
136
- AWSTimestamp = 8,
137
- AWSEmail = 9,
138
- AWSJSON = 10,
139
- AWSURL = 11,
140
- AWSPhone = 12,
141
- AWSIPAddress = 13
142
- }
143
- export declare namespace GraphQLScalarType {
144
- function getJSType(scalar: keyof Omit<typeof GraphQLScalarType, 'getJSType' | 'getValidationFunction'>): 'string' | 'number' | 'boolean' | 'object';
145
- function getValidationFunction(scalar: keyof Omit<typeof GraphQLScalarType, 'getJSType' | 'getValidationFunction'>): ((val: string | number) => boolean) | undefined;
146
- }
147
- export declare type AuthorizationRule = {
148
- identityClaim: string;
149
- ownerField: string;
150
- provider: 'userPools' | 'oidc' | 'iam' | 'apiKey';
151
- groupClaim: string;
152
- groups: [string];
153
- authStrategy: 'owner' | 'groups' | 'private' | 'public';
154
- areSubscriptionsPublic: boolean;
155
- };
156
- export declare function isGraphQLScalarType(obj: any): obj is keyof Omit<typeof GraphQLScalarType, 'getJSType' | 'getValidationFunction'>;
157
- export declare type ModelFieldType = {
158
- model: string;
159
- };
160
- export declare function isModelFieldType(obj: any): obj is ModelFieldType;
161
- export declare type NonModelFieldType = {
162
- nonModel: string;
163
- };
164
- export declare function isNonModelFieldType(obj: any): obj is NonModelFieldType;
165
- declare type EnumFieldType = {
166
- enum: string;
167
- };
168
- export declare function isEnumFieldType(obj: any): obj is EnumFieldType;
169
- export declare type ModelField = {
170
- name: string;
171
- type: keyof Omit<typeof GraphQLScalarType, 'getJSType' | 'getValidationFunction'> | ModelFieldType | NonModelFieldType | EnumFieldType;
172
- isArray: boolean;
173
- isRequired?: boolean;
174
- isReadOnly?: boolean;
175
- isArrayNullable?: boolean;
176
- association?: ModelAssociation;
177
- attributes?: ModelAttributes[];
178
- };
179
- export declare type NonModelTypeConstructor<T> = {
180
- new (init: T): T;
181
- };
182
- export declare type PersistentModelConstructor<T extends PersistentModel, K extends PersistentModelMetaData = {
183
- readOnlyFields: 'createdAt' | 'updatedAt';
184
- }> = {
185
- new (init: ModelInit<T, K>): T;
186
- copyOf(src: T, mutator: (draft: MutableModel<T, K>) => void): T;
187
- };
188
- export declare type TypeConstructorMap = Record<string, PersistentModelConstructor<any> | NonModelTypeConstructor<any>>;
189
- export declare type PersistentModelMetaData = {
190
- readOnlyFields: string;
191
- };
192
- export declare type PersistentModel = Readonly<{
193
- id: string;
194
- } & Record<string, any>>;
195
- export declare type ModelInit<T, K extends PersistentModelMetaData = {
196
- readOnlyFields: 'createdAt' | 'updatedAt';
197
- }> = Omit<T, 'id' | K['readOnlyFields']>;
198
- declare type DeepWritable<T> = {
199
- -readonly [P in keyof T]: T[P] extends TypeName<T[P]> ? T[P] : DeepWritable<T[P]>;
200
- };
201
- export declare type MutableModel<T extends Record<string, any>, K extends PersistentModelMetaData = {
202
- readOnlyFields: 'createdAt' | 'updatedAt';
203
- }> = DeepWritable<Omit<T, 'id' | K['readOnlyFields']>> & Readonly<Pick<T, 'id' | K['readOnlyFields']>>;
204
- export declare type ModelInstanceMetadata = {
205
- id: string;
206
- _version: number;
207
- _lastChangedAt: number;
208
- _deleted: boolean;
209
- };
210
- export declare enum OpType {
211
- INSERT = "INSERT",
212
- UPDATE = "UPDATE",
213
- DELETE = "DELETE"
214
- }
215
- export declare type SubscriptionMessage<T extends PersistentModel> = Pick<InternalSubscriptionMessage<T>, 'opType' | 'element' | 'model' | 'condition'>;
216
- export declare type InternalSubscriptionMessage<T extends PersistentModel> = {
217
- opType: OpType;
218
- element: T;
219
- model: PersistentModelConstructor<T>;
220
- condition: PredicatesGroup<T> | null;
221
- savedElement?: T;
222
- };
223
- export declare type DataStoreSnapshot<T extends PersistentModel> = {
224
- items: T[];
225
- isSynced: boolean;
226
- };
227
- export declare type PredicateExpression<M extends PersistentModel, FT> = TypeName<FT> extends keyof MapTypeToOperands<FT> ? (operator: keyof MapTypeToOperands<FT>[TypeName<FT>], operand: MapTypeToOperands<FT>[TypeName<FT>][keyof MapTypeToOperands<FT>[TypeName<FT>]]) => ModelPredicate<M> : never;
228
- declare type EqualityOperators<T> = {
229
- ne: T;
230
- eq: T;
231
- };
232
- declare type ScalarNumberOperators<T> = EqualityOperators<T> & {
233
- le: T;
234
- lt: T;
235
- ge: T;
236
- gt: T;
237
- };
238
- declare type NumberOperators<T> = ScalarNumberOperators<T> & {
239
- between: [T, T];
240
- };
241
- declare type StringOperators<T> = ScalarNumberOperators<T> & {
242
- beginsWith: T;
243
- contains: T;
244
- notContains: T;
245
- };
246
- declare type BooleanOperators<T> = EqualityOperators<T>;
247
- declare type ArrayOperators<T> = {
248
- contains: T;
249
- notContains: T;
250
- };
251
- export declare type AllOperators = NumberOperators<any> & StringOperators<any> & ArrayOperators<any>;
252
- declare type MapTypeToOperands<T> = {
253
- number: NumberOperators<NonNullable<T>>;
254
- string: StringOperators<NonNullable<T>>;
255
- boolean: BooleanOperators<NonNullable<T>>;
256
- 'number[]': ArrayOperators<number>;
257
- 'string[]': ArrayOperators<string>;
258
- 'boolean[]': ArrayOperators<boolean>;
259
- };
260
- declare type TypeName<T> = T extends string ? 'string' : T extends number ? 'number' : T extends boolean ? 'boolean' : T extends string[] ? 'string[]' : T extends number[] ? 'number[]' : T extends boolean[] ? 'boolean[]' : never;
261
- export declare type PredicateGroups<T extends PersistentModel> = {
262
- and: (predicate: (predicate: ModelPredicate<T>) => ModelPredicate<T>) => ModelPredicate<T>;
263
- or: (predicate: (predicate: ModelPredicate<T>) => ModelPredicate<T>) => ModelPredicate<T>;
264
- not: (predicate: (predicate: ModelPredicate<T>) => ModelPredicate<T>) => ModelPredicate<T>;
265
- };
266
- export declare type ModelPredicate<M extends PersistentModel> = {
267
- [K in keyof M]-?: PredicateExpression<M, NonNullable<M[K]>>;
268
- } & PredicateGroups<M>;
269
- export declare type ProducerModelPredicate<M extends PersistentModel> = (condition: ModelPredicate<M>) => ModelPredicate<M>;
270
- export declare type PredicatesGroup<T extends PersistentModel> = {
271
- type: keyof PredicateGroups<T>;
272
- predicates: (PredicateObject<T> | PredicatesGroup<T>)[];
273
- };
274
- export declare function isPredicateObj<T extends PersistentModel>(obj: any): obj is PredicateObject<T>;
275
- export declare function isPredicateGroup<T extends PersistentModel>(obj: any): obj is PredicatesGroup<T>;
276
- export declare type PredicateObject<T extends PersistentModel> = {
277
- field: keyof T;
278
- operator: keyof AllOperators;
279
- operand: any;
280
- };
281
- export declare enum QueryOne {
282
- FIRST = 0,
283
- LAST = 1
284
- }
285
- export declare type GraphQLField = {
286
- [field: string]: {
287
- [operator: string]: string | number | [number, number];
288
- };
289
- };
290
- export declare type GraphQLCondition = Partial<GraphQLField | {
291
- and: [GraphQLCondition];
292
- or: [GraphQLCondition];
293
- not: GraphQLCondition;
294
- }>;
295
- export declare type GraphQLFilter = Partial<GraphQLField | {
296
- and: GraphQLFilter[];
297
- } | {
298
- or: GraphQLFilter[];
299
- } | {
300
- not: GraphQLFilter;
301
- }>;
302
- export declare type ProducerPaginationInput<T extends PersistentModel> = {
303
- sort?: ProducerSortPredicate<T>;
304
- limit?: number;
305
- page?: number;
306
- };
307
- export declare type ObserveQueryOptions<T extends PersistentModel> = Pick<ProducerPaginationInput<T>, 'sort'>;
308
- export declare type PaginationInput<T extends PersistentModel> = {
309
- sort?: SortPredicate<T>;
310
- limit?: number;
311
- page?: number;
312
- };
313
- export declare type ProducerSortPredicate<M extends PersistentModel> = (condition: SortPredicate<M>) => SortPredicate<M>;
314
- export declare type SortPredicate<T extends PersistentModel> = {
315
- [K in keyof T]-?: SortPredicateExpression<T, NonNullable<T[K]>>;
316
- };
317
- export declare type SortPredicateExpression<M extends PersistentModel, FT> = TypeName<FT> extends keyof MapTypeToOperands<FT> ? (sortDirection: keyof typeof SortDirection) => SortPredicate<M> : never;
318
- export declare enum SortDirection {
319
- ASCENDING = "ASCENDING",
320
- DESCENDING = "DESCENDING"
321
- }
322
- export declare type SortPredicatesGroup<T extends PersistentModel> = SortPredicateObject<T>[];
323
- export declare type SortPredicateObject<T extends PersistentModel> = {
324
- field: keyof T;
325
- sortDirection: keyof typeof SortDirection;
326
- };
327
- export declare type SystemComponent = {
328
- setUp(schema: InternalSchema, namespaceResolver: NamespaceResolver, modelInstanceCreator: ModelInstanceCreator, getModelConstructorByModelName: (namsespaceName: string, modelName: string) => PersistentModelConstructor<any>, appId: string): Promise<void>;
329
- };
330
- export declare type NamespaceResolver = (modelConstructor: PersistentModelConstructor<any>) => string;
331
- export declare type ControlMessageType<T> = {
332
- type: T;
333
- data?: any;
334
- };
335
- export declare type RelationType = {
336
- fieldName: string;
337
- modelName: string;
338
- relationType: 'HAS_ONE' | 'HAS_MANY' | 'BELONGS_TO';
339
- targetName?: string;
340
- associatedWith?: string;
341
- };
342
- export declare type RelationshipType = {
343
- [modelName: string]: {
344
- indexes: string[];
345
- relationTypes: RelationType[];
346
- };
347
- };
348
- export declare type KeyType = {
349
- primaryKey?: string[];
350
- compositeKeys?: Set<string>[];
351
- };
352
- export declare type ModelKeys = {
353
- [modelName: string]: KeyType;
354
- };
355
- export declare type DataStoreConfig = {
356
- DataStore?: {
357
- authModeStrategyType?: AuthModeStrategyType;
358
- conflictHandler?: ConflictHandler;
359
- errorHandler?: (error: SyncError<PersistentModel>) => void;
360
- maxRecordsToSync?: number;
361
- syncPageSize?: number;
362
- fullSyncInterval?: number;
363
- syncExpressions?: SyncExpression[];
364
- authProviders?: AuthProviders;
365
- storageAdapter?: Adapter;
366
- };
367
- authModeStrategyType?: AuthModeStrategyType;
368
- conflictHandler?: ConflictHandler;
369
- errorHandler?: (error: SyncError<PersistentModel>) => void;
370
- maxRecordsToSync?: number;
371
- syncPageSize?: number;
372
- fullSyncInterval?: number;
373
- syncExpressions?: SyncExpression[];
374
- authProviders?: AuthProviders;
375
- storageAdapter?: Adapter;
376
- };
377
- export declare type AuthProviders = {
378
- functionAuthProvider: () => {
379
- token: string;
380
- } | Promise<{
381
- token: string;
382
- }>;
383
- };
384
- export declare enum AuthModeStrategyType {
385
- DEFAULT = "DEFAULT",
386
- MULTI_AUTH = "MULTI_AUTH"
387
- }
388
- export declare type AuthModeStrategyReturn = GRAPHQL_AUTH_MODE | GRAPHQL_AUTH_MODE[] | undefined | null;
389
- export declare type AuthModeStrategyParams = {
390
- schema: InternalSchema;
391
- modelName: string;
392
- operation: ModelOperation;
393
- };
394
- export declare type AuthModeStrategy = (authModeStrategyParams: AuthModeStrategyParams) => AuthModeStrategyReturn | Promise<AuthModeStrategyReturn>;
395
- export declare enum ModelOperation {
396
- CREATE = "CREATE",
397
- READ = "READ",
398
- UPDATE = "UPDATE",
399
- DELETE = "DELETE"
400
- }
401
- export declare type ModelAuthModes = Record<string, {
402
- [Property in ModelOperation]: GRAPHQL_AUTH_MODE[];
403
- }>;
404
- export declare type SyncExpression = Promise<{
405
- modelConstructor: any;
406
- conditionProducer: (c?: any) => any;
407
- }>;
408
- declare type Option0 = [];
409
- declare type Option1<T extends PersistentModel> = [ModelPredicate<T> | undefined];
410
- declare type Option<T extends PersistentModel> = Option0 | Option1<T>;
411
- declare type Lookup<T extends PersistentModel> = {
412
- 0: ProducerModelPredicate<T> | Promise<ProducerModelPredicate<T>> | typeof PredicateAll;
413
- 1: ModelPredicate<T> | undefined;
414
- };
415
- declare type ConditionProducer<T extends PersistentModel, A extends Option<T>> = (...args: A) => A['length'] extends keyof Lookup<T> ? Lookup<T>[A['length']] : never;
416
- export declare function syncExpression<T extends PersistentModel, A extends Option<T>>(modelConstructor: PersistentModelConstructor<T>, conditionProducer: ConditionProducer<T, A>): Promise<{
417
- modelConstructor: PersistentModelConstructor<T>;
418
- conditionProducer: ConditionProducer<T, A>;
419
- }>;
420
- export declare type SyncConflict = {
421
- modelConstructor: PersistentModelConstructor<any>;
422
- localModel: PersistentModel;
423
- remoteModel: PersistentModel;
424
- operation: OpType;
425
- attempts: number;
426
- };
427
- export declare type SyncError<T extends PersistentModel> = {
428
- message: string;
429
- errorType: ErrorType;
430
- errorInfo?: string;
431
- recoverySuggestion?: string;
432
- model?: string;
433
- localModel: T;
434
- remoteModel: T;
435
- process: ProcessName;
436
- operation: string;
437
- cause?: Error;
438
- };
439
- export declare type ErrorType = 'ConfigError' | 'BadModel' | 'BadRecord' | 'Unauthorized' | 'Transient' | 'Unknown';
440
- export declare enum ProcessName {
441
- 'sync' = "sync",
442
- 'mutate' = "mutate",
443
- 'subscribe' = "subscribe"
444
- }
445
- export declare const DISCARD: unique symbol;
446
- export declare type ConflictHandler = (conflict: SyncConflict) => Promise<PersistentModel | typeof DISCARD> | PersistentModel | typeof DISCARD;
447
- export declare type ErrorHandler = (error: SyncError<PersistentModel>) => void;
448
- export declare type DeferredCallbackResolverOptions = {
449
- callback: () => void;
450
- maxInterval?: number;
451
- errorHandler?: (error: string) => void;
452
- };
453
- export declare enum LimitTimerRaceResolvedValues {
454
- LIMIT = "LIMIT",
455
- TIMER = "TIMER"
456
- }
457
- export declare type AmplifyContext = {
458
- Auth: typeof Auth;
459
- API: typeof API;
460
- Cache: typeof Cache;
461
- };
462
- export {};
package/lib/util.d.ts DELETED
@@ -1,113 +0,0 @@
1
- import { ULID } from 'ulid';
2
- import { Patch } from 'immer';
3
- import { ModelInstanceMetadata, PersistentModel, PersistentModelConstructor, PredicateObject, PredicatesGroup, RelationshipType, RelationType, ModelKeys, ModelAttributes, SchemaNamespace, SortPredicatesGroup, NonModelTypeConstructor, DeferredCallbackResolverOptions } from './types';
4
- export declare enum NAMESPACES {
5
- DATASTORE = "datastore",
6
- USER = "user",
7
- SYNC = "sync",
8
- STORAGE = "storage"
9
- }
10
- declare const DATASTORE = NAMESPACES.DATASTORE;
11
- declare const USER = NAMESPACES.USER;
12
- declare const SYNC = NAMESPACES.SYNC;
13
- declare const STORAGE = NAMESPACES.STORAGE;
14
- export { USER, SYNC, STORAGE, DATASTORE };
15
- export declare const USER_AGENT_SUFFIX_DATASTORE = "/DataStore";
16
- export declare const exhaustiveCheck: (obj: never, throwOnError?: boolean) => void;
17
- export declare const isNullOrUndefined: (val: any) => boolean;
18
- export declare const validatePredicate: <T extends Readonly<{
19
- id: string;
20
- } & Record<string, any>>>(model: T, groupType: "and" | "or" | "not", predicatesOrGroups: (PredicateObject<T> | PredicatesGroup<T>)[]) => any;
21
- export declare const validatePredicateField: <T>(value: T, operator: "ne" | "eq" | "le" | "lt" | "ge" | "gt" | "between" | "beginsWith" | "contains" | "notContains", operand: T | [T, T]) => boolean;
22
- export declare const isModelConstructor: <T extends Readonly<{
23
- id: string;
24
- } & Record<string, any>>>(obj: any) => obj is PersistentModelConstructor<T, {
25
- readOnlyFields: "createdAt" | "updatedAt";
26
- }>;
27
- export declare function registerNonModelClass(clazz: NonModelTypeConstructor<any>): void;
28
- export declare const isNonModelConstructor: (obj: any) => obj is NonModelTypeConstructor<any>;
29
- export declare const processCompositeKeys: (attributes: ModelAttributes) => Set<string>[];
30
- export declare const establishRelationAndKeys: (namespace: SchemaNamespace) => [RelationshipType, ModelKeys];
31
- export declare const traverseModel: <T extends Readonly<{
32
- id: string;
33
- } & Record<string, any>>>(srcModelName: string, instance: T, namespace: SchemaNamespace, modelInstanceCreator: <T_1 extends Readonly<{
34
- id: string;
35
- } & Record<string, any>> = Readonly<{
36
- id: string;
37
- } & Record<string, any>>>(modelConstructor: PersistentModelConstructor<T_1, {
38
- readOnlyFields: "createdAt" | "updatedAt";
39
- }>, init: Pick<T_1, Exclude<keyof T_1, "id" | "createdAt" | "updatedAt">> & Partial<ModelInstanceMetadata>) => T_1, getModelConstructorByModelName: (namsespaceName: string, modelName: string) => PersistentModelConstructor<any, {
40
- readOnlyFields: "createdAt" | "updatedAt";
41
- }>) => {
42
- modelName: string;
43
- item: T;
44
- instance: T;
45
- }[];
46
- export declare const getIndex: (rel: RelationType[], src: string) => string;
47
- export declare const getIndexFromAssociation: (indexes: string[], src: string) => string;
48
- export declare const isPrivateMode: () => Promise<unknown>;
49
- export declare function monotonicUlidFactory(seed?: number): ULID;
50
- /**
51
- * Uses performance.now() if available, otherwise, uses Date.now() (e.g. react native without a polyfill)
52
- *
53
- * The values returned by performance.now() always increase at a constant rate,
54
- * independent of the system clock (which might be adjusted manually or skewed
55
- * by software like NTP).
56
- *
57
- * Otherwise, performance.timing.navigationStart + performance.now() will be
58
- * approximately equal to Date.now()
59
- *
60
- * See: https://developer.mozilla.org/en-US/docs/Web/API/Performance/now#Example
61
- */
62
- export declare function getNow(): number;
63
- export declare function sortCompareFunction<T extends PersistentModel>(sortPredicates: SortPredicatesGroup<T>): (a: any, b: any) => number;
64
- export declare function valuesEqual(valA: any, valB: any, nullish?: boolean): boolean;
65
- export declare const isAWSDate: (val: string) => boolean;
66
- export declare const isAWSTime: (val: string) => boolean;
67
- export declare const isAWSDateTime: (val: string) => boolean;
68
- export declare const isAWSTimestamp: (val: number) => boolean;
69
- export declare const isAWSEmail: (val: string) => boolean;
70
- export declare const isAWSJSON: (val: string) => boolean;
71
- export declare const isAWSURL: (val: string) => boolean;
72
- export declare const isAWSPhone: (val: string) => boolean;
73
- export declare const isAWSIPAddress: (val: string) => boolean;
74
- export declare class DeferredPromise {
75
- promise: Promise<string>;
76
- resolve: (value: string | PromiseLike<string>) => void;
77
- reject: () => void;
78
- constructor();
79
- }
80
- export declare class DeferredCallbackResolver {
81
- private limitPromise;
82
- private timerPromise;
83
- private maxInterval;
84
- private timer;
85
- private raceInFlight;
86
- private callback;
87
- private errorHandler;
88
- private defaultErrorHandler;
89
- constructor(options: DeferredCallbackResolverOptions);
90
- private startTimer;
91
- private racePromises;
92
- start(): void;
93
- clear(): void;
94
- resolve(): void;
95
- }
96
- /**
97
- * merge two sets of patches created by immer produce.
98
- * newPatches take precedent over oldPatches for patches modifying the same path.
99
- * In the case many consecutive pathces are merged the original model should
100
- * always be the root model.
101
- *
102
- * Example:
103
- * A -> B, patches1
104
- * B -> C, patches2
105
- *
106
- * mergePatches(A, patches1, patches2) to get patches for A -> C
107
- *
108
- * @param originalSource the original Model the patches should be applied to
109
- * @param oldPatches immer produce patch list
110
- * @param newPatches immer produce patch list (will take precedence)
111
- * @return merged patches
112
- */
113
- export declare function mergePatches<T>(originalSource: T, oldPatches: Patch[], newPatches: Patch[]): Patch[];
@@ -1,6 +0,0 @@
1
- var config = require('./webpack.config.js');
2
-
3
- var entry = {
4
- 'aws-amplify-datastore': './lib-esm/index.js',
5
- };
6
- module.exports = Object.assign(config, { entry, mode: 'development' });