@aws-amplify/datastore 5.0.1-unstable.cfbde4c.0 → 5.0.1

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 (209) hide show
  1. package/{lib → dist/cjs}/authModeStrategies/defaultAuthStrategy.js +3 -1
  2. package/dist/cjs/authModeStrategies/defaultAuthStrategy.js.map +1 -0
  3. package/{lib → dist/cjs}/authModeStrategies/index.js +3 -1
  4. package/dist/cjs/authModeStrategies/index.js.map +1 -0
  5. package/{lib → dist/cjs}/authModeStrategies/multiAuthStrategy.js +3 -3
  6. package/dist/cjs/authModeStrategies/multiAuthStrategy.js.map +1 -0
  7. package/{lib → dist/cjs}/datastore/datastore.js +5 -3
  8. package/dist/cjs/datastore/datastore.js.map +1 -0
  9. package/{lib → dist/cjs}/index.js +5 -16
  10. package/dist/cjs/index.js.map +1 -0
  11. package/{lib → dist/cjs}/predicates/index.js +3 -1
  12. package/dist/cjs/predicates/index.js.map +1 -0
  13. package/{lib → dist/cjs}/predicates/next.js +3 -1
  14. package/dist/cjs/predicates/next.js.map +1 -0
  15. package/{lib → dist/cjs}/predicates/sort.js +4 -3
  16. package/dist/cjs/predicates/sort.js.map +1 -0
  17. package/{lib → dist/cjs}/storage/adapter/AsyncStorageAdapter.js +5 -5
  18. package/dist/cjs/storage/adapter/AsyncStorageAdapter.js.map +1 -0
  19. package/{lib → dist/cjs}/storage/adapter/AsyncStorageDatabase.js +3 -1
  20. package/dist/cjs/storage/adapter/AsyncStorageDatabase.js.map +1 -0
  21. package/{lib → dist/cjs}/storage/adapter/InMemoryStore.js +3 -1
  22. package/dist/cjs/storage/adapter/InMemoryStore.js.map +1 -0
  23. package/{lib → dist/cjs}/storage/adapter/InMemoryStore.native.js +5 -5
  24. package/dist/cjs/storage/adapter/InMemoryStore.native.js.map +1 -0
  25. package/{lib → dist/cjs}/storage/adapter/IndexedDBAdapter.js +5 -25
  26. package/dist/cjs/storage/adapter/IndexedDBAdapter.js.map +1 -0
  27. package/{lib → dist/cjs}/storage/adapter/StorageAdapterBase.js +3 -1
  28. package/dist/cjs/storage/adapter/StorageAdapterBase.js.map +1 -0
  29. package/{lib → dist/cjs}/storage/adapter/getDefaultAdapter/index.js +6 -6
  30. package/dist/cjs/storage/adapter/getDefaultAdapter/index.js.map +1 -0
  31. package/dist/cjs/storage/adapter/getDefaultAdapter/index.native.js +10 -0
  32. package/dist/cjs/storage/adapter/getDefaultAdapter/index.native.js.map +1 -0
  33. package/{lib → dist/cjs}/storage/adapter/index.js +3 -1
  34. package/dist/cjs/storage/adapter/index.js.map +1 -0
  35. package/{lib → dist/cjs}/storage/relationship.js +3 -1
  36. package/dist/cjs/storage/relationship.js.map +1 -0
  37. package/{lib → dist/cjs}/storage/storage.js +5 -5
  38. package/dist/cjs/storage/storage.js.map +1 -0
  39. package/{lib → dist/cjs}/sync/datastoreConnectivity.js +4 -2
  40. package/dist/cjs/sync/datastoreConnectivity.js.map +1 -0
  41. package/{lib → dist/cjs}/sync/datastoreReachability/index.js +3 -1
  42. package/dist/cjs/sync/datastoreReachability/index.js.map +1 -0
  43. package/{lib → dist/cjs}/sync/datastoreReachability/index.native.js +3 -1
  44. package/dist/cjs/sync/datastoreReachability/index.native.js.map +1 -0
  45. package/{lib → dist/cjs}/sync/index.js +6 -7
  46. package/dist/cjs/sync/index.js.map +1 -0
  47. package/{lib → dist/cjs}/sync/merger.js +3 -1
  48. package/dist/cjs/sync/merger.js.map +1 -0
  49. package/{lib → dist/cjs}/sync/outbox.js +3 -1
  50. package/dist/cjs/sync/outbox.js.map +1 -0
  51. package/{lib → dist/cjs}/sync/processors/errorMaps.js +4 -4
  52. package/dist/cjs/sync/processors/errorMaps.js.map +1 -0
  53. package/{lib → dist/cjs}/sync/processors/mutation.js +3 -1
  54. package/dist/cjs/sync/processors/mutation.js.map +1 -0
  55. package/{lib → dist/cjs}/sync/processors/subscription.js +4 -4
  56. package/dist/cjs/sync/processors/subscription.js.map +1 -0
  57. package/{lib → dist/cjs}/sync/processors/sync.js +3 -1
  58. package/dist/cjs/sync/processors/sync.js.map +1 -0
  59. package/{lib → dist/cjs}/sync/utils.js +3 -1
  60. package/dist/cjs/sync/utils.js.map +1 -0
  61. package/{lib → dist/cjs}/types.js +12 -21
  62. package/dist/cjs/types.js.map +1 -0
  63. package/{lib → dist/cjs}/util.js +3 -1
  64. package/dist/cjs/util.js.map +1 -0
  65. package/{lib-esm/authModeStrategies/defaultAuthStrategy.js → dist/esm/authModeStrategies/defaultAuthStrategy.mjs} +4 -1
  66. package/dist/esm/authModeStrategies/defaultAuthStrategy.mjs.map +1 -0
  67. package/dist/esm/authModeStrategies/index.mjs +3 -0
  68. package/dist/esm/authModeStrategies/index.mjs.map +1 -0
  69. package/{lib-esm/authModeStrategies/multiAuthStrategy.js → dist/esm/authModeStrategies/multiAuthStrategy.mjs} +7 -5
  70. package/dist/esm/authModeStrategies/multiAuthStrategy.mjs.map +1 -0
  71. package/{lib-esm/datastore/datastore.js → dist/esm/datastore/datastore.mjs} +30 -26
  72. package/dist/esm/datastore/datastore.mjs.map +1 -0
  73. package/dist/esm/index.mjs +19 -0
  74. package/dist/esm/index.mjs.map +1 -0
  75. package/{lib-esm/predicates/index.js → dist/esm/predicates/index.mjs} +10 -7
  76. package/dist/esm/predicates/index.mjs.map +1 -0
  77. package/{lib-esm/predicates/next.js → dist/esm/predicates/next.mjs} +15 -11
  78. package/dist/esm/predicates/next.mjs.map +1 -0
  79. package/{lib-esm/predicates/sort.js → dist/esm/predicates/sort.mjs} +3 -2
  80. package/dist/esm/predicates/sort.mjs.map +1 -0
  81. package/{lib-esm/storage/adapter/AsyncStorageAdapter.js → dist/esm/storage/adapter/AsyncStorageAdapter.mjs} +10 -6
  82. package/dist/esm/storage/adapter/AsyncStorageAdapter.mjs.map +1 -0
  83. package/{lib-esm/storage/adapter/AsyncStorageDatabase.js → dist/esm/storage/adapter/AsyncStorageDatabase.mjs} +7 -4
  84. package/dist/esm/storage/adapter/AsyncStorageDatabase.mjs.map +1 -0
  85. package/{lib-esm/storage/adapter/InMemoryStore.js → dist/esm/storage/adapter/InMemoryStore.mjs} +5 -2
  86. package/dist/esm/storage/adapter/InMemoryStore.mjs.map +1 -0
  87. package/{lib-esm/storage/adapter/InMemoryStore.native.js → dist/esm/storage/adapter/InMemoryStore.native.mjs} +6 -2
  88. package/dist/esm/storage/adapter/InMemoryStore.native.mjs.map +1 -0
  89. package/{lib-esm/storage/adapter/IndexedDBAdapter.js → dist/esm/storage/adapter/IndexedDBAdapter.mjs} +10 -6
  90. package/dist/esm/storage/adapter/IndexedDBAdapter.mjs.map +1 -0
  91. package/{lib-esm/storage/adapter/StorageAdapterBase.js → dist/esm/storage/adapter/StorageAdapterBase.mjs} +9 -5
  92. package/dist/esm/storage/adapter/StorageAdapterBase.mjs.map +1 -0
  93. package/dist/esm/storage/adapter/getDefaultAdapter/index.mjs +13 -0
  94. package/dist/esm/storage/adapter/getDefaultAdapter/index.mjs.map +1 -0
  95. package/dist/esm/storage/adapter/getDefaultAdapter/index.native.mjs +8 -0
  96. package/dist/esm/storage/adapter/getDefaultAdapter/index.native.mjs.map +1 -0
  97. package/dist/esm/storage/adapter/index.mjs +2 -0
  98. package/dist/esm/storage/adapter/index.mjs.map +1 -0
  99. package/{lib-esm/storage/relationship.js → dist/esm/storage/relationship.mjs} +6 -2
  100. package/dist/esm/storage/relationship.mjs.map +1 -0
  101. package/{lib-esm/storage/storage.js → dist/esm/storage/storage.mjs} +11 -8
  102. package/dist/esm/storage/storage.mjs.map +1 -0
  103. package/{lib-esm/sync/datastoreConnectivity.js → dist/esm/sync/datastoreConnectivity.mjs} +9 -5
  104. package/dist/esm/sync/datastoreConnectivity.mjs.map +1 -0
  105. package/dist/esm/sync/datastoreReachability/index.d.ts +1 -0
  106. package/{lib-esm/sync/datastoreReachability/index.js → dist/esm/sync/datastoreReachability/index.mjs} +6 -2
  107. package/dist/esm/sync/datastoreReachability/index.mjs.map +1 -0
  108. package/dist/esm/sync/datastoreReachability/index.native.d.ts +1 -0
  109. package/{lib-esm/sync/datastoreReachability/index.native.js → dist/esm/sync/datastoreReachability/index.native.mjs} +7 -3
  110. package/dist/esm/sync/datastoreReachability/index.native.mjs.map +1 -0
  111. package/{lib-esm/sync/index.js → dist/esm/sync/index.mjs} +24 -21
  112. package/dist/esm/sync/index.mjs.map +1 -0
  113. package/{lib-esm/sync/merger.js → dist/esm/sync/merger.mjs} +5 -2
  114. package/dist/esm/sync/merger.mjs.map +1 -0
  115. package/{lib-esm/sync/outbox.js → dist/esm/sync/outbox.mjs} +7 -4
  116. package/dist/esm/sync/outbox.mjs.map +1 -0
  117. package/{lib-esm/sync/processors/errorMaps.js → dist/esm/sync/processors/errorMaps.mjs} +13 -11
  118. package/dist/esm/sync/processors/errorMaps.mjs.map +1 -0
  119. package/{lib → dist/esm}/sync/processors/mutation.d.ts +1 -1
  120. package/{lib-esm/sync/processors/mutation.js → dist/esm/sync/processors/mutation.mjs} +10 -7
  121. package/dist/esm/sync/processors/mutation.mjs.map +1 -0
  122. package/{lib-esm/sync/processors/subscription.js → dist/esm/sync/processors/subscription.mjs} +18 -17
  123. package/dist/esm/sync/processors/subscription.mjs.map +1 -0
  124. package/{lib-esm/sync/processors/sync.js → dist/esm/sync/processors/sync.mjs} +8 -5
  125. package/dist/esm/sync/processors/sync.mjs.map +1 -0
  126. package/{lib-esm/sync/utils.js → dist/esm/sync/utils.mjs} +30 -26
  127. package/dist/esm/sync/utils.mjs.map +1 -0
  128. package/{lib-esm/types.js → dist/esm/types.mjs} +34 -30
  129. package/dist/esm/types.mjs.map +1 -0
  130. package/{lib-esm/util.js → dist/esm/util.mjs} +61 -57
  131. package/dist/esm/util.mjs.map +1 -0
  132. package/package.json +133 -137
  133. package/lib/authModeStrategies/defaultAuthStrategy.d.ts +0 -2
  134. package/lib/authModeStrategies/index.d.ts +0 -2
  135. package/lib/authModeStrategies/multiAuthStrategy.d.ts +0 -13
  136. package/lib/datastore/datastore.d.ts +0 -231
  137. package/lib/index.d.ts +0 -16
  138. package/lib/predicates/index.d.ts +0 -100
  139. package/lib/predicates/next.d.ts +0 -317
  140. package/lib/predicates/sort.d.ts +0 -8
  141. package/lib/ssr/index.d.ts +0 -3
  142. package/lib/ssr/index.js +0 -18
  143. package/lib/storage/adapter/AsyncStorageAdapter.d.ts +0 -40
  144. package/lib/storage/adapter/AsyncStorageDatabase.d.ts +0 -39
  145. package/lib/storage/adapter/InMemoryStore.d.ts +0 -11
  146. package/lib/storage/adapter/InMemoryStore.native.d.ts +0 -1
  147. package/lib/storage/adapter/IndexedDBAdapter.d.ts +0 -70
  148. package/lib/storage/adapter/StorageAdapterBase.d.ts +0 -134
  149. package/lib/storage/adapter/getDefaultAdapter/index.d.ts +0 -3
  150. package/lib/storage/adapter/getDefaultAdapter/index.native.d.ts +0 -3
  151. package/lib/storage/adapter/getDefaultAdapter/index.native.js +0 -10
  152. package/lib/storage/adapter/index.d.ts +0 -9
  153. package/lib/storage/relationship.d.ts +0 -149
  154. package/lib/storage/storage.d.ts +0 -50
  155. package/lib/sync/datastoreConnectivity.d.ts +0 -16
  156. package/lib/sync/datastoreReachability/index.d.ts +0 -1
  157. package/lib/sync/datastoreReachability/index.native.d.ts +0 -1
  158. package/lib/sync/index.d.ts +0 -103
  159. package/lib/sync/merger.d.ts +0 -17
  160. package/lib/sync/outbox.d.ts +0 -27
  161. package/lib/sync/processors/errorMaps.d.ts +0 -17
  162. package/lib/sync/processors/subscription.d.ts +0 -42
  163. package/lib/sync/processors/sync.d.ts +0 -28
  164. package/lib/sync/utils.d.ts +0 -107
  165. package/lib/tsconfig.tsbuildinfo +0 -1
  166. package/lib/types.d.ts +0 -641
  167. package/lib/util.d.ts +0 -196
  168. package/lib-esm/authModeStrategies/index.js +0 -4
  169. package/lib-esm/index.js +0 -14
  170. package/lib-esm/ssr/index.d.ts +0 -3
  171. package/lib-esm/ssr/index.js +0 -13
  172. package/lib-esm/storage/adapter/getDefaultAdapter/index.js +0 -10
  173. package/lib-esm/storage/adapter/getDefaultAdapter/index.native.js +0 -5
  174. package/lib-esm/storage/adapter/index.js +0 -1
  175. package/lib-esm/sync/datastoreReachability/index.d.ts +0 -1
  176. package/lib-esm/sync/datastoreReachability/index.native.d.ts +0 -1
  177. package/lib-esm/sync/processors/mutation.d.ts +0 -67
  178. package/lib-esm/tsconfig.tsbuildinfo +0 -1
  179. package/src/ssr/index.ts +0 -27
  180. package/ssr/package.json +0 -8
  181. /package/{lib-esm → dist/esm}/authModeStrategies/defaultAuthStrategy.d.ts +0 -0
  182. /package/{lib-esm → dist/esm}/authModeStrategies/index.d.ts +0 -0
  183. /package/{lib-esm → dist/esm}/authModeStrategies/multiAuthStrategy.d.ts +0 -0
  184. /package/{lib-esm → dist/esm}/datastore/datastore.d.ts +0 -0
  185. /package/{lib-esm → dist/esm}/index.d.ts +0 -0
  186. /package/{lib-esm → dist/esm}/predicates/index.d.ts +0 -0
  187. /package/{lib-esm → dist/esm}/predicates/next.d.ts +0 -0
  188. /package/{lib-esm → dist/esm}/predicates/sort.d.ts +0 -0
  189. /package/{lib-esm → dist/esm}/storage/adapter/AsyncStorageAdapter.d.ts +0 -0
  190. /package/{lib-esm → dist/esm}/storage/adapter/AsyncStorageDatabase.d.ts +0 -0
  191. /package/{lib-esm → dist/esm}/storage/adapter/InMemoryStore.d.ts +0 -0
  192. /package/{lib-esm → dist/esm}/storage/adapter/InMemoryStore.native.d.ts +0 -0
  193. /package/{lib-esm → dist/esm}/storage/adapter/IndexedDBAdapter.d.ts +0 -0
  194. /package/{lib-esm → dist/esm}/storage/adapter/StorageAdapterBase.d.ts +0 -0
  195. /package/{lib-esm → dist/esm}/storage/adapter/getDefaultAdapter/index.d.ts +0 -0
  196. /package/{lib-esm → dist/esm}/storage/adapter/getDefaultAdapter/index.native.d.ts +0 -0
  197. /package/{lib-esm → dist/esm}/storage/adapter/index.d.ts +0 -0
  198. /package/{lib-esm → dist/esm}/storage/relationship.d.ts +0 -0
  199. /package/{lib-esm → dist/esm}/storage/storage.d.ts +0 -0
  200. /package/{lib-esm → dist/esm}/sync/datastoreConnectivity.d.ts +0 -0
  201. /package/{lib-esm → dist/esm}/sync/index.d.ts +0 -0
  202. /package/{lib-esm → dist/esm}/sync/merger.d.ts +0 -0
  203. /package/{lib-esm → dist/esm}/sync/outbox.d.ts +0 -0
  204. /package/{lib-esm → dist/esm}/sync/processors/errorMaps.d.ts +0 -0
  205. /package/{lib-esm → dist/esm}/sync/processors/subscription.d.ts +0 -0
  206. /package/{lib-esm → dist/esm}/sync/processors/sync.d.ts +0 -0
  207. /package/{lib-esm → dist/esm}/sync/utils.d.ts +0 -0
  208. /package/{lib-esm → dist/esm}/types.d.ts +0 -0
  209. /package/{lib-esm → dist/esm}/util.d.ts +0 -0
