@aws-amplify/datastore 5.0.32 → 5.0.33-s-auth.30d0cd2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/authModeStrategies/multiAuthStrategy.js +1 -1
- package/dist/cjs/authModeStrategies/multiAuthStrategy.js.map +1 -1
- package/dist/cjs/datastore/datastore.js +46 -41
- package/dist/cjs/datastore/datastore.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/predicates/index.js +1 -0
- package/dist/cjs/predicates/index.js.map +1 -1
- package/dist/cjs/predicates/next.js +13 -12
- package/dist/cjs/predicates/next.js.map +1 -1
- package/dist/cjs/predicates/sort.js +2 -2
- package/dist/cjs/predicates/sort.js.map +1 -1
- package/dist/cjs/storage/adapter/AsyncStorageAdapter.js +21 -18
- package/dist/cjs/storage/adapter/AsyncStorageAdapter.js.map +1 -1
- package/dist/cjs/storage/adapter/AsyncStorageDatabase.js +10 -9
- package/dist/cjs/storage/adapter/AsyncStorageDatabase.js.map +1 -1
- package/dist/cjs/storage/adapter/InMemoryStore.js +4 -1
- package/dist/cjs/storage/adapter/InMemoryStore.js.map +1 -1
- package/dist/cjs/storage/adapter/IndexedDBAdapter.js +21 -23
- package/dist/cjs/storage/adapter/IndexedDBAdapter.js.map +1 -1
- package/dist/cjs/storage/adapter/StorageAdapterBase.js +7 -7
- package/dist/cjs/storage/adapter/StorageAdapterBase.js.map +1 -1
- package/dist/cjs/storage/adapter/getDefaultAdapter/index.js +4 -1
- package/dist/cjs/storage/adapter/getDefaultAdapter/index.js.map +1 -1
- package/dist/cjs/storage/adapter/getDefaultAdapter/index.native.js +1 -0
- package/dist/cjs/storage/adapter/getDefaultAdapter/index.native.js.map +1 -1
- package/dist/cjs/storage/relationship.js +1 -0
- package/dist/cjs/storage/relationship.js.map +1 -1
- package/dist/cjs/storage/storage.js +14 -14
- package/dist/cjs/storage/storage.js.map +1 -1
- package/dist/cjs/sync/datastoreConnectivity.js +0 -3
- package/dist/cjs/sync/datastoreConnectivity.js.map +1 -1
- package/dist/cjs/sync/index.js +47 -43
- package/dist/cjs/sync/index.js.map +1 -1
- package/dist/cjs/sync/merger.js +1 -1
- package/dist/cjs/sync/merger.js.map +1 -1
- package/dist/cjs/sync/outbox.js +19 -17
- package/dist/cjs/sync/outbox.js.map +1 -1
- package/dist/cjs/sync/processors/errorMaps.js.map +1 -1
- package/dist/cjs/sync/processors/mutation.js +31 -28
- package/dist/cjs/sync/processors/mutation.js.map +1 -1
- package/dist/cjs/sync/processors/subscription.js +21 -12
- package/dist/cjs/sync/processors/subscription.js.map +1 -1
- package/dist/cjs/sync/processors/sync.js +25 -21
- package/dist/cjs/sync/processors/sync.js.map +1 -1
- package/dist/cjs/sync/utils.js +20 -21
- package/dist/cjs/sync/utils.js.map +1 -1
- package/dist/cjs/types.js +1 -0
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/util.js +46 -25
- package/dist/cjs/util.js.map +1 -1
- package/dist/esm/authModeStrategies/multiAuthStrategy.d.ts +1 -1
- package/dist/esm/authModeStrategies/multiAuthStrategy.mjs +1 -1
- package/dist/esm/authModeStrategies/multiAuthStrategy.mjs.map +1 -1
- package/dist/esm/datastore/datastore.d.ts +4 -6
- package/dist/esm/datastore/datastore.mjs +42 -34
- package/dist/esm/datastore/datastore.mjs.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/predicates/index.mjs +1 -0
- package/dist/esm/predicates/index.mjs.map +1 -1
- package/dist/esm/predicates/next.d.ts +7 -7
- package/dist/esm/predicates/next.mjs +13 -12
- package/dist/esm/predicates/next.mjs.map +1 -1
- package/dist/esm/predicates/sort.d.ts +1 -1
- package/dist/esm/predicates/sort.mjs +2 -2
- package/dist/esm/predicates/sort.mjs.map +1 -1
- package/dist/esm/storage/adapter/AsyncStorageAdapter.d.ts +1 -1
- package/dist/esm/storage/adapter/AsyncStorageAdapter.mjs +21 -18
- package/dist/esm/storage/adapter/AsyncStorageAdapter.mjs.map +1 -1
- package/dist/esm/storage/adapter/AsyncStorageDatabase.mjs +10 -9
- package/dist/esm/storage/adapter/AsyncStorageDatabase.mjs.map +1 -1
- package/dist/esm/storage/adapter/InMemoryStore.mjs +4 -1
- package/dist/esm/storage/adapter/InMemoryStore.mjs.map +1 -1
- package/dist/esm/storage/adapter/IndexedDBAdapter.mjs +21 -23
- package/dist/esm/storage/adapter/IndexedDBAdapter.mjs.map +1 -1
- package/dist/esm/storage/adapter/StorageAdapterBase.d.ts +2 -2
- package/dist/esm/storage/adapter/StorageAdapterBase.mjs +7 -7
- package/dist/esm/storage/adapter/StorageAdapterBase.mjs.map +1 -1
- package/dist/esm/storage/adapter/getDefaultAdapter/index.mjs +3 -1
- package/dist/esm/storage/adapter/getDefaultAdapter/index.mjs.map +1 -1
- package/dist/esm/storage/adapter/getDefaultAdapter/index.native.mjs +1 -0
- package/dist/esm/storage/adapter/getDefaultAdapter/index.native.mjs.map +1 -1
- package/dist/esm/storage/adapter/index.d.ts +1 -1
- package/dist/esm/storage/relationship.mjs +1 -0
- package/dist/esm/storage/relationship.mjs.map +1 -1
- package/dist/esm/storage/storage.d.ts +11 -11
- package/dist/esm/storage/storage.mjs +10 -10
- package/dist/esm/storage/storage.mjs.map +1 -1
- package/dist/esm/sync/datastoreConnectivity.d.ts +2 -2
- package/dist/esm/sync/datastoreConnectivity.mjs +0 -3
- package/dist/esm/sync/datastoreConnectivity.mjs.map +1 -1
- package/dist/esm/sync/index.d.ts +3 -3
- package/dist/esm/sync/index.mjs +47 -43
- package/dist/esm/sync/index.mjs.map +1 -1
- package/dist/esm/sync/merger.d.ts +1 -1
- package/dist/esm/sync/merger.mjs +1 -1
- package/dist/esm/sync/merger.mjs.map +1 -1
- package/dist/esm/sync/outbox.d.ts +4 -4
- package/dist/esm/sync/outbox.mjs +19 -17
- package/dist/esm/sync/outbox.mjs.map +1 -1
- package/dist/esm/sync/processors/errorMaps.mjs.map +1 -1
- package/dist/esm/sync/processors/mutation.d.ts +5 -5
- package/dist/esm/sync/processors/mutation.mjs +31 -28
- package/dist/esm/sync/processors/mutation.mjs.map +1 -1
- package/dist/esm/sync/processors/subscription.d.ts +1 -1
- package/dist/esm/sync/processors/subscription.mjs +21 -12
- package/dist/esm/sync/processors/subscription.mjs.map +1 -1
- package/dist/esm/sync/processors/sync.d.ts +3 -3
- package/dist/esm/sync/processors/sync.mjs +13 -9
- package/dist/esm/sync/processors/sync.mjs.map +1 -1
- package/dist/esm/sync/utils.d.ts +11 -13
- package/dist/esm/sync/utils.mjs +20 -21
- package/dist/esm/sync/utils.mjs.map +1 -1
- package/dist/esm/types.d.ts +121 -131
- package/dist/esm/types.mjs +3 -2
- package/dist/esm/types.mjs.map +1 -1
- package/dist/esm/util.d.ts +5 -5
- package/dist/esm/util.mjs +46 -25
- package/dist/esm/util.mjs.map +1 -1
- package/package.json +74 -73
- package/src/authModeStrategies/multiAuthStrategy.ts +8 -4
- package/src/datastore/datastore.ts +145 -123
- package/src/index.ts +10 -8
- package/src/predicates/index.ts +10 -2
- package/src/predicates/next.ts +39 -28
- package/src/predicates/sort.ts +23 -26
- package/src/storage/adapter/AsyncStorageAdapter.ts +43 -25
- package/src/storage/adapter/AsyncStorageDatabase.ts +18 -10
- package/src/storage/adapter/InMemoryStore.ts +5 -1
- package/src/storage/adapter/IndexedDBAdapter.ts +50 -37
- package/src/storage/adapter/StorageAdapterBase.ts +24 -18
- package/src/storage/adapter/getDefaultAdapter/index.native.ts +1 -0
- package/src/storage/adapter/getDefaultAdapter/index.ts +4 -1
- package/src/storage/adapter/index.ts +2 -2
- package/src/storage/relationship.ts +5 -1
- package/src/storage/storage.ts +38 -30
- package/src/sync/datastoreConnectivity.ts +4 -6
- package/src/sync/index.ts +228 -230
- package/src/sync/merger.ts +4 -3
- package/src/sync/outbox.ts +26 -24
- package/src/sync/processors/errorMaps.ts +5 -0
- package/src/sync/processors/mutation.ts +80 -72
- package/src/sync/processors/subscription.ts +69 -53
- package/src/sync/processors/sync.ts +49 -37
- package/src/sync/utils.ts +60 -41
- package/src/types.ts +165 -165
- package/src/util.ts +89 -53
|
@@ -5,14 +5,17 @@ exports.AsyncStorageAdapter = void 0;
|
|
|
5
5
|
const tslib_1 = require("tslib");
|
|
6
6
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
7
|
// SPDX-License-Identifier: Apache-2.0
|
|
8
|
-
const AsyncStorageDatabase_1 = tslib_1.__importDefault(require("./AsyncStorageDatabase"));
|
|
9
8
|
const types_1 = require("../../types");
|
|
10
9
|
const util_1 = require("../../util");
|
|
10
|
+
const AsyncStorageDatabase_1 = tslib_1.__importDefault(require("./AsyncStorageDatabase"));
|
|
11
11
|
const StorageAdapterBase_1 = require("./StorageAdapterBase");
|
|
12
12
|
class AsyncStorageAdapter extends StorageAdapterBase_1.StorageAdapterBase {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
async preSetUpChecks() {
|
|
14
|
+
// no-ops for AsyncStorageAdapter
|
|
15
|
+
}
|
|
16
|
+
async preOpCheck() {
|
|
17
|
+
// no-ops for AsyncStorageAdapter
|
|
18
|
+
}
|
|
16
19
|
/**
|
|
17
20
|
* Open AsyncStorage database
|
|
18
21
|
* Create new DB if one doesn't exist
|
|
@@ -44,17 +47,17 @@ class AsyncStorageAdapter extends StorageAdapterBase_1.StorageAdapterBase {
|
|
|
44
47
|
const model = this.modelInstanceCreator(modelConstructor, item);
|
|
45
48
|
const connectedModels = (0, util_1.traverseModel)(modelName, model, this.schema.namespaces[namespaceName], this.modelInstanceCreator, this.getModelConstructorByModelName);
|
|
46
49
|
const keyValuesPath = this.getIndexKeyValuesPath(model);
|
|
47
|
-
const { instance } = connectedModels.find(({ instance }) => {
|
|
48
|
-
const instanceKeyValuesPath = this.getIndexKeyValuesPath(
|
|
50
|
+
const { instance } = connectedModels.find(({ instance: connectedModelInstance }) => {
|
|
51
|
+
const instanceKeyValuesPath = this.getIndexKeyValuesPath(connectedModelInstance);
|
|
49
52
|
return (0, util_1.keysEqual)([instanceKeyValuesPath], [keyValuesPath]);
|
|
50
53
|
});
|
|
51
54
|
batch.push(instance);
|
|
52
55
|
}
|
|
53
|
-
return
|
|
56
|
+
return this.db.batchSave(storeName, batch, keys);
|
|
54
57
|
}
|
|
55
58
|
async _get(storeName, keyArr) {
|
|
56
59
|
const itemKeyValuesPath = keyArr.join(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);
|
|
57
|
-
return await this.db.get(itemKeyValuesPath, storeName);
|
|
60
|
+
return (await this.db.get(itemKeyValuesPath, storeName));
|
|
58
61
|
}
|
|
59
62
|
async save(model, condition) {
|
|
60
63
|
const { storeName, connectionStoreNames, modelKeyValues } = this.saveMetadata(model);
|
|
@@ -62,13 +65,13 @@ class AsyncStorageAdapter extends StorageAdapterBase_1.StorageAdapterBase {
|
|
|
62
65
|
this.validateSaveCondition(condition, fromDB);
|
|
63
66
|
const result = [];
|
|
64
67
|
for await (const resItem of connectionStoreNames) {
|
|
65
|
-
const { storeName, item, instance, keys } = resItem;
|
|
68
|
+
const { storeName: storeNameForRestItem, item, instance, keys } = resItem;
|
|
66
69
|
const itemKeyValues = keys.map(key => item[key]);
|
|
67
|
-
const
|
|
68
|
-
const opType =
|
|
70
|
+
const fromDBForRestItem = (await this._get(storeNameForRestItem, itemKeyValues));
|
|
71
|
+
const opType = fromDBForRestItem ? types_1.OpType.UPDATE : types_1.OpType.INSERT;
|
|
69
72
|
if ((0, util_1.keysEqual)(itemKeyValues, modelKeyValues) ||
|
|
70
73
|
opType === types_1.OpType.INSERT) {
|
|
71
|
-
await this.db.save(item,
|
|
74
|
+
await this.db.save(item, storeNameForRestItem, keys, itemKeyValues.join(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR));
|
|
72
75
|
result.push([instance, opType]);
|
|
73
76
|
}
|
|
74
77
|
}
|
|
@@ -92,17 +95,17 @@ class AsyncStorageAdapter extends StorageAdapterBase_1.StorageAdapterBase {
|
|
|
92
95
|
}
|
|
93
96
|
return this.getAll(storeName);
|
|
94
97
|
})());
|
|
95
|
-
return
|
|
98
|
+
return this.load(namespaceName, modelConstructor.name, records);
|
|
96
99
|
}
|
|
97
100
|
async getByKey(storeName, keyValuePath) {
|
|
98
|
-
return await this.db.get(keyValuePath, storeName);
|
|
101
|
+
return (await this.db.get(keyValuePath, storeName));
|
|
99
102
|
}
|
|
100
103
|
async getAll(storeName) {
|
|
101
|
-
return
|
|
104
|
+
return this.db.getAll(storeName);
|
|
102
105
|
}
|
|
103
106
|
async filterOnPredicate(storeName, predicates) {
|
|
104
107
|
const { predicates: predicateObjs, type } = predicates;
|
|
105
|
-
const all = await this.getAll(storeName);
|
|
108
|
+
const all = (await this.getAll(storeName));
|
|
106
109
|
const filtered = predicateObjs
|
|
107
110
|
? all.filter(m => (0, util_1.validatePredicate)(m, type, predicateObjs))
|
|
108
111
|
: all;
|
|
@@ -113,7 +116,7 @@ class AsyncStorageAdapter extends StorageAdapterBase_1.StorageAdapterBase {
|
|
|
113
116
|
}
|
|
114
117
|
async queryOne(modelConstructor, firstOrLast = types_1.QueryOne.FIRST) {
|
|
115
118
|
const storeName = this.getStorenameForModel(modelConstructor);
|
|
116
|
-
const result = await this.db.getOne(firstOrLast, storeName);
|
|
119
|
+
const result = (await this.db.getOne(firstOrLast, storeName));
|
|
117
120
|
return result && this.modelInstanceCreator(modelConstructor, result);
|
|
118
121
|
}
|
|
119
122
|
async deleteItem(deleteQueue) {
|
|
@@ -129,7 +132,7 @@ class AsyncStorageAdapter extends StorageAdapterBase_1.StorageAdapterBase {
|
|
|
129
132
|
}
|
|
130
133
|
}
|
|
131
134
|
}
|
|
132
|
-
|
|
135
|
+
// #region platform-specific helper methods
|
|
133
136
|
/**
|
|
134
137
|
* Retrieves concatenated primary key values from a model
|
|
135
138
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncStorageAdapter.js","sources":["../../../../src/storage/adapter/AsyncStorageAdapter.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncStorageAdapter = void 0;\nconst tslib_1 = require(\"tslib\");\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst AsyncStorageDatabase_1 = tslib_1.__importDefault(require(\"./AsyncStorageDatabase\"));\nconst types_1 = require(\"../../types\");\nconst util_1 = require(\"../../util\");\nconst StorageAdapterBase_1 = require(\"./StorageAdapterBase\");\nclass AsyncStorageAdapter extends StorageAdapterBase_1.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_1.default();\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 = (0, util_1.getStorename)(namespaceName, modelName);\n const keys = (0, util_1.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 = (0, util_1.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 (0, util_1.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(util_1.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 ? types_1.OpType.UPDATE : types_1.OpType.INSERT;\n if ((0, util_1.keysEqual)(itemKeyValues, modelKeyValues) ||\n opType === types_1.OpType.INSERT) {\n await this.db.save(item, storeName, keys, itemKeyValues.join(util_1.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(util_1.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 => (0, util_1.validatePredicate)(m, type, predicateObjs))\n : all;\n return filtered;\n }\n inMemoryPagination(records, pagination) {\n return (0, util_1.inMemoryPagination)(records, pagination);\n }\n async queryOne(modelConstructor, firstOrLast = types_1.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(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n }\n}\nexports.AsyncStorageAdapter = AsyncStorageAdapter;\nexports.default = new AsyncStorageAdapter();\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AsyncStorageAdapter.js","sources":["../../../../src/storage/adapter/AsyncStorageAdapter.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncStorageAdapter = void 0;\nconst tslib_1 = require(\"tslib\");\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst types_1 = require(\"../../types\");\nconst util_1 = require(\"../../util\");\nconst AsyncStorageDatabase_1 = tslib_1.__importDefault(require(\"./AsyncStorageDatabase\"));\nconst StorageAdapterBase_1 = require(\"./StorageAdapterBase\");\nclass AsyncStorageAdapter extends StorageAdapterBase_1.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_1.default();\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 = (0, util_1.getStorename)(namespaceName, modelName);\n const keys = (0, util_1.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 = (0, util_1.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 (0, util_1.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(util_1.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 ? types_1.OpType.UPDATE : types_1.OpType.INSERT;\n if ((0, util_1.keysEqual)(itemKeyValues, modelKeyValues) ||\n opType === types_1.OpType.INSERT) {\n await this.db.save(item, storeNameForRestItem, keys, itemKeyValues.join(util_1.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(util_1.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 => (0, util_1.validatePredicate)(m, type, predicateObjs))\n : all;\n return filtered;\n }\n inMemoryPagination(records, pagination) {\n return (0, util_1.inMemoryPagination)(records, pagination);\n }\n async queryOne(modelConstructor, firstOrLast = types_1.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(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n }\n}\nexports.AsyncStorageAdapter = AsyncStorageAdapter;\nexports.default = new AsyncStorageAdapter();\n"],"names":[],"mappings":"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"}
|
|
@@ -49,10 +49,10 @@ class AsyncStorageDatabase {
|
|
|
49
49
|
let ulid;
|
|
50
50
|
if (id === undefined) {
|
|
51
51
|
// It is an old entry (without ulid). Need to migrate to new key format
|
|
52
|
-
const
|
|
52
|
+
const resolvedId = ulidOrId;
|
|
53
53
|
const newUlid = this.getMonotonicFactory(storeName)();
|
|
54
|
-
const oldKey = this.getLegacyKeyForItem(storeName,
|
|
55
|
-
const newKey = this.getKeyForItem(storeName,
|
|
54
|
+
const oldKey = this.getLegacyKeyForItem(storeName, resolvedId);
|
|
55
|
+
const newKey = this.getKeyForItem(storeName, resolvedId, newUlid);
|
|
56
56
|
const item = await this.storage.getItem(oldKey);
|
|
57
57
|
await this.storage.setItem(newKey, item);
|
|
58
58
|
await this.storage.removeItem(oldKey);
|
|
@@ -191,16 +191,17 @@ class AsyncStorageDatabase {
|
|
|
191
191
|
const collection = this.getCollectionIndex(storeName);
|
|
192
192
|
const [itemId, ulid] = firstOrLast === types_1.QueryOne.FIRST
|
|
193
193
|
? (() => {
|
|
194
|
-
let
|
|
195
|
-
|
|
194
|
+
let resolvedId, resolvedUlid;
|
|
195
|
+
// eslint-disable-next-line no-unreachable-loop
|
|
196
|
+
for ([resolvedId, resolvedUlid] of collection)
|
|
196
197
|
break; // Get first element of the set
|
|
197
|
-
return [
|
|
198
|
+
return [resolvedId, resolvedUlid];
|
|
198
199
|
})()
|
|
199
200
|
: (() => {
|
|
200
|
-
let
|
|
201
|
-
for ([
|
|
201
|
+
let resolvedId, resolvedUlid;
|
|
202
|
+
for ([resolvedId, resolvedUlid] of collection)
|
|
202
203
|
; // Get last element of the set
|
|
203
|
-
return [
|
|
204
|
+
return [resolvedId, resolvedUlid];
|
|
204
205
|
})();
|
|
205
206
|
const itemKey = this.getKeyForItem(storeName, itemId, ulid);
|
|
206
207
|
const itemString = itemKey && (await this.storage.getItem(itemKey));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncStorageDatabase.js","sources":["../../../../src/storage/adapter/AsyncStorageDatabase.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst types_1 = require(\"../../types\");\nconst util_1 = require(\"../../util\");\nconst InMemoryStore_1 = require(\"./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 = (0, InMemoryStore_1.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, (0, util_1.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 = (0, util_1.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(util_1.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(util_1.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(util_1.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(util_1.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, types_1.OpType.DELETE]);\n }\n else if (keysToSave.has(key)) {\n result.push([\n itemsMap[key].model,\n existingRecordsKeys.has(key) ? types_1.OpType.UPDATE : types_1.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 === types_1.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}\nexports.default = AsyncStorageDatabase;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AsyncStorageDatabase.js","sources":["../../../../src/storage/adapter/AsyncStorageDatabase.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst types_1 = require(\"../../types\");\nconst util_1 = require(\"../../util\");\nconst InMemoryStore_1 = require(\"./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 = (0, InMemoryStore_1.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, (0, util_1.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 = (0, util_1.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(util_1.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(util_1.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(util_1.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(util_1.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, types_1.OpType.DELETE]);\n }\n else if (keysToSave.has(key)) {\n result.push([\n itemsMap[key].model,\n existingRecordsKeys.has(key) ? types_1.OpType.UPDATE : types_1.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 === types_1.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}\nexports.default = AsyncStorageDatabase;\n"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,10 @@ class InMemoryStore {
|
|
|
11
11
|
return Array.from(this.db.keys());
|
|
12
12
|
};
|
|
13
13
|
this.multiGet = async (keys) => {
|
|
14
|
-
return keys.reduce((res, k) =>
|
|
14
|
+
return keys.reduce((res, k) => {
|
|
15
|
+
res.push([k, this.db.get(k)]);
|
|
16
|
+
return res;
|
|
17
|
+
}, []);
|
|
15
18
|
};
|
|
16
19
|
this.multiRemove = async (keys, callback) => {
|
|
17
20
|
keys.forEach(k => this.db.delete(k));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InMemoryStore.js","sources":["../../../../src/storage/adapter/InMemoryStore.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createInMemoryStore = exports.InMemoryStore = void 0;\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nclass 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) =>
|
|
1
|
+
{"version":3,"file":"InMemoryStore.js","sources":["../../../../src/storage/adapter/InMemoryStore.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createInMemoryStore = exports.InMemoryStore = void 0;\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nclass 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}\nexports.InMemoryStore = InMemoryStore;\nfunction createInMemoryStore() {\n return new InMemoryStore();\n}\nexports.createInMemoryStore = createInMemoryStore;\n"],"names":[],"mappings":";;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,OAAO,CAAC,mBAAmB,GAAG,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;AAC7D;AACA;AACA,MAAM,aAAa,CAAC;AACpB,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;AACD,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;AACtC,SAAS,mBAAmB,GAAG;AAC/B,IAAI,OAAO,IAAI,aAAa,EAAE,CAAC;AAC/B,CAAC;AACD,OAAO,CAAC,mBAAmB,GAAG,mBAAmB;;"}
|
|
@@ -5,10 +5,10 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
6
6
|
// SPDX-License-Identifier: Apache-2.0
|
|
7
7
|
const idb = tslib_1.__importStar(require("idb"));
|
|
8
|
+
const core_1 = require("@aws-amplify/core");
|
|
8
9
|
const types_1 = require("../../types");
|
|
9
10
|
const util_1 = require("../../util");
|
|
10
11
|
const StorageAdapterBase_1 = require("./StorageAdapterBase");
|
|
11
|
-
const core_1 = require("@aws-amplify/core");
|
|
12
12
|
const logger = new core_1.ConsoleLogger('DataStore');
|
|
13
13
|
/**
|
|
14
14
|
* The point after which queries composed of multiple simple OR conditions
|
|
@@ -52,7 +52,7 @@ class IndexedDBAdapter extends StorageAdapterBase_1.StorageAdapterBase {
|
|
|
52
52
|
}
|
|
53
53
|
return keyArr;
|
|
54
54
|
};
|
|
55
|
-
|
|
55
|
+
// #endregion
|
|
56
56
|
}
|
|
57
57
|
// checks are called by StorageAdapterBase class
|
|
58
58
|
async preSetUpChecks() {
|
|
@@ -72,7 +72,7 @@ class IndexedDBAdapter extends StorageAdapterBase_1.StorageAdapterBase {
|
|
|
72
72
|
* @returns IDB Database instance
|
|
73
73
|
*/
|
|
74
74
|
async initDb() {
|
|
75
|
-
return
|
|
75
|
+
return idb.openDB(this.dbName, DB_VERSION, {
|
|
76
76
|
upgrade: async (db, oldVersion, newVersion, txn) => {
|
|
77
77
|
// create new database
|
|
78
78
|
if (oldVersion === 0) {
|
|
@@ -135,7 +135,6 @@ class IndexedDBAdapter extends StorageAdapterBase_1.StorageAdapterBase {
|
|
|
135
135
|
txn.abort();
|
|
136
136
|
throw error;
|
|
137
137
|
}
|
|
138
|
-
return;
|
|
139
138
|
}
|
|
140
139
|
},
|
|
141
140
|
});
|
|
@@ -169,17 +168,17 @@ class IndexedDBAdapter extends StorageAdapterBase_1.StorageAdapterBase {
|
|
|
169
168
|
this.validateSaveCondition(condition, fromDB);
|
|
170
169
|
const result = [];
|
|
171
170
|
for await (const resItem of connectionStoreNames) {
|
|
172
|
-
const { storeName, item, instance, keys } = resItem;
|
|
173
|
-
const
|
|
171
|
+
const { storeName: storeNameForRestItem, item, instance, keys } = resItem;
|
|
172
|
+
const storeForRestItem = tx.objectStore(storeNameForRestItem);
|
|
174
173
|
const itemKeyValues = keys.map(key => item[key]);
|
|
175
|
-
const
|
|
176
|
-
const opType =
|
|
174
|
+
const fromDBForRestItem = (await this._get(storeForRestItem, itemKeyValues));
|
|
175
|
+
const opType = fromDBForRestItem ? types_1.OpType.UPDATE : types_1.OpType.INSERT;
|
|
177
176
|
if ((0, util_1.keysEqual)(itemKeyValues, modelKeyValues) ||
|
|
178
177
|
opType === types_1.OpType.INSERT) {
|
|
179
|
-
const key = await
|
|
178
|
+
const key = await storeForRestItem
|
|
180
179
|
.index('byPk')
|
|
181
180
|
.getKey(this.canonicalKeyPath(itemKeyValues));
|
|
182
|
-
await
|
|
181
|
+
await storeForRestItem.put(item, key);
|
|
183
182
|
result.push([instance, opType]);
|
|
184
183
|
}
|
|
185
184
|
}
|
|
@@ -218,7 +217,7 @@ class IndexedDBAdapter extends StorageAdapterBase_1.StorageAdapterBase {
|
|
|
218
217
|
}
|
|
219
218
|
return this.getAll(storeName);
|
|
220
219
|
})());
|
|
221
|
-
return
|
|
220
|
+
return this.load(namespaceName, modelConstructor.name, records);
|
|
222
221
|
}
|
|
223
222
|
async queryOne(modelConstructor, firstOrLast = types_1.QueryOne.FIRST) {
|
|
224
223
|
await this.checkPrivate();
|
|
@@ -240,7 +239,7 @@ class IndexedDBAdapter extends StorageAdapterBase_1.StorageAdapterBase {
|
|
|
240
239
|
const storeName = this.getStorenameForModel(modelConstructor);
|
|
241
240
|
const result = [];
|
|
242
241
|
const txn = this.db.transaction(storeName, 'readwrite');
|
|
243
|
-
const store = txn
|
|
242
|
+
const { store } = txn;
|
|
244
243
|
for (const item of items) {
|
|
245
244
|
const model = this.modelInstanceCreator(modelConstructor, item);
|
|
246
245
|
const connectedModels = (0, util_1.traverseModel)(modelName, model, this.schema.namespaces[namespaceName], this.modelInstanceCreator, this.getModelConstructorByModelName);
|
|
@@ -249,8 +248,8 @@ class IndexedDBAdapter extends StorageAdapterBase_1.StorageAdapterBase {
|
|
|
249
248
|
const index = store.index('byPk');
|
|
250
249
|
const key = await index.getKey(this.canonicalKeyPath(keyValues));
|
|
251
250
|
if (!_deleted) {
|
|
252
|
-
const { instance } = connectedModels.find(({ instance }) => {
|
|
253
|
-
const instanceKeyValues = this.getIndexKeyValuesFromModel(
|
|
251
|
+
const { instance } = connectedModels.find(({ instance: connectedModelInstance }) => {
|
|
252
|
+
const instanceKeyValues = this.getIndexKeyValuesFromModel(connectedModelInstance);
|
|
254
253
|
return (0, util_1.keysEqual)(instanceKeyValues, keyValues);
|
|
255
254
|
});
|
|
256
255
|
result.push([
|
|
@@ -297,13 +296,12 @@ class IndexedDBAdapter extends StorageAdapterBase_1.StorageAdapterBase {
|
|
|
297
296
|
}
|
|
298
297
|
}
|
|
299
298
|
}
|
|
300
|
-
|
|
299
|
+
// #region platform-specific helper methods
|
|
301
300
|
async checkPrivate() {
|
|
302
|
-
const isPrivate = await (0, util_1.isPrivateMode)()
|
|
303
|
-
return isPrivate;
|
|
304
|
-
});
|
|
301
|
+
const isPrivate = await (0, util_1.isPrivateMode)();
|
|
305
302
|
if (isPrivate) {
|
|
306
303
|
logger.error("IndexedDB not supported in this browser's private mode");
|
|
304
|
+
// eslint-disable-next-line prefer-promise-reject-errors
|
|
307
305
|
return Promise.reject("IndexedDB not supported in this browser's private mode");
|
|
308
306
|
}
|
|
309
307
|
else {
|
|
@@ -344,10 +342,10 @@ class IndexedDBAdapter extends StorageAdapterBase_1.StorageAdapterBase {
|
|
|
344
342
|
return store;
|
|
345
343
|
}
|
|
346
344
|
async getByKey(storeName, keyValue) {
|
|
347
|
-
return await this._get(storeName, keyValue);
|
|
345
|
+
return (await this._get(storeName, keyValue));
|
|
348
346
|
}
|
|
349
347
|
async getAll(storeName) {
|
|
350
|
-
return
|
|
348
|
+
return this.db.getAll(storeName);
|
|
351
349
|
}
|
|
352
350
|
/**
|
|
353
351
|
* Tries to generate an index fetcher for the given predicates. Assumes
|
|
@@ -402,7 +400,7 @@ class IndexedDBAdapter extends StorageAdapterBase_1.StorageAdapterBase {
|
|
|
402
400
|
while (predicateObjs.length === 1 &&
|
|
403
401
|
(0, types_1.isPredicateGroup)(predicateObjs[0]) &&
|
|
404
402
|
predicateObjs[0].type !== 'not') {
|
|
405
|
-
type = predicateObjs[0]
|
|
403
|
+
({ type } = predicateObjs[0]);
|
|
406
404
|
predicateObjs = predicateObjs[0].predicates;
|
|
407
405
|
}
|
|
408
406
|
const fieldPredicates = predicateObjs.filter(p => (0, types_1.isPredicateObj)(p) && p.operator === 'eq');
|
|
@@ -506,7 +504,7 @@ class IndexedDBAdapter extends StorageAdapterBase_1.StorageAdapterBase {
|
|
|
506
504
|
// nothing intelligent we can do with `not` groups unless or until we start
|
|
507
505
|
// smashing comparison operators against indexes -- at which point we could
|
|
508
506
|
// perform some reversal here.
|
|
509
|
-
candidateResults = await this.getAll(storeName);
|
|
507
|
+
candidateResults = (await this.getAll(storeName));
|
|
510
508
|
}
|
|
511
509
|
const filtered = predicateObjs
|
|
512
510
|
? candidateResults.filter(m => (0, util_1.validatePredicate)(m, type, predicateObjs))
|
|
@@ -540,7 +538,7 @@ class IndexedDBAdapter extends StorageAdapterBase_1.StorageAdapterBase {
|
|
|
540
538
|
result = pageResults;
|
|
541
539
|
}
|
|
542
540
|
else {
|
|
543
|
-
result = await this.db.getAll(storeName);
|
|
541
|
+
result = (await this.db.getAll(storeName));
|
|
544
542
|
}
|
|
545
543
|
return result;
|
|
546
544
|
}
|