@aws-amplify/datastore 3.5.2 → 3.6.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/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [3.6.0](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/datastore@3.5.2...@aws-amplify/datastore@3.6.0) (2021-11-12)
7
+
8
+
9
+ ### Features
10
+
11
+ * **@aws-amplify/datastore:** ObserveQuery performance and type enhancements ([#9141](https://github.com/aws-amplify/amplify-js/issues/9141)) ([755ce09](https://github.com/aws-amplify/amplify-js/commit/755ce09f5152c54d215f023089f30b2c98ace33a))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [3.5.2](https://github.com/aws-amplify/amplify-js/compare/@aws-amplify/datastore@3.5.1...@aws-amplify/datastore@3.5.2) (2021-11-09)
7
18
 
8
19
 
@@ -70458,7 +70458,7 @@ var getAmplifyUserAgent = function getAmplifyUserAgent() {
70458
70458
  __webpack_require__.r(__webpack_exports__);
70459
70459
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "version", function() { return version; });
70460
70460
  // generated by genversion
70461
- var version = '4.3.4';
70461
+ var version = '4.3.5';
70462
70462
 
70463
70463
  /***/ }),
70464
70464
 
@@ -82341,6 +82341,23 @@ function () {
82341
82341
  var deletedItemIds = [];
82342
82342
  var handle;
82343
82343
 
82344
+ var generateAndEmitSnapshot = function generateAndEmitSnapshot() {
82345
+ var snapshot = generateSnapshot();
82346
+ emitSnapshot(snapshot);
82347
+ }; // a mechanism to return data after X amount of seconds OR after the
82348
+ // "limit" (itemsChanged >= this.syncPageSize) has been reached, whichever comes first
82349
+
82350
+
82351
+ var limitTimerRace = new _util__WEBPACK_IMPORTED_MODULE_9__["DeferredCallbackResolver"]({
82352
+ callback: generateAndEmitSnapshot,
82353
+ errorHandler: observer.error,
82354
+ maxInterval: 2000
82355
+ });
82356
+ var sort = (options || {}).sort;
82357
+ var sortOptions = sort ? {
82358
+ sort: sort
82359
+ } : undefined;
82360
+
82344
82361
  (function () {
82345
82362
  return __awaiter(_this, void 0, void 0, function () {
82346
82363
  var err_1;
@@ -82354,7 +82371,7 @@ function () {
82354
82371
 
82355
82372
  return [4
82356
82373
  /*yield*/
82357
- , this.query(model, criteria, options)];
82374
+ , this.query(model, criteria, sortOptions)];
82358
82375
 
82359
82376
  case 1:
82360
82377
  // first, query and return any locally-available records
@@ -82380,10 +82397,15 @@ function () {
82380
82397
 
82381
82398
  var isSynced = _this.sync.getModelSyncedStatus(model);
82382
82399
 
82383
- if (itemsChanged.size - deletedItemIds.length >= _this.syncPageSize || isSynced) {
82384
- generateAndEmitSnapshot();
82385
- }
82386
- }); // will return any locally-available items in the first snapshot
82400
+ var limit = itemsChanged.size - deletedItemIds.length >= _this.syncPageSize;
82401
+
82402
+ if (limit || isSynced) {
82403
+ limitTimerRace.resolve();
82404
+ } // kicks off every subsequent race as results sync down
82405
+
82406
+
82407
+ limitTimerRace.start();
82408
+ }); // returns a set of initial/locally-available results
82387
82409
 
82388
82410
  generateAndEmitSnapshot();
82389
82411
  return [3
@@ -82438,11 +82460,6 @@ function () {
82438
82460
  deletedItemIds = [];
82439
82461
  };
82440
82462
 
82441
- var generateAndEmitSnapshot = function generateAndEmitSnapshot() {
82442
- var snapshot = generateSnapshot();
82443
- emitSnapshot(snapshot);
82444
- };
82445
-
82446
82463
  var sortItems = function sortItems(itemsToSort) {
82447
82464
  var modelDefinition = getModelDefinition(model);
82448
82465
 
@@ -82821,7 +82838,7 @@ _aws_amplify_core__WEBPACK_IMPORTED_MODULE_0__["Amplify"].register(instance);
82821
82838
  /*!**************************!*\
82822
82839
  !*** ./lib-esm/index.js ***!
82823
82840
  \**************************/
82824
- /*! exports provided: DataStore, DataStoreClass, initSchema, Predicates, ModelPredicateCreator, ModelSortPredicateCreator, utils, isSchemaModel, isAssociatedWith, isTargetNameAssociation, isModelAttributeAuth, isModelAttributeKey, isModelAttributePrimaryKey, isModelAttributeCompositeKey, ModelAttributeAuthAllow, ModelAttributeAuthProvider, GraphQLScalarType, isGraphQLScalarType, isModelFieldType, isNonModelFieldType, isEnumFieldType, OpType, isPredicateObj, isPredicateGroup, QueryOne, SortDirection, AuthModeStrategyType, ModelOperation, syncExpression, DISCARD */
82841
+ /*! exports provided: DataStore, DataStoreClass, initSchema, Predicates, ModelPredicateCreator, ModelSortPredicateCreator, utils, isSchemaModel, isAssociatedWith, isTargetNameAssociation, isModelAttributeAuth, isModelAttributeKey, isModelAttributePrimaryKey, isModelAttributeCompositeKey, ModelAttributeAuthAllow, ModelAttributeAuthProvider, GraphQLScalarType, isGraphQLScalarType, isModelFieldType, isNonModelFieldType, isEnumFieldType, OpType, isPredicateObj, isPredicateGroup, QueryOne, SortDirection, AuthModeStrategyType, ModelOperation, syncExpression, DISCARD, LimitTimerRaceResolvedValues */
82825
82842
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
82826
82843
 
82827
82844
  "use strict";
@@ -82889,6 +82906,8 @@ __webpack_require__.r(__webpack_exports__);
82889
82906
 
82890
82907
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DISCARD", function() { return _types__WEBPACK_IMPORTED_MODULE_3__["DISCARD"]; });
82891
82908
 
82909
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LimitTimerRaceResolvedValues", function() { return _types__WEBPACK_IMPORTED_MODULE_3__["LimitTimerRaceResolvedValues"]; });
82910
+
82892
82911
 
82893
82912
 
82894
82913
 
@@ -94599,7 +94618,7 @@ function getTokenForCustomAuth(authMode, amplifyConfig) {
94599
94618
  /*!**************************!*\
94600
94619
  !*** ./lib-esm/types.js ***!
94601
94620
  \**************************/
94602
- /*! exports provided: isSchemaModel, isAssociatedWith, isTargetNameAssociation, isModelAttributeAuth, isModelAttributeKey, isModelAttributePrimaryKey, isModelAttributeCompositeKey, ModelAttributeAuthAllow, ModelAttributeAuthProvider, GraphQLScalarType, isGraphQLScalarType, isModelFieldType, isNonModelFieldType, isEnumFieldType, OpType, isPredicateObj, isPredicateGroup, QueryOne, SortDirection, AuthModeStrategyType, ModelOperation, syncExpression, DISCARD */
94621
+ /*! exports provided: isSchemaModel, isAssociatedWith, isTargetNameAssociation, isModelAttributeAuth, isModelAttributeKey, isModelAttributePrimaryKey, isModelAttributeCompositeKey, ModelAttributeAuthAllow, ModelAttributeAuthProvider, GraphQLScalarType, isGraphQLScalarType, isModelFieldType, isNonModelFieldType, isEnumFieldType, OpType, isPredicateObj, isPredicateGroup, QueryOne, SortDirection, AuthModeStrategyType, ModelOperation, syncExpression, DISCARD, LimitTimerRaceResolvedValues */
94603
94622
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
94604
94623
 
94605
94624
  "use strict";
@@ -94627,6 +94646,7 @@ __webpack_require__.r(__webpack_exports__);
94627
94646
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ModelOperation", function() { return ModelOperation; });
94628
94647
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "syncExpression", function() { return syncExpression; });
94629
94648
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DISCARD", function() { return DISCARD; });
94649
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LimitTimerRaceResolvedValues", function() { return LimitTimerRaceResolvedValues; });
94630
94650
  /* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ "./lib-esm/util.js");
94631
94651
  var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
94632
94652
  function adopt(value) {
@@ -94977,7 +94997,13 @@ function syncExpression(modelConstructor, conditionProducer) {
94977
94997
  });
94978
94998
  });
94979
94999
  }
94980
- var DISCARD = Symbol('DISCARD'); //#endregion
95000
+ var DISCARD = Symbol('DISCARD');
95001
+ var LimitTimerRaceResolvedValues;
95002
+
95003
+ (function (LimitTimerRaceResolvedValues) {
95004
+ LimitTimerRaceResolvedValues["LIMIT"] = "LIMIT";
95005
+ LimitTimerRaceResolvedValues["TIMER"] = "TIMER";
95006
+ })(LimitTimerRaceResolvedValues || (LimitTimerRaceResolvedValues = {})); //#endregion
94981
95007
 
94982
95008
  /***/ }),
94983
95009
 
@@ -94985,7 +95011,7 @@ var DISCARD = Symbol('DISCARD'); //#endregion
94985
95011
  /*!*************************!*\
94986
95012
  !*** ./lib-esm/util.js ***!
94987
95013
  \*************************/
94988
- /*! exports provided: exhaustiveCheck, isNullOrUndefined, validatePredicate, validatePredicateField, isModelConstructor, registerNonModelClass, isNonModelConstructor, processCompositeKeys, establishRelationAndKeys, traverseModel, getIndex, getIndexFromAssociation, NAMESPACES, USER, SYNC, STORAGE, DATASTORE, isPrivateMode, monotonicUlidFactory, getNow, sortCompareFunction, valuesEqual, isAWSDate, isAWSTime, isAWSDateTime, isAWSTimestamp, isAWSEmail, isAWSJSON, isAWSURL, isAWSPhone, isAWSIPAddress */
95014
+ /*! exports provided: exhaustiveCheck, isNullOrUndefined, validatePredicate, validatePredicateField, isModelConstructor, registerNonModelClass, isNonModelConstructor, processCompositeKeys, establishRelationAndKeys, traverseModel, getIndex, getIndexFromAssociation, NAMESPACES, USER, SYNC, STORAGE, DATASTORE, isPrivateMode, monotonicUlidFactory, getNow, sortCompareFunction, valuesEqual, isAWSDate, isAWSTime, isAWSDateTime, isAWSTimestamp, isAWSEmail, isAWSJSON, isAWSURL, isAWSPhone, isAWSIPAddress, DeferredPromise, DeferredCallbackResolver */
94989
95015
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
94990
95016
 
94991
95017
  "use strict";
@@ -95021,6 +95047,8 @@ __webpack_require__.r(__webpack_exports__);
95021
95047
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isAWSURL", function() { return isAWSURL; });
95022
95048
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isAWSPhone", function() { return isAWSPhone; });
95023
95049
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isAWSIPAddress", function() { return isAWSIPAddress; });
95050
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeferredPromise", function() { return DeferredPromise; });
95051
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeferredCallbackResolver", function() { return DeferredCallbackResolver; });
95024
95052
  /* harmony import */ var buffer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! buffer */ "../../node_modules/buffer/index.js");
95025
95053
  /* harmony import */ var buffer__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(buffer__WEBPACK_IMPORTED_MODULE_0__);
95026
95054
  /* harmony import */ var ulid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ulid */ "../../node_modules/ulid/dist/index.esm.js");