@@ -1,4 +1,5 @@
1
- "use strict";
1
+ 'use strict';
2
+
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.getIndexFromAssociation = exports.getIndex = exports.establishRelationAndKeys = exports.isIdOptionallyManaged = exports.isIdManaged = exports.extractPrimaryKeysAndValues = exports.extractPrimaryKeyValues = exports.extractPrimaryKeyFieldNames = exports.extractKeyIfExists = exports.processCompositeKeys = exports.getStorename = exports.mergePatches = exports.DeferredCallbackResolver = exports.DeferredPromise = exports.isAWSIPAddress = exports.isAWSPhone = exports.isAWSURL = exports.isAWSJSON = exports.isAWSEmail = exports.isAWSTimestamp = exports.isAWSDateTime = exports.isAWSTime = exports.isAWSDate = exports.asyncFilter = exports.asyncEvery = exports.asyncSome = exports.inMemoryPagination = exports.valuesEqual = exports.sortCompareFunction = exports.getNow = exports.monotonicUlidFactory = exports.isSafariCompatabilityMode = exports.isPrivateMode = exports.traverseModel = exports.isNonModelConstructor = exports.registerNonModelClass = exports.isModelConstructor = exports.validatePredicateField = exports.validatePredicate = exports.isNullOrUndefined = exports.exhaustiveCheck = exports.DATASTORE = exports.STORAGE = exports.SYNC = exports.USER = exports.NAMESPACES = exports.errorMessages = exports.IDENTIFIER_KEY_SEPARATOR = exports.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR = exports.ID = void 0;
4
5
  exports.getTimestampFields = exports.getIndexKeys = exports.keysEqual = exports.indexNameFromKeys = exports.extractTargetNamesFromSrc = void 0;
