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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/dist/cjs/authModeStrategies/multiAuthStrategy.js +1 -1
  2. package/dist/cjs/authModeStrategies/multiAuthStrategy.js.map +1 -1
  3. package/dist/cjs/datastore/datastore.js +46 -41
  4. package/dist/cjs/datastore/datastore.js.map +1 -1
  5. package/dist/cjs/index.js +3 -1
  6. package/dist/cjs/index.js.map +1 -1
  7. package/dist/cjs/predicates/index.js +1 -0
  8. package/dist/cjs/predicates/index.js.map +1 -1
  9. package/dist/cjs/predicates/next.js +13 -12
  10. package/dist/cjs/predicates/next.js.map +1 -1
  11. package/dist/cjs/predicates/sort.js +2 -2
  12. package/dist/cjs/predicates/sort.js.map +1 -1
  13. package/dist/cjs/storage/adapter/AsyncStorageAdapter.js +21 -18
  14. package/dist/cjs/storage/adapter/AsyncStorageAdapter.js.map +1 -1
  15. package/dist/cjs/storage/adapter/AsyncStorageDatabase.js +10 -9
  16. package/dist/cjs/storage/adapter/AsyncStorageDatabase.js.map +1 -1
  17. package/dist/cjs/storage/adapter/InMemoryStore.js +4 -1
  18. package/dist/cjs/storage/adapter/InMemoryStore.js.map +1 -1
  19. package/dist/cjs/storage/adapter/IndexedDBAdapter.js +21 -23
  20. package/dist/cjs/storage/adapter/IndexedDBAdapter.js.map +1 -1
  21. package/dist/cjs/storage/adapter/StorageAdapterBase.js +7 -7
  22. package/dist/cjs/storage/adapter/StorageAdapterBase.js.map +1 -1
  23. package/dist/cjs/storage/adapter/getDefaultAdapter/index.js +4 -1
  24. package/dist/cjs/storage/adapter/getDefaultAdapter/index.js.map +1 -1
  25. package/dist/cjs/storage/adapter/getDefaultAdapter/index.native.js +1 -0
  26. package/dist/cjs/storage/adapter/getDefaultAdapter/index.native.js.map +1 -1
  27. package/dist/cjs/storage/relationship.js +1 -0
  28. package/dist/cjs/storage/relationship.js.map +1 -1
  29. package/dist/cjs/storage/storage.js +14 -14
  30. package/dist/cjs/storage/storage.js.map +1 -1
  31. package/dist/cjs/sync/datastoreConnectivity.js +0 -3
  32. package/dist/cjs/sync/datastoreConnectivity.js.map +1 -1
  33. package/dist/cjs/sync/index.js +47 -43
  34. package/dist/cjs/sync/index.js.map +1 -1
  35. package/dist/cjs/sync/merger.js +1 -1
  36. package/dist/cjs/sync/merger.js.map +1 -1
  37. package/dist/cjs/sync/outbox.js +19 -17
  38. package/dist/cjs/sync/outbox.js.map +1 -1
  39. package/dist/cjs/sync/processors/errorMaps.js.map +1 -1
  40. package/dist/cjs/sync/processors/mutation.js +31 -28
  41. package/dist/cjs/sync/processors/mutation.js.map +1 -1
  42. package/dist/cjs/sync/processors/subscription.js +21 -12
  43. package/dist/cjs/sync/processors/subscription.js.map +1 -1
  44. package/dist/cjs/sync/processors/sync.js +25 -21
  45. package/dist/cjs/sync/processors/sync.js.map +1 -1
  46. package/dist/cjs/sync/utils.js +20 -21
  47. package/dist/cjs/sync/utils.js.map +1 -1
  48. package/dist/cjs/types.js +1 -0
  49. package/dist/cjs/types.js.map +1 -1
  50. package/dist/cjs/util.js +46 -25
  51. package/dist/cjs/util.js.map +1 -1
  52. package/dist/esm/authModeStrategies/multiAuthStrategy.d.ts +1 -1
  53. package/dist/esm/authModeStrategies/multiAuthStrategy.mjs +1 -1
  54. package/dist/esm/authModeStrategies/multiAuthStrategy.mjs.map +1 -1
  55. package/dist/esm/datastore/datastore.d.ts +4 -6
  56. package/dist/esm/datastore/datastore.mjs +42 -34
  57. package/dist/esm/datastore/datastore.mjs.map +1 -1
  58. package/dist/esm/index.d.ts +1 -1
  59. package/dist/esm/index.mjs +2 -2
  60. package/dist/esm/index.mjs.map +1 -1
  61. package/dist/esm/predicates/index.mjs +1 -0
  62. package/dist/esm/predicates/index.mjs.map +1 -1
  63. package/dist/esm/predicates/next.d.ts +7 -7
  64. package/dist/esm/predicates/next.mjs +13 -12
  65. package/dist/esm/predicates/next.mjs.map +1 -1
  66. package/dist/esm/predicates/sort.d.ts +1 -1
  67. package/dist/esm/predicates/sort.mjs +2 -2
  68. package/dist/esm/predicates/sort.mjs.map +1 -1
  69. package/dist/esm/storage/adapter/AsyncStorageAdapter.d.ts +1 -1
  70. package/dist/esm/storage/adapter/AsyncStorageAdapter.mjs +21 -18
  71. package/dist/esm/storage/adapter/AsyncStorageAdapter.mjs.map +1 -1
  72. package/dist/esm/storage/adapter/AsyncStorageDatabase.mjs +10 -9
  73. package/dist/esm/storage/adapter/AsyncStorageDatabase.mjs.map +1 -1
  74. package/dist/esm/storage/adapter/InMemoryStore.mjs +4 -1
  75. package/dist/esm/storage/adapter/InMemoryStore.mjs.map +1 -1
  76. package/dist/esm/storage/adapter/IndexedDBAdapter.mjs +21 -23
  77. package/dist/esm/storage/adapter/IndexedDBAdapter.mjs.map +1 -1
  78. package/dist/esm/storage/adapter/StorageAdapterBase.d.ts +2 -2
  79. package/dist/esm/storage/adapter/StorageAdapterBase.mjs +7 -7
  80. package/dist/esm/storage/adapter/StorageAdapterBase.mjs.map +1 -1
  81. package/dist/esm/storage/adapter/getDefaultAdapter/index.mjs +3 -1
  82. package/dist/esm/storage/adapter/getDefaultAdapter/index.mjs.map +1 -1
  83. package/dist/esm/storage/adapter/getDefaultAdapter/index.native.mjs +1 -0
  84. package/dist/esm/storage/adapter/getDefaultAdapter/index.native.mjs.map +1 -1
  85. package/dist/esm/storage/adapter/index.d.ts +1 -1
  86. package/dist/esm/storage/relationship.mjs +1 -0
  87. package/dist/esm/storage/relationship.mjs.map +1 -1
  88. package/dist/esm/storage/storage.d.ts +11 -11
  89. package/dist/esm/storage/storage.mjs +10 -10
  90. package/dist/esm/storage/storage.mjs.map +1 -1
  91. package/dist/esm/sync/datastoreConnectivity.d.ts +2 -2
  92. package/dist/esm/sync/datastoreConnectivity.mjs +0 -3
  93. package/dist/esm/sync/datastoreConnectivity.mjs.map +1 -1
  94. package/dist/esm/sync/index.d.ts +3 -3
  95. package/dist/esm/sync/index.mjs +47 -43
  96. package/dist/esm/sync/index.mjs.map +1 -1
  97. package/dist/esm/sync/merger.d.ts +1 -1
  98. package/dist/esm/sync/merger.mjs +1 -1
  99. package/dist/esm/sync/merger.mjs.map +1 -1
  100. package/dist/esm/sync/outbox.d.ts +4 -4
  101. package/dist/esm/sync/outbox.mjs +19 -17
  102. package/dist/esm/sync/outbox.mjs.map +1 -1
  103. package/dist/esm/sync/processors/errorMaps.mjs.map +1 -1
  104. package/dist/esm/sync/processors/mutation.d.ts +5 -5
  105. package/dist/esm/sync/processors/mutation.mjs +31 -28
  106. package/dist/esm/sync/processors/mutation.mjs.map +1 -1
  107. package/dist/esm/sync/processors/subscription.d.ts +1 -1
  108. package/dist/esm/sync/processors/subscription.mjs +21 -12
  109. package/dist/esm/sync/processors/subscription.mjs.map +1 -1
  110. package/dist/esm/sync/processors/sync.d.ts +3 -3
  111. package/dist/esm/sync/processors/sync.mjs +13 -9
  112. package/dist/esm/sync/processors/sync.mjs.map +1 -1
  113. package/dist/esm/sync/utils.d.ts +11 -13
  114. package/dist/esm/sync/utils.mjs +20 -21
  115. package/dist/esm/sync/utils.mjs.map +1 -1
  116. package/dist/esm/types.d.ts +121 -131
  117. package/dist/esm/types.mjs +3 -2
  118. package/dist/esm/types.mjs.map +1 -1
  119. package/dist/esm/util.d.ts +5 -5
  120. package/dist/esm/util.mjs +46 -25
  121. package/dist/esm/util.mjs.map +1 -1
  122. package/package.json +74 -73
  123. package/src/authModeStrategies/multiAuthStrategy.ts +8 -4
  124. package/src/datastore/datastore.ts +145 -123
  125. package/src/index.ts +10 -8
  126. package/src/predicates/index.ts +10 -2
  127. package/src/predicates/next.ts +39 -28
  128. package/src/predicates/sort.ts +23 -26
  129. package/src/storage/adapter/AsyncStorageAdapter.ts +43 -25
  130. package/src/storage/adapter/AsyncStorageDatabase.ts +18 -10
  131. package/src/storage/adapter/InMemoryStore.ts +5 -1
  132. package/src/storage/adapter/IndexedDBAdapter.ts +50 -37
  133. package/src/storage/adapter/StorageAdapterBase.ts +24 -18
  134. package/src/storage/adapter/getDefaultAdapter/index.native.ts +1 -0
  135. package/src/storage/adapter/getDefaultAdapter/index.ts +4 -1
  136. package/src/storage/adapter/index.ts +2 -2
  137. package/src/storage/relationship.ts +5 -1
  138. package/src/storage/storage.ts +38 -30
  139. package/src/sync/datastoreConnectivity.ts +4 -6
  140. package/src/sync/index.ts +228 -230
  141. package/src/sync/merger.ts +4 -3
  142. package/src/sync/outbox.ts +26 -24
  143. package/src/sync/processors/errorMaps.ts +5 -0
  144. package/src/sync/processors/mutation.ts +80 -72
  145. package/src/sync/processors/subscription.ts +69 -53
  146. package/src/sync/processors/sync.ts +49 -37
  147. package/src/sync/utils.ts +60 -41
  148. package/src/types.ts +165 -165
  149. package/src/util.ts +89 -53
package/src/types.ts CHANGED
@@ -1,27 +1,28 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
+ import { InternalAPI } from '@aws-amplify/api/internals';
4
+ import { GraphQLAuthMode } from '@aws-amplify/core/internals/utils';
5
+
3
6
  import { ModelInstanceCreator } from './datastore/datastore';
4
7
  import {
8
+ NAMESPACES,
9
+ extractPrimaryKeyFieldNames,
5
10
  isAWSDate,
6
- isAWSTime,
7
11
  isAWSDateTime,
8
- isAWSTimestamp,
9
12
  isAWSEmail,
13
+ isAWSIPAddress,
10
14
  isAWSJSON,
11
- isAWSURL,
12
15
  isAWSPhone,
13
- isAWSIPAddress,
14
- NAMESPACES,
15
- extractPrimaryKeyFieldNames,
16
+ isAWSTime,
17
+ isAWSTimestamp,
18
+ isAWSURL,
16
19
  } from './util';
17
20
  import { PredicateAll } from './predicates';
18
- import { InternalAPI } from '@aws-amplify/api/internals';
19
21
  import { Adapter } from './storage/adapter';
20
- import { GraphQLAuthMode } from '@aws-amplify/core/internals/utils';
21
22
 
22
- export type Scalar<T> = T extends Array<infer InnerType> ? InnerType : T;
23
+ export type Scalar<T> = T extends (infer InnerType)[] ? InnerType : T;
23
24
 