@@ -95884,6 +95912,117 @@ var isAWSIPAddress = function isAWSIPAddress(val) {
95884
95912
  return !!/((^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$)|(^((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?$))$/.exec(val);
95885
95913
  };
95886
95914
 
95915
+ var DeferredPromise =
95916
+ /** @class */
95917
+ function () {
95918
+ function DeferredPromise() {
95919
+ var self = this;
95920
+ this.promise = new Promise(function (resolve, reject) {
95921
+ self.resolve = resolve;
95922
+ self.reject = reject;
95923
+ });
95924
+ }
95925
+
95926
+ return DeferredPromise;
95927
+ }();
95928
+
95929
+
95930
+
95931
+ var DeferredCallbackResolver =
95932
+ /** @class */
95933
+ function () {
95934
+ function DeferredCallbackResolver(options) {
95935
+ this.limitPromise = new DeferredPromise();
95936
+ this.raceInFlight = false;
95937
+
95938
+ this.callback = function () {};
95939
+
95940
+ this.defaultErrorHandler = function (msg) {
95941
+ if (msg === void 0) {
95942
+ msg = 'DeferredCallbackResolver error';
95943
+ }
95944
+
95945
+ throw new Error(msg);
95946
+ };
95947
+
95948
+ this.callback = options.callback;
95949
+ this.errorHandler = options.errorHandler || this.defaultErrorHandler;
95950
+ this.maxInterval = options.maxInterval || 2000;
95951
+ }
95952
+
95953
+ DeferredCallbackResolver.prototype.startTimer = function () {
95954
+ var _this = this;
95955
+
95956
+ this.timerPromise = new Promise(function (resolve, reject) {
95957
+ _this.timer = setTimeout(function () {
95958
+ resolve(_types__WEBPACK_IMPORTED_MODULE_3__["LimitTimerRaceResolvedValues"].TIMER);
95959
+ }, _this.maxInterval);
95960
+ });
95961
+ };
95962
+
95963
+ DeferredCallbackResolver.prototype.racePromises = function () {
95964
+ return __awaiter(this, void 0, void 0, function () {
95965
+ var winner, err_1;
95966
+ return __generator(this, function (_c) {
95967
+ switch (_c.label) {
95968
+ case 0:
95969
+ _c.trys.push([0, 2, 3, 4]);
95970
+
95971
+ this.raceInFlight = true;
95972
+ this.startTimer();
95973
+ return [4
95974
+ /*yield*/
95975
+ , Promise.race([this.timerPromise, this.limitPromise.promise])];
95976
+
95977
+ case 1:
95978
+ winner = _c.sent();
95979
+ this.callback();
95980
+ return [3
95981
+ /*break*/
95982
+ , 4];
95983
+
95984
+ case 2:
95985
+ err_1 = _c.sent();
95986
+ this.errorHandler(err_1);
95987
+ return [3
95988
+ /*break*/
95989
+ , 4];
95990
+
95991
+ case 3:
95992
+ // reset for the next race
95993
+ this.clear();
95994
+ this.raceInFlight = false;
95995
+ this.limitPromise = new DeferredPromise();
95996
+ return [2
95997
+ /*return*/
95998
+ , winner];
95999
+
96000
+ case 4:
96001
+ return [2
96002
+ /*return*/
96003
+ ];
96004
+ }
96005
+ });
96006
+ });
96007
+ };
96008
+
96009
+ DeferredCallbackResolver.prototype.start = function () {
96010
+ if (!this.raceInFlight) this.racePromises();
96011
+ };
96012
+
96013
+ DeferredCallbackResolver.prototype.clear = function () {
96014
+ clearTimeout(this.timer);
96015
+ };
96016
+
96017
+ DeferredCallbackResolver.prototype.resolve = function () {
96018
+ this.limitPromise.resolve(_types__WEBPACK_IMPORTED_MODULE_3__["LimitTimerRaceResolvedValues"].LIMIT);
96019
+ };
96020
+
96021
+ return DeferredCallbackResolver;
96022
+ }();
96023
+
96024
+
96025
+
95887
96026
  /***/ }),
95888
96027
 
95889
96028
  /***/ "./node_modules/immer/dist/immer.esm.js":