@@ -891,3 +892,4 @@ const getTimestampFields = (definition) => {
891
892
  };
892
893
  };
893
894
  exports.getTimestampFields = getTimestampFields;
895
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sources":["../../src/util.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getIndexFromAssociation = exports.getIndex = exports.establishRelationAndKeys = exports.isIdOptionallyManaged = exports.isIdManaged = exports.extractPrimaryKeysAndValues = exports.extractPrimaryKeyValues = exports.extractPrimaryKeyFieldNames = exports.extractKeyIfExists = exports.processCompositeKeys = exports.getStorename = exports.mergePatches = exports.DeferredCallbackResolver = exports.DeferredPromise = exports.isAWSIPAddress = exports.isAWSPhone = exports.isAWSURL = exports.isAWSJSON = exports.isAWSEmail = exports.isAWSTimestamp = exports.isAWSDateTime = exports.isAWSTime = exports.isAWSDate = exports.asyncFilter = exports.asyncEvery = exports.asyncSome = exports.inMemoryPagination = exports.valuesEqual = exports.sortCompareFunction = exports.getNow = exports.monotonicUlidFactory = exports.isSafariCompatabilityMode = exports.isPrivateMode = exports.traverseModel = exports.isNonModelConstructor = exports.registerNonModelClass = exports.isModelConstructor = exports.validatePredicateField = exports.validatePredicate = exports.isNullOrUndefined = exports.exhaustiveCheck = exports.DATASTORE = exports.STORAGE = exports.SYNC = exports.USER = exports.NAMESPACES = exports.errorMessages = exports.IDENTIFIER_KEY_SEPARATOR = exports.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR = exports.ID = void 0;\nexports.getTimestampFields = exports.getIndexKeys = exports.keysEqual = exports.indexNameFromKeys = exports.extractTargetNamesFromSrc = void 0;\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst ulid_1 = require(\"ulid\");\nconst utils_1 = require(\"@aws-amplify/core/internals/utils\");\nconst immer_1 = require(\"immer\");\nconst types_1 = require(\"./types\");\nconst predicates_1 = require(\"./predicates\");\nexports.ID = 'id';\n/**\n * Used by the Async Storage Adapter to concatenate key values\n * for a record. For instance, if a model has the following keys:\n * `customId: ID! @primaryKey(sortKeyFields: [\"createdAt\"])`,\n * we concatenate the `customId` and `createdAt` as:\n * `12-234-5#2022-09-28T00:00:00.000Z`\n */\nexports.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR = '#';\n/**\n * Used for generating spinal-cased index name from an array of\n * key field names.\n * E.g. for keys `[id, title]` => 'id-title'\n */\nexports.IDENTIFIER_KEY_SEPARATOR = '-';\nexports.errorMessages = {\n idEmptyString: 'An index field cannot contain an empty string value',\n queryByPkWithCompositeKeyPresent: 'Models with composite primary keys cannot be queried by a single key value. Use object literal syntax for composite keys instead: https://docs.amplify.aws/lib/datastore/advanced-workflows/q/platform/js/#querying-records-with-custom-primary-keys',\n deleteByPkWithCompositeKeyPresent: 'Models with composite primary keys cannot be deleted by a single key value, unless using a predicate. Use object literal syntax for composite keys instead: https://docs.amplify.aws/lib/datastore/advanced-workflows/q/platform/js/#querying-records-with-custom-primary-keys',\n observeWithObjectLiteral: 'Object literal syntax cannot be used with observe. Use a predicate instead: https://docs.amplify.aws/lib/datastore/data-access/q/platform/js/#predicates',\n};\nvar NAMESPACES;\n(function (NAMESPACES) {\n NAMESPACES[\"DATASTORE\"] = \"datastore\";\n NAMESPACES[\"USER\"] = \"user\";\n NAMESPACES[\"SYNC\"] = \"sync\";\n NAMESPACES[\"STORAGE\"] = \"storage\";\n})(NAMESPACES = exports.NAMESPACES || (exports.NAMESPACES = {}));\nconst DATASTORE = NAMESPACES.DATASTORE;\nexports.DATASTORE = DATASTORE;\nconst USER = NAMESPACES.USER;\nexports.USER = USER;\nconst SYNC = NAMESPACES.SYNC;\nexports.SYNC = SYNC;\nconst STORAGE = NAMESPACES.STORAGE;\nexports.STORAGE = STORAGE;\nconst exhaustiveCheck = (obj, throwOnError = true) => {\n if (throwOnError) {\n throw new Error(`Invalid ${obj}`);\n }\n};\nexports.exhaustiveCheck = exhaustiveCheck;\nconst isNullOrUndefined = (val) => {\n return typeof val === 'undefined' || val === undefined || val === null;\n};\nexports.isNullOrUndefined = isNullOrUndefined;\nconst validatePredicate = (model, groupType, predicatesOrGroups) => {\n let filterType;\n let isNegation = false;\n if (predicatesOrGroups.length === 0) {\n return true;\n }\n switch (groupType) {\n case 'not':\n filterType = 'every';\n isNegation = true;\n break;\n case 'and':\n filterType = 'every';\n break;\n case 'or':\n filterType = 'some';\n break;\n default:\n throw new Error(`Invalid ${groupType}`);\n }\n const result = predicatesOrGroups[filterType](predicateOrGroup => {\n if ((0, types_1.isPredicateObj)(predicateOrGroup)) {\n const { field, operator, operand } = predicateOrGroup;\n const value = model[field];\n return (0, exports.validatePredicateField)(value, operator, operand);\n }\n if ((0, types_1.isPredicateGroup)(predicateOrGroup)) {\n const { type, predicates } = predicateOrGroup;\n return (0, exports.validatePredicate)(model, type, predicates);\n }\n throw new Error('Not a predicate or group');\n });\n return isNegation ? !result : result;\n};\nexports.validatePredicate = validatePredicate;\nconst validatePredicateField = (value, operator, operand) => {\n switch (operator) {\n case 'ne':\n return value !== operand;\n case 'eq':\n return value === operand;\n case 'le':\n return value <= operand;\n case 'lt':\n return value < operand;\n case 'ge':\n return value >= operand;\n case 'gt':\n return value > operand;\n case 'between':\n const [min, max] = operand;\n return value >= min && value <= max;\n case 'beginsWith':\n return (!(0, exports.isNullOrUndefined)(value) &&\n value.startsWith(operand));\n case 'contains':\n return (!(0, exports.isNullOrUndefined)(value) &&\n value.indexOf(operand) > -1);\n case 'notContains':\n return ((0, exports.isNullOrUndefined)(value) ||\n value.indexOf(operand) === -1);\n default:\n return false;\n }\n};\nexports.validatePredicateField = validatePredicateField;\nconst isModelConstructor = (obj) => {\n return (obj && typeof obj.copyOf === 'function');\n};\nexports.isModelConstructor = isModelConstructor;\nconst nonModelClasses = new WeakSet();\nfunction registerNonModelClass(clazz) {\n nonModelClasses.add(clazz);\n}\nexports.registerNonModelClass = registerNonModelClass;\nconst isNonModelConstructor = (obj) => {\n return nonModelClasses.has(obj);\n};\nexports.isNonModelConstructor = isNonModelConstructor;\nconst topologicallySortedModels = new WeakMap();\nconst traverseModel = (srcModelName, instance, namespace, modelInstanceCreator, getModelConstructorByModelName) => {\n const modelConstructor = getModelConstructorByModelName(namespace.name, srcModelName);\n const result = [];\n const newInstance = modelConstructor.copyOf(instance, () => { });\n result.unshift({\n modelName: srcModelName,\n item: newInstance,\n instance: newInstance,\n });\n if (!topologicallySortedModels.has(namespace)) {\n topologicallySortedModels.set(namespace, Array.from(namespace.modelTopologicalOrdering.keys()));\n }\n const sortedModels = topologicallySortedModels.get(namespace);\n result.sort((a, b) => {\n return (sortedModels.indexOf(a.modelName) - sortedModels.indexOf(b.modelName));\n });\n return result;\n};\nexports.traverseModel = traverseModel;\nlet privateModeCheckResult;\nconst isPrivateMode = () => {\n return new Promise(resolve => {\n const dbname = (0, utils_1.amplifyUuid)();\n let db;\n const isPrivate = () => {\n privateModeCheckResult = false;\n resolve(true);\n };\n const isNotPrivate = async () => {\n if (db && db.result && typeof db.result.close === 'function') {\n await db.result.close();\n }\n await indexedDB.deleteDatabase(dbname);\n privateModeCheckResult = true;\n return resolve(false);\n };\n if (privateModeCheckResult === true) {\n return isNotPrivate();\n }\n if (privateModeCheckResult === false) {\n return isPrivate();\n }\n if (indexedDB === null)\n return isPrivate();\n db = indexedDB.open(dbname);\n db.onerror = isPrivate;\n db.onsuccess = isNotPrivate;\n });\n};\nexports.isPrivateMode = isPrivateMode;\nlet safariCompatabilityModeResult;\n/**\n * Whether the browser's implementation of IndexedDB breaks on array lookups\n * against composite indexes whose keypath contains a single column.\n *\n * E.g., Whether `store.createIndex(indexName, ['id'])` followed by\n * `store.index(indexName).get([1])` will *ever* return records.\n *\n * In all known, modern Safari browsers as of Q4 2022, the query against an index like\n * this will *always* return `undefined`. So, the index needs to be created as a scalar.\n */\nconst isSafariCompatabilityMode = async () => {\n try {\n const dbName = (0, utils_1.amplifyUuid)();\n const storeName = 'indexedDBFeatureProbeStore';\n const indexName = 'idx';\n if (indexedDB === null)\n return false;\n if (safariCompatabilityModeResult !== undefined) {\n return safariCompatabilityModeResult;\n }\n const db = await new Promise(resolve => {\n const dbOpenRequest = indexedDB.open(dbName);\n dbOpenRequest.onerror = () => resolve(false);\n dbOpenRequest.onsuccess = () => {\n const db = dbOpenRequest.result;\n resolve(db);\n };\n dbOpenRequest.onupgradeneeded = (event) => {\n const db = event?.target?.result;\n db.onerror = () => resolve(false);\n const store = db.createObjectStore(storeName, {\n autoIncrement: true,\n });\n store.createIndex(indexName, ['id']);\n };\n });\n if (!db) {\n throw new Error('Could not open probe DB');\n }\n const rwTx = db.transaction(storeName, 'readwrite');\n const rwStore = rwTx.objectStore(storeName);\n rwStore.add({\n id: 1,\n });\n rwTx.commit();\n const result = await new Promise(resolve => {\n const tx = db.transaction(storeName, 'readonly');\n const store = tx.objectStore(storeName);\n const index = store.index(indexName);\n const getRequest = index.get([1]);\n getRequest.onerror = () => resolve(false);\n getRequest.onsuccess = (event) => {\n resolve(event?.target?.result);\n };\n });\n if (db && typeof db.close === 'function') {\n await db.close();\n }\n await indexedDB.deleteDatabase(dbName);\n if (result === undefined) {\n safariCompatabilityModeResult = true;\n }\n else {\n safariCompatabilityModeResult = false;\n }\n }\n catch (error) {\n safariCompatabilityModeResult = false;\n }\n return safariCompatabilityModeResult;\n};\nexports.isSafariCompatabilityMode = isSafariCompatabilityMode;\nconst HEX_TO_SHORT = {};\nfor (let i = 0; i < 256; i++) {\n let encodedByte = i.toString(16).toLowerCase();\n if (encodedByte.length === 1) {\n encodedByte = `0${encodedByte}`;\n }\n HEX_TO_SHORT[encodedByte] = i;\n}\nconst getBytesFromHex = (encoded) => {\n if (encoded.length % 2 !== 0) {\n throw new Error('Hex encoded strings must have an even number length');\n }\n const out = new Uint8Array(encoded.length / 2);\n for (let i = 0; i < encoded.length; i += 2) {\n const encodedByte = encoded.slice(i, i + 2).toLowerCase();\n if (encodedByte in HEX_TO_SHORT) {\n out[i / 2] = HEX_TO_SHORT[encodedByte];\n }\n else {\n throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`);\n }\n }\n return out;\n};\nconst randomBytes = (nBytes) => {\n const str = new utils_1.WordArray().random(nBytes).toString();\n return getBytesFromHex(str);\n};\nconst prng = () => randomBytes(1)[0] / 0xff;\nfunction monotonicUlidFactory(seed) {\n const ulid = (0, ulid_1.monotonicFactory)(prng);\n return () => {\n return ulid(seed);\n };\n}\nexports.monotonicUlidFactory = monotonicUlidFactory;\n/**\n * Uses performance.now() if available, otherwise, uses Date.now() (e.g. react native without a polyfill)\n *\n * The values returned by performance.now() always increase at a constant rate,\n * independent of the system clock (which might be adjusted manually or skewed\n * by software like NTP).\n *\n * Otherwise, performance.timing.navigationStart + performance.now() will be\n * approximately equal to Date.now()\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/Performance/now#Example\n */\nfunction getNow() {\n if (typeof performance !== 'undefined' &&\n performance &&\n typeof performance.now === 'function') {\n return performance.now() | 0; // convert to integer\n }\n else {\n return Date.now();\n }\n}\nexports.getNow = getNow;\nfunction sortCompareFunction(sortPredicates) {\n return function compareFunction(a, b) {\n // enable multi-field sort by iterating over predicates until\n // a comparison returns -1 or 1\n for (const predicate of sortPredicates) {\n const { field, sortDirection } = predicate;\n // reverse result when direction is descending\n const sortMultiplier = sortDirection === types_1.SortDirection.ASCENDING ? 1 : -1;\n if (a[field] < b[field]) {\n return -1 * sortMultiplier;\n }\n if (a[field] > b[field]) {\n return 1 * sortMultiplier;\n }\n }\n return 0;\n };\n}\nexports.sortCompareFunction = sortCompareFunction;\n// deep compare any 2 values\n// primitives or object types (including arrays, Sets, and Maps)\n// returns true if equal by value\n// if nullish is true, treat undefined and null values as equal\n// to normalize for GQL response values for undefined fields\nfunction valuesEqual(valA, valB, nullish = false) {\n let a = valA;\n let b = valB;\n const nullishCompare = (_a, _b) => {\n return ((_a === undefined || _a === null) && (_b === undefined || _b === null));\n };\n // if one of the values is a primitive and the other is an object\n if ((a instanceof Object && !(b instanceof Object)) ||\n (!(a instanceof Object) && b instanceof Object)) {\n return false;\n }\n // compare primitive types\n if (!(a instanceof Object)) {\n if (nullish && nullishCompare(a, b)) {\n return true;\n }\n return a === b;\n }\n // make sure object types match\n if ((Array.isArray(a) && !Array.isArray(b)) ||\n (Array.isArray(b) && !Array.isArray(a))) {\n return false;\n }\n if (a instanceof Set && b instanceof Set) {\n a = [...a];\n b = [...b];\n }\n if (a instanceof Map && b instanceof Map) {\n a = Object.fromEntries(a);\n b = Object.fromEntries(b);\n }\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n // last condition is to ensure that [] !== [null] even if nullish. However [undefined] === [null] when nullish\n if (aKeys.length !== bKeys.length && (!nullish || Array.isArray(a))) {\n return false;\n }\n // iterate through the longer set of keys\n // e.g., for a nullish comparison of a={ a: 1 } and b={ a: 1, b: null }\n // we want to iterate through bKeys\n const keys = aKeys.length >= bKeys.length ? aKeys : bKeys;\n for (const key of keys) {\n const aVal = a[key];\n const bVal = b[key];\n if (!valuesEqual(aVal, bVal, nullish)) {\n return false;\n }\n }\n return true;\n}\nexports.valuesEqual = valuesEqual;\n/**\n * Statelessly extracts the specified page from an array.\n *\n * @param records - The source array to extract a page from.\n * @param pagination - A definition of the page to extract.\n * @returns This items from `records` matching the `pagination` definition.\n */\nfunction inMemoryPagination(records, pagination) {\n if (pagination && records.length > 1) {\n if (pagination.sort) {\n const sortPredicates = predicates_1.ModelSortPredicateCreator.getPredicates(pagination.sort);\n if (sortPredicates.length) {\n const compareFn = sortCompareFunction(sortPredicates);\n records.sort(compareFn);\n }\n }\n const { page = 0, limit = 0 } = pagination;\n const start = Math.max(0, page * limit) || 0;\n const end = limit > 0 ? start + limit : records.length;\n return records.slice(start, end);\n }\n return records;\n}\nexports.inMemoryPagination = inMemoryPagination;\n/**\n * An `aysnc` implementation of `Array.some()`. Returns as soon as a match is found.\n * @param items The items to check.\n * @param matches The async matcher function, expected to\n * return Promise<boolean>: `true` for a matching item, `false` otherwise.\n * @returns A `Promise<boolean>`, `true` if \"some\" items match; `false` otherwise.\n */\nasync function asyncSome(items, matches) {\n for (const item of items) {\n if (await matches(item)) {\n return true;\n }\n }\n return false;\n}\nexports.asyncSome = asyncSome;\n/**\n * An `aysnc` implementation of `Array.every()`. Returns as soon as a non-match is found.\n * @param items The items to check.\n * @param matches The async matcher function, expected to\n * return Promise<boolean>: `true` for a matching item, `false` otherwise.\n * @returns A `Promise<boolean>`, `true` if every item matches; `false` otherwise.\n */\nasync function asyncEvery(items, matches) {\n for (const item of items) {\n if (!(await matches(item))) {\n return false;\n }\n }\n return true;\n}\nexports.asyncEvery = asyncEvery;\n/**\n * An `async` implementation of `Array.filter()`. Returns after all items have been filtered.\n * TODO: Return AsyncIterable.\n * @param items The items to filter.\n * @param matches The `async` matcher function, expected to\n * return Promise<boolean>: `true` for a matching item, `false` otherwise.\n * @returns A `Promise<T>` of matching items.\n */\nasync function asyncFilter(items, matches) {\n const results = [];\n for (const item of items) {\n if (await matches(item)) {\n results.push(item);\n }\n }\n return results;\n}\nexports.asyncFilter = asyncFilter;\nconst isAWSDate = (val) => {\n return !!/^\\d{4}-\\d{2}-\\d{2}(Z|[+-]\\d{2}:\\d{2}($|:\\d{2}))?$/.exec(val);\n};\nexports.isAWSDate = isAWSDate;\nconst isAWSTime = (val) => {\n return !!/^\\d{2}:\\d{2}(:\\d{2}(.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}($|:\\d{2}))?$/.exec(val);\n};\nexports.isAWSTime = isAWSTime;\nconst isAWSDateTime = (val) => {\n return !!/^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2}(.\\d+)?)?(Z|[+-]\\d{2}:\\d{2}($|:\\d{2}))?$/.exec(val);\n};\nexports.isAWSDateTime = isAWSDateTime;\nconst isAWSTimestamp = (val) => {\n return !!/^\\d+$/.exec(String(val));\n};\nexports.isAWSTimestamp = isAWSTimestamp;\nconst isAWSEmail = (val) => {\n return !!/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.exec(val);\n};\nexports.isAWSEmail = isAWSEmail;\nconst isAWSJSON = (val) => {\n try {\n JSON.parse(val);\n return true;\n }\n catch {\n return false;\n }\n};\nexports.isAWSJSON = isAWSJSON;\nconst isAWSURL = (val) => {\n try {\n return !!new utils_1.AmplifyUrl(val);\n }\n catch {\n return false;\n }\n};\nexports.isAWSURL = isAWSURL;\nconst isAWSPhone = (val) => {\n return !!/^\\+?\\d[\\d\\s-]+$/.exec(val);\n};\nexports.isAWSPhone = isAWSPhone;\nconst isAWSIPAddress = (val) => {\n 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);\n};\nexports.isAWSIPAddress = isAWSIPAddress;\nclass DeferredPromise {\n constructor() {\n const self = this;\n this.promise = new Promise((resolve, reject) => {\n self.resolve = resolve;\n self.reject = reject;\n });\n }\n}\nexports.DeferredPromise = DeferredPromise;\nclass DeferredCallbackResolver {\n constructor(options) {\n this.limitPromise = new DeferredPromise();\n this.raceInFlight = false;\n this.callback = () => { };\n this.defaultErrorHandler = (msg = 'DeferredCallbackResolver error') => {\n throw new Error(msg);\n };\n this.callback = options.callback;\n this.errorHandler = options.errorHandler || this.defaultErrorHandler;\n this.maxInterval = options.maxInterval || 2000;\n }\n startTimer() {\n this.timerPromise = new Promise((resolve, reject) => {\n this.timer = setTimeout(() => {\n resolve(types_1.LimitTimerRaceResolvedValues.TIMER);\n }, this.maxInterval);\n });\n }\n async racePromises() {\n let winner;\n try {\n this.raceInFlight = true;\n this.startTimer();\n winner = await Promise.race([\n this.timerPromise,\n this.limitPromise.promise,\n ]);\n this.callback();\n }\n catch (err) {\n this.errorHandler(err);\n }\n finally {\n // reset for the next race\n this.clear();\n this.raceInFlight = false;\n this.limitPromise = new DeferredPromise();\n return winner;\n }\n }\n start() {\n if (!this.raceInFlight)\n this.racePromises();\n }\n clear() {\n clearTimeout(this.timer);\n }\n resolve() {\n this.limitPromise.resolve(types_1.LimitTimerRaceResolvedValues.LIMIT);\n }\n}\nexports.DeferredCallbackResolver = DeferredCallbackResolver;\n/**\n * merge two sets of patches created by immer produce.\n * newPatches take precedent over oldPatches for patches modifying the same path.\n * In the case many consecutive pathces are merged the original model should\n * always be the root model.\n *\n * Example:\n * A -> B, patches1\n * B -> C, patches2\n *\n * mergePatches(A, patches1, patches2) to get patches for A -> C\n *\n * @param originalSource the original Model the patches should be applied to\n * @param oldPatches immer produce patch list\n * @param newPatches immer produce patch list (will take precedence)\n * @return merged patches\n */\nfunction mergePatches(originalSource, oldPatches, newPatches) {\n const patchesToMerge = oldPatches.concat(newPatches);\n let patches;\n (0, immer_1.produce)(originalSource, draft => {\n (0, immer_1.applyPatches)(draft, patchesToMerge);\n }, p => {\n patches = p;\n });\n return patches;\n}\nexports.mergePatches = mergePatches;\nconst getStorename = (namespace, modelName) => {\n const storeName = `${namespace}_${modelName}`;\n return storeName;\n};\nexports.getStorename = getStorename;\n//#region Key Utils\n/*\n When we have GSI(s) with composite sort keys defined on a model\n There are some very particular rules regarding which fields must be included in the update mutation input\n The field selection becomes more complex as the number of GSIs with composite sort keys grows\n\n To summarize: any time we update a field that is part of the composite sort key of a GSI, we must include:\n 1. all of the other fields in that composite sort key\n 2. all of the fields from any other composite sort key that intersect with the fields from 1.\n\n E.g.,\n Model @model\n @key(name: 'key1' fields: ['hk', 'a', 'b', 'c'])\n @key(name: 'key2' fields: ['hk', 'a', 'b', 'd'])\n @key(name: 'key3' fields: ['hk', 'x', 'y', 'z'])\n\n Model.a is updated => include ['a', 'b', 'c', 'd']\n Model.c is updated => include ['a', 'b', 'c', 'd']\n Model.d is updated => include ['a', 'b', 'c', 'd']\n Model.x is updated => include ['x', 'y', 'z']\n\n This function accepts a model's attributes and returns grouped sets of composite key fields\n Using our example Model above, the function will return:\n [\n Set('a', 'b', 'c', 'd'),\n Set('x', 'y', 'z'),\n ]\n\n This gives us the opportunity to correctly include the required fields for composite keys\n When crafting the mutation input in Storage.getUpdateMutationInput\n\n See 'processCompositeKeys' test in util.test.ts for more examples\n*/\nconst processCompositeKeys = (attributes) => {\n const extractCompositeSortKey = ({ properties: { \n // ignore the HK (fields[0]) we only need to include the composite sort key fields[1...n]\n fields: [, ...sortKeyFields], }, }) => sortKeyFields;\n const compositeKeyFields = attributes\n .filter(types_1.isModelAttributeCompositeKey)\n .map(extractCompositeSortKey);\n /*\n if 2 sets of fields have any intersecting fields => combine them into 1 union set\n e.g., ['a', 'b', 'c'] and ['a', 'b', 'd'] => ['a', 'b', 'c', 'd']\n */\n const combineIntersecting = (fields) => fields.reduce((combined, sortKeyFields) => {\n const sortKeyFieldsSet = new Set(sortKeyFields);\n if (combined.length === 0) {\n combined.push(sortKeyFieldsSet);\n return combined;\n }\n // does the current set share values with another set we've already added to `combined`?\n const intersectingSetIdx = combined.findIndex(existingSet => {\n return [...existingSet].some(f => sortKeyFieldsSet.has(f));\n });\n if (intersectingSetIdx > -1) {\n const union = new Set([\n ...combined[intersectingSetIdx],\n ...sortKeyFieldsSet,\n ]);\n // combine the current set with the intersecting set we found above\n combined[intersectingSetIdx] = union;\n }\n else {\n // none of the sets in `combined` have intersecting values with the current set\n combined.push(sortKeyFieldsSet);\n }\n return combined;\n }, []);\n const initial = combineIntersecting(compositeKeyFields);\n // a single pass pay not be enough to correctly combine all the fields\n // call the function once more to get a final merged list of sets\n const combined = combineIntersecting(initial);\n return combined;\n};\nexports.processCompositeKeys = processCompositeKeys;\nconst extractKeyIfExists = (modelDefinition) => {\n const keyAttribute = modelDefinition?.attributes?.find(types_1.isModelAttributeKey);\n return keyAttribute;\n};\nexports.extractKeyIfExists = extractKeyIfExists;\nconst extractPrimaryKeyFieldNames = (modelDefinition) => {\n const keyAttribute = (0, exports.extractKeyIfExists)(modelDefinition);\n if (keyAttribute && (0, types_1.isModelAttributePrimaryKey)(keyAttribute)) {\n return keyAttribute.properties.fields;\n }\n return [exports.ID];\n};\nexports.extractPrimaryKeyFieldNames = extractPrimaryKeyFieldNames;\nconst extractPrimaryKeyValues = (model, keyFields) => {\n return keyFields.map(key => model[key]);\n};\nexports.extractPrimaryKeyValues = extractPrimaryKeyValues;\nconst extractPrimaryKeysAndValues = (model, keyFields) => {\n const primaryKeysAndValues = {};\n keyFields.forEach(key => (primaryKeysAndValues[key] = model[key]));\n return primaryKeysAndValues;\n};\nexports.extractPrimaryKeysAndValues = extractPrimaryKeysAndValues;\n// IdentifierFields<ManagedIdentifier>\n// Default behavior without explicit @primaryKey defined\nconst isIdManaged = (modelDefinition) => {\n const keyAttribute = (0, exports.extractKeyIfExists)(modelDefinition);\n if (keyAttribute && (0, types_1.isModelAttributePrimaryKey)(keyAttribute)) {\n return false;\n }\n return true;\n};\nexports.isIdManaged = isIdManaged;\n// IdentifierFields<OptionallyManagedIdentifier>\n// @primaryKey with explicit `id` in the PK. Single key or composite\nconst isIdOptionallyManaged = (modelDefinition) => {\n const keyAttribute = (0, exports.extractKeyIfExists)(modelDefinition);\n if (keyAttribute && (0, types_1.isModelAttributePrimaryKey)(keyAttribute)) {\n return keyAttribute.properties.fields[0] === exports.ID;\n }\n return false;\n};\nexports.isIdOptionallyManaged = isIdOptionallyManaged;\nconst establishRelationAndKeys = (namespace) => {\n const relationship = {};\n const keys = {};\n Object.keys(namespace.models).forEach((mKey) => {\n relationship[mKey] = { indexes: [], relationTypes: [] };\n keys[mKey] = {};\n const model = namespace.models[mKey];\n Object.keys(model.fields).forEach((attr) => {\n const fieldAttribute = model.fields[attr];\n if (typeof fieldAttribute.type === 'object' &&\n 'model' in fieldAttribute.type) {\n const connectionType = fieldAttribute.association.connectionType;\n relationship[mKey].relationTypes.push({\n fieldName: fieldAttribute.name,\n modelName: fieldAttribute.type.model,\n relationType: connectionType,\n targetName: fieldAttribute.association['targetName'],\n targetNames: fieldAttribute.association['targetNames'],\n associatedWith: fieldAttribute.association['associatedWith'],\n });\n if (connectionType === 'BELONGS_TO') {\n const targetNames = (0, exports.extractTargetNamesFromSrc)(fieldAttribute.association);\n if (targetNames) {\n const idxName = (0, exports.indexNameFromKeys)(targetNames);\n const idxExists = relationship[mKey].indexes.find(([index]) => index === idxName);\n if (!idxExists) {\n relationship[mKey].indexes.push([idxName, targetNames]);\n }\n }\n }\n }\n });\n if (model.attributes) {\n keys[mKey].compositeKeys = (0, exports.processCompositeKeys)(model.attributes);\n for (const attribute of model.attributes) {\n if (!(0, types_1.isModelAttributeKey)(attribute)) {\n continue;\n }\n const { fields } = attribute.properties;\n if ((0, types_1.isModelAttributePrimaryKey)(attribute)) {\n keys[mKey].primaryKey = fields;\n continue;\n }\n // create indexes for all other keys\n const idxName = (0, exports.indexNameFromKeys)(fields);\n const idxExists = relationship[mKey].indexes.find(([index]) => index === idxName);\n if (!idxExists) {\n relationship[mKey].indexes.push([idxName, fields]);\n }\n }\n }\n // set 'id' as the PK for models without a custom PK explicitly defined\n if (!keys[mKey].primaryKey) {\n keys[mKey].primaryKey = [exports.ID];\n }\n // create primary index\n relationship[mKey].indexes.push([\n 'byPk',\n keys[mKey].primaryKey,\n { unique: true },\n ]);\n });\n return [relationship, keys];\n};\nexports.establishRelationAndKeys = establishRelationAndKeys;\nconst getIndex = (rel, src) => {\n let indexName;\n rel.some((relItem) => {\n if (relItem.modelName === src) {\n const targetNames = (0, exports.extractTargetNamesFromSrc)(relItem);\n indexName = targetNames && (0, exports.indexNameFromKeys)(targetNames);\n return true;\n }\n });\n return indexName;\n};\nexports.getIndex = getIndex;\nconst getIndexFromAssociation = (indexes, src) => {\n let indexName;\n if (Array.isArray(src)) {\n indexName = (0, exports.indexNameFromKeys)(src);\n }\n else {\n indexName = src;\n }\n const associationIndex = indexes.find(([idxName]) => idxName === indexName);\n return associationIndex && associationIndex[0];\n};\nexports.getIndexFromAssociation = getIndexFromAssociation;\n/**\n * Backwards-compatability for schema generated prior to custom primary key support:\nthe single field `targetName` has been replaced with an array of `targetNames`.\n`targetName` and `targetNames` are exclusive (will never exist on the same schema)\n * @param src {RelationType | ModelAssociation | undefined}\n * @returns array of targetNames, or `undefined`\n */\nconst extractTargetNamesFromSrc = (src) => {\n const targetName = src?.targetName;\n const targetNames = src?.targetNames;\n if (Array.isArray(targetNames)) {\n return targetNames;\n }\n else if (typeof targetName === 'string') {\n return [targetName];\n }\n else {\n return undefined;\n }\n};\nexports.extractTargetNamesFromSrc = extractTargetNamesFromSrc;\n// Generates spinal-cased index name from an array of key field names\n// E.g. for keys `[id, title]` => 'id-title'\nconst indexNameFromKeys = (keys) => {\n return keys.reduce((prev, cur, idx) => {\n if (idx === 0) {\n return cur;\n }\n return `${prev}${exports.IDENTIFIER_KEY_SEPARATOR}${cur}`;\n }, '');\n};\nexports.indexNameFromKeys = indexNameFromKeys;\nconst keysEqual = (keysA, keysB) => {\n if (keysA.length !== keysB.length) {\n return false;\n }\n return keysA.every((key, idx) => key === keysB[idx]);\n};\nexports.keysEqual = keysEqual;\n// Returns primary keys for a model\nconst getIndexKeys = (namespace, modelName) => {\n const keyPath = namespace?.keys?.[modelName]?.primaryKey;\n if (keyPath) {\n return keyPath;\n }\n return [exports.ID];\n};\nexports.getIndexKeys = getIndexKeys;\n//#endregion\n/**\n * Determine what the managed timestamp field names are for the given model definition\n * and return the mapping.\n *\n * All timestamp fields are included in the mapping, regardless of whether the final field\n * names are the defaults or customized in the `@model` directive.\n *\n * @see https://docs.amplify.aws/cli/graphql/data-modeling/#customize-creation-and-update-timestamps\n *\n * @param definition modelDefinition to inspect.\n * @returns An object mapping `createdAt` and `updatedAt` to their field names.\n */\nconst getTimestampFields = (definition) => {\n const modelAttributes = definition.attributes?.find(attr => attr.type === 'model');\n const timestampFieldsMap = modelAttributes?.properties?.timestamps;\n const defaultFields = {\n createdAt: 'createdAt',\n updatedAt: 'updatedAt',\n };\n const customFields = timestampFieldsMap || {};\n return {\n ...defaultFields,\n ...customFields,\n };\n};\nexports.getTimestampFields = getTimestampFields;\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  // Default behavior is to use the primary auth mode for an API,
2
2
  // so we are returning an empty array so that DataStore will default
3
3
  // to using the primary auth mode.
4
- export const defaultAuthStrategy = () => [];
4
+ const defaultAuthStrategy = () => [];
5
+
6
+ export { defaultAuthStrategy };
7
+ //# sourceMappingURL=defaultAuthStrategy.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultAuthStrategy.mjs","sources":["../../../src/authModeStrategies/defaultAuthStrategy.ts"],"sourcesContent":["// Default behavior is to use the primary auth mode for an API,\n// so we are returning an empty array so that DataStore will default\n// to using the primary auth mode.\nexport const defaultAuthStrategy = () => [];\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACY,MAAC,mBAAmB,GAAG,MAAM;;;;"}
@@ -0,0 +1,3 @@
1
+ export { defaultAuthStrategy } from './defaultAuthStrategy.mjs';
2
+ export { multiAuthStrategy } from './multiAuthStrategy.mjs';
3
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,7 +1,8 @@
1
+ import { fetchAuthSession } from '@aws-amplify/core';
2
+ import { ModelAttributeAuthAllow, ModelAttributeAuthProvider } from '../types.mjs';
3
+
1
4
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
5
  // SPDX-License-Identifier: Apache-2.0
3
- import { fetchAuthSession } from '@aws-amplify/core';
4
- import { ModelAttributeAuthProvider, ModelAttributeAuthAllow, } from '../types';
5
6
  function getProviderFromRule(rule) {
6
7
  // private with no provider means userPools
7
8
  if (rule.allow === 'private' && !rule.provider) {
@@ -86,8 +87,6 @@ function getAuthRules({ rules, currentUser, }) {
86
87
  }
87
88
  break;
88
89
  }
89
- default:
90
- break;
91
90
  }
92
91
  });