24
- //#region Schema types
25
+ // #region Schema types
25
26
  /**
26
27
  * @deprecated If you intended to use the Schema for `generateClient`, then you've imported the wrong Schema type.
27
28
  * Use `import { type Schema } from '../amplify/data/resource' instead. If you intended to import the type for DataStore
@@ -34,25 +35,25 @@ export type DataStoreSchema = UserSchema & {
34
35
  codegenVersion: string;
35
36
  };
36
37
 
37
- export type UserSchema = {
38
+ export interface UserSchema {
38
39
  models: SchemaModels;
39
40
  nonModels?: SchemaNonModels;
40
41
  relationships?: RelationshipType;
41
42
  keys?: ModelKeys;
42
43
  enums: SchemaEnums;
43
44
  modelTopologicalOrdering?: Map<string, string[]>;
44
- };
45
- export type InternalSchema = {
45
+ }
46
+ export interface InternalSchema {
46
47
  namespaces: SchemaNamespaces;
47
48
  version: string;
48
49
  codegenVersion: string;
49
- };
50
+ }
50
51
  export type SchemaNamespaces = Record<string, SchemaNamespace>;
51
52
  export type SchemaNamespace = UserSchema & {
52
53
  name: string;
53
54
  };
54
55
  export type SchemaModels = Record<string, SchemaModel>;
55
- export type SchemaModel = {
56
+ export interface SchemaModel {
56
57
  name: string;
57
58
  pluralName: string;
58
59
  attributes?: ModelAttributes;
@@ -68,10 +69,10 @@ export type SchemaModel = {
68
69
  allFields?: ModelFields;
69
70
 
70
71
  syncable?: boolean;
71
- };
72
+ }
72
73
 
73
74
  export function isSchemaModel(obj: any): obj is SchemaModel {
74
- return obj && (<SchemaModel>obj).pluralName !== undefined;
75
+ return obj && (obj as SchemaModel).pluralName !== undefined;
75
76
  }
76
77
 
77
78
  export function isSchemaModelWithAttributes(
@@ -81,37 +82,37 @@ export function isSchemaModelWithAttributes(
81
82
  }
82
83
 
83
84
  export type SchemaNonModels = Record<string, SchemaNonModel>;
84
- export type SchemaNonModel = {
85
+ export interface SchemaNonModel {
85
86
  name: string;
86
87
  fields: ModelFields;
87
- };
88
+ }
88
89
  type SchemaEnums = Record<string, SchemaEnum>;
89
- type SchemaEnum = {
90
+ interface SchemaEnum {
90
91
  name: string;
91
92
  values: string[];
92
- };
93
- export type ModelMeta<T extends PersistentModel> = {
93
+ }
94
+ export interface ModelMeta<T extends PersistentModel> {
94
95
  builder: PersistentModelConstructor<T>;
95
96
  schema: SchemaModel;
96
97
  pkField: string[];
97
- };
98
+ }
98
99
  export type ModelAssociation = AssociatedWith | TargetNameAssociation;
99
- type AssociatedWith = {
100
+ interface AssociatedWith {
100
101
  connectionType: 'HAS_MANY' | 'HAS_ONE';
101
102
  associatedWith: string | string[];
102
103
  targetName?: string;
103
104
  targetNames?: string[];
104
- };
105
+ }
105
106
 
106
107
  export function isAssociatedWith(obj: any): obj is AssociatedWith {
107
108
  return obj && obj.associatedWith;
108
109
  }
109
110
 
110
- type TargetNameAssociation = {
111
+ interface TargetNameAssociation {
111
112
  connectionType: 'BELONGS_TO';
112
113
  targetName?: string;
113
114
  targetNames?: string[];
114
- };
115
+ }
115
116
 
116
117
  export function isTargetNameAssociation(
117
118
  obj: any,
@@ -119,9 +120,9 @@ export function isTargetNameAssociation(
119
120
  return obj?.targetName || obj?.targetNames;
120
121
  }
121
122
 
122
- type FieldAssociation = {
123
+ interface FieldAssociation {
123
124
  connectionType: 'HAS_ONE' | 'BELONGS_TO' | 'HAS_MANY';
124
- };
125
+ }
125
126
  export function isFieldAssociation(
126
127
  obj: any,
127
128
  fieldName: string,
@@ -130,9 +131,12 @@ export function isFieldAssociation(
130
131
  }
131
132
 
132
133
  export type ModelAttributes = ModelAttribute[];
133
- export type ModelAttribute = { type: string; properties?: Record<string, any> };
134
+ export interface ModelAttribute {
135
+ type: string;
136
+ properties?: Record<string, any>;
137
+ }
134
138
 
135
- export type ModelAuthRule = {
139
+ export interface ModelAuthRule {
136
140
  allow: string;
137
141
  provider?: string;
138
142
  operations?: string[];
@@ -141,14 +145,14 @@ export type ModelAuthRule = {
141
145
  groups?: string[];
142
146
  groupClaim?: string;
143
147
  groupsField?: string;
144
- };
148
+ }
145
149
 
146
- export type ModelAttributeAuth = {
150
+ export interface ModelAttributeAuth {
147
151
  type: 'auth';
148
152
  properties: {
149
153
  rules: ModelAuthRule[];
150
154
  };
151
- };
155
+ }
152
156
 
153
157
  export function isModelAttributeAuth(
154
158
  attr: ModelAttribute,
@@ -161,29 +165,29 @@ export function isModelAttributeAuth(
161
165
  );
162
166
  }
163
167
 
164
- type ModelAttributeKey = {
168
+ interface ModelAttributeKey {
165
169
  type: 'key';
166
170
  properties: {
167
171
  name?: string;
168
172
  fields: string[];
169
173
  };
170
- };
174
+ }
171
175
 
172
- type ModelAttributePrimaryKey = {
176
+ interface ModelAttributePrimaryKey {
173
177
  type: 'key';
174
178
  properties: {
175
179
  name: never;
176
180
  fields: string[];
177
181
  };
178
- };
182
+ }
179
183
 
180
- type ModelAttributeCompositeKey = {
184
+ interface ModelAttributeCompositeKey {
181
185
  type: 'key';
182
186
  properties: {
183
187
  name: string;
184
188
  fields: [string, string, string, string?, string?];
185
189
  };
186
- };
190
+ }
187
191
 
188
192
  export function isModelAttributeKey(
189
193
  attr: ModelAttribute,
@@ -212,7 +216,7 @@ export function isModelAttributeCompositeKey(
212
216
  );
213
217
  }
214
218
 
215
- export type ModelAttributeAuthProperty = {
219
+ export interface ModelAttributeAuthProperty {
216
220
  allow: ModelAttributeAuthAllow;
217
221
  identityClaim?: string;
218
222
  groupClaim?: string;
@@ -220,7 +224,7 @@ export type ModelAttributeAuthProperty = {
220
224
  operations?: string[];
221
225
  ownerField?: string;
222
226
  provider?: ModelAttributeAuthProvider;
223
- };
227
+ }
224
228
 
225
229
  export enum ModelAttributeAuthAllow {
226
230
  CUSTOM = 'custom',
@@ -256,6 +260,7 @@ export enum GraphQLScalarType {
256
260
  AWSIPAddress,
257
261
  }
258
262
 
263
+ // eslint-disable-next-line @typescript-eslint/no-namespace
259
264
  export namespace GraphQLScalarType {
260
265
  export function getJSType(
261
266
  scalar: keyof Omit<
@@ -318,7 +323,7 @@ export namespace GraphQLScalarType {
318
323
  }
319
324
  }
320
325
 
321
- export type AuthorizationRule = {
326
+ export interface AuthorizationRule {
322
327
  identityClaim: string;
323
328
  ownerField: string;
324
329
  provider: 'userPools' | 'oidc' | 'iam' | 'apiKey';
@@ -327,7 +332,7 @@ export type AuthorizationRule = {
327
332
  groupsField: string;
328
333
  authStrategy: 'owner' | 'groups' | 'private' | 'public';
329
334
  areSubscriptionsPublic: boolean;
330
- };
335
+ }
331
336
 
332
337
  export function isGraphQLScalarType(
333
338
  obj: any,
@@ -338,11 +343,11 @@ export function isGraphQLScalarType(
338
343
  return obj && GraphQLScalarType[obj] !== undefined;
339
344
  }
340
345
 
341
- export type ModelFieldType = {
346
+ export interface ModelFieldType {
342
347
  model: string;
343
348
  modelConstructor?: ModelMeta<PersistentModel>;
344
- };
345
- export function isModelFieldType<T extends PersistentModel>(
349
+ }
350
+ export function isModelFieldType<_ extends PersistentModel>(
346
351
  obj: any,
347
352
  ): obj is ModelFieldType {
348
353
  const modelField: keyof ModelFieldType = 'model';
@@ -351,7 +356,9 @@ export function isModelFieldType<T extends PersistentModel>(
351
356
  return false;
352
357
  }
353
358
 
354
- export type NonModelFieldType = { nonModel: string };
359
+ export interface NonModelFieldType {
360
+ nonModel: string;
361
+ }
355
362
  export function isNonModelFieldType(obj: any): obj is NonModelFieldType {
356
363
  const typeField: keyof NonModelFieldType = 'nonModel';
357
364
  if (obj && obj[typeField]) return true;
@@ -359,7 +366,9 @@ export function isNonModelFieldType(obj: any): obj is NonModelFieldType {
359
366
  return false;
360
367
  }
361
368
 
362
- type EnumFieldType = { enum: string };
369
+ interface EnumFieldType {
370
+ enum: string;
371
+ }
363
372
  export function isEnumFieldType(obj: any): obj is EnumFieldType {
364
373
  const modelField: keyof EnumFieldType = 'enum';
365
374
  if (obj && obj[modelField]) return true;
@@ -367,7 +376,7 @@ export function isEnumFieldType(obj: any): obj is EnumFieldType {
367
376
  return false;
368
377
  }
369
378
 
370
- export type ModelField = {
379
+ export interface ModelField {
371
380
  name: string;
372
381
  type:
373
382
  | keyof Omit<
@@ -383,22 +392,20 @@ export type ModelField = {
383
392
  isArrayNullable?: boolean;
384
393
  association?: ModelAssociation;
385
394
  attributes?: ModelAttributes[];
386
- };
387
- //#endregion
395
+ }
396
+ // #endregion
388
397
 
389
- //#region Model definition
390
- export type NonModelTypeConstructor<T> = {
391
- new (init: T): T;
392
- };
398
+ // #region Model definition
399
+ export type NonModelTypeConstructor<T> = new (init: T) => T;
393
400
 
394
401
  // Class for model
395
- export type PersistentModelConstructor<T extends PersistentModel> = {
402
+ export interface PersistentModelConstructor<T extends PersistentModel> {
396
403
  new (init: ModelInit<T, PersistentModelMetaData<T>>): T;
397
404
  copyOf(
398
405
  src: T,
399
406
  mutator: (draft: MutableModel<T, PersistentModelMetaData<T>>) => void,
400
407
  ): T;
401
- };
408
+ }
402
409
 
403
410
  /**
404
411
  * @private
@@ -443,7 +450,7 @@ export type OptionallyManagedIdentifier<T, F extends keyof T> = IdentifierBrand<
443
450
  >;
444
451
 
445
452
  // You provide the values
446
- export type CompositeIdentifier<T, K extends Array<keyof T>> = IdentifierBrand<
453
+ export type CompositeIdentifier<T, K extends (keyof T)[]> = IdentifierBrand<
447
454
  { fields: K; type: T },
448
455
  'CompositeIdentifier'
449
456
  >;
@@ -494,10 +501,10 @@ export type IdentifierFieldsForInit<
494
501
  // Instance of model
495
502
  export declare const __modelMeta__: unique symbol;
496
503
 
497
- export type PersistentModelMetaData<T> = {
504
+ export interface PersistentModelMetaData<T> {
498
505
  identifier?: Identifier<T>;
499
506
  readOnlyFields?: string;
500
- };
507
+ }
501
508
 
502
509
  export interface AsyncCollection<T> extends AsyncIterable<T> {
503
510
  toArray(options?: { max?: number }): Promise<T[]>;
@@ -538,19 +545,11 @@ type OptionalRelativesOf<T> =
538
545
 
539
546
  type OmitOptionalRelatives<T> = Omit<T, OptionalRelativesOf<T>>;
540
547
  type PickOptionalRelatives<T> = Pick<T, OptionalRelativesOf<T>>;
541
- type OmitOptionalFields<T> = Omit<
542
- T,
543
- KeysOfSuperType<T, undefined> | OptionalRelativesOf<T>
544
- >;
545
- type PickOptionalFields<T> = Pick<
546
- T,
547
- KeysOfSuperType<T, undefined> | OptionalRelativesOf<T>
548
- >;
549
548
 
550
- export type DefaultPersistentModelMetaData = {
549
+ export interface DefaultPersistentModelMetaData {
551
550
  identifier: ManagedIdentifier<{ id: string }, 'id'>;
552
551
  readOnlyFields: never;
553
- };
552
+ }
554
553
 
555
554
  export type MetadataOrDefault<
556
555
  T extends PersistentModel,
@@ -578,6 +577,7 @@ export type MetadataReadOnlyFields<
578
577
  // This type makes optional some identifiers in the constructor init object (e.g. OptionallyManagedIdentifier)
579
578
  export type ModelInitBase<
580
579
  T extends PersistentModel,
580
+ // eslint-disable-next-line @typescript-eslint/ban-types
581
581
  M extends PersistentModelMetaData<T> = {},
582
582
  > = Omit<
583
583
  T,
@@ -592,6 +592,7 @@ export type ModelInitBase<
592
592
 
593
593
  export type ModelInit<
594
594
  T extends PersistentModel,
595
+ // eslint-disable-next-line @typescript-eslint/ban-types
595
596
  M extends PersistentModelMetaData<T> = {},
596
597
  > = {
597
598
  [P in keyof OmitOptionalRelatives<ModelInitBase<T, M>>]: SettableFieldType<
@@ -617,6 +618,7 @@ type DeepWritable<T> = {
617
618
 
618
619
  export type MutableModel<
619
620
  T extends PersistentModel,
621
+ // eslint-disable-next-line @typescript-eslint/ban-types
620
622
  M extends PersistentModelMetaData<T> = {},
621
623
  // This provides Intellisense with ALL of the properties, regardless of read-only
622
624
  // but will throw a linting error if trying to overwrite a read-only property
@@ -625,11 +627,11 @@ export type MutableModel<
625
627
  > &
626
628
  Readonly<Pick<T, IdentifierFields<T, M> | MetadataReadOnlyFields<T, M>>>;
627
629
 
628
- export type ModelInstanceMetadata = {
630
+ export interface ModelInstanceMetadata {
629
631
  _version: number;
630
632
  _lastChangedAt: number;
631
633
  _deleted: boolean;
632
- };
634
+ }
633
635
 
634
636
  export type IdentifierFieldValue<
635
637
  T extends PersistentModel,
@@ -656,9 +658,9 @@ export function isIdentifierObject<T extends PersistentModel>(
656
658
  typeof obj === 'object' && obj && keys.every(k => obj[k] !== undefined)
657
659
  );
658
660
  }
659
- //#endregion
661
+ // #endregion
660
662
 
661
- //#region Subscription messages
663
+ // #region Subscription messages
662
664
  export enum OpType {
663
665
  INSERT = 'INSERT',
664
666
  UPDATE = 'UPDATE',
@@ -670,21 +672,21 @@ export type SubscriptionMessage<T extends PersistentModel> = Pick<
670
672
  'opType' | 'element' | 'model' | 'condition'
671
673
  >;
672
674
 
673
- export type InternalSubscriptionMessage<T extends PersistentModel> = {
675
+ export interface InternalSubscriptionMessage<T extends PersistentModel> {
674
676
  opType: OpType;
675
677
  element: T;
676
678
  model: PersistentModelConstructor<T>;
677
679
  condition: PredicatesGroup<T> | null;
678
680
  savedElement?: T;
679
- };
681
+ }
680
682
 
681
- export type DataStoreSnapshot<T extends PersistentModel> = {
683
+ export interface DataStoreSnapshot<T extends PersistentModel> {
682
684
  items: T[];
683
685
  isSynced: boolean;
684
- };
685
- //#endregion
686
+ }
687
+ // #endregion
686
688
 
687
- //#region Predicates
689
+ // #region Predicates
688
690
 
689
691
  export type PredicateExpression<M extends PersistentModel, FT> =
690
692
  TypeName<FT> extends keyof MapTypeToOperands<FT>
@@ -695,10 +697,10 @@ export type PredicateExpression<M extends PersistentModel, FT> =
695
697
  ) => ModelPredicate<M>
696
698
  : never;
697
699
 
698
- type EqualityOperators<T> = {
700
+ interface EqualityOperators<T> {
699
701
  ne: T;
700
702
  eq: T;
701
- };
703
+ }
702
704
  type ScalarNumberOperators<T> = EqualityOperators<T> & {
703
705
  le: T;
704
706
  lt: T;
@@ -714,22 +716,22 @@ type StringOperators<T> = ScalarNumberOperators<T> & {
714
716
  notContains: T;
715
717
  };
716
718
  type BooleanOperators<T> = EqualityOperators<T>;
717
- type ArrayOperators<T> = {
719
+ interface ArrayOperators<T> {
718
720
  contains: T;
719
721
  notContains: T;
720
- };
722
+ }
721
723
  export type AllOperators = NumberOperators<any> &
722
724
  StringOperators<any> &
723
725
  ArrayOperators<any>;
724
726
 
725
- type MapTypeToOperands<T> = {
727
+ interface MapTypeToOperands<T> {
726
728
  number: NumberOperators<NonNullable<T>>;
727
729
  string: StringOperators<NonNullable<T>>;
728
730
  boolean: BooleanOperators<NonNullable<T>>;
729
731
  'number[]': ArrayOperators<number>;
730
732
  'string[]': ArrayOperators<string>;
731
733
  'boolean[]': ArrayOperators<boolean>;
732
- };
734
+ }
733
735
 
734
736
  type TypeName<T> = T extends string
735
737
  ? 'string'
@@ -745,17 +747,17 @@ type TypeName<T> = T extends string
745
747
  ? 'boolean[]'
746
748
  : never;
747
749
 
748
- export type PredicateGroups<T extends PersistentModel> = {
749
- and: (
750
+ export interface PredicateGroups<T extends PersistentModel> {
751
+ and(
750
752
  predicate: (predicate: ModelPredicate<T>) => ModelPredicate<T>,
751
- ) => ModelPredicate<T>;
752
- or: (
753
+ ): ModelPredicate<T>;
754
+ or(
753
755
  predicate: (predicate: ModelPredicate<T>) => ModelPredicate<T>,
754
- ) => ModelPredicate<T>;
755
- not: (
756
+ ): ModelPredicate<T>;
757
+ not(
756
758
  predicate: (predicate: ModelPredicate<T>) => ModelPredicate<T>,
757
- ) => ModelPredicate<T>;
758
- };
759
+ ): ModelPredicate<T>;
760
+ }
759
761
 
760
762
  export type ModelPredicate<M extends PersistentModel> = {
761
763
  [K in keyof M]-?: PredicateExpression<M, NonNullable<M[K]>>;
@@ -765,38 +767,37 @@ export type ProducerModelPredicate<M extends PersistentModel> = (
765
767
  condition: ModelPredicate<M>,
766
768
  ) => ModelPredicate<M>;
767
769
 
768
- export type PredicatesGroup<T extends PersistentModel> = {
770
+ export interface PredicatesGroup<T extends PersistentModel> {
769
771
  type: keyof PredicateGroups<T>;
770
772
  predicates: (PredicateObject<T> | PredicatesGroup<T>)[];
771
- };
773
+ }
772
774
 
773
775
  export function isPredicateObj<T extends PersistentModel>(
774
776
  obj: any,
775
777
  ): obj is PredicateObject<T> {
776
- return obj && (<PredicateObject<T>>obj).field !== undefined;
778
+ return obj && (obj as PredicateObject<T>).field !== undefined;
777
779
  }
778
780
 
779
781
  export function isPredicateGroup<T extends PersistentModel>(
780
782
  obj: any,
781
783
  ): obj is PredicatesGroup<T> {
782
- return obj && (<PredicatesGroup<T>>obj).type !== undefined;
784
+ return obj && (obj as PredicatesGroup<T>).type !== undefined;
783
785
  }
784
786
 
785
- export type PredicateObject<T extends PersistentModel> = {
787
+ export interface PredicateObject<T extends PersistentModel> {
786
788
  field: keyof T;
787
789
  operator: keyof AllOperators;
788
790
  operand: any;
789
- };
791
+ }
790
792
 
791
793
  export enum QueryOne {
792
794
  FIRST,
793
795
  LAST,
794
796
  }
795
- export type GraphQLField = {
796
- [field: string]: {
797
- [operator: string]: string | number | [number, number];
798
- };
799
- };
797
+ export type GraphQLField = Record<
798
+ string,
799
+ Record<string, string | number | [number, number]>
800
+ >;
800
801
 
801
802
  export type GraphQLCondition = Partial<
802
803
  | GraphQLField
@@ -820,26 +821,26 @@ export type GraphQLFilter = Partial<
820
821
  }
821
822
  >;
822
823
 
823
- //#endregion
824
+ // #endregion
824
825
 
825
- //#region Pagination
826
+ // #region Pagination
826
827
 
827
- export type ProducerPaginationInput<T extends PersistentModel> = {
828
+ export interface ProducerPaginationInput<T extends PersistentModel> {
828
829
  sort?: ProducerSortPredicate<T>;
829
830
  limit?: number;
830
831
  page?: number;
831
- };
832
+ }
832
833
 
833
834
  export type ObserveQueryOptions<T extends PersistentModel> = Pick<
834
835
  ProducerPaginationInput<T>,
835
836
  'sort'
836
837
  >;
837
838
 
838
- export type PaginationInput<T extends PersistentModel> = {
839
+ export interface PaginationInput<T extends PersistentModel> {
839
840
  sort?: SortPredicate<T>;
840
841
  limit?: number;
841
842
  page?: number;
842
- };
843
+ }
843
844
 
844
845
  export type ProducerSortPredicate<M extends PersistentModel> = (
845
846
  condition: SortPredicate<M>,
@@ -862,16 +863,16 @@ export enum SortDirection {
862
863
  export type SortPredicatesGroup<T extends PersistentModel> =
863
864
  SortPredicateObject<T>[];
864
865
 
865
- export type SortPredicateObject<T extends PersistentModel> = {
866
+ export interface SortPredicateObject<T extends PersistentModel> {
866
867
  field: keyof T;
867
868
  sortDirection: keyof typeof SortDirection;
868
- };
869
+ }
869
870
 
870
- //#endregion
871
+ // #endregion
871
872
 
872
- //#region System Components
873
+ // #region System Components
873
874
 
874
- export type SystemComponent = {
875
+ export interface SystemComponent {
875
876
  setUp(
876
877
  schema: InternalSchema,
877
878
  namespaceResolver: NamespaceResolver,
@@ -882,62 +883,61 @@ export type SystemComponent = {
882
883
  ) => PersistentModelConstructor<any>,
883
884
  appId?: string,
884
885
  ): Promise<void>;
885
- };
886
+ }
886
887
 
887
888
  export type NamespaceResolver = (
888
889
  modelConstructor: PersistentModelConstructor<any>,
889
890
  ) => string;
890
891
 
891
- export type ControlMessageType<T> = {
892
+ export interface ControlMessageType<T> {
892
893
  type: T;
893
894
  data?: any;
894
- };
895
+ }
895
896
 
896
- //#endregion
897
+ // #endregion
897
898
 
898
- //#region Relationship types
899
- export type RelationType = {
899
+ // #region Relationship types
900
+ export interface RelationType {
900
901
  fieldName: string;
901
902
  modelName: string;
902
903
  relationType: 'HAS_ONE' | 'HAS_MANY' | 'BELONGS_TO';
903
904
  targetName?: string;
904
905
  targetNames?: string[];
905
906
  associatedWith?: string | string[];
906
- };
907
+ }
907
908
 
908
- type IndexOptions = {
909
+ interface IndexOptions {
909
910
  unique?: boolean;
910
- };
911
+ }
911
912
 
912
- export type IndexesType = Array<[string, string[], IndexOptions?]>;
913
+ export type IndexesType = [string, string[], IndexOptions?][];
913
914
 
914
- export type RelationshipType = {
915
- [modelName: string]: {
915
+ export type RelationshipType = Record<
916
+ string,
917
+ {
916
918
  indexes: IndexesType;
917
919
  relationTypes: RelationType[];
918
- };
919
- };
920
+ }
921
+ >;
920
922
 
921
- //#endregion
923
+ // #endregion
922
924
 
923
- //#region Key type
924
- export type KeyType = {
925
+ // #region Key type
926
+ export interface KeyType {
925
927
  primaryKey?: string[];
926
928
  compositeKeys?: Set<string>[];
927
- };
929
+ }
928
930
 
929
- export type ModelKeys = {
930
- [modelName: string]: KeyType;
931
- };
931
+ export type ModelKeys = Record<string, KeyType>;
932
932
 
933
- //#endregion
933
+ // #endregion
934
934
 
935
- //#region DataStore config types
936
- export type DataStoreConfig = {
935
+ // #region DataStore config types
936
+ export interface DataStoreConfig {
937
937
  DataStore?: {
938
938
  authModeStrategyType?: AuthModeStrategyType;
939
939
  conflictHandler?: ConflictHandler; // default : retry until client wins up to x times
940
- errorHandler?: (error: SyncError<PersistentModel>) => void; // default : logger.warn
940
+ errorHandler?(error: SyncError<PersistentModel>): void; // default : logger.warn
941
941
  maxRecordsToSync?: number; // merge
942
942
  syncPageSize?: number;
943
943
  fullSyncInterval?: number;
@@ -947,18 +947,18 @@ export type DataStoreConfig = {
947
947
  };
948
948
  authModeStrategyType?: AuthModeStrategyType;
949
949
  conflictHandler?: ConflictHandler; // default : retry until client wins up to x times
950
- errorHandler?: (error: SyncError<PersistentModel>) => void; // default : logger.warn
950
+ errorHandler?(error: SyncError<PersistentModel>): void; // default : logger.warn
951
951
  maxRecordsToSync?: number; // merge
952
952
  syncPageSize?: number;
953
953
  fullSyncInterval?: number;
954
954
  syncExpressions?: SyncExpression[];
955
955
  authProviders?: AuthProviders;
956
956
  storageAdapter?: Adapter;
957
- };
957
+ }
958
958
 
959
- export type AuthProviders = {
960
- functionAuthProvider: () => { token: string } | Promise<{ token: string }>;
961
- };
959
+ export interface AuthProviders {
960
+ functionAuthProvider(): { token: string } | Promise<{ token: string }>;
961
+ }
962
962
 
963
963
  export enum AuthModeStrategyType {
964
964
  DEFAULT = 'DEFAULT',
@@ -971,11 +971,11 @@ export type AuthModeStrategyReturn =
971
971
  | undefined
972
972
  | null;
973
973
 
974
- export type AuthModeStrategyParams = {
974
+ export interface AuthModeStrategyParams {
975
975
  schema: InternalSchema;
976
976
  modelName: string;
977
977
  operation: ModelOperation;
978
- };
978
+ }
979
979
 
980
980
  export type AuthModeStrategy = (
981
981
  authModeStrategyParams: AuthModeStrategyParams,
@@ -997,7 +997,7 @@ export type ModelAuthModes = Record<
997
997
 
998
998
  export type SyncExpression = Promise<{
999
999
  modelConstructor: any;
1000
- conditionProducer: (c?: any) => any;
1000
+ conditionProducer(c?: any): any;
1001
1001
  }>;
1002
1002
 
1003
1003
  /*
@@ -1019,14 +1019,14 @@ type Option0 = [];
1019
1019
  type Option1<T extends PersistentModel> = [V5ModelPredicate<T> | undefined];
1020
1020
  type Option<T extends PersistentModel> = Option0 | Option1<T>;
1021
1021
 
1022
- type Lookup<T extends PersistentModel> = {
1022
+ interface Lookup<T extends PersistentModel> {
1023
1023
  0:
1024
1024
  | ModelPredicateExtender<T>
1025
1025
  | Promise<ModelPredicateExtender<T>>
1026
1026
  | typeof PredicateAll
1027
1027
  | Promise<typeof PredicateAll | symbol>;
1028
1028
  1: PredicateInternalsKey | undefined;
1029
- };
1029
+ }
1030
1030
 
1031
1031
  type ConditionProducer<T extends PersistentModel, A extends Option<T>> = (
1032
1032
  ...args: A
@@ -1048,15 +1048,15 @@ export async function syncExpression<
1048
1048
  };
1049
1049
  }
1050
1050
 
1051
- export type SyncConflict = {
1051
+ export interface SyncConflict {
1052
1052
  modelConstructor: PersistentModelConstructor<any>;
1053
1053
  localModel: PersistentModel;
1054
1054
  remoteModel: PersistentModel;
1055
1055
  operation: OpType;
1056
1056
  attempts: number;
1057
- };
1057
+ }
1058
1058
 
1059
- export type SyncError<T extends PersistentModel> = {
1059
+ export interface SyncError<T extends PersistentModel> {
1060
1060
  message: string;
1061
1061
  errorType: ErrorType;
1062
1062
  errorInfo?: string;
@@ -1067,7 +1067,7 @@ export type SyncError<T extends PersistentModel> = {
1067
1067
  process: ProcessName;
1068
1068
  operation: string;
1069
1069
  cause?: Error;
1070
- };
1070
+ }
1071
1071
 
1072
1072
  export type ErrorType =
1073
1073
  | 'ConfigError'
@@ -1093,21 +1093,21 @@ export type ConflictHandler = (
1093
1093
  | typeof DISCARD;
1094
1094
  export type ErrorHandler = (error: SyncError<PersistentModel>) => void;
1095
1095
 
1096
- export type DeferredCallbackResolverOptions = {
1097
- callback: () => void;
1096
+ export interface DeferredCallbackResolverOptions {
1097
+ callback(): void;
1098
1098
  maxInterval?: number;
1099
- errorHandler?: (error: string) => void;
1100
- };
1099
+ errorHandler?(error: string): void;
1100
+ }
1101
1101
 
1102
1102
  export enum LimitTimerRaceResolvedValues {
1103
1103
  LIMIT = 'LIMIT',
1104
1104
  TIMER = 'TIMER',
1105
1105
  }
1106
- //#endregion
1106
+ // #endregion
1107
1107
 
1108
- export type AmplifyContext = {
1108
+ export interface AmplifyContext {
1109
1109
  InternalAPI: typeof InternalAPI;
1110
- };
1110
+ }
1111
1111
 
1112
1112
  // #region V5 predicate types
1113
1113
 
@@ -1206,7 +1206,7 @@ export type ModelPredicateAggregateExtender<RT extends PersistentModel> = (
1206
1206
  ) => PredicateInternalsKey[];
1207
1207
 
1208
1208
  export type ValuePredicate<
1209
- RT extends PersistentModel,
1209
+ _RT extends PersistentModel,
1210
1210
  MT extends MatchableTypes,
1211
1211
  > = {
1212
1212
  [K in AllFieldOperators]: K extends 'between'
@@ -1240,7 +1240,7 @@ export type ModelPredicateNegation<RT extends PersistentModel> = (
1240
1240
  * that should not be exposed on public customer interfaces.
1241
1241
  */
1242
1242
  export class PredicateInternalsKey {
1243
- private __isPredicateInternalsKeySentinel: boolean = true;
1243
+ private __isPredicateInternalsKeySentinel = true;
1244
1244
  }
1245
1245
 
1246
1246
  // #endregion