@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.
- package/dist/cjs/authModeStrategies/multiAuthStrategy.js +1 -1
- package/dist/cjs/authModeStrategies/multiAuthStrategy.js.map +1 -1
- package/dist/cjs/datastore/datastore.js +46 -41
- package/dist/cjs/datastore/datastore.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/predicates/index.js +1 -0
- package/dist/cjs/predicates/index.js.map +1 -1
- package/dist/cjs/predicates/next.js +13 -12
- package/dist/cjs/predicates/next.js.map +1 -1
- package/dist/cjs/predicates/sort.js +2 -2
- package/dist/cjs/predicates/sort.js.map +1 -1
- package/dist/cjs/storage/adapter/AsyncStorageAdapter.js +21 -18
- package/dist/cjs/storage/adapter/AsyncStorageAdapter.js.map +1 -1
- package/dist/cjs/storage/adapter/AsyncStorageDatabase.js +10 -9
- package/dist/cjs/storage/adapter/AsyncStorageDatabase.js.map +1 -1
- package/dist/cjs/storage/adapter/InMemoryStore.js +4 -1
- package/dist/cjs/storage/adapter/InMemoryStore.js.map +1 -1
- package/dist/cjs/storage/adapter/IndexedDBAdapter.js +21 -23
- package/dist/cjs/storage/adapter/IndexedDBAdapter.js.map +1 -1
- package/dist/cjs/storage/adapter/StorageAdapterBase.js +7 -7
- package/dist/cjs/storage/adapter/StorageAdapterBase.js.map +1 -1
- package/dist/cjs/storage/adapter/getDefaultAdapter/index.js +4 -1
- package/dist/cjs/storage/adapter/getDefaultAdapter/index.js.map +1 -1
- package/dist/cjs/storage/adapter/getDefaultAdapter/index.native.js +1 -0
- package/dist/cjs/storage/adapter/getDefaultAdapter/index.native.js.map +1 -1
- package/dist/cjs/storage/relationship.js +1 -0
- package/dist/cjs/storage/relationship.js.map +1 -1
- package/dist/cjs/storage/storage.js +14 -14
- package/dist/cjs/storage/storage.js.map +1 -1
- package/dist/cjs/sync/datastoreConnectivity.js +0 -3
- package/dist/cjs/sync/datastoreConnectivity.js.map +1 -1
- package/dist/cjs/sync/index.js +47 -43
- package/dist/cjs/sync/index.js.map +1 -1
- package/dist/cjs/sync/merger.js +1 -1
- package/dist/cjs/sync/merger.js.map +1 -1
- package/dist/cjs/sync/outbox.js +19 -17
- package/dist/cjs/sync/outbox.js.map +1 -1
- package/dist/cjs/sync/processors/errorMaps.js.map +1 -1
- package/dist/cjs/sync/processors/mutation.js +31 -28
- package/dist/cjs/sync/processors/mutation.js.map +1 -1
- package/dist/cjs/sync/processors/subscription.js +21 -12
- package/dist/cjs/sync/processors/subscription.js.map +1 -1
- package/dist/cjs/sync/processors/sync.js +25 -21
- package/dist/cjs/sync/processors/sync.js.map +1 -1
- package/dist/cjs/sync/utils.js +20 -21
- package/dist/cjs/sync/utils.js.map +1 -1
- package/dist/cjs/types.js +1 -0
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/util.js +46 -25
- package/dist/cjs/util.js.map +1 -1
- package/dist/esm/authModeStrategies/multiAuthStrategy.d.ts +1 -1
- package/dist/esm/authModeStrategies/multiAuthStrategy.mjs +1 -1
- package/dist/esm/authModeStrategies/multiAuthStrategy.mjs.map +1 -1
- package/dist/esm/datastore/datastore.d.ts +4 -6
- package/dist/esm/datastore/datastore.mjs +42 -34
- package/dist/esm/datastore/datastore.mjs.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/predicates/index.mjs +1 -0
- package/dist/esm/predicates/index.mjs.map +1 -1
- package/dist/esm/predicates/next.d.ts +7 -7
- package/dist/esm/predicates/next.mjs +13 -12
- package/dist/esm/predicates/next.mjs.map +1 -1
- package/dist/esm/predicates/sort.d.ts +1 -1
- package/dist/esm/predicates/sort.mjs +2 -2
- package/dist/esm/predicates/sort.mjs.map +1 -1
- package/dist/esm/storage/adapter/AsyncStorageAdapter.d.ts +1 -1
- package/dist/esm/storage/adapter/AsyncStorageAdapter.mjs +21 -18
- package/dist/esm/storage/adapter/AsyncStorageAdapter.mjs.map +1 -1
- package/dist/esm/storage/adapter/AsyncStorageDatabase.mjs +10 -9
- package/dist/esm/storage/adapter/AsyncStorageDatabase.mjs.map +1 -1
- package/dist/esm/storage/adapter/InMemoryStore.mjs +4 -1
- package/dist/esm/storage/adapter/InMemoryStore.mjs.map +1 -1
- package/dist/esm/storage/adapter/IndexedDBAdapter.mjs +21 -23
- package/dist/esm/storage/adapter/IndexedDBAdapter.mjs.map +1 -1
- package/dist/esm/storage/adapter/StorageAdapterBase.d.ts +2 -2
- package/dist/esm/storage/adapter/StorageAdapterBase.mjs +7 -7
- package/dist/esm/storage/adapter/StorageAdapterBase.mjs.map +1 -1
- package/dist/esm/storage/adapter/getDefaultAdapter/index.mjs +3 -1
- package/dist/esm/storage/adapter/getDefaultAdapter/index.mjs.map +1 -1
- package/dist/esm/storage/adapter/getDefaultAdapter/index.native.mjs +1 -0
- package/dist/esm/storage/adapter/getDefaultAdapter/index.native.mjs.map +1 -1
- package/dist/esm/storage/adapter/index.d.ts +1 -1
- package/dist/esm/storage/relationship.mjs +1 -0
- package/dist/esm/storage/relationship.mjs.map +1 -1
- package/dist/esm/storage/storage.d.ts +11 -11
- package/dist/esm/storage/storage.mjs +10 -10
- package/dist/esm/storage/storage.mjs.map +1 -1
- package/dist/esm/sync/datastoreConnectivity.d.ts +2 -2
- package/dist/esm/sync/datastoreConnectivity.mjs +0 -3
- package/dist/esm/sync/datastoreConnectivity.mjs.map +1 -1
- package/dist/esm/sync/index.d.ts +3 -3
- package/dist/esm/sync/index.mjs +47 -43
- package/dist/esm/sync/index.mjs.map +1 -1
- package/dist/esm/sync/merger.d.ts +1 -1
- package/dist/esm/sync/merger.mjs +1 -1
- package/dist/esm/sync/merger.mjs.map +1 -1
- package/dist/esm/sync/outbox.d.ts +4 -4
- package/dist/esm/sync/outbox.mjs +19 -17
- package/dist/esm/sync/outbox.mjs.map +1 -1
- package/dist/esm/sync/processors/errorMaps.mjs.map +1 -1
- package/dist/esm/sync/processors/mutation.d.ts +5 -5
- package/dist/esm/sync/processors/mutation.mjs +31 -28
- package/dist/esm/sync/processors/mutation.mjs.map +1 -1
- package/dist/esm/sync/processors/subscription.d.ts +1 -1
- package/dist/esm/sync/processors/subscription.mjs +21 -12
- package/dist/esm/sync/processors/subscription.mjs.map +1 -1
- package/dist/esm/sync/processors/sync.d.ts +3 -3
- package/dist/esm/sync/processors/sync.mjs +13 -9
- package/dist/esm/sync/processors/sync.mjs.map +1 -1
- package/dist/esm/sync/utils.d.ts +11 -13
- package/dist/esm/sync/utils.mjs +20 -21
- package/dist/esm/sync/utils.mjs.map +1 -1
- package/dist/esm/types.d.ts +121 -131
- package/dist/esm/types.mjs +3 -2
- package/dist/esm/types.mjs.map +1 -1
- package/dist/esm/util.d.ts +5 -5
- package/dist/esm/util.mjs +46 -25
- package/dist/esm/util.mjs.map +1 -1
- package/package.json +74 -73
- package/src/authModeStrategies/multiAuthStrategy.ts +8 -4
- package/src/datastore/datastore.ts +145 -123
- package/src/index.ts +10 -8
- package/src/predicates/index.ts +10 -2
- package/src/predicates/next.ts +39 -28
- package/src/predicates/sort.ts +23 -26
- package/src/storage/adapter/AsyncStorageAdapter.ts +43 -25
- package/src/storage/adapter/AsyncStorageDatabase.ts +18 -10
- package/src/storage/adapter/InMemoryStore.ts +5 -1
- package/src/storage/adapter/IndexedDBAdapter.ts +50 -37
- package/src/storage/adapter/StorageAdapterBase.ts +24 -18
- package/src/storage/adapter/getDefaultAdapter/index.native.ts +1 -0
- package/src/storage/adapter/getDefaultAdapter/index.ts +4 -1
- package/src/storage/adapter/index.ts +2 -2
- package/src/storage/relationship.ts +5 -1
- package/src/storage/storage.ts +38 -30
- package/src/sync/datastoreConnectivity.ts +4 -6
- package/src/sync/index.ts +228 -230
- package/src/sync/merger.ts +4 -3
- package/src/sync/outbox.ts +26 -24
- package/src/sync/processors/errorMaps.ts +5 -0
- package/src/sync/processors/mutation.ts +80 -72
- package/src/sync/processors/subscription.ts +69 -53
- package/src/sync/processors/sync.ts +49 -37
- package/src/sync/utils.ts +60 -41
- package/src/types.ts +165 -165
- package/src/util.ts +89 -53
|
@@ -10,10 +10,10 @@ import { ExclusiveStorage } from '../storage/storage.mjs';
|
|
|
10
10
|
import { ModelRelationship } from '../storage/relationship.mjs';
|
|
11
11
|
import { SyncEngine, ControlMessage } from '../sync/index.mjs';
|
|
12
12
|
import { isIdentifierObject, AuthModeStrategyType, isNonModelFieldType, isModelFieldType, isSchemaModelWithAttributes, isGraphQLScalarType, GraphQLScalarType } from '../types.mjs';
|
|
13
|
-
import { isNode } from './utils.mjs';
|
|
14
13
|
import { monotonicUlidFactory, USER, establishRelationAndKeys, isModelConstructor, extractPrimaryKeyFieldNames, registerNonModelClass, errorMessages, inMemoryPagination, extractPrimaryKeysAndValues, DeferredCallbackResolver, isIdManaged, isIdOptionallyManaged, mergePatches, STORAGE, SYNC, DATASTORE, sortCompareFunction, getTimestampFields, isNullOrUndefined } from '../util.mjs';
|
|
15
14
|
import { recursivePredicateFor, internals, predicateFor } from '../predicates/next.mjs';
|
|
16
15
|
import { getIdentifierValue } from '../sync/utils.mjs';
|
|
16
|
+
import { isNode } from './utils.mjs';
|
|
17
17
|
import { ModelSortPredicateCreator } from '../predicates/sort.mjs';
|
|
18
18
|
|
|
19
19
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
@@ -90,6 +90,8 @@ const buildSeedPredicate = (modelConstructor) => {
|
|
|
90
90
|
});
|
|
91
91
|
};
|
|
92
92
|
// exporting syncClasses for testing outbox.test.ts
|
|
93
|
+
// TODO(eslint): refactor not to export non-constant
|
|
94
|
+
// eslint-disable-next-line import/no-mutable-exports
|
|
93
95
|
let syncClasses;
|
|
94
96
|
let userClasses;
|
|
95
97
|
let dataStoreClasses;
|
|
@@ -224,7 +226,7 @@ const initSchema = (userSchema) => {
|
|
|
224
226
|
// compatibility with legacy/pre-PK codegen for lazy loading to inject
|
|
225
227
|
// index fields into the model definition.
|
|
226
228
|
// definition.cloudFields = { ...definition.fields };
|
|
227
|
-
const indexes = schema.namespaces[namespace].relationships[model.name]
|
|
229
|
+
const { indexes } = schema.namespaces[namespace].relationships[model.name];
|
|
228
230
|
const indexFields = new Set();
|
|
229
231
|
for (const index of indexes) {
|
|
230
232
|
for (const indexField of index[1]) {
|
|
@@ -305,7 +307,7 @@ const checkSchemaCodegenVersion = (codegenVersion) => {
|
|
|
305
307
|
let isValid = false;
|
|
306
308
|
try {
|
|
307
309
|
const versionParts = codegenVersion.split('.');
|
|
308
|
-
const [major, minor
|
|
310
|
+
const [major, minor] = versionParts;
|
|
309
311
|
isValid = Number(major) === majorVersion && Number(minor) >= minorVersion;
|
|
310
312
|
}
|
|
311
313
|
catch (err) {
|
|
@@ -337,9 +339,9 @@ const createTypeClasses = namespace => {
|
|
|
337
339
|
* metadata fields (_version, _deleted, etc.) exposed on the model itself.
|
|
338
340
|
*/
|
|
339
341
|
const instancesMetadata = new WeakSet();
|
|
340
|
-
function modelInstanceCreator(
|
|
342
|
+
function modelInstanceCreator(ModelConstructor, init) {
|
|
341
343
|
instancesMetadata.add(init);
|
|
342
|
-
return new
|
|
344
|
+
return new ModelConstructor(init);
|
|
343
345
|
}
|
|
344
346
|
const validateModelFields = (modelDefinition) => (k, v) => {
|
|
345
347
|
const fieldDefinition = modelDefinition.fields[k];
|
|
@@ -411,9 +413,7 @@ const validateModelFields = (modelDefinition) => (k, v) => {
|
|
|
411
413
|
}
|
|
412
414
|
}
|
|
413
415
|
}
|
|
414
|
-
else if (!isRequired && v === undefined)
|
|
415
|
-
return;
|
|
416
|
-
}
|
|
416
|
+
else if (!isRequired && v === undefined) ;
|
|
417
417
|
else if (typeof v !== jsType && v !== null) {
|
|
418
418
|
throw new Error(`Field ${name} should be of type ${jsType}, ${typeof v} received. ${v}`);
|
|
419
419
|
}
|
|
@@ -573,7 +573,9 @@ const createModelClass = (modelDefinition) => {
|
|
|
573
573
|
// are only create to provide a consistent view of the data for fields pre/post sync
|
|
574
574
|
// where possible. (not all fields can be normalized pre-sync, because they're generally
|
|
575
575
|
// "cloud managed" fields, like createdAt and updatedAt.)
|
|
576
|
-
const normalized = produce(baseInstance, (draft) =>
|
|
576
|
+
const normalized = produce(baseInstance, (draft) => {
|
|
577
|
+
normalize(modelDefinition, draft);
|
|
578
|
+
});
|
|
577
579
|
initPatches.set(normalized, patches);
|
|
578
580
|
return normalized;
|
|
579
581
|
}
|
|
@@ -651,7 +653,7 @@ const createModelClass = (modelDefinition) => {
|
|
|
651
653
|
pkField: extractPrimaryKeyFieldNames(modelDefinition),
|
|
652
654
|
});
|
|
653
655
|
for (const relationship of allModelRelationships) {
|
|
654
|
-
const field = relationship
|
|
656
|
+
const { field } = relationship;
|
|
655
657
|
Object.defineProperty(clazz.prototype, modelDefinition.fields[field].name, {
|
|
656
658
|
set(model) {
|
|
657
659
|
if (!(typeof model === 'object' || typeof model === 'undefined'))
|
|
@@ -661,7 +663,7 @@ const createModelClass = (modelDefinition) => {
|
|
|
661
663
|
// Avoid validation error when processing AppSync response with nested
|
|
662
664
|
// selection set. Nested entitites lack version field and can not be validated
|
|
663
665
|
// TODO: explore a more reliable method to solve this
|
|
664
|
-
if (
|
|
666
|
+
if (Object.prototype.hasOwnProperty.call(model, '_version')) {
|
|
665
667
|
const modelConstructor = Object.getPrototypeOf(model || {})
|
|
666
668
|
.constructor;
|
|
667
669
|
if (!isValidModelConstructor(modelConstructor)) {
|
|
@@ -699,7 +701,7 @@ const createModelClass = (modelDefinition) => {
|
|
|
699
701
|
// if the memos already has a result for this field, we'll use it.
|
|
700
702
|
// there is no "cache" invalidation of any kind; memos are permanent to
|
|
701
703
|
// keep an immutable perception of the instance.
|
|
702
|
-
if (!
|
|
704
|
+
if (!Object.prototype.hasOwnProperty.call(instanceMemos, field)) {
|
|
703
705
|
// before we populate the memo, we need to know where to look for relatives.
|
|
704
706
|
// today, this only supports DataStore. Models aren't managed elsewhere in Amplify.
|
|
705
707
|
if (getAttachment(this) === ModelAttachment.DataStore) {
|
|
@@ -708,9 +710,9 @@ const createModelClass = (modelDefinition) => {
|
|
|
708
710
|
// drop the promise into the memo's synchronously, eliminating the chance
|
|
709
711
|
// for a race.
|
|
710
712
|
const resultPromise = instance.query(relationship.remoteModelConstructor, base => base.and(q => {
|
|
711
|
-
return relationship.remoteJoinFields.map((
|
|
713
|
+
return relationship.remoteJoinFields.map((joinField, index) => {
|
|
712
714
|
// TODO: anything we can use instead of `any` here?
|
|
713
|
-
return q[
|
|
715
|
+
return q[joinField].eq(this[relationship.localJoinFields[index]]);
|
|
714
716
|
});
|
|
715
717
|
}));
|
|
716
718
|
// results in hand, how we return them to the caller depends on the relationship type.
|
|
@@ -912,10 +914,10 @@ function getModelConstructorByModelName(namespaceName, modelName) {
|
|
|
912
914
|
* @param version The expected schema version.
|
|
913
915
|
*/
|
|
914
916
|
async function checkSchemaVersion(storage, version) {
|
|
915
|
-
const
|
|
917
|
+
const SettingCtor = dataStoreClasses.Setting;
|
|
916
918
|
const modelDefinition = schema.namespaces[DATASTORE].models.Setting;
|
|
917
919
|
await storage.runExclusive(async (s) => {
|
|
918
|
-
const [schemaVersionSetting] = await s.query(
|
|
920
|
+
const [schemaVersionSetting] = await s.query(SettingCtor, ModelPredicateCreator.createFromAST(modelDefinition, {
|
|
919
921
|
and: { key: { eq: SETTING_SCHEMA_VERSION } },
|
|
920
922
|
}), { page: 0, limit: 1 });
|
|
921
923
|
if (schemaVersionSetting !== undefined &&
|
|
@@ -926,7 +928,7 @@ async function checkSchemaVersion(storage, version) {
|
|
|
926
928
|
}
|
|
927
929
|
}
|
|
928
930
|
else {
|
|
929
|
-
await s.save(modelInstanceCreator(
|
|
931
|
+
await s.save(modelInstanceCreator(SettingCtor, {
|
|
930
932
|
key: SETTING_SCHEMA_VERSION,
|
|
931
933
|
value: JSON.stringify(version),
|
|
932
934
|
}));
|
|
@@ -1049,9 +1051,9 @@ class DataStore {
|
|
|
1049
1051
|
this.state = DataStoreState.Starting;
|
|
1050
1052
|
if (this.initialized === undefined) {
|
|
1051
1053
|
logger.debug('Starting DataStore');
|
|
1052
|
-
this.initialized = new Promise((
|
|
1053
|
-
this.initResolve =
|
|
1054
|
-
this.initReject =
|
|
1054
|
+
this.initialized = new Promise((resolve, reject) => {
|
|
1055
|
+
this.initResolve = resolve;
|
|
1056
|
+
this.initReject = reject;
|
|
1055
1057
|
});
|
|
1056
1058
|
}
|
|
1057
1059
|
else {
|
|
@@ -1113,7 +1115,7 @@ class DataStore {
|
|
|
1113
1115
|
if (!this.storage) {
|
|
1114
1116
|
throw new Error('No storage to query');
|
|
1115
1117
|
}
|
|
1116
|
-
|
|
1118
|
+
// #region Input validation
|
|
1117
1119
|
if (!isValidModelConstructor(modelConstructor)) {
|
|
1118
1120
|
const msg = 'Constructor is not for a valid model';
|
|
1119
1121
|
logger.error(msg, { modelConstructor });
|
|
@@ -1160,7 +1162,7 @@ class DataStore {
|
|
|
1160
1162
|
result = inMemoryPagination(result, pagination);
|
|
1161
1163
|
}
|
|
1162
1164
|
}
|
|
1163
|
-
|
|
1165
|
+
// #endregion
|
|
1164
1166
|
const returnOne = isQueryOne(identifierOrCriteria) ||
|
|
1165
1167
|
isIdentifierObject(identifierOrCriteria, modelDefinition);
|
|
1166
1168
|
return attached(returnOne ? result[0] : result, ModelAttachment.DataStore);
|
|
@@ -1187,7 +1189,9 @@ class DataStore {
|
|
|
1187
1189
|
// are ALWAYS present, whereas update patches are only present if copyOf
|
|
1188
1190
|
// was used to create the instance.
|
|
1189
1191
|
const patchesTuple = updatedPatchesTuple || initPatchesTuple;
|
|
1190
|
-
const modelConstructor = model
|
|
1192
|
+
const modelConstructor = model
|
|
1193
|
+
? model.constructor
|
|
1194
|
+
: undefined;
|
|
1191
1195
|
if (!isValidModelConstructor(modelConstructor)) {
|
|
1192
1196
|
const msg = 'Object is not an instance of a valid model';
|
|
1193
1197
|
logger.error(msg, { model });
|
|
@@ -1350,15 +1354,15 @@ class DataStore {
|
|
|
1350
1354
|
: undefined;
|
|
1351
1355
|
if (modelOrConstructor && modelConstructor === undefined) {
|
|
1352
1356
|
const model = modelOrConstructor;
|
|
1353
|
-
const
|
|
1354
|
-
if (isValidModelConstructor(
|
|
1357
|
+
const resolvedModelConstructor = model && Object.getPrototypeOf(model).constructor;
|
|
1358
|
+
if (isValidModelConstructor(resolvedModelConstructor)) {
|
|
1355
1359
|
if (identifierOrCriteria) {
|
|
1356
1360
|
logger.warn('idOrCriteria is ignored when using a model instance', {
|
|
1357
1361
|
model,
|
|
1358
1362
|
identifierOrCriteria,
|
|
1359
1363
|
});
|
|
1360
1364
|
}
|
|
1361
|
-
return this.observe(
|
|
1365
|
+
return this.observe(resolvedModelConstructor, model.id);
|
|
1362
1366
|
}
|
|
1363
1367
|
else {
|
|
1364
1368
|
const msg = 'The model is not an instance of a PersistentModelConstructor';
|
|
@@ -1424,8 +1428,12 @@ class DataStore {
|
|
|
1424
1428
|
observer.next(message);
|
|
1425
1429
|
}
|
|
1426
1430
|
}, 'datastore observe message handler'),
|
|
1427
|
-
error: err =>
|
|
1428
|
-
|
|
1431
|
+
error: err => {
|
|
1432
|
+
observer.error(err);
|
|
1433
|
+
},
|
|
1434
|
+
complete: () => {
|
|
1435
|
+
observer.complete();
|
|
1436
|
+
},
|
|
1429
1437
|
});
|
|
1430
1438
|
}, 'datastore observe observable initialization')
|
|
1431
1439
|
.catch(this.handleAddProcError('DataStore.observe()'))
|
|
@@ -1496,9 +1504,9 @@ class DataStore {
|
|
|
1496
1504
|
// We need to post-filter results instead of passing criteria through
|
|
1497
1505
|
// to have visibility into items that move from in-set to out-of-set.
|
|
1498
1506
|
// We need to explicitly remove those items from the existing snapshot.
|
|
1499
|
-
handle = this.observe(model).subscribe(({ element, model, opType }) => this.runningProcesses.isOpen &&
|
|
1507
|
+
handle = this.observe(model).subscribe(({ element, model: observedModel, opType }) => this.runningProcesses.isOpen &&
|
|
1500
1508
|
this.runningProcesses.add(async () => {
|
|
1501
|
-
const itemModelDefinition = getModelDefinition(
|
|
1509
|
+
const itemModelDefinition = getModelDefinition(observedModel);
|
|
1502
1510
|
const idOrPk = getIdentifierValue(itemModelDefinition, element);
|
|
1503
1511
|
if (executivePredicate &&
|
|
1504
1512
|
!(await executivePredicate.matches(element))) {
|
|
@@ -1525,7 +1533,7 @@ class DataStore {
|
|
|
1525
1533
|
else {
|
|
1526
1534
|
itemsChanged.set(idOrPk, element);
|
|
1527
1535
|
}
|
|
1528
|
-
const isSynced = this.sync?.getModelSyncedStatus(
|
|
1536
|
+
const isSynced = this.sync?.getModelSyncedStatus(observedModel) ?? false;
|
|
1529
1537
|
const limit = itemsChanged.size - deletedItemIds.length >=
|
|
1530
1538
|
this.syncPageSize;
|
|
1531
1539
|
if (limit || isSynced) {
|
|
@@ -1599,8 +1607,8 @@ class DataStore {
|
|
|
1599
1607
|
* @param itemsToSort A array of model type.
|
|
1600
1608
|
*/
|
|
1601
1609
|
const sortItems = (itemsToSort) => {
|
|
1602
|
-
const
|
|
1603
|
-
const pagination = this.processPagination(
|
|
1610
|
+
const sortingModelDefinition = getModelDefinition(model);
|
|
1611
|
+
const pagination = this.processPagination(sortingModelDefinition, options);
|
|
1604
1612
|
const sortPredicates = ModelSortPredicateCreator.getPredicates(pagination.sort);
|
|
1605
1613
|
if (sortPredicates.length) {
|
|
1606
1614
|
const compareFn = sortCompareFunction(sortPredicates);
|
|
@@ -1633,7 +1641,7 @@ class DataStore {
|
|
|
1633
1641
|
};
|
|
1634
1642
|
this.configure = (config = {}) => {
|
|
1635
1643
|
this.amplifyContext.InternalAPI = this.InternalAPI;
|
|
1636
|
-
const { DataStore: configDataStore, authModeStrategyType: configAuthModeStrategyType,
|
|
1644
|
+
const { DataStore: configDataStore, authModeStrategyType: configAuthModeStrategyType, maxRecordsToSync: configMaxRecordsToSync, syncPageSize: configSyncPageSize, fullSyncInterval: configFullSyncInterval, syncExpressions: configSyncExpressions, authProviders: configAuthProviders, storageAdapter: configStorageAdapter, ...configFromAmplify } = config;
|
|
1637
1645
|
const currentAppSyncConfig = Amplify.getConfig().API?.GraphQL;
|
|
1638
1646
|
const appSyncConfig = {
|
|
1639
1647
|
aws_appsync_graphqlEndpoint: currentAppSyncConfig?.endpoint,
|