93
92
  return Array.from(authModes);
@@ -103,7 +102,7 @@ function getAuthRules({ rules, currentUser, }) {
103
102
  * @param param0 The `{schema, modelName}` to inspect.
104
103
  * @returns A sorted array of auth modes to attempt.
105
104
  */
106
- export const multiAuthStrategy = (amplifyContext) => async ({ schema, modelName }) => {
105
+ const multiAuthStrategy = (amplifyContext) => async ({ schema, modelName }) => {
107
106
  let currentUser;
108
107
  try {
109
108
  const authSession = await fetchAuthSession();
@@ -125,3 +124,6 @@ export const multiAuthStrategy = (amplifyContext) => async ({ schema, modelName
125
124
  }
126
125
  return [];
127
126
  };
127
+
128
+ export { multiAuthStrategy };
129
+ //# sourceMappingURL=multiAuthStrategy.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiAuthStrategy.mjs","sources":["../../../src/authModeStrategies/multiAuthStrategy.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { fetchAuthSession } from '@aws-amplify/core';\nimport { ModelAttributeAuthProvider, ModelAttributeAuthAllow, } from '../types';\nfunction getProviderFromRule(rule) {\n // private with no provider means userPools\n if (rule.allow === 'private' && !rule.provider) {\n return ModelAttributeAuthProvider.USER_POOLS;\n }\n // public with no provider means apiKey\n if (rule.allow === 'public' && !rule.provider) {\n return ModelAttributeAuthProvider.API_KEY;\n }\n return rule.provider;\n}\nfunction sortAuthRulesWithPriority(rules) {\n const allowSortPriority = [\n ModelAttributeAuthAllow.CUSTOM,\n ModelAttributeAuthAllow.OWNER,\n ModelAttributeAuthAllow.GROUPS,\n ModelAttributeAuthAllow.PRIVATE,\n ModelAttributeAuthAllow.PUBLIC,\n ];\n const providerSortPriority = [\n ModelAttributeAuthProvider.FUNCTION,\n ModelAttributeAuthProvider.USER_POOLS,\n ModelAttributeAuthProvider.OIDC,\n ModelAttributeAuthProvider.IAM,\n ModelAttributeAuthProvider.API_KEY,\n ];\n return [...rules].sort((a, b) => {\n if (a.allow === b.allow) {\n return (providerSortPriority.indexOf(getProviderFromRule(a)) -\n providerSortPriority.indexOf(getProviderFromRule(b)));\n }\n return (allowSortPriority.indexOf(a.allow) - allowSortPriority.indexOf(b.allow));\n });\n}\nfunction getAuthRules({ rules, currentUser, }) {\n // Using Set to ensure uniqueness\n const authModes = new Set();\n rules.forEach(rule => {\n switch (rule.allow) {\n case ModelAttributeAuthAllow.CUSTOM:\n // custom with no provider -> function\n if (!rule.provider ||\n rule.provider === ModelAttributeAuthProvider.FUNCTION) {\n authModes.add('lambda');\n }\n break;\n case ModelAttributeAuthAllow.GROUPS:\n case ModelAttributeAuthAllow.OWNER: {\n // We shouldn't attempt User Pool or OIDC if there isn't an authenticated user\n if (currentUser) {\n if (rule.provider === ModelAttributeAuthProvider.USER_POOLS) {\n authModes.add('userPool');\n }\n else if (rule.provider === ModelAttributeAuthProvider.OIDC) {\n authModes.add('oidc');\n }\n }\n break;\n }\n case ModelAttributeAuthAllow.PRIVATE: {\n // We shouldn't attempt private if there isn't an authenticated user\n if (currentUser) {\n // private with no provider means userPools\n if (!rule.provider ||\n rule.provider === ModelAttributeAuthProvider.USER_POOLS) {\n authModes.add('userPool');\n }\n else if (rule.provider === ModelAttributeAuthProvider.IAM) {\n authModes.add('iam');\n }\n }\n break;\n }\n case ModelAttributeAuthAllow.PUBLIC: {\n if (rule.provider === ModelAttributeAuthProvider.IAM) {\n authModes.add('iam');\n }\n else if (!rule.provider ||\n rule.provider === ModelAttributeAuthProvider.API_KEY) {\n // public with no provider means apiKey\n authModes.add('apiKey');\n }\n break;\n }\n default:\n break;\n }\n });\n return Array.from(authModes);\n}\n/**\n * Returns an array of auth modes to try based on the schema, model, and\n * authenticated user (or lack thereof). Rules are sourced from `getAuthRules`\n * and returned in the order they ought to be attempted.\n *\n * @see sortAuthRulesWithPriority\n * @see getAuthRules\n *\n * @param param0 The `{schema, modelName}` to inspect.\n * @returns A sorted array of auth modes to attempt.\n */\nexport const multiAuthStrategy = (amplifyContext) => async ({ schema, modelName }) => {\n let currentUser;\n try {\n const authSession = await fetchAuthSession();\n if (authSession.tokens.accessToken) {\n // the user is authenticated\n currentUser = authSession;\n }\n }\n catch (e) {\n // No current user\n }\n const { attributes } = schema.namespaces.user.models[modelName];\n if (attributes) {\n const authAttribute = attributes.find(attr => attr.type === 'auth');\n if (authAttribute?.properties?.rules) {\n const sortedRules = sortAuthRulesWithPriority(authAttribute.properties.rules);\n return getAuthRules({ currentUser, rules: sortedRules });\n }\n }\n return [];\n};\n"],"names":[],"mappings":"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"}
@@ -1,20 +1,22 @@
1
- // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
- // SPDX-License-Identifier: Apache-2.0
3
1
  import { InternalAPI } from '@aws-amplify/api/internals';
4
- import { Amplify, Hub, Cache, ConsoleLogger } from '@aws-amplify/core';
5
- import { immerable, produce, setAutoFreeze, enablePatches, } from 'immer';
6
- import { amplifyUuid, isBrowser } from '@aws-amplify/core/internals/utils';
2
+ import { ConsoleLogger, Hub, Cache, Amplify } from '@aws-amplify/core';
3
+ import { setAutoFreeze, enablePatches, immerable, produce } from 'immer';
4
+ import { BackgroundProcessManager, isBrowser, amplifyUuid } from '@aws-amplify/core/internals/utils';
7
5
  import { Observable, filter } from 'rxjs';
8
- import { defaultAuthStrategy, multiAuthStrategy } from '../authModeStrategies';
9
- import { isPredicatesAll, ModelPredicateCreator, ModelSortPredicateCreator, } from '../predicates';
10
- import { ExclusiveStorage as Storage } from '../storage/storage';
11
- import { ModelRelationship } from '../storage/relationship';
12
- import { ControlMessage, SyncEngine } from '../sync';
13
- import { GraphQLScalarType, isGraphQLScalarType, isSchemaModelWithAttributes, AuthModeStrategyType, isNonModelFieldType, isModelFieldType, isIdentifierObject, } from '../types';
14
- import { DATASTORE, errorMessages, establishRelationAndKeys, isModelConstructor, monotonicUlidFactory, STORAGE, SYNC, USER, isNullOrUndefined, registerNonModelClass, sortCompareFunction, DeferredCallbackResolver, inMemoryPagination, extractPrimaryKeyFieldNames, extractPrimaryKeysAndValues, isIdManaged, isIdOptionallyManaged, mergePatches, getTimestampFields, } from '../util';
15
- import { recursivePredicateFor, predicateFor, internals, } from '../predicates/next';
16
- import { getIdentifierValue } from '../sync/utils';
17
- import { BackgroundProcessManager } from '@aws-amplify/core/internals/utils';
6
+ import { defaultAuthStrategy } from '../authModeStrategies/defaultAuthStrategy.mjs';
7
+ import { multiAuthStrategy } from '../authModeStrategies/multiAuthStrategy.mjs';
8
+ import { ModelPredicateCreator, isPredicatesAll } from '../predicates/index.mjs';
9
+ import { ExclusiveStorage } from '../storage/storage.mjs';
10
+ import { ModelRelationship } from '../storage/relationship.mjs';
11
+ import { SyncEngine, ControlMessage } from '../sync/index.mjs';
12
+ import { isIdentifierObject, AuthModeStrategyType, isNonModelFieldType, isModelFieldType, isSchemaModelWithAttributes, isGraphQLScalarType, GraphQLScalarType } from '../types.mjs';
13
+ import { monotonicUlidFactory, USER, establishRelationAndKeys, isModelConstructor, extractPrimaryKeyFieldNames, registerNonModelClass, errorMessages, inMemoryPagination, extractPrimaryKeysAndValues, DeferredCallbackResolver, isIdManaged, isIdOptionallyManaged, mergePatches, STORAGE, SYNC, DATASTORE, sortCompareFunction, getTimestampFields, isNullOrUndefined } from '../util.mjs';
14
+ import { recursivePredicateFor, internals, predicateFor } from '../predicates/next.mjs';
15
+ import { getIdentifierValue } from '../sync/utils.mjs';
16
+ import { ModelSortPredicateCreator } from '../predicates/sort.mjs';
17
+
18
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
19
+ // SPDX-License-Identifier: Apache-2.0
18
20
  setAutoFreeze(true);
19
21
  enablePatches();
20
22
  const logger = new ConsoleLogger('DataStore');
@@ -87,7 +89,7 @@ const buildSeedPredicate = (modelConstructor) => {
87
89
  });
88
90
  };
89
91
  // exporting syncClasses for testing outbox.test.ts
90
- export let syncClasses;
92
+ let syncClasses;
91
93
  let userClasses;
92
94
  let dataStoreClasses;
93
95
  let storageClasses;
@@ -134,7 +136,7 @@ const attachedModelInstances = new WeakMap();
134
136
  * @param attachment A ModelAttachment data source
135
137
  * @returns passes the `result` back through after attachment
136
138
  */
137
- export function attached(result, attachment) {
139
+ function attached(result, attachment) {
138
140
  if (Array.isArray(result)) {
139
141
  result.map(record => attached(record, attachment));
140
142
  }
@@ -150,7 +152,7 @@ export function attached(result, attachment) {
150
152
  *
151
153
  * @param instance A model instance
152
154
  */
153
- export const getAttachment = (instance) => {
155
+ const getAttachment = (instance) => {
154
156
  return attachedModelInstances.has(instance)
155
157
  ? attachedModelInstances.get(instance)
156
158
  : ModelAttachment.Detached;
@@ -170,7 +172,7 @@ const initSchema = (userSchema) => {
170
172
  userClasses = createTypeClasses(internalUserNamespace);
171
173
  logger.log('DataStore', 'Models initialized');
172
174
  const dataStoreNamespace = getNamespace();
173
- const storageNamespace = Storage.getNamespace();
175
+ const storageNamespace = ExclusiveStorage.getNamespace();
174
176
  const syncNamespace = SyncEngine.getNamespace();
175
177
  dataStoreClasses = createTypeClasses(dataStoreNamespace);
176
178
  storageClasses = createTypeClasses(storageNamespace);
@@ -242,7 +244,7 @@ const initSchema = (userSchema) => {
242
244
  });
243
245
  const result = new Map();
244
246
  let count = 1000;
245
- while (true && count > 0) {
247
+ while (count > 0) {
246
248
  if (modelAssociations.size === 0) {
247
249
  break;
248
250
  }
@@ -757,14 +759,14 @@ const createModelClass = (modelDefinition) => {
757
759
  /**
758
760
  * An eventually loaded related model instance.
759
761
  */
760
- export class AsyncItem extends Promise {
762
+ class AsyncItem extends Promise {
761
763
  }
762
764
  /**
763
765
  * A collection of related model instances.
764
766
  *
765
767
  * This collection can be async-iterated or turned directly into an array using `toArray()`.
766
768
  */
767
- export class AsyncCollection {
769
+ class AsyncCollection {
768
770
  constructor(values) {
769
771
  this.values = values;
770
772
  }
@@ -1055,7 +1057,7 @@ class DataStore {
1055
1057
  await this.initialized;
1056
1058
  return;
1057
1059
  }
1058
- this.storage = new Storage(schema, namespaceResolver, getModelConstructorByModelName, modelInstanceCreator, this.storageAdapter, this.sessionId);
1060
+ this.storage = new ExclusiveStorage(schema, namespaceResolver, getModelConstructorByModelName, modelInstanceCreator, this.storageAdapter, this.sessionId);
1059
1061
  await this.storage.init();
1060
1062
  checkSchemaInitialized();
1061
1063
  await checkSchemaVersion(this.storage, schema.version);
@@ -1218,7 +1220,7 @@ class DataStore {
1218
1220
  ? internals(condition(predicateFor(modelMeta))).toStoragePredicate()
1219
1221
  : undefined;
1220
1222
  const [savedModel] = await this.storage.runExclusive(async (s) => {
1221
- const saved = await s.save(model, producedCondition, undefined, patchesTuple);
1223
+ await s.save(model, producedCondition, undefined, patchesTuple);
1222
1224
  return s.query(modelConstructor, ModelPredicateCreator.createForPk(modelDefinition, model));
1223
1225
  });
1224
1226
  return attached(savedModel, ModelAttachment.DataStore);
@@ -1735,7 +1737,7 @@ class DataStore {
1735
1737
  await this.runningProcesses.close();
1736
1738
  if (this.storage === undefined) {
1737
1739
  // connect to storage so that it can be cleared without fully starting DataStore
1738
- this.storage = new Storage(schema, namespaceResolver, getModelConstructorByModelName, modelInstanceCreator, this.storageAdapter, this.sessionId);
1740
+ this.storage = new ExclusiveStorage(schema, namespaceResolver, getModelConstructorByModelName, modelInstanceCreator, this.storageAdapter, this.sessionId);
1739
1741
  await this.storage.init();
1740
1742
  }
1741
1743
  if (syncSubscription && !syncSubscription.closed) {
@@ -1890,4 +1892,6 @@ Hub.listen('core', capsule => {
1890
1892
  instance.configure({});
1891
1893
  }
1892
1894
  });
1893
- export { DataStore as DataStoreClass, initSchema, instance as DataStore };
1895
+
1896
+ export { AsyncCollection, AsyncItem, instance as DataStore, DataStore as DataStoreClass, attached, getAttachment, initSchema, syncClasses };
1897
+ //# sourceMappingURL=datastore.mjs.map