@aws-amplify/datastore-storage-adapter 2.1.32 → 2.1.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 (49) hide show
  1. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js +37 -27
  2. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/SQLiteAdapter/SQLiteDatabase.js +4 -2
  3. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/common/CommonSQLiteAdapter.js +16 -14
  4. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/common/SQLiteUtils.js +15 -12
  5. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js +37 -27
  6. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/SQLiteAdapter/SQLiteDatabase.js +4 -2
  7. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/CommonSQLiteAdapter.d.ts +1 -1
  8. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/CommonSQLiteAdapter.js +17 -15
  9. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/SQLiteUtils.d.ts +1 -1
  10. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/SQLiteUtils.js +16 -13
  11. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/types.d.ts +1 -1
  12. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/meta/cjs.tsbuildinfo +1 -1
  13. package/dist/cjs/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js +37 -27
  14. package/dist/cjs/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js.map +1 -1
  15. package/dist/cjs/SQLiteAdapter/SQLiteDatabase.js +4 -2
  16. package/dist/cjs/SQLiteAdapter/SQLiteDatabase.js.map +1 -1
  17. package/dist/cjs/common/CommonSQLiteAdapter.js +16 -14
  18. package/dist/cjs/common/CommonSQLiteAdapter.js.map +1 -1
  19. package/dist/cjs/common/SQLiteUtils.js +15 -12
  20. package/dist/cjs/common/SQLiteUtils.js.map +1 -1
  21. package/dist/esm/ExpoSQLiteAdapter/ExpoSQLiteDatabase.mjs +37 -27
  22. package/dist/esm/ExpoSQLiteAdapter/ExpoSQLiteDatabase.mjs.map +1 -1
  23. package/dist/esm/SQLiteAdapter/SQLiteDatabase.mjs +4 -2
  24. package/dist/esm/SQLiteAdapter/SQLiteDatabase.mjs.map +1 -1
  25. package/dist/esm/common/CommonSQLiteAdapter.d.ts +1 -1
  26. package/dist/esm/common/CommonSQLiteAdapter.mjs +16 -14
  27. package/dist/esm/common/CommonSQLiteAdapter.mjs.map +1 -1
  28. package/dist/esm/common/SQLiteUtils.d.ts +1 -1
  29. package/dist/esm/common/SQLiteUtils.mjs +15 -12
  30. package/dist/esm/common/SQLiteUtils.mjs.map +1 -1
  31. package/dist/esm/common/types.d.ts +1 -1
  32. package/dist/meta/cjs.tsbuildinfo +1 -1
  33. package/dist/umd/aws-amplify-datastore-sqlite-adapter-expo.js +97 -82
  34. package/dist/umd/aws-amplify-datastore-sqlite-adapter-expo.js.map +1 -1
  35. package/dist/umd/aws-amplify-datastore-sqlite-adapter-expo.min.js +1 -1
  36. package/dist/umd/aws-amplify-datastore-sqlite-adapter-expo.min.js.map +1 -1
  37. package/dist/umd/aws-amplify-datastore-storage-adapter.js +64 -57
  38. package/dist/umd/aws-amplify-datastore-storage-adapter.js.map +1 -1
  39. package/dist/umd/aws-amplify-datastore-storage-adapter.min.js +1 -1
  40. package/dist/umd/aws-amplify-datastore-storage-adapter.min.js.map +1 -1
  41. package/package.json +47 -46
  42. package/src/ExpoSQLiteAdapter/ExpoSQLiteAdapter.ts +1 -0
  43. package/src/ExpoSQLiteAdapter/ExpoSQLiteDatabase.ts +49 -31
  44. package/src/SQLiteAdapter/SQLiteAdapter.ts +1 -0
  45. package/src/SQLiteAdapter/SQLiteDatabase.ts +12 -3
  46. package/src/common/CommonSQLiteAdapter.ts +45 -32
  47. package/src/common/SQLiteUtils.ts +37 -28
  48. package/src/common/types.ts +1 -1
  49. package/src/index.ts +1 -0
@@ -74,14 +74,16 @@ class ExpoSQLiteDatabase {
74
74
  });
75
75
  }
76
76
  batchQuery(queryParameterizedStatements = new Set()) {
77
- return new Promise((resolveTransaction, rejectTransaction) => {
77
+ return new Promise((resolve, reject) => {
78
+ const resolveTransaction = resolve;
79
+ const rejectTransaction = reject;
78
80
  this.db.transaction(async (transaction) => {
79
81
  try {
80
- const results = await Promise.all([...queryParameterizedStatements].map(([statement, params]) => new Promise((resolve, reject) => {
82
+ const results = await Promise.all([...queryParameterizedStatements].map(([statement, params]) => new Promise((_resolve, _reject) => {
81
83
  transaction.executeSql(statement, params, (_, result) => {
82
- resolve(result.rows._array[0]);
84
+ _resolve(result.rows._array[0]);
83
85
  }, (_, error) => {
84
- reject(error);
86
+ _reject(error);
85
87
  logger.warn(error);
86
88
  return true;
87
89
  });
@@ -96,27 +98,31 @@ class ExpoSQLiteDatabase {
96
98
  });
97
99
  }
98
100
  batchSave(saveParameterizedStatements = new Set(), deleteParameterizedStatements) {
99
- return new Promise((resolveTransaction, rejectTransaction) => {
101
+ return new Promise((resolve, reject) => {
102
+ const resolveTransaction = resolve;
103
+ const rejectTransaction = reject;
100
104
  this.db.transaction(async (transaction) => {
101
105
  try {
102
106
  // await for all sql statements promises to resolve
103
- await Promise.all([...saveParameterizedStatements].map(([statement, params]) => new Promise((resolve, reject) => {
107
+ await Promise.all([...saveParameterizedStatements].map(([statement, params]) => new Promise((_resolve, _reject) => {
104
108
  transaction.executeSql(statement, params, () => {
105
- resolve(null);
109
+ _resolve(null);
106
110
  }, (_, error) => {
107
- reject(error);
111
+ _reject(error);
108
112
  logger.warn(error);
109
113
  return true;
110
114
  });
111
115
  })));
112
116
  if (deleteParameterizedStatements) {
113
- await Promise.all([...deleteParameterizedStatements].map(([statement, params]) => new Promise((resolve, reject) => transaction.executeSql(statement, params, () => {
114
- resolve(null);
115
- }, (_, error) => {
116
- reject(error);
117
- logger.warn(error);
118
- return true;
119
- }))));
117
+ await Promise.all([...deleteParameterizedStatements].map(([statement, params]) => new Promise((_resolve, _reject) => {
118
+ transaction.executeSql(statement, params, () => {
119
+ _resolve(null);
120
+ }, (_, error) => {
121
+ _reject(error);
122
+ logger.warn(error);
123
+ return true;
124
+ });
125
+ })));
120
126
  }
121
127
  resolveTransaction(null);
122
128
  }
@@ -130,23 +136,25 @@ class ExpoSQLiteDatabase {
130
136
  selectAndDelete(queryParameterizedStatement, deleteParameterizedStatement) {
131
137
  const [queryStatement, queryParams] = queryParameterizedStatement;
132
138
  const [deleteStatement, deleteParams] = deleteParameterizedStatement;
133
- return new Promise((resolveTransaction, rejectTransaction) => {
139
+ return new Promise((resolve, reject) => {
140
+ const resolveTransaction = resolve;
141
+ const rejectTransaction = reject;
134
142
  this.db.transaction(async (transaction) => {
135
143
  try {
136
- const result = await new Promise((resolve, reject) => {
137
- transaction.executeSql(queryStatement, queryParams, (_, result) => {
138
- resolve(result.rows._array || []);
144
+ const result = await new Promise((_resolve, _reject) => {
145
+ transaction.executeSql(queryStatement, queryParams, (_, sqlResult) => {
146
+ _resolve(sqlResult.rows._array || []);
139
147
  }, (_, error) => {
140
- reject(error);
148
+ _reject(error);
141
149
  logger.warn(error);
142
150
  return true;
143
151
  });
144
152
  });
145
- await new Promise((resolve, reject) => {
153
+ await new Promise((_resolve, _reject) => {
146
154
  transaction.executeSql(deleteStatement, deleteParams, () => {
147
- resolve(null);
155
+ _resolve(null);
148
156
  }, (_, error) => {
149
- reject(error);
157
+ _reject(error);
150
158
  logger.warn(error);
151
159
  return true;
152
160
  });
@@ -161,14 +169,16 @@ class ExpoSQLiteDatabase {
161
169
  });
162
170
  }
163
171
  executeStatements(statements) {
164
- return new Promise((resolveTransaction, rejectTransaction) => {
172
+ return new Promise((resolve, reject) => {
173
+ const resolveTransaction = resolve;
174
+ const rejectTransaction = reject;
165
175
  this.db.transaction(async (transaction) => {
166
176
  try {
167
- await Promise.all(statements.map(statement => new Promise((resolve, reject) => {
177
+ await Promise.all(statements.map(statement => new Promise((_resolve, _reject) => {
168
178
  transaction.executeSql(statement, [], () => {
169
- resolve(null);
179
+ _resolve(null);
170
180
  }, (_, error) => {
171
- reject(error);
181
+ _reject(error);
172
182
  return true;
173
183
  });
174
184
  })));
@@ -34,7 +34,7 @@ class SQLiteDatabase {
34
34
  }
35
35
  }
36
36
  async createSchema(statements) {
37
- return await this.executeStatements(statements);
37
+ await this.executeStatements(statements);
38
38
  }
39
39
  async clear() {
40
40
  await this.closeDB();
@@ -91,7 +91,9 @@ class SQLiteDatabase {
91
91
  tx.executeSql(queryStatement, queryParams, (_, res) => {
92
92
  results = res.rows.raw();
93
93
  }, logger.warn);
94
- tx.executeSql(deleteStatement, deleteParams, () => { }, logger.warn);
94
+ tx.executeSql(deleteStatement, deleteParams, () => {
95
+ // no-op
96
+ }, logger.warn);
95
97
  });
96
98
  return results;
97
99
  }
@@ -4,8 +4,8 @@ exports.CommonSQLiteAdapter = void 0;
4
4
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
5
  // SPDX-License-Identifier: Apache-2.0
6
6
  const core_1 = require("@aws-amplify/core");
7
- const SQLiteUtils_1 = require("../common/SQLiteUtils");
8
7
  const datastore_1 = require("@aws-amplify/datastore");
8
+ const SQLiteUtils_1 = require("../common/SQLiteUtils");
9
9
  const { traverseModel, validatePredicate, isModelConstructor } = datastore_1.utils;
10
10
  const logger = new core_1.ConsoleLogger('DataStore');
11
11
  class CommonSQLiteAdapter {
@@ -14,9 +14,9 @@ class CommonSQLiteAdapter {
14
14
  }
15
15
  async setUp(theSchema, namespaceResolver, modelInstanceCreator, getModelConstructorByModelName) {
16
16
  if (!this.initPromise) {
17
- this.initPromise = new Promise((res, rej) => {
18
- this.resolve = res;
19
- this.reject = rej;
17
+ this.initPromise = new Promise((_resolve, _reject) => {
18
+ this.resolve = _resolve;
19
+ this.reject = _reject;
20
20
  });
21
21
  }
22
22
  else {
@@ -28,7 +28,9 @@ class CommonSQLiteAdapter {
28
28
  this.modelInstanceCreator = modelInstanceCreator;
29
29
  this.getModelConstructorByModelName = getModelConstructorByModelName;
30
30
  try {
31
- const usesCPKCodegen = Object.values(this.schema.namespaces.user.models).some(model => Object.values(model.fields).some(field => field.association?.hasOwnProperty('targetNames')));
31
+ const usesCPKCodegen = Object.values(this.schema.namespaces.user.models).some(model => Object.values(model.fields).some(field =>
32
+ // eslint-disable-next-line no-prototype-builtins
33
+ field.association?.hasOwnProperty('targetNames')));
32
34
  if (usesCPKCodegen) {
33
35
  logger.error('The SQLite adapter does not support schemas using custom primary key. Set `graphQLTransformer.respectPrimaryKeyAttributesOnConnectionField in `amplify/cli.json` to false to disable custom primary key. To regenerate your API, add or remove an empty newline to your GraphQL schema (to change the computed hash) then run `amplify push`.');
34
36
  }
@@ -70,10 +72,10 @@ class CommonSQLiteAdapter {
70
72
  for await (const resItem of connectionStoreNames) {
71
73
  const { modelName, item, instance } = resItem;
72
74
  const { id } = item;
73
- const [queryStatement, params] = (0, SQLiteUtils_1.queryByIdStatement)(id, modelName);
74
- const fromDB = await this.db.get(queryStatement, params);
75
- const opType = fromDB === undefined ? datastore_1.OpType.INSERT : datastore_1.OpType.UPDATE;
76
- const saveStatement = fromDB
75
+ const [queryStatementForRestItem, paramsForRestItem] = (0, SQLiteUtils_1.queryByIdStatement)(id, modelName);
76
+ const fromDBForRestItem = await this.db.get(queryStatementForRestItem, paramsForRestItem);
77
+ const opType = fromDBForRestItem === undefined ? datastore_1.OpType.INSERT : datastore_1.OpType.UPDATE;
78
+ const saveStatement = fromDBForRestItem
77
79
  ? (0, SQLiteUtils_1.modelUpdateStatement)(instance, modelName)
78
80
  : (0, SQLiteUtils_1.modelInsertStatement)(instance, modelName);
79
81
  if (id === model.id || opType === datastore_1.OpType.INSERT) {
@@ -114,15 +116,15 @@ class CommonSQLiteAdapter {
114
116
  const limit = pagination && pagination.limit;
115
117
  const page = limit && pagination.page;
116
118
  const queryById = predicates && this.idFromPredicate(predicates);
117
- const records = await (async () => {
119
+ const records = (await (async () => {
118
120
  if (queryById) {
119
121
  const record = await this.getById(tableName, queryById);
120
122
  return record ? [record] : [];
121
123
  }
122
124
  const [queryStatement, params] = (0, SQLiteUtils_1.queryAllStatement)(tableName, predicates, sortPredicates, limit, page);
123
- return await this.db.getAll(queryStatement, params);
124
- })();
125
- return await this.load(namespaceName, modelConstructor.name, records);
125
+ return this.db.getAll(queryStatement, params);
126
+ })());
127
+ return this.load(namespaceName, modelConstructor.name, records);
126
128
  }
127
129
  async getById(tableName, id) {
128
130
  const [queryStatement, params] = (0, SQLiteUtils_1.queryByIdStatement)(id, tableName);
@@ -203,7 +205,7 @@ class CommonSQLiteAdapter {
203
205
  for (const item of items) {
204
206
  const connectedModels = traverseModel(modelConstructor.name, this.modelInstanceCreator(modelConstructor, item), this.schema.namespaces[this.namespaceResolver(modelConstructor)], this.modelInstanceCreator, this.getModelConstructorByModelName);
205
207
  const { id, _deleted } = item;
206
- const { instance } = connectedModels.find(({ instance }) => instance.id === id);
208
+ const { instance } = connectedModels.find(({ instance: connectedModelInstance }) => connectedModelInstance.id === id);
207
209
  if (_deleted) {
208
210
  // create the delete statements right away
209
211
  const deleteStatement = (0, SQLiteUtils_1.deleteByIdStatement)(instance.id, tableName);
@@ -58,9 +58,10 @@ function getSQLiteType(scalar) {
58
58
  return 'TEXT';
59
59
  case 'Float':
60
60
  return 'REAL';
61
- default:
61
+ default: {
62
62
  const _ = scalar;
63
63
  throw new Error(`unknown type ${scalar}`);
64
+ }
64
65
  }
65
66
  }
66
67
  exports.getSQLiteType = getSQLiteType;
@@ -231,10 +232,11 @@ const whereConditionFromPredicateObject = ({ field, operator, operand, }) => {
231
232
  case 'notContains':
232
233
  statement = [`instr("${field}", ?) ${logicalOperator}`, [operand]];
233
234
  break;
234
- default:
235
+ default: {
235
236
  const _ = logicalOperatorKey;
236
237
  // Incorrect WHERE clause can result in data loss
237
238
  throw new Error('Cannot map predicate to a valid WHERE clause');
239
+ }
238
240
  }
239
241
  return statement;
240
242
  }
@@ -246,9 +248,9 @@ function whereClauseFromPredicate(predicate) {
246
248
  recurse(predicate, result, params);
247
249
  const whereClause = `WHERE ${result.join(' ')}`;
248
250
  return [whereClause, params];
249
- function recurse(predicate, result = [], params = []) {
250
- if ((0, datastore_1.isPredicateGroup)(predicate)) {
251
- const { type: groupType, predicates: groupPredicates } = predicate;
251
+ function recurse(recursedPredicate, recursedResult = [], recursedParams = []) {
252
+ if ((0, datastore_1.isPredicateGroup)(recursedPredicate)) {
253
+ const { type: groupType, predicates: groupPredicates } = recursedPredicate;
252
254
  let filterType = '';
253
255
  let isNegation = false;
254
256
  switch (groupType) {
@@ -261,20 +263,21 @@ function whereClauseFromPredicate(predicate) {
261
263
  case 'or':
262
264
  filterType = 'OR';
263
265
  break;
264
- default:
266
+ default: {
265
267
  const _ = groupType;
266
268
  throw new Error(`Invalid ${groupType}`);
269
+ }
267
270
  }
268
271
  const groupResult = [];
269
272
  for (const p of groupPredicates) {
270
- recurse(p, groupResult, params);
273
+ recurse(p, groupResult, recursedParams);
271
274
  }
272
- result.push(`${isNegation ? 'NOT' : ''}(${groupResult.join(` ${filterType} `)})`);
275
+ recursedResult.push(`${isNegation ? 'NOT' : ''}(${groupResult.join(` ${filterType} `)})`);
273
276
  }
274
- else if ((0, datastore_1.isPredicateObj)(predicate)) {
275
- const [condition, conditionParams] = (0, exports.whereConditionFromPredicateObject)(predicate);
276
- result.push(condition);
277
- params.push(...conditionParams);
277
+ else if ((0, datastore_1.isPredicateObj)(recursedPredicate)) {
278
+ const [condition, conditionParams] = (0, exports.whereConditionFromPredicateObject)(recursedPredicate);
279
+ recursedResult.push(condition);
280
+ recursedParams.push(...conditionParams);
278
281
  }
279
282
  }
280
283
  }
@@ -72,14 +72,16 @@ class ExpoSQLiteDatabase {
72
72
  });
73
73
  }
74
74
  batchQuery(queryParameterizedStatements = new Set()) {
75
- return new Promise((resolveTransaction, rejectTransaction) => {
75
+ return new Promise((resolve, reject) => {
76
+ const resolveTransaction = resolve;
77
+ const rejectTransaction = reject;
76
78
  this.db.transaction(async (transaction) => {
77
79
  try {
78
- const results = await Promise.all([...queryParameterizedStatements].map(([statement, params]) => new Promise((resolve, reject) => {
80
+ const results = await Promise.all([...queryParameterizedStatements].map(([statement, params]) => new Promise((_resolve, _reject) => {
79
81
  transaction.executeSql(statement, params, (_, result) => {
80
- resolve(result.rows._array[0]);
82
+ _resolve(result.rows._array[0]);
81
83
  }, (_, error) => {
82
- reject(error);
84
+ _reject(error);
83
85
  logger.warn(error);
84
86
  return true;
85
87
  });
@@ -94,27 +96,31 @@ class ExpoSQLiteDatabase {
94
96
  });
95
97
  }
96
98
  batchSave(saveParameterizedStatements = new Set(), deleteParameterizedStatements) {
97
- return new Promise((resolveTransaction, rejectTransaction) => {
99
+ return new Promise((resolve, reject) => {
100
+ const resolveTransaction = resolve;
101
+ const rejectTransaction = reject;
98
102
  this.db.transaction(async (transaction) => {
99
103
  try {
100
104
  // await for all sql statements promises to resolve
101
- await Promise.all([...saveParameterizedStatements].map(([statement, params]) => new Promise((resolve, reject) => {
105
+ await Promise.all([...saveParameterizedStatements].map(([statement, params]) => new Promise((_resolve, _reject) => {
102
106
  transaction.executeSql(statement, params, () => {
103
- resolve(null);
107
+ _resolve(null);
104
108
  }, (_, error) => {
105
- reject(error);
109
+ _reject(error);
106
110
  logger.warn(error);
107
111
  return true;
108
112
  });
109
113
  })));
110
114
  if (deleteParameterizedStatements) {
111
- await Promise.all([...deleteParameterizedStatements].map(([statement, params]) => new Promise((resolve, reject) => transaction.executeSql(statement, params, () => {
112
- resolve(null);
113
- }, (_, error) => {
114
- reject(error);
115
- logger.warn(error);
116
- return true;
117
- }))));
115
+ await Promise.all([...deleteParameterizedStatements].map(([statement, params]) => new Promise((_resolve, _reject) => {
116
+ transaction.executeSql(statement, params, () => {
117
+ _resolve(null);
118
+ }, (_, error) => {
119
+ _reject(error);
120
+ logger.warn(error);
121
+ return true;
122
+ });
123
+ })));
118
124
  }
119
125
  resolveTransaction(null);
120
126
  }
@@ -128,23 +134,25 @@ class ExpoSQLiteDatabase {
128
134
  selectAndDelete(queryParameterizedStatement, deleteParameterizedStatement) {
129
135
  const [queryStatement, queryParams] = queryParameterizedStatement;
130
136
  const [deleteStatement, deleteParams] = deleteParameterizedStatement;
131
- return new Promise((resolveTransaction, rejectTransaction) => {
137
+ return new Promise((resolve, reject) => {
138
+ const resolveTransaction = resolve;
139
+ const rejectTransaction = reject;
132
140
  this.db.transaction(async (transaction) => {
133
141
  try {
134
- const result = await new Promise((resolve, reject) => {
135
- transaction.executeSql(queryStatement, queryParams, (_, result) => {
136
- resolve(result.rows._array || []);
142
+ const result = await new Promise((_resolve, _reject) => {
143
+ transaction.executeSql(queryStatement, queryParams, (_, sqlResult) => {
144
+ _resolve(sqlResult.rows._array || []);
137
145
  }, (_, error) => {
138
- reject(error);
146
+ _reject(error);
139
147
  logger.warn(error);
140
148
  return true;
141
149
  });
142
150
  });
143
- await new Promise((resolve, reject) => {
151
+ await new Promise((_resolve, _reject) => {
144
152
  transaction.executeSql(deleteStatement, deleteParams, () => {
145
- resolve(null);
153
+ _resolve(null);
146
154
  }, (_, error) => {
147
- reject(error);
155
+ _reject(error);
148
156
  logger.warn(error);
149
157
  return true;
150
158
  });
@@ -159,14 +167,16 @@ class ExpoSQLiteDatabase {
159
167
  });
160
168
  }
161
169
  executeStatements(statements) {
162
- return new Promise((resolveTransaction, rejectTransaction) => {
170
+ return new Promise((resolve, reject) => {
171
+ const resolveTransaction = resolve;
172
+ const rejectTransaction = reject;
163
173
  this.db.transaction(async (transaction) => {
164
174
  try {
165
- await Promise.all(statements.map(statement => new Promise((resolve, reject) => {
175
+ await Promise.all(statements.map(statement => new Promise((_resolve, _reject) => {
166
176
  transaction.executeSql(statement, [], () => {
167
- resolve(null);
177
+ _resolve(null);
168
178
  }, (_, error) => {
169
- reject(error);
179
+ _reject(error);
170
180
  return true;
171
181
  });
172
182
  })));
@@ -31,7 +31,7 @@ class SQLiteDatabase {
31
31
  }
32
32
  }
33
33
  async createSchema(statements) {
34
- return await this.executeStatements(statements);
34
+ await this.executeStatements(statements);
35
35
  }
36
36
  async clear() {
37
37
  await this.closeDB();
@@ -88,7 +88,9 @@ class SQLiteDatabase {
88
88
  tx.executeSql(queryStatement, queryParams, (_, res) => {
89
89
  results = res.rows.raw();
90
90
  }, logger.warn);
91
- tx.executeSql(deleteStatement, deleteParams, () => { }, logger.warn);
91
+ tx.executeSql(deleteStatement, deleteParams, () => {
92
+ // no-op
93
+ }, logger.warn);
92
94
  });
93
95
  return results;
94
96
  }
@@ -1,4 +1,4 @@
1
- import { StorageAdapter, ModelInstanceCreator, InternalSchema, ModelPredicate, NamespaceResolver, NAMESPACES, OpType, PaginationInput, PersistentModel, PersistentModelConstructor, QueryOne } from '@aws-amplify/datastore';
1
+ import { InternalSchema, ModelInstanceCreator, ModelPredicate, NAMESPACES, NamespaceResolver, OpType, PaginationInput, PersistentModel, PersistentModelConstructor, QueryOne, StorageAdapter } from '@aws-amplify/datastore';
2
2
  import { CommonSQLiteDatabase, ModelInstanceMetadataWithId } from './types';
3
3
  export declare class CommonSQLiteAdapter implements StorageAdapter {
4
4
  private schema;
@@ -1,8 +1,8 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import { ConsoleLogger } from '@aws-amplify/core';
4
- import { generateSchemaStatements, queryByIdStatement, modelUpdateStatement, modelInsertStatement, queryAllStatement, queryOneStatement, deleteByIdStatement, deleteByPredicateStatement, } from '../common/SQLiteUtils';
5
- import { ModelPredicateCreator, ModelSortPredicateCreator, isPredicateObj, OpType, QueryOne, utils, } from '@aws-amplify/datastore';
4
+ import { ModelPredicateCreator, ModelSortPredicateCreator, OpType, QueryOne, isPredicateObj, utils, } from '@aws-amplify/datastore';
5
+ import { deleteByIdStatement, deleteByPredicateStatement, generateSchemaStatements, modelInsertStatement, modelUpdateStatement, queryAllStatement, queryByIdStatement, queryOneStatement, } from '../common/SQLiteUtils';
6
6
  const { traverseModel, validatePredicate, isModelConstructor } = utils;
7
7
  const logger = new ConsoleLogger('DataStore');
8
8
  export class CommonSQLiteAdapter {
@@ -11,9 +11,9 @@ export class CommonSQLiteAdapter {
11
11
  }
12
12
  async setUp(theSchema, namespaceResolver, modelInstanceCreator, getModelConstructorByModelName) {
13
13
  if (!this.initPromise) {
14
- this.initPromise = new Promise((res, rej) => {
15
- this.resolve = res;
16
- this.reject = rej;
14
+ this.initPromise = new Promise((_resolve, _reject) => {
15
+ this.resolve = _resolve;
16
+ this.reject = _reject;
17
17
  });
18
18
  }
19
19
  else {
@@ -25,7 +25,9 @@ export class CommonSQLiteAdapter {
25
25
  this.modelInstanceCreator = modelInstanceCreator;
26
26
  this.getModelConstructorByModelName = getModelConstructorByModelName;
27
27
  try {
28
- const usesCPKCodegen = Object.values(this.schema.namespaces.user.models).some(model => Object.values(model.fields).some(field => field.association?.hasOwnProperty('targetNames')));
28
+ const usesCPKCodegen = Object.values(this.schema.namespaces.user.models).some(model => Object.values(model.fields).some(field =>
29
+ // eslint-disable-next-line no-prototype-builtins
30
+ field.association?.hasOwnProperty('targetNames')));
29
31
  if (usesCPKCodegen) {
30
32
  logger.error('The SQLite adapter does not support schemas using custom primary key. Set `graphQLTransformer.respectPrimaryKeyAttributesOnConnectionField in `amplify/cli.json` to false to disable custom primary key. To regenerate your API, add or remove an empty newline to your GraphQL schema (to change the computed hash) then run `amplify push`.');
31
33
  }
@@ -67,10 +69,10 @@ export class CommonSQLiteAdapter {
67
69
  for await (const resItem of connectionStoreNames) {
68
70
  const { modelName, item, instance } = resItem;
69
71
  const { id } = item;
70
- const [queryStatement, params] = queryByIdStatement(id, modelName);
71
- const fromDB = await this.db.get(queryStatement, params);
72
- const opType = fromDB === undefined ? OpType.INSERT : OpType.UPDATE;
73
- const saveStatement = fromDB
72
+ const [queryStatementForRestItem, paramsForRestItem] = queryByIdStatement(id, modelName);
73
+ const fromDBForRestItem = await this.db.get(queryStatementForRestItem, paramsForRestItem);
74
+ const opType = fromDBForRestItem === undefined ? OpType.INSERT : OpType.UPDATE;
75
+ const saveStatement = fromDBForRestItem
74
76
  ? modelUpdateStatement(instance, modelName)
75
77
  : modelInsertStatement(instance, modelName);
76
78
  if (id === model.id || opType === OpType.INSERT) {
@@ -111,15 +113,15 @@ export class CommonSQLiteAdapter {
111
113
  const limit = pagination && pagination.limit;
112
114
  const page = limit && pagination.page;
113
115
  const queryById = predicates && this.idFromPredicate(predicates);
114
- const records = await (async () => {
116
+ const records = (await (async () => {
115
117
  if (queryById) {
116
118
  const record = await this.getById(tableName, queryById);
117
119
  return record ? [record] : [];
118
120
  }
119
121
  const [queryStatement, params] = queryAllStatement(tableName, predicates, sortPredicates, limit, page);
120
- return await this.db.getAll(queryStatement, params);
121
- })();
122
- return await this.load(namespaceName, modelConstructor.name, records);
122
+ return this.db.getAll(queryStatement, params);
123
+ })());
124
+ return this.load(namespaceName, modelConstructor.name, records);
123
125
  }
124
126
  async getById(tableName, id) {
125
127
  const [queryStatement, params] = queryByIdStatement(id, tableName);
@@ -200,7 +202,7 @@ export class CommonSQLiteAdapter {
200
202
  for (const item of items) {
201
203
  const connectedModels = traverseModel(modelConstructor.name, this.modelInstanceCreator(modelConstructor, item), this.schema.namespaces[this.namespaceResolver(modelConstructor)], this.modelInstanceCreator, this.getModelConstructorByModelName);
202
204
  const { id, _deleted } = item;
203
- const { instance } = connectedModels.find(({ instance }) => instance.id === id);
205
+ const { instance } = connectedModels.find(({ instance: connectedModelInstance }) => connectedModelInstance.id === id);
204
206
  if (_deleted) {
205
207
  // create the delete statements right away
206
208
  const deleteStatement = deleteByIdStatement(instance.id, tableName);
@@ -1,4 +1,4 @@
1
- import { InternalSchema, SchemaModel, PersistentModel, PredicatesGroup, SortPredicatesGroup, GraphQLScalarType } from '@aws-amplify/datastore';
1
+ import { GraphQLScalarType, InternalSchema, PersistentModel, PredicatesGroup, SchemaModel, SortPredicatesGroup } from '@aws-amplify/datastore';
2
2
  import { ParameterizedStatement } from './types';
3
3
  export declare function getSQLiteType(scalar: keyof Omit<typeof GraphQLScalarType, 'getJSType' | 'getValidationFunction' | 'getSQLiteType'>): 'TEXT' | 'INTEGER' | 'REAL' | 'BLOB';
4
4
  export declare function generateSchemaStatements(schema: InternalSchema): string[];
@@ -1,6 +1,6 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
- import { isGraphQLScalarType, QueryOne, isPredicateObj, isPredicateGroup, isModelFieldType, isTargetNameAssociation, isModelAttributeAuth, utils, } from '@aws-amplify/datastore';
3
+ import { QueryOne, isGraphQLScalarType, isModelAttributeAuth, isModelFieldType, isPredicateGroup, isPredicateObj, isTargetNameAssociation, utils, } from '@aws-amplify/datastore';
4
4
  const { USER, isNonModelConstructor, isModelConstructor } = utils;
5
5
  const keysFromModel = model => Object.keys(model)
6
6
  .map(k => `"${k}"`)
@@ -55,9 +55,10 @@ export function getSQLiteType(scalar) {
55
55
  return 'TEXT';
56
56
  case 'Float':
57
57
  return 'REAL';
58
- default:
58
+ default: {
59
59
  const _ = scalar;
60
60
  throw new Error(`unknown type ${scalar}`);
61
+ }
61
62
  }
62
63
  }
63
64
  export function generateSchemaStatements(schema) {
@@ -221,10 +222,11 @@ export const whereConditionFromPredicateObject = ({ field, operator, operand, })
221
222
  case 'notContains':
222
223
  statement = [`instr("${field}", ?) ${logicalOperator}`, [operand]];
223
224
  break;
224
- default:
225
+ default: {
225
226
  const _ = logicalOperatorKey;
226
227
  // Incorrect WHERE clause can result in data loss
227
228
  throw new Error('Cannot map predicate to a valid WHERE clause');
229
+ }
228
230
  }
229
231
  return statement;
230
232
  }
@@ -235,9 +237,9 @@ export function whereClauseFromPredicate(predicate) {
235
237
  recurse(predicate, result, params);
236
238
  const whereClause = `WHERE ${result.join(' ')}`;
237
239
  return [whereClause, params];
238
- function recurse(predicate, result = [], params = []) {
239
- if (isPredicateGroup(predicate)) {
240
- const { type: groupType, predicates: groupPredicates } = predicate;
240
+ function recurse(recursedPredicate, recursedResult = [], recursedParams = []) {
241
+ if (isPredicateGroup(recursedPredicate)) {
242
+ const { type: groupType, predicates: groupPredicates } = recursedPredicate;
241
243
  let filterType = '';
242
244
  let isNegation = false;
243
245
  switch (groupType) {
@@ -250,20 +252,21 @@ export function whereClauseFromPredicate(predicate) {
250
252
  case 'or':
251
253
  filterType = 'OR';
252
254
  break;
253
- default:
255
+ default: {
254
256
  const _ = groupType;
255
257
  throw new Error(`Invalid ${groupType}`);
258
+ }
256
259
  }
257
260
  const groupResult = [];
258
261
  for (const p of groupPredicates) {
259
- recurse(p, groupResult, params);
262
+ recurse(p, groupResult, recursedParams);
260
263
  }
261
- result.push(`${isNegation ? 'NOT' : ''}(${groupResult.join(` ${filterType} `)})`);
264
+ recursedResult.push(`${isNegation ? 'NOT' : ''}(${groupResult.join(` ${filterType} `)})`);
262
265
  }
263
- else if (isPredicateObj(predicate)) {
264
- const [condition, conditionParams] = whereConditionFromPredicateObject(predicate);
265
- result.push(condition);
266
- params.push(...conditionParams);
266
+ else if (isPredicateObj(recursedPredicate)) {
267
+ const [condition, conditionParams] = whereConditionFromPredicateObject(recursedPredicate);
268
+ recursedResult.push(condition);
269
+ recursedParams.push(...conditionParams);
267
270
  }
268
271
  }
269
272
  }
@@ -1,4 +1,4 @@
1
- import { PersistentModel, ModelInstanceMetadata } from '@aws-amplify/datastore';
1
+ import { ModelInstanceMetadata, PersistentModel } from '@aws-amplify/datastore';
2
2
  export interface CommonSQLiteDatabase {
3
3
  init(): Promise<void>;
4
4
  createSchema(statements: string[]): Promise<void>;