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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/dist/cjs/authModeStrategies/multiAuthStrategy.js +1 -1
  2. package/dist/cjs/authModeStrategies/multiAuthStrategy.js.map +1 -1
  3. package/dist/cjs/datastore/datastore.js +46 -41
  4. package/dist/cjs/datastore/datastore.js.map +1 -1
  5. package/dist/cjs/index.js +3 -1
  6. package/dist/cjs/index.js.map +1 -1
  7. package/dist/cjs/predicates/index.js +1 -0
  8. package/dist/cjs/predicates/index.js.map +1 -1
  9. package/dist/cjs/predicates/next.js +13 -12
  10. package/dist/cjs/predicates/next.js.map +1 -1
  11. package/dist/cjs/predicates/sort.js +2 -2
  12. package/dist/cjs/predicates/sort.js.map +1 -1
  13. package/dist/cjs/storage/adapter/AsyncStorageAdapter.js +21 -18
  14. package/dist/cjs/storage/adapter/AsyncStorageAdapter.js.map +1 -1
  15. package/dist/cjs/storage/adapter/AsyncStorageDatabase.js +10 -9
  16. package/dist/cjs/storage/adapter/AsyncStorageDatabase.js.map +1 -1
  17. package/dist/cjs/storage/adapter/InMemoryStore.js +4 -1
  18. package/dist/cjs/storage/adapter/InMemoryStore.js.map +1 -1
  19. package/dist/cjs/storage/adapter/IndexedDBAdapter.js +21 -23
  20. package/dist/cjs/storage/adapter/IndexedDBAdapter.js.map +1 -1
  21. package/dist/cjs/storage/adapter/StorageAdapterBase.js +7 -7
  22. package/dist/cjs/storage/adapter/StorageAdapterBase.js.map +1 -1
  23. package/dist/cjs/storage/adapter/getDefaultAdapter/index.js +4 -1
  24. package/dist/cjs/storage/adapter/getDefaultAdapter/index.js.map +1 -1
  25. package/dist/cjs/storage/adapter/getDefaultAdapter/index.native.js +1 -0
  26. package/dist/cjs/storage/adapter/getDefaultAdapter/index.native.js.map +1 -1
  27. package/dist/cjs/storage/relationship.js +1 -0
  28. package/dist/cjs/storage/relationship.js.map +1 -1
  29. package/dist/cjs/storage/storage.js +14 -14
  30. package/dist/cjs/storage/storage.js.map +1 -1
  31. package/dist/cjs/sync/datastoreConnectivity.js +0 -3
  32. package/dist/cjs/sync/datastoreConnectivity.js.map +1 -1
  33. package/dist/cjs/sync/index.js +47 -43
  34. package/dist/cjs/sync/index.js.map +1 -1
  35. package/dist/cjs/sync/merger.js +1 -1
  36. package/dist/cjs/sync/merger.js.map +1 -1
  37. package/dist/cjs/sync/outbox.js +19 -17
  38. package/dist/cjs/sync/outbox.js.map +1 -1
  39. package/dist/cjs/sync/processors/errorMaps.js.map +1 -1
  40. package/dist/cjs/sync/processors/mutation.js +31 -28
  41. package/dist/cjs/sync/processors/mutation.js.map +1 -1
  42. package/dist/cjs/sync/processors/subscription.js +21 -12
  43. package/dist/cjs/sync/processors/subscription.js.map +1 -1
  44. package/dist/cjs/sync/processors/sync.js +25 -21
  45. package/dist/cjs/sync/processors/sync.js.map +1 -1
  46. package/dist/cjs/sync/utils.js +20 -21
  47. package/dist/cjs/sync/utils.js.map +1 -1
  48. package/dist/cjs/types.js +1 -0
  49. package/dist/cjs/types.js.map +1 -1
  50. package/dist/cjs/util.js +46 -25
  51. package/dist/cjs/util.js.map +1 -1
  52. package/dist/esm/authModeStrategies/multiAuthStrategy.d.ts +1 -1
  53. package/dist/esm/authModeStrategies/multiAuthStrategy.mjs +1 -1
  54. package/dist/esm/authModeStrategies/multiAuthStrategy.mjs.map +1 -1
  55. package/dist/esm/datastore/datastore.d.ts +4 -6
  56. package/dist/esm/datastore/datastore.mjs +42 -34
  57. package/dist/esm/datastore/datastore.mjs.map +1 -1
  58. package/dist/esm/index.d.ts +1 -1
  59. package/dist/esm/index.mjs +2 -2
  60. package/dist/esm/index.mjs.map +1 -1
  61. package/dist/esm/predicates/index.mjs +1 -0
  62. package/dist/esm/predicates/index.mjs.map +1 -1
  63. package/dist/esm/predicates/next.d.ts +7 -7
  64. package/dist/esm/predicates/next.mjs +13 -12
  65. package/dist/esm/predicates/next.mjs.map +1 -1
  66. package/dist/esm/predicates/sort.d.ts +1 -1
  67. package/dist/esm/predicates/sort.mjs +2 -2
  68. package/dist/esm/predicates/sort.mjs.map +1 -1
  69. package/dist/esm/storage/adapter/AsyncStorageAdapter.d.ts +1 -1
  70. package/dist/esm/storage/adapter/AsyncStorageAdapter.mjs +21 -18
  71. package/dist/esm/storage/adapter/AsyncStorageAdapter.mjs.map +1 -1
  72. package/dist/esm/storage/adapter/AsyncStorageDatabase.mjs +10 -9
  73. package/dist/esm/storage/adapter/AsyncStorageDatabase.mjs.map +1 -1
  74. package/dist/esm/storage/adapter/InMemoryStore.mjs +4 -1
  75. package/dist/esm/storage/adapter/InMemoryStore.mjs.map +1 -1
  76. package/dist/esm/storage/adapter/IndexedDBAdapter.mjs +21 -23
  77. package/dist/esm/storage/adapter/IndexedDBAdapter.mjs.map +1 -1
  78. package/dist/esm/storage/adapter/StorageAdapterBase.d.ts +2 -2
  79. package/dist/esm/storage/adapter/StorageAdapterBase.mjs +7 -7
  80. package/dist/esm/storage/adapter/StorageAdapterBase.mjs.map +1 -1
  81. package/dist/esm/storage/adapter/getDefaultAdapter/index.mjs +3 -1
  82. package/dist/esm/storage/adapter/getDefaultAdapter/index.mjs.map +1 -1
  83. package/dist/esm/storage/adapter/getDefaultAdapter/index.native.mjs +1 -0
  84. package/dist/esm/storage/adapter/getDefaultAdapter/index.native.mjs.map +1 -1
  85. package/dist/esm/storage/adapter/index.d.ts +1 -1
  86. package/dist/esm/storage/relationship.mjs +1 -0
  87. package/dist/esm/storage/relationship.mjs.map +1 -1
  88. package/dist/esm/storage/storage.d.ts +11 -11
  89. package/dist/esm/storage/storage.mjs +10 -10
  90. package/dist/esm/storage/storage.mjs.map +1 -1
  91. package/dist/esm/sync/datastoreConnectivity.d.ts +2 -2
  92. package/dist/esm/sync/datastoreConnectivity.mjs +0 -3
  93. package/dist/esm/sync/datastoreConnectivity.mjs.map +1 -1
  94. package/dist/esm/sync/index.d.ts +3 -3
  95. package/dist/esm/sync/index.mjs +47 -43
  96. package/dist/esm/sync/index.mjs.map +1 -1
  97. package/dist/esm/sync/merger.d.ts +1 -1
  98. package/dist/esm/sync/merger.mjs +1 -1
  99. package/dist/esm/sync/merger.mjs.map +1 -1
  100. package/dist/esm/sync/outbox.d.ts +4 -4
  101. package/dist/esm/sync/outbox.mjs +19 -17
  102. package/dist/esm/sync/outbox.mjs.map +1 -1
  103. package/dist/esm/sync/processors/errorMaps.mjs.map +1 -1
  104. package/dist/esm/sync/processors/mutation.d.ts +5 -5
  105. package/dist/esm/sync/processors/mutation.mjs +31 -28
  106. package/dist/esm/sync/processors/mutation.mjs.map +1 -1
  107. package/dist/esm/sync/processors/subscription.d.ts +1 -1
  108. package/dist/esm/sync/processors/subscription.mjs +21 -12
  109. package/dist/esm/sync/processors/subscription.mjs.map +1 -1
  110. package/dist/esm/sync/processors/sync.d.ts +3 -3
  111. package/dist/esm/sync/processors/sync.mjs +13 -9
  112. package/dist/esm/sync/processors/sync.mjs.map +1 -1
  113. package/dist/esm/sync/utils.d.ts +11 -13
  114. package/dist/esm/sync/utils.mjs +20 -21
  115. package/dist/esm/sync/utils.mjs.map +1 -1
  116. package/dist/esm/types.d.ts +121 -131
  117. package/dist/esm/types.mjs +3 -2
  118. package/dist/esm/types.mjs.map +1 -1
  119. package/dist/esm/util.d.ts +5 -5
  120. package/dist/esm/util.mjs +46 -25
  121. package/dist/esm/util.mjs.map +1 -1
  122. package/package.json +74 -73
  123. package/src/authModeStrategies/multiAuthStrategy.ts +8 -4
  124. package/src/datastore/datastore.ts +145 -123
  125. package/src/index.ts +10 -8
  126. package/src/predicates/index.ts +10 -2
  127. package/src/predicates/next.ts +39 -28
  128. package/src/predicates/sort.ts +23 -26
  129. package/src/storage/adapter/AsyncStorageAdapter.ts +43 -25
  130. package/src/storage/adapter/AsyncStorageDatabase.ts +18 -10
  131. package/src/storage/adapter/InMemoryStore.ts +5 -1
  132. package/src/storage/adapter/IndexedDBAdapter.ts +50 -37
  133. package/src/storage/adapter/StorageAdapterBase.ts +24 -18
  134. package/src/storage/adapter/getDefaultAdapter/index.native.ts +1 -0
  135. package/src/storage/adapter/getDefaultAdapter/index.ts +4 -1
  136. package/src/storage/adapter/index.ts +2 -2
  137. package/src/storage/relationship.ts +5 -1
  138. package/src/storage/storage.ts +38 -30
  139. package/src/sync/datastoreConnectivity.ts +4 -6
  140. package/src/sync/index.ts +228 -230
  141. package/src/sync/merger.ts +4 -3
  142. package/src/sync/outbox.ts +26 -24
  143. package/src/sync/processors/errorMaps.ts +5 -0
  144. package/src/sync/processors/mutation.ts +80 -72
  145. package/src/sync/processors/subscription.ts +69 -53
  146. package/src/sync/processors/sync.ts +49 -37
  147. package/src/sync/utils.ts +60 -41
  148. package/src/types.ts +165 -165
  149. package/src/util.ts +89 -53
@@ -1,14 +1,17 @@
1
- import AsyncStorageDatabase from './AsyncStorageDatabase.mjs';
2
1
  import { OpType, QueryOne } from '../../types.mjs';
3
2
  import { getIndexKeys, traverseModel, keysEqual, DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR, validatePredicate, inMemoryPagination, getStorename } from '../../util.mjs';
3
+ import AsyncStorageDatabase from './AsyncStorageDatabase.mjs';
4
4
  import { StorageAdapterBase } from './StorageAdapterBase.mjs';
5
5
 
6
6
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
7
7
  // SPDX-License-Identifier: Apache-2.0
8
8
  class AsyncStorageAdapter extends StorageAdapterBase {
9
- // no-ops for this adapter
10
- async preSetUpChecks() { }
11
- async preOpCheck() { }
9
+ async preSetUpChecks() {
10
+ // no-ops for AsyncStorageAdapter
11
+ }
12
+ async preOpCheck() {
13
+ // no-ops for AsyncStorageAdapter
14
+ }
12
15
  /**
13
16
  * Open AsyncStorage database
14
17
  * Create new DB if one doesn't exist
@@ -40,17 +43,17 @@ class AsyncStorageAdapter extends StorageAdapterBase {
40
43
  const model = this.modelInstanceCreator(modelConstructor, item);
41
44
  const connectedModels = traverseModel(modelName, model, this.schema.namespaces[namespaceName], this.modelInstanceCreator, this.getModelConstructorByModelName);
42
45
  const keyValuesPath = this.getIndexKeyValuesPath(model);
43
- const { instance } = connectedModels.find(({ instance }) => {
44
- const instanceKeyValuesPath = this.getIndexKeyValuesPath(instance);
46
+ const { instance } = connectedModels.find(({ instance: connectedModelInstance }) => {
47
+ const instanceKeyValuesPath = this.getIndexKeyValuesPath(connectedModelInstance);
45
48
  return keysEqual([instanceKeyValuesPath], [keyValuesPath]);
46
49
  });
47
50
  batch.push(instance);
48
51
  }
49
- return await this.db.batchSave(storeName, batch, keys);
52
+ return this.db.batchSave(storeName, batch, keys);
50
53
  }
51
54
  async _get(storeName, keyArr) {
52
55
  const itemKeyValuesPath = keyArr.join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);
53
- return await this.db.get(itemKeyValuesPath, storeName);
56
+ return (await this.db.get(itemKeyValuesPath, storeName));
54
57
  }
55
58
  async save(model, condition) {
56
59
  const { storeName, connectionStoreNames, modelKeyValues } = this.saveMetadata(model);
@@ -58,13 +61,13 @@ class AsyncStorageAdapter extends StorageAdapterBase {
58
61
  this.validateSaveCondition(condition, fromDB);
59
62
  const result = [];
60
63
  for await (const resItem of connectionStoreNames) {
61
- const { storeName, item, instance, keys } = resItem;
64
+ const { storeName: storeNameForRestItem, item, instance, keys } = resItem;
62
65
  const itemKeyValues = keys.map(key => item[key]);
63
- const fromDB = await this._get(storeName, itemKeyValues);
64
- const opType = fromDB ? OpType.UPDATE : OpType.INSERT;
66
+ const fromDBForRestItem = (await this._get(storeNameForRestItem, itemKeyValues));
67
+ const opType = fromDBForRestItem ? OpType.UPDATE : OpType.INSERT;
65
68
  if (keysEqual(itemKeyValues, modelKeyValues) ||
66
69
  opType === OpType.INSERT) {
67
- await this.db.save(item, storeName, keys, itemKeyValues.join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR));
70
+ await this.db.save(item, storeNameForRestItem, keys, itemKeyValues.join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR));
68
71
  result.push([instance, opType]);
69
72
  }
70
73
  }
@@ -88,17 +91,17 @@ class AsyncStorageAdapter extends StorageAdapterBase {
88
91
  }
89
92
  return this.getAll(storeName);
90
93
  })());
91
- return await this.load(namespaceName, modelConstructor.name, records);
94
+ return this.load(namespaceName, modelConstructor.name, records);
92
95
  }
93
96
  async getByKey(storeName, keyValuePath) {
94
- return await this.db.get(keyValuePath, storeName);
97
+ return (await this.db.get(keyValuePath, storeName));
95
98
  }
96
99
  async getAll(storeName) {
97
- return await this.db.getAll(storeName);
100
+ return this.db.getAll(storeName);
98
101
  }
99
102
  async filterOnPredicate(storeName, predicates) {
100
103
  const { predicates: predicateObjs, type } = predicates;
101
- const all = await this.getAll(storeName);
104
+ const all = (await this.getAll(storeName));
102
105
  const filtered = predicateObjs
103
106
  ? all.filter(m => validatePredicate(m, type, predicateObjs))
104
107
  : all;
@@ -109,7 +112,7 @@ class AsyncStorageAdapter extends StorageAdapterBase {
109
112
  }
110
113
  async queryOne(modelConstructor, firstOrLast = QueryOne.FIRST) {
111
114
  const storeName = this.getStorenameForModel(modelConstructor);
112
- const result = await this.db.getOne(firstOrLast, storeName);
115
+ const result = (await this.db.getOne(firstOrLast, storeName));
113
116
  return result && this.modelInstanceCreator(modelConstructor, result);
114
117
  }
115
118
  async deleteItem(deleteQueue) {
@@ -125,7 +128,7 @@ class AsyncStorageAdapter extends StorageAdapterBase {
125
128
  }
126
129
  }
127
130
  }
128
- //#region platform-specific helper methods
131
+ // #region platform-specific helper methods
129
132
  /**
130
133
  * Retrieves concatenated primary key values from a model
131
134
  *
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncStorageAdapter.mjs","sources":["../../../../src/storage/adapter/AsyncStorageAdapter.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport AsyncStorageDatabase from './AsyncStorageDatabase';\nimport { OpType, QueryOne, } from '../../types';\nimport { DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR, traverseModel, validatePredicate, inMemoryPagination, keysEqual, getStorename, getIndexKeys, } from '../../util';\nimport { StorageAdapterBase } from './StorageAdapterBase';\nexport class AsyncStorageAdapter extends StorageAdapterBase {\n // no-ops for this adapter\n async preSetUpChecks() { }\n async preOpCheck() { }\n /**\n * Open AsyncStorage database\n * Create new DB if one doesn't exist\n *\n * Called by `StorageAdapterBase.setUp()`\n *\n * @returns AsyncStorageDatabase instance\n */\n async initDb() {\n const db = new AsyncStorageDatabase();\n await db.init();\n return db;\n }\n async clear() {\n await this.db.clear();\n this.db = undefined;\n this.initPromise = undefined;\n }\n async batchSave(modelConstructor, items) {\n if (items.length === 0) {\n return [];\n }\n const modelName = modelConstructor.name;\n const namespaceName = this.namespaceResolver(modelConstructor);\n const storeName = getStorename(namespaceName, modelName);\n const keys = getIndexKeys(this.schema.namespaces[namespaceName], modelName);\n const batch = [];\n for (const item of items) {\n const model = this.modelInstanceCreator(modelConstructor, item);\n const connectedModels = traverseModel(modelName, model, this.schema.namespaces[namespaceName], this.modelInstanceCreator, this.getModelConstructorByModelName);\n const keyValuesPath = this.getIndexKeyValuesPath(model);\n const { instance } = connectedModels.find(({ instance }) => {\n const instanceKeyValuesPath = this.getIndexKeyValuesPath(instance);\n return keysEqual([instanceKeyValuesPath], [keyValuesPath]);\n });\n batch.push(instance);\n }\n return await this.db.batchSave(storeName, batch, keys);\n }\n async _get(storeName, keyArr) {\n const itemKeyValuesPath = keyArr.join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n return await this.db.get(itemKeyValuesPath, storeName);\n }\n async save(model, condition) {\n const { storeName, connectionStoreNames, modelKeyValues } = this.saveMetadata(model);\n const fromDB = await this._get(storeName, modelKeyValues);\n this.validateSaveCondition(condition, fromDB);\n const result = [];\n for await (const resItem of connectionStoreNames) {\n const { storeName, item, instance, keys } = resItem;\n const itemKeyValues = keys.map(key => item[key]);\n const fromDB = await this._get(storeName, itemKeyValues);\n const opType = fromDB ? OpType.UPDATE : OpType.INSERT;\n if (keysEqual(itemKeyValues, modelKeyValues) ||\n opType === OpType.INSERT) {\n await this.db.save(item, storeName, keys, itemKeyValues.join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR));\n result.push([instance, opType]);\n }\n }\n return result;\n }\n async query(modelConstructor, predicate, pagination) {\n const { storeName, namespaceName, queryByKey, predicates, hasSort, hasPagination, } = this.queryMetadata(modelConstructor, predicate, pagination);\n const records = (await (async () => {\n if (queryByKey) {\n const keyValues = queryByKey.join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n const record = await this.getByKey(storeName, keyValues);\n return record ? [record] : [];\n }\n if (predicates) {\n const filtered = await this.filterOnPredicate(storeName, predicates);\n return this.inMemoryPagination(filtered, pagination);\n }\n if (hasSort || hasPagination) {\n const all = await this.getAll(storeName);\n return this.inMemoryPagination(all, pagination);\n }\n return this.getAll(storeName);\n })());\n return await this.load(namespaceName, modelConstructor.name, records);\n }\n async getByKey(storeName, keyValuePath) {\n return await this.db.get(keyValuePath, storeName);\n }\n async getAll(storeName) {\n return await this.db.getAll(storeName);\n }\n async filterOnPredicate(storeName, predicates) {\n const { predicates: predicateObjs, type } = predicates;\n const all = await this.getAll(storeName);\n const filtered = predicateObjs\n ? all.filter(m => validatePredicate(m, type, predicateObjs))\n : all;\n return filtered;\n }\n inMemoryPagination(records, pagination) {\n return inMemoryPagination(records, pagination);\n }\n async queryOne(modelConstructor, firstOrLast = QueryOne.FIRST) {\n const storeName = this.getStorenameForModel(modelConstructor);\n const result = await this.db.getOne(firstOrLast, storeName);\n return result && this.modelInstanceCreator(modelConstructor, result);\n }\n async deleteItem(deleteQueue) {\n for await (const deleteItem of deleteQueue) {\n const { storeName, items } = deleteItem;\n for await (const item of items) {\n if (item) {\n if (typeof item === 'object') {\n const keyValuesPath = this.getIndexKeyValuesPath(item);\n await this.db.delete(keyValuesPath, storeName);\n }\n }\n }\n }\n }\n //#region platform-specific helper methods\n /**\n * Retrieves concatenated primary key values from a model\n *\n * @param model\n * @returns\n */\n getIndexKeyValuesPath(model) {\n return this.getIndexKeyValuesFromModel(model).join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n }\n}\nexport default new AsyncStorageAdapter();\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AsyncStorageAdapter.mjs","sources":["../../../../src/storage/adapter/AsyncStorageAdapter.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { OpType, QueryOne, } from '../../types';\nimport { DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR, getIndexKeys, getStorename, inMemoryPagination, keysEqual, traverseModel, validatePredicate, } from '../../util';\nimport AsyncStorageDatabase from './AsyncStorageDatabase';\nimport { StorageAdapterBase } from './StorageAdapterBase';\nexport class AsyncStorageAdapter extends StorageAdapterBase {\n async preSetUpChecks() {\n // no-ops for AsyncStorageAdapter\n }\n async preOpCheck() {\n // no-ops for AsyncStorageAdapter\n }\n /**\n * Open AsyncStorage database\n * Create new DB if one doesn't exist\n *\n * Called by `StorageAdapterBase.setUp()`\n *\n * @returns AsyncStorageDatabase instance\n */\n async initDb() {\n const db = new AsyncStorageDatabase();\n await db.init();\n return db;\n }\n async clear() {\n await this.db.clear();\n this.db = undefined;\n this.initPromise = undefined;\n }\n async batchSave(modelConstructor, items) {\n if (items.length === 0) {\n return [];\n }\n const modelName = modelConstructor.name;\n const namespaceName = this.namespaceResolver(modelConstructor);\n const storeName = getStorename(namespaceName, modelName);\n const keys = getIndexKeys(this.schema.namespaces[namespaceName], modelName);\n const batch = [];\n for (const item of items) {\n const model = this.modelInstanceCreator(modelConstructor, item);\n const connectedModels = traverseModel(modelName, model, this.schema.namespaces[namespaceName], this.modelInstanceCreator, this.getModelConstructorByModelName);\n const keyValuesPath = this.getIndexKeyValuesPath(model);\n const { instance } = connectedModels.find(({ instance: connectedModelInstance }) => {\n const instanceKeyValuesPath = this.getIndexKeyValuesPath(connectedModelInstance);\n return keysEqual([instanceKeyValuesPath], [keyValuesPath]);\n });\n batch.push(instance);\n }\n return this.db.batchSave(storeName, batch, keys);\n }\n async _get(storeName, keyArr) {\n const itemKeyValuesPath = keyArr.join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n return (await this.db.get(itemKeyValuesPath, storeName));\n }\n async save(model, condition) {\n const { storeName, connectionStoreNames, modelKeyValues } = this.saveMetadata(model);\n const fromDB = await this._get(storeName, modelKeyValues);\n this.validateSaveCondition(condition, fromDB);\n const result = [];\n for await (const resItem of connectionStoreNames) {\n const { storeName: storeNameForRestItem, item, instance, keys } = resItem;\n const itemKeyValues = keys.map(key => item[key]);\n const fromDBForRestItem = (await this._get(storeNameForRestItem, itemKeyValues));\n const opType = fromDBForRestItem ? OpType.UPDATE : OpType.INSERT;\n if (keysEqual(itemKeyValues, modelKeyValues) ||\n opType === OpType.INSERT) {\n await this.db.save(item, storeNameForRestItem, keys, itemKeyValues.join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR));\n result.push([instance, opType]);\n }\n }\n return result;\n }\n async query(modelConstructor, predicate, pagination) {\n const { storeName, namespaceName, queryByKey, predicates, hasSort, hasPagination, } = this.queryMetadata(modelConstructor, predicate, pagination);\n const records = (await (async () => {\n if (queryByKey) {\n const keyValues = queryByKey.join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n const record = await this.getByKey(storeName, keyValues);\n return record ? [record] : [];\n }\n if (predicates) {\n const filtered = await this.filterOnPredicate(storeName, predicates);\n return this.inMemoryPagination(filtered, pagination);\n }\n if (hasSort || hasPagination) {\n const all = await this.getAll(storeName);\n return this.inMemoryPagination(all, pagination);\n }\n return this.getAll(storeName);\n })());\n return this.load(namespaceName, modelConstructor.name, records);\n }\n async getByKey(storeName, keyValuePath) {\n return (await this.db.get(keyValuePath, storeName));\n }\n async getAll(storeName) {\n return this.db.getAll(storeName);\n }\n async filterOnPredicate(storeName, predicates) {\n const { predicates: predicateObjs, type } = predicates;\n const all = (await this.getAll(storeName));\n const filtered = predicateObjs\n ? all.filter(m => validatePredicate(m, type, predicateObjs))\n : all;\n return filtered;\n }\n inMemoryPagination(records, pagination) {\n return inMemoryPagination(records, pagination);\n }\n async queryOne(modelConstructor, firstOrLast = QueryOne.FIRST) {\n const storeName = this.getStorenameForModel(modelConstructor);\n const result = (await this.db.getOne(firstOrLast, storeName));\n return result && this.modelInstanceCreator(modelConstructor, result);\n }\n async deleteItem(deleteQueue) {\n for await (const deleteItem of deleteQueue) {\n const { storeName, items } = deleteItem;\n for await (const item of items) {\n if (item) {\n if (typeof item === 'object') {\n const keyValuesPath = this.getIndexKeyValuesPath(item);\n await this.db.delete(keyValuesPath, storeName);\n }\n }\n }\n }\n }\n // #region platform-specific helper methods\n /**\n * Retrieves concatenated primary key values from a model\n *\n * @param model\n * @returns\n */\n getIndexKeyValuesPath(model) {\n return this.getIndexKeyValuesFromModel(model).join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n }\n}\nexport default new AsyncStorageAdapter();\n"],"names":[],"mappings":"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"}
@@ -47,10 +47,10 @@ class AsyncStorageDatabase {
47
47
  let ulid;
48
48
  if (id === undefined) {
49
49
  // It is an old entry (without ulid). Need to migrate to new key format
50
- const id = ulidOrId;
50
+ const resolvedId = ulidOrId;
51
51
  const newUlid = this.getMonotonicFactory(storeName)();
52
- const oldKey = this.getLegacyKeyForItem(storeName, id);
53
- const newKey = this.getKeyForItem(storeName, id, newUlid);
52
+ const oldKey = this.getLegacyKeyForItem(storeName, resolvedId);
53
+ const newKey = this.getKeyForItem(storeName, resolvedId, newUlid);
54
54
  const item = await this.storage.getItem(oldKey);
55
55
  await this.storage.setItem(newKey, item);
56
56
  await this.storage.removeItem(oldKey);
@@ -189,16 +189,17 @@ class AsyncStorageDatabase {
189
189
  const collection = this.getCollectionIndex(storeName);
190
190
  const [itemId, ulid] = firstOrLast === QueryOne.FIRST
191
191
  ? (() => {
192
- let id, ulid;
193
- for ([id, ulid] of collection)
192
+ let resolvedId, resolvedUlid;
193
+ // eslint-disable-next-line no-unreachable-loop
194
+ for ([resolvedId, resolvedUlid] of collection)
194
195
  break; // Get first element of the set
195
- return [id, ulid];
196
+ return [resolvedId, resolvedUlid];
196
197
  })()
197
198
  : (() => {
198
- let id, ulid;
199
- for ([id, ulid] of collection)
199
+ let resolvedId, resolvedUlid;
200
+ for ([resolvedId, resolvedUlid] of collection)
200
201
  ; // Get last element of the set
201
- return [id, ulid];
202
+ return [resolvedId, resolvedUlid];
202
203
  })();
203
204
  const itemKey = this.getKeyForItem(storeName, itemId, ulid);
204
205
  const itemString = itemKey && (await this.storage.getItem(itemKey));
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncStorageDatabase.mjs","sources":["../../../../src/storage/adapter/AsyncStorageDatabase.ts"],"sourcesContent":["import { OpType, QueryOne, } from '../../types';\nimport { DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR, indexNameFromKeys, monotonicUlidFactory, } from '../../util';\nimport { createInMemoryStore } from './InMemoryStore';\nconst DB_NAME = '@AmplifyDatastore';\nconst COLLECTION = 'Collection';\nconst DATA = 'Data';\nconst monotonicFactoriesMap = new Map();\nclass AsyncStorageDatabase {\n constructor() {\n /**\n * Maps storeNames to a map of ulid->id\n */\n this._collectionInMemoryIndex = new Map();\n this.storage = createInMemoryStore();\n }\n /**\n * Collection index is map of stores (i.e. sync, metadata, mutation event, and data)\n * @param storeName {string} - Name of the store\n * @returns Map of ulid->id\n */\n getCollectionIndex(storeName) {\n if (!this._collectionInMemoryIndex.has(storeName)) {\n this._collectionInMemoryIndex.set(storeName, new Map());\n }\n return this._collectionInMemoryIndex.get(storeName);\n }\n /**\n * Return ULID for store if it exists, otherwise create a new one\n * @param storeName {string} - Name of the store\n * @returns ulid\n */\n getMonotonicFactory(storeName) {\n if (!monotonicFactoriesMap.has(storeName)) {\n monotonicFactoriesMap.set(storeName, monotonicUlidFactory());\n }\n return monotonicFactoriesMap.get(storeName);\n }\n async init() {\n this._collectionInMemoryIndex.clear();\n const allKeys = await this.storage.getAllKeys();\n const keysForCollectionEntries = [];\n for (const key of allKeys) {\n const [dbName, storeName, recordType, ulidOrId, id] = key.split('::');\n if (dbName === DB_NAME) {\n if (recordType === DATA) {\n let ulid;\n if (id === undefined) {\n // It is an old entry (without ulid). Need to migrate to new key format\n const id = ulidOrId;\n const newUlid = this.getMonotonicFactory(storeName)();\n const oldKey = this.getLegacyKeyForItem(storeName, id);\n const newKey = this.getKeyForItem(storeName, id, newUlid);\n const item = await this.storage.getItem(oldKey);\n await this.storage.setItem(newKey, item);\n await this.storage.removeItem(oldKey);\n ulid = newUlid;\n }\n else {\n ulid = ulidOrId;\n }\n this.getCollectionIndex(storeName).set(id, ulid);\n }\n else if (recordType === COLLECTION) {\n keysForCollectionEntries.push(key);\n }\n }\n }\n if (keysForCollectionEntries.length > 0) {\n await this.storage.multiRemove(keysForCollectionEntries);\n }\n }\n async save(item, storeName, keys, keyValuesPath) {\n const idxName = indexNameFromKeys(keys);\n const ulid = this.getCollectionIndex(storeName)?.get(idxName) ||\n this.getMonotonicFactory(storeName)();\n // Retrieve db key for item\n const itemKey = this.getKeyForItem(storeName, keyValuesPath, ulid);\n // Set key in collection index\n this.getCollectionIndex(storeName)?.set(keyValuesPath, ulid);\n // Save item in db\n await this.storage.setItem(itemKey, JSON.stringify(item));\n }\n async batchSave(storeName, items, keys) {\n if (items.length === 0) {\n return [];\n }\n const result = [];\n const collection = this.getCollectionIndex(storeName);\n const keysToDelete = new Set();\n const keysToSave = new Set();\n const allItemsKeys = [];\n const itemsMap = {};\n /* Populate allItemKeys, keysToDelete, and keysToSave */\n for (const item of items) {\n // Extract keys from concatenated key path, map to item values\n const keyValues = keys.map(field => item[field]);\n const { _deleted } = item;\n // If id is in the store, retrieve, otherwise generate new ULID\n const ulid = collection.get(keyValues.join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR)) ||\n this.getMonotonicFactory(storeName)();\n // Generate the \"longer key\" for the item\n const key = this.getKeyForItem(storeName, keyValues.join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR), ulid);\n allItemsKeys.push(key);\n itemsMap[key] = { ulid, model: item };\n if (_deleted) {\n keysToDelete.add(key);\n }\n else {\n keysToSave.add(key);\n }\n }\n const existingRecordsMap = await this.storage.multiGet(allItemsKeys);\n const existingRecordsKeys = existingRecordsMap\n .filter(([, v]) => !!v)\n .reduce((set, [k]) => set.add(k), new Set());\n // Delete\n await new Promise((resolve, reject) => {\n if (keysToDelete.size === 0) {\n resolve();\n return;\n }\n const keysToDeleteArray = Array.from(keysToDelete);\n keysToDeleteArray.forEach(key => {\n // key: full db key\n // keys: PK and/or SK keys\n const primaryKeyValues = keys\n .map(field => itemsMap[key].model[field])\n .join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n collection.delete(primaryKeyValues);\n });\n this.storage.multiRemove(keysToDeleteArray, (errors) => {\n if (errors && errors.length > 0) {\n reject(errors);\n }\n else {\n resolve();\n }\n });\n });\n // Save\n await new Promise((resolve, reject) => {\n if (keysToSave.size === 0) {\n resolve();\n return;\n }\n const entriesToSet = Array.from(keysToSave).map(key => [\n key,\n JSON.stringify(itemsMap[key].model),\n ]);\n keysToSave.forEach(key => {\n const { model, ulid } = itemsMap[key];\n // Retrieve values from model, use as key for collection index\n const keyValues = keys\n .map(field => model[field])\n .join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n collection.set(keyValues, ulid);\n });\n this.storage.multiSet(entriesToSet, (errors) => {\n if (errors && errors.length > 0) {\n reject(errors);\n }\n else {\n resolve();\n }\n });\n });\n for (const key of allItemsKeys) {\n if (keysToDelete.has(key) && existingRecordsKeys.has(key)) {\n result.push([itemsMap[key].model, OpType.DELETE]);\n }\n else if (keysToSave.has(key)) {\n result.push([\n itemsMap[key].model,\n existingRecordsKeys.has(key) ? OpType.UPDATE : OpType.INSERT,\n ]);\n }\n }\n return result;\n }\n async get(keyValuePath, storeName) {\n const ulid = this.getCollectionIndex(storeName).get(keyValuePath);\n const itemKey = this.getKeyForItem(storeName, keyValuePath, ulid);\n const recordAsString = await this.storage.getItem(itemKey);\n const record = recordAsString && JSON.parse(recordAsString);\n return record;\n }\n async getOne(firstOrLast, storeName) {\n const collection = this.getCollectionIndex(storeName);\n const [itemId, ulid] = firstOrLast === QueryOne.FIRST\n ? (() => {\n let id, ulid;\n for ([id, ulid] of collection)\n break; // Get first element of the set\n return [id, ulid];\n })()\n : (() => {\n let id, ulid;\n for ([id, ulid] of collection)\n ; // Get last element of the set\n return [id, ulid];\n })();\n const itemKey = this.getKeyForItem(storeName, itemId, ulid);\n const itemString = itemKey && (await this.storage.getItem(itemKey));\n const result = itemString ? JSON.parse(itemString) || undefined : undefined;\n return result;\n }\n /**\n * This function gets all the records stored in async storage for a particular storeName\n * It then loads all the records for that filtered set of keys using multiGet()\n */\n async getAll(storeName, pagination) {\n const collection = this.getCollectionIndex(storeName);\n const { page = 0, limit = 0 } = pagination || {};\n const start = Math.max(0, page * limit) || 0;\n const end = limit > 0 ? start + limit : undefined;\n const keysForStore = [];\n let count = 0;\n for (const [id, ulid] of collection) {\n count++;\n if (count <= start) {\n continue;\n }\n keysForStore.push(this.getKeyForItem(storeName, id, ulid));\n if (count === end) {\n break;\n }\n }\n const storeRecordStrings = await this.storage.multiGet(keysForStore);\n const records = storeRecordStrings\n .filter(([, value]) => value)\n .map(([, value]) => JSON.parse(value));\n return records;\n }\n async delete(key, storeName) {\n const ulid = this.getCollectionIndex(storeName).get(key);\n const itemKey = this.getKeyForItem(storeName, key, ulid);\n this.getCollectionIndex(storeName).delete(key);\n await this.storage.removeItem(itemKey);\n }\n /**\n * Clear the AsyncStorage of all DataStore entries\n */\n async clear() {\n const allKeys = await this.storage.getAllKeys();\n const allDataStoreKeys = allKeys.filter(key => key.startsWith(DB_NAME));\n await this.storage.multiRemove(allDataStoreKeys);\n this._collectionInMemoryIndex.clear();\n }\n getKeyForItem(storeName, id, ulid) {\n return `${this.getKeyPrefixForStoreItems(storeName)}::${ulid}::${id}`;\n }\n getLegacyKeyForItem(storeName, id) {\n return `${this.getKeyPrefixForStoreItems(storeName)}::${id}`;\n }\n getKeyPrefixForStoreItems(storeName) {\n return `${DB_NAME}::${storeName}::${DATA}`;\n }\n}\nexport default AsyncStorageDatabase;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AsyncStorageDatabase.mjs","sources":["../../../../src/storage/adapter/AsyncStorageDatabase.ts"],"sourcesContent":["import { OpType, QueryOne, } from '../../types';\nimport { DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR, indexNameFromKeys, monotonicUlidFactory, } from '../../util';\nimport { createInMemoryStore } from './InMemoryStore';\nconst DB_NAME = '@AmplifyDatastore';\nconst COLLECTION = 'Collection';\nconst DATA = 'Data';\nconst monotonicFactoriesMap = new Map();\nclass AsyncStorageDatabase {\n constructor() {\n /**\n * Maps storeNames to a map of ulid->id\n */\n this._collectionInMemoryIndex = new Map();\n this.storage = createInMemoryStore();\n }\n /**\n * Collection index is map of stores (i.e. sync, metadata, mutation event, and data)\n * @param storeName {string} - Name of the store\n * @returns Map of ulid->id\n */\n getCollectionIndex(storeName) {\n if (!this._collectionInMemoryIndex.has(storeName)) {\n this._collectionInMemoryIndex.set(storeName, new Map());\n }\n return this._collectionInMemoryIndex.get(storeName);\n }\n /**\n * Return ULID for store if it exists, otherwise create a new one\n * @param storeName {string} - Name of the store\n * @returns ulid\n */\n getMonotonicFactory(storeName) {\n if (!monotonicFactoriesMap.has(storeName)) {\n monotonicFactoriesMap.set(storeName, monotonicUlidFactory());\n }\n return monotonicFactoriesMap.get(storeName);\n }\n async init() {\n this._collectionInMemoryIndex.clear();\n const allKeys = await this.storage.getAllKeys();\n const keysForCollectionEntries = [];\n for (const key of allKeys) {\n const [dbName, storeName, recordType, ulidOrId, id] = key.split('::');\n if (dbName === DB_NAME) {\n if (recordType === DATA) {\n let ulid;\n if (id === undefined) {\n // It is an old entry (without ulid). Need to migrate to new key format\n const resolvedId = ulidOrId;\n const newUlid = this.getMonotonicFactory(storeName)();\n const oldKey = this.getLegacyKeyForItem(storeName, resolvedId);\n const newKey = this.getKeyForItem(storeName, resolvedId, newUlid);\n const item = await this.storage.getItem(oldKey);\n await this.storage.setItem(newKey, item);\n await this.storage.removeItem(oldKey);\n ulid = newUlid;\n }\n else {\n ulid = ulidOrId;\n }\n this.getCollectionIndex(storeName).set(id, ulid);\n }\n else if (recordType === COLLECTION) {\n keysForCollectionEntries.push(key);\n }\n }\n }\n if (keysForCollectionEntries.length > 0) {\n await this.storage.multiRemove(keysForCollectionEntries);\n }\n }\n async save(item, storeName, keys, keyValuesPath) {\n const idxName = indexNameFromKeys(keys);\n const ulid = this.getCollectionIndex(storeName)?.get(idxName) ||\n this.getMonotonicFactory(storeName)();\n // Retrieve db key for item\n const itemKey = this.getKeyForItem(storeName, keyValuesPath, ulid);\n // Set key in collection index\n this.getCollectionIndex(storeName)?.set(keyValuesPath, ulid);\n // Save item in db\n await this.storage.setItem(itemKey, JSON.stringify(item));\n }\n async batchSave(storeName, items, keys) {\n if (items.length === 0) {\n return [];\n }\n const result = [];\n const collection = this.getCollectionIndex(storeName);\n const keysToDelete = new Set();\n const keysToSave = new Set();\n const allItemsKeys = [];\n const itemsMap = {};\n /* Populate allItemKeys, keysToDelete, and keysToSave */\n for (const item of items) {\n // Extract keys from concatenated key path, map to item values\n const keyValues = keys.map(field => item[field]);\n const { _deleted } = item;\n // If id is in the store, retrieve, otherwise generate new ULID\n const ulid = collection.get(keyValues.join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR)) ||\n this.getMonotonicFactory(storeName)();\n // Generate the \"longer key\" for the item\n const key = this.getKeyForItem(storeName, keyValues.join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR), ulid);\n allItemsKeys.push(key);\n itemsMap[key] = { ulid, model: item };\n if (_deleted) {\n keysToDelete.add(key);\n }\n else {\n keysToSave.add(key);\n }\n }\n const existingRecordsMap = await this.storage.multiGet(allItemsKeys);\n const existingRecordsKeys = existingRecordsMap\n .filter(([, v]) => !!v)\n .reduce((set, [k]) => set.add(k), new Set());\n // Delete\n await new Promise((resolve, reject) => {\n if (keysToDelete.size === 0) {\n resolve();\n return;\n }\n const keysToDeleteArray = Array.from(keysToDelete);\n keysToDeleteArray.forEach(key => {\n // key: full db key\n // keys: PK and/or SK keys\n const primaryKeyValues = keys\n .map(field => itemsMap[key].model[field])\n .join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n collection.delete(primaryKeyValues);\n });\n this.storage.multiRemove(keysToDeleteArray, (errors) => {\n if (errors && errors.length > 0) {\n reject(errors);\n }\n else {\n resolve();\n }\n });\n });\n // Save\n await new Promise((resolve, reject) => {\n if (keysToSave.size === 0) {\n resolve();\n return;\n }\n const entriesToSet = Array.from(keysToSave).map(key => [\n key,\n JSON.stringify(itemsMap[key].model),\n ]);\n keysToSave.forEach(key => {\n const { model, ulid } = itemsMap[key];\n // Retrieve values from model, use as key for collection index\n const keyValues = keys\n .map(field => model[field])\n .join(DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n collection.set(keyValues, ulid);\n });\n this.storage.multiSet(entriesToSet, (errors) => {\n if (errors && errors.length > 0) {\n reject(errors);\n }\n else {\n resolve();\n }\n });\n });\n for (const key of allItemsKeys) {\n if (keysToDelete.has(key) && existingRecordsKeys.has(key)) {\n result.push([itemsMap[key].model, OpType.DELETE]);\n }\n else if (keysToSave.has(key)) {\n result.push([\n itemsMap[key].model,\n existingRecordsKeys.has(key) ? OpType.UPDATE : OpType.INSERT,\n ]);\n }\n }\n return result;\n }\n async get(keyValuePath, storeName) {\n const ulid = this.getCollectionIndex(storeName).get(keyValuePath);\n const itemKey = this.getKeyForItem(storeName, keyValuePath, ulid);\n const recordAsString = await this.storage.getItem(itemKey);\n const record = recordAsString && JSON.parse(recordAsString);\n return record;\n }\n async getOne(firstOrLast, storeName) {\n const collection = this.getCollectionIndex(storeName);\n const [itemId, ulid] = firstOrLast === QueryOne.FIRST\n ? (() => {\n let resolvedId, resolvedUlid;\n // eslint-disable-next-line no-unreachable-loop\n for ([resolvedId, resolvedUlid] of collection)\n break; // Get first element of the set\n return [resolvedId, resolvedUlid];\n })()\n : (() => {\n let resolvedId, resolvedUlid;\n for ([resolvedId, resolvedUlid] of collection)\n ; // Get last element of the set\n return [resolvedId, resolvedUlid];\n })();\n const itemKey = this.getKeyForItem(storeName, itemId, ulid);\n const itemString = itemKey && (await this.storage.getItem(itemKey));\n const result = itemString ? JSON.parse(itemString) || undefined : undefined;\n return result;\n }\n /**\n * This function gets all the records stored in async storage for a particular storeName\n * It then loads all the records for that filtered set of keys using multiGet()\n */\n async getAll(storeName, pagination) {\n const collection = this.getCollectionIndex(storeName);\n const { page = 0, limit = 0 } = pagination || {};\n const start = Math.max(0, page * limit) || 0;\n const end = limit > 0 ? start + limit : undefined;\n const keysForStore = [];\n let count = 0;\n for (const [id, ulid] of collection) {\n count++;\n if (count <= start) {\n continue;\n }\n keysForStore.push(this.getKeyForItem(storeName, id, ulid));\n if (count === end) {\n break;\n }\n }\n const storeRecordStrings = await this.storage.multiGet(keysForStore);\n const records = storeRecordStrings\n .filter(([, value]) => value)\n .map(([, value]) => JSON.parse(value));\n return records;\n }\n async delete(key, storeName) {\n const ulid = this.getCollectionIndex(storeName).get(key);\n const itemKey = this.getKeyForItem(storeName, key, ulid);\n this.getCollectionIndex(storeName).delete(key);\n await this.storage.removeItem(itemKey);\n }\n /**\n * Clear the AsyncStorage of all DataStore entries\n */\n async clear() {\n const allKeys = await this.storage.getAllKeys();\n const allDataStoreKeys = allKeys.filter(key => key.startsWith(DB_NAME));\n await this.storage.multiRemove(allDataStoreKeys);\n this._collectionInMemoryIndex.clear();\n }\n getKeyForItem(storeName, id, ulid) {\n return `${this.getKeyPrefixForStoreItems(storeName)}::${ulid}::${id}`;\n }\n getLegacyKeyForItem(storeName, id) {\n return `${this.getKeyPrefixForStoreItems(storeName)}::${id}`;\n }\n getKeyPrefixForStoreItems(storeName) {\n return `${DB_NAME}::${storeName}::${DATA}`;\n }\n}\nexport default AsyncStorageDatabase;\n"],"names":[],"mappings":"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"}
@@ -7,7 +7,10 @@ class InMemoryStore {
7
7
  return Array.from(this.db.keys());
8
8
  };
9
9
  this.multiGet = async (keys) => {
10
- return keys.reduce((res, k) => (res.push([k, this.db.get(k)]), res), []);
10
+ return keys.reduce((res, k) => {
11
+ res.push([k, this.db.get(k)]);
12
+ return res;
13
+ }, []);
11
14
  };
12
15
  this.multiRemove = async (keys, callback) => {
13
16
  keys.forEach(k => this.db.delete(k));
@@ -1 +1 @@
1
- {"version":3,"file":"InMemoryStore.mjs","sources":["../../../../src/storage/adapter/InMemoryStore.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport class InMemoryStore {\n constructor() {\n this.db = new Map();\n this.getAllKeys = async () => {\n return Array.from(this.db.keys());\n };\n this.multiGet = async (keys) => {\n return keys.reduce((res, k) => (res.push([k, this.db.get(k)]), res), []);\n };\n this.multiRemove = async (keys, callback) => {\n keys.forEach(k => this.db.delete(k));\n typeof callback === 'function' && callback();\n };\n this.multiSet = async (entries, callback) => {\n entries.forEach(([key, value]) => {\n this.setItem(key, value);\n });\n typeof callback === 'function' && callback();\n };\n this.setItem = async (key, value) => {\n return this.db.set(key, value);\n };\n this.removeItem = async (key) => {\n return this.db.delete(key);\n };\n this.getItem = async (key) => {\n return this.db.get(key);\n };\n }\n}\nexport function createInMemoryStore() {\n return new InMemoryStore();\n}\n"],"names":[],"mappings":"AAAA;AACA;AACO,MAAM,aAAa,CAAC;AAC3B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5B,QAAQ,IAAI,CAAC,UAAU,GAAG,YAAY;AACtC,YAAY,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,IAAI,KAAK;AACxC,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACrF,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,WAAW,GAAG,OAAO,IAAI,EAAE,QAAQ,KAAK;AACrD,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,YAAY,OAAO,QAAQ,KAAK,UAAU,IAAI,QAAQ,EAAE,CAAC;AACzD,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,OAAO,EAAE,QAAQ,KAAK;AACrD,YAAY,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AAC9C,gBAAgB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACzC,aAAa,CAAC,CAAC;AACf,YAAY,OAAO,QAAQ,KAAK,UAAU,IAAI,QAAQ,EAAE,CAAC;AACzD,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,GAAG,EAAE,KAAK,KAAK;AAC7C,YAAY,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC3C,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,UAAU,GAAG,OAAO,GAAG,KAAK;AACzC,YAAY,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACvC,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,GAAG,KAAK;AACtC,YAAY,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpC,SAAS,CAAC;AACV,KAAK;AACL,CAAC;AACM,SAAS,mBAAmB,GAAG;AACtC,IAAI,OAAO,IAAI,aAAa,EAAE,CAAC;AAC/B;;;;"}
1
+ {"version":3,"file":"InMemoryStore.mjs","sources":["../../../../src/storage/adapter/InMemoryStore.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport class InMemoryStore {\n constructor() {\n this.db = new Map();\n this.getAllKeys = async () => {\n return Array.from(this.db.keys());\n };\n this.multiGet = async (keys) => {\n return keys.reduce((res, k) => {\n res.push([k, this.db.get(k)]);\n return res;\n }, []);\n };\n this.multiRemove = async (keys, callback) => {\n keys.forEach(k => this.db.delete(k));\n typeof callback === 'function' && callback();\n };\n this.multiSet = async (entries, callback) => {\n entries.forEach(([key, value]) => {\n this.setItem(key, value);\n });\n typeof callback === 'function' && callback();\n };\n this.setItem = async (key, value) => {\n return this.db.set(key, value);\n };\n this.removeItem = async (key) => {\n return this.db.delete(key);\n };\n this.getItem = async (key) => {\n return this.db.get(key);\n };\n }\n}\nexport function createInMemoryStore() {\n return new InMemoryStore();\n}\n"],"names":[],"mappings":"AAAA;AACA;AACO,MAAM,aAAa,CAAC;AAC3B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5B,QAAQ,IAAI,CAAC,UAAU,GAAG,YAAY;AACtC,YAAY,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,IAAI,KAAK;AACxC,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;AAC3C,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,gBAAgB,OAAO,GAAG,CAAC;AAC3B,aAAa,EAAE,EAAE,CAAC,CAAC;AACnB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,WAAW,GAAG,OAAO,IAAI,EAAE,QAAQ,KAAK;AACrD,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,YAAY,OAAO,QAAQ,KAAK,UAAU,IAAI,QAAQ,EAAE,CAAC;AACzD,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,OAAO,EAAE,QAAQ,KAAK;AACrD,YAAY,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AAC9C,gBAAgB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACzC,aAAa,CAAC,CAAC;AACf,YAAY,OAAO,QAAQ,KAAK,UAAU,IAAI,QAAQ,EAAE,CAAC;AACzD,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,GAAG,EAAE,KAAK,KAAK;AAC7C,YAAY,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC3C,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,UAAU,GAAG,OAAO,GAAG,KAAK;AACzC,YAAY,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACvC,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,GAAG,KAAK;AACtC,YAAY,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpC,SAAS,CAAC;AACV,KAAK;AACL,CAAC;AACM,SAAS,mBAAmB,GAAG;AACtC,IAAI,OAAO,IAAI,aAAa,EAAE,CAAC;AAC/B;;;;"}
@@ -1,8 +1,8 @@
1
1
  import * as idb from 'idb';
2
+ import { ConsoleLogger } from '@aws-amplify/core';
2
3
  import { OpType, QueryOne, isPredicateGroup, isPredicateObj } from '../../types.mjs';
3
4
  import { getStorename, keysEqual, traverseModel, isPrivateMode, isSafariCompatabilityMode, validatePredicate, inMemoryPagination } from '../../util.mjs';
4
5
  import { StorageAdapterBase } from './StorageAdapterBase.mjs';
5
- import { ConsoleLogger } from '@aws-amplify/core';
6
6
 
7
7
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
8
8
  // SPDX-License-Identifier: Apache-2.0
@@ -49,7 +49,7 @@ class IndexedDBAdapter extends StorageAdapterBase {
49
49
  }
50
50
  return keyArr;
51
51
  };
52
- //#endregion
52
+ // #endregion
53
53
  }
54
54
  // checks are called by StorageAdapterBase class
55
55
  async preSetUpChecks() {
@@ -69,7 +69,7 @@ class IndexedDBAdapter extends StorageAdapterBase {
69
69
  * @returns IDB Database instance
70
70
  */
71
71
  async initDb() {
72
- return await idb.openDB(this.dbName, DB_VERSION, {
72
+ return idb.openDB(this.dbName, DB_VERSION, {
73
73
  upgrade: async (db, oldVersion, newVersion, txn) => {
74
74
  // create new database
75
75
  if (oldVersion === 0) {
@@ -132,7 +132,6 @@ class IndexedDBAdapter extends StorageAdapterBase {
132
132
  txn.abort();
133
133
  throw error;
134
134
  }
135
- return;
136
135
  }
137
136
  },
138
137
  });
@@ -166,17 +165,17 @@ class IndexedDBAdapter extends StorageAdapterBase {
166
165
  this.validateSaveCondition(condition, fromDB);
167
166
  const result = [];
168
167
  for await (const resItem of connectionStoreNames) {
169
- const { storeName, item, instance, keys } = resItem;
170
- const store = tx.objectStore(storeName);
168
+ const { storeName: storeNameForRestItem, item, instance, keys } = resItem;
169
+ const storeForRestItem = tx.objectStore(storeNameForRestItem);
171
170
  const itemKeyValues = keys.map(key => item[key]);
172
- const fromDB = await this._get(store, itemKeyValues);
173
- const opType = fromDB ? OpType.UPDATE : OpType.INSERT;
171
+ const fromDBForRestItem = (await this._get(storeForRestItem, itemKeyValues));
172
+ const opType = fromDBForRestItem ? OpType.UPDATE : OpType.INSERT;
174
173
  if (keysEqual(itemKeyValues, modelKeyValues) ||
175
174
  opType === OpType.INSERT) {
176
- const key = await store
175
+ const key = await storeForRestItem
177
176
  .index('byPk')
178
177
  .getKey(this.canonicalKeyPath(itemKeyValues));
179
- await store.put(item, key);
178
+ await storeForRestItem.put(item, key);
180
179
  result.push([instance, opType]);
181
180
  }
182
181
  }
@@ -215,7 +214,7 @@ class IndexedDBAdapter extends StorageAdapterBase {
215
214
  }
216
215
  return this.getAll(storeName);
217
216
  })());
218
- return await this.load(namespaceName, modelConstructor.name, records);
217
+ return this.load(namespaceName, modelConstructor.name, records);
219
218
  }
220
219
  async queryOne(modelConstructor, firstOrLast = QueryOne.FIRST) {
221
220
  await this.checkPrivate();
@@ -237,7 +236,7 @@ class IndexedDBAdapter extends StorageAdapterBase {
237
236
  const storeName = this.getStorenameForModel(modelConstructor);
238
237
  const result = [];
239
238
  const txn = this.db.transaction(storeName, 'readwrite');
240
- const store = txn.store;
239
+ const { store } = txn;
241
240
  for (const item of items) {
242
241
  const model = this.modelInstanceCreator(modelConstructor, item);
243
242
  const connectedModels = traverseModel(modelName, model, this.schema.namespaces[namespaceName], this.modelInstanceCreator, this.getModelConstructorByModelName);
@@ -246,8 +245,8 @@ class IndexedDBAdapter extends StorageAdapterBase {
246
245
  const index = store.index('byPk');
247
246
  const key = await index.getKey(this.canonicalKeyPath(keyValues));
248
247
  if (!_deleted) {
249
- const { instance } = connectedModels.find(({ instance }) => {
250
- const instanceKeyValues = this.getIndexKeyValuesFromModel(instance);
248
+ const { instance } = connectedModels.find(({ instance: connectedModelInstance }) => {
249
+ const instanceKeyValues = this.getIndexKeyValuesFromModel(connectedModelInstance);
251
250
  return keysEqual(instanceKeyValues, keyValues);
252
251
  });
253
252
  result.push([
@@ -294,13 +293,12 @@ class IndexedDBAdapter extends StorageAdapterBase {
294
293
  }
295
294
  }
296
295
  }
297
- //#region platform-specific helper methods
296
+ // #region platform-specific helper methods
298
297
  async checkPrivate() {
299
- const isPrivate = await isPrivateMode().then(isPrivate => {
300
- return isPrivate;
301
- });
298
+ const isPrivate = await isPrivateMode();
302
299
  if (isPrivate) {
303
300
  logger.error("IndexedDB not supported in this browser's private mode");
301
+ // eslint-disable-next-line prefer-promise-reject-errors
304
302
  return Promise.reject("IndexedDB not supported in this browser's private mode");
305
303
  }
306
304
  else {
@@ -341,10 +339,10 @@ class IndexedDBAdapter extends StorageAdapterBase {
341
339
  return store;
342
340
  }
343
341
  async getByKey(storeName, keyValue) {
344
- return await this._get(storeName, keyValue);
342
+ return (await this._get(storeName, keyValue));
345
343
  }
346
344
  async getAll(storeName) {
347
- return await this.db.getAll(storeName);
345
+ return this.db.getAll(storeName);
348
346
  }
349
347
  /**
350
348
  * Tries to generate an index fetcher for the given predicates. Assumes
@@ -399,7 +397,7 @@ class IndexedDBAdapter extends StorageAdapterBase {
399
397
  while (predicateObjs.length === 1 &&
400
398
  isPredicateGroup(predicateObjs[0]) &&
401
399
  predicateObjs[0].type !== 'not') {
402
- type = predicateObjs[0].type;
400
+ ({ type } = predicateObjs[0]);
403
401
  predicateObjs = predicateObjs[0].predicates;
404
402
  }
405
403
  const fieldPredicates = predicateObjs.filter(p => isPredicateObj(p) && p.operator === 'eq');
@@ -503,7 +501,7 @@ class IndexedDBAdapter extends StorageAdapterBase {
503
501
  // nothing intelligent we can do with `not` groups unless or until we start
504
502
  // smashing comparison operators against indexes -- at which point we could
505
503
  // perform some reversal here.
506
- candidateResults = await this.getAll(storeName);
504
+ candidateResults = (await this.getAll(storeName));
507
505
  }
508
506
  const filtered = predicateObjs
509
507
  ? candidateResults.filter(m => validatePredicate(m, type, predicateObjs))
@@ -537,7 +535,7 @@ class IndexedDBAdapter extends StorageAdapterBase {
537
535
  result = pageResults;
538
536
  }
539
537
  else {
540
- result = await this.db.getAll(storeName);
538
+ result = (await this.db.getAll(storeName));
541
539
  }
542
540
  return result;
543
541
  }