@aws-amplify/datastore-storage-adapter 2.1.14-unstable.b814567.0 → 2.1.14

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 (67) hide show
  1. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/ExpoSQLiteAdapter/ExpoSQLiteAdapter.js +10 -0
  2. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/ExpoSQLiteAdapter/ExpoSQLiteAdapter.js.map +1 -0
  3. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js +196 -0
  4. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js.map +1 -0
  5. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/SQLiteAdapter/SQLiteAdapter.js +10 -0
  6. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/SQLiteAdapter/SQLiteAdapter.js.map +1 -0
  7. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/SQLiteAdapter/SQLiteDatabase.js +115 -0
  8. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/SQLiteAdapter/SQLiteDatabase.js.map +1 -0
  9. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/common/CommonSQLiteAdapter.js +241 -0
  10. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/common/CommonSQLiteAdapter.js.map +1 -0
  11. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/common/SQLiteUtils.js +350 -0
  12. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/common/SQLiteUtils.js.map +1 -0
  13. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/common/constants.js +7 -0
  14. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/common/constants.js.map +1 -0
  15. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/common/types.js +3 -0
  16. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/common/types.js.map +1 -0
  17. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/index.js +9 -0
  18. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/index.js.map +1 -0
  19. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/ExpoSQLiteAdapter/ExpoSQLiteAdapter.d.ts +3 -0
  20. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/ExpoSQLiteAdapter/ExpoSQLiteAdapter.js +7 -0
  21. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/ExpoSQLiteAdapter/ExpoSQLiteAdapter.js.map +1 -0
  22. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/ExpoSQLiteAdapter/ExpoSQLiteDatabase.d.ts +17 -0
  23. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js +194 -0
  24. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js.map +1 -0
  25. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/SQLiteAdapter/SQLiteAdapter.d.ts +3 -0
  26. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/SQLiteAdapter/SQLiteAdapter.js +7 -0
  27. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/SQLiteAdapter/SQLiteAdapter.js.map +1 -0
  28. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/SQLiteAdapter/SQLiteDatabase.d.ts +17 -0
  29. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/SQLiteAdapter/SQLiteDatabase.js +112 -0
  30. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/SQLiteAdapter/SQLiteDatabase.js.map +1 -0
  31. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/CommonSQLiteAdapter.d.ts +23 -0
  32. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/CommonSQLiteAdapter.js +237 -0
  33. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/CommonSQLiteAdapter.js.map +1 -0
  34. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/SQLiteUtils.d.ts +36 -0
  35. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/SQLiteUtils.js +332 -0
  36. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/SQLiteUtils.js.map +1 -0
  37. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/constants.d.ts +1 -0
  38. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/constants.js +4 -0
  39. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/constants.js.map +1 -0
  40. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/types.d.ts +16 -0
  41. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/types.js +2 -0
  42. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/types.js.map +1 -0
  43. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/index.d.ts +2 -0
  44. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/index.js +5 -0
  45. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/index.js.map +1 -0
  46. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/meta/cjs.tsbuildinfo +1 -0
  47. package/CHANGELOG.md +4 -0
  48. package/dist/cjs/ExpoSQLiteAdapter/ExpoSQLiteAdapter.js.map +1 -1
  49. package/dist/cjs/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js.map +1 -1
  50. package/dist/cjs/SQLiteAdapter/SQLiteAdapter.js.map +1 -1
  51. package/dist/cjs/SQLiteAdapter/SQLiteDatabase.js.map +1 -1
  52. package/dist/cjs/common/CommonSQLiteAdapter.js.map +1 -1
  53. package/dist/cjs/common/SQLiteUtils.js.map +1 -1
  54. package/dist/cjs/common/constants.js.map +1 -1
  55. package/dist/cjs/common/types.js.map +1 -1
  56. package/dist/cjs/index.js.map +1 -1
  57. package/dist/esm/ExpoSQLiteAdapter/ExpoSQLiteAdapter.mjs.map +1 -1
  58. package/dist/esm/ExpoSQLiteAdapter/ExpoSQLiteDatabase.mjs.map +1 -1
  59. package/dist/esm/SQLiteAdapter/SQLiteAdapter.mjs.map +1 -1
  60. package/dist/esm/SQLiteAdapter/SQLiteDatabase.mjs.map +1 -1
  61. package/dist/esm/common/CommonSQLiteAdapter.mjs.map +1 -1
  62. package/dist/esm/common/SQLiteUtils.mjs.map +1 -1
  63. package/dist/esm/common/constants.mjs.map +1 -1
  64. package/dist/meta/cjs.tsbuildinfo +1 -0
  65. package/package.json +45 -49
  66. package/tsconfig.build.json +4 -0
  67. package/tsconfig.test.json +8 -0
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ // SPDX-License-Identifier: Apache-2.0
6
+ const CommonSQLiteAdapter_1 = require("../common/CommonSQLiteAdapter");
7
+ const ExpoSQLiteDatabase_1 = tslib_1.__importDefault(require("./ExpoSQLiteDatabase"));
8
+ const ExpoSQLiteAdapter = new CommonSQLiteAdapter_1.CommonSQLiteAdapter(new ExpoSQLiteDatabase_1.default());
9
+ exports.default = ExpoSQLiteAdapter;
10
+ //# sourceMappingURL=ExpoSQLiteAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpoSQLiteAdapter.js","sourceRoot":"","sources":["../../../src/ExpoSQLiteAdapter/ExpoSQLiteAdapter.ts"],"names":[],"mappings":";;;AAAA,qEAAqE;AACrE,sCAAsC;AACtC,uEAAoE;AACpE,sFAAsD;AAEtD,MAAM,iBAAiB,GAAwB,IAAI,yCAAmB,CACrE,IAAI,4BAAkB,EAAE,CACxB,CAAC;AAEF,kBAAe,iBAAiB,CAAC"}
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
+ // SPDX-License-Identifier: Apache-2.0
5
+ const core_1 = require("@aws-amplify/core");
6
+ const expo_file_system_1 = require("expo-file-system");
7
+ const expo_sqlite_1 = require("expo-sqlite");
8
+ const constants_1 = require("../common/constants");
9
+ const logger = new core_1.ConsoleLogger('ExpoSQLiteDatabase');
10
+ /*
11
+
12
+ Note:
13
+ ExpoSQLite transaction error callbacks require returning a boolean value to indicate whether the
14
+ error was handled or not. Returning a true value indicates the error was handled and does not
15
+ rollback the whole transaction.
16
+
17
+ */
18
+ class ExpoSQLiteDatabase {
19
+ async init() {
20
+ // only open database once.
21
+ if (!this.db) {
22
+ // As per expo docs version, description and size arguments are ignored,
23
+ // but are accepted by the function for compatibility with the WebSQL specification.
24
+ // Hence, we do not need those arguments.
25
+ this.db = (0, expo_sqlite_1.openDatabase)(constants_1.DB_NAME);
26
+ }
27
+ }
28
+ createSchema(statements) {
29
+ return this.executeStatements(statements);
30
+ }
31
+ async clear() {
32
+ try {
33
+ logger.debug('Clearing database');
34
+ await this.closeDB();
35
+ // delete database is not supported by expo-sqlite.
36
+ // Database file needs to be deleted using deleteAsync from expo-file-system
37
+ await (0, expo_file_system_1.deleteAsync)(`${expo_file_system_1.documentDirectory}SQLite/${constants_1.DB_NAME}`);
38
+ logger.debug('Database cleared');
39
+ }
40
+ catch (error) {
41
+ logger.warn('Error clearing the database.', error);
42
+ // open database if it was closed earlier and this.db was set to undefined.
43
+ this.init();
44
+ }
45
+ }
46
+ async get(statement, params) {
47
+ const results = await this.getAll(statement, params);
48
+ return results[0];
49
+ }
50
+ getAll(statement, params) {
51
+ return new Promise((resolve, reject) => {
52
+ this.db.readTransaction(transaction => {
53
+ transaction.executeSql(statement, params, (_, result) => {
54
+ resolve(result.rows._array || []);
55
+ }, (_, error) => {
56
+ reject(error);
57
+ logger.warn(error);
58
+ return true;
59
+ });
60
+ });
61
+ });
62
+ }
63
+ save(statement, params) {
64
+ return new Promise((resolve, reject) => {
65
+ this.db.transaction(transaction => {
66
+ transaction.executeSql(statement, params, () => {
67
+ resolve(null);
68
+ }, (_, error) => {
69
+ reject(error);
70
+ logger.warn(error);
71
+ return true;
72
+ });
73
+ });
74
+ });
75
+ }
76
+ batchQuery(queryParameterizedStatements = new Set()) {
77
+ return new Promise((resolveTransaction, rejectTransaction) => {
78
+ this.db.transaction(async (transaction) => {
79
+ try {
80
+ const results = await Promise.all([...queryParameterizedStatements].map(([statement, params]) => new Promise((resolve, reject) => {
81
+ transaction.executeSql(statement, params, (_, result) => {
82
+ resolve(result.rows._array[0]);
83
+ }, (_, error) => {
84
+ reject(error);
85
+ logger.warn(error);
86
+ return true;
87
+ });
88
+ })));
89
+ resolveTransaction(results);
90
+ }
91
+ catch (error) {
92
+ rejectTransaction(error);
93
+ logger.warn(error);
94
+ }
95
+ });
96
+ });
97
+ }
98
+ batchSave(saveParameterizedStatements = new Set(), deleteParameterizedStatements) {
99
+ return new Promise((resolveTransaction, rejectTransaction) => {
100
+ this.db.transaction(async (transaction) => {
101
+ try {
102
+ // await for all sql statements promises to resolve
103
+ await Promise.all([...saveParameterizedStatements].map(([statement, params]) => new Promise((resolve, reject) => {
104
+ transaction.executeSql(statement, params, () => {
105
+ resolve(null);
106
+ }, (_, error) => {
107
+ reject(error);
108
+ logger.warn(error);
109
+ return true;
110
+ });
111
+ })));
112
+ 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
+ }))));
120
+ }
121
+ resolveTransaction(null);
122
+ }
123
+ catch (error) {
124
+ rejectTransaction(error);
125
+ logger.warn(error);
126
+ }
127
+ });
128
+ });
129
+ }
130
+ selectAndDelete(queryParameterizedStatement, deleteParameterizedStatement) {
131
+ const [queryStatement, queryParams] = queryParameterizedStatement;
132
+ const [deleteStatement, deleteParams] = deleteParameterizedStatement;
133
+ return new Promise((resolveTransaction, rejectTransaction) => {
134
+ this.db.transaction(async (transaction) => {
135
+ try {
136
+ const result = await new Promise((resolve, reject) => {
137
+ transaction.executeSql(queryStatement, queryParams, (_, result) => {
138
+ resolve(result.rows._array || []);
139
+ }, (_, error) => {
140
+ reject(error);
141
+ logger.warn(error);
142
+ return true;
143
+ });
144
+ });
145
+ await new Promise((resolve, reject) => {
146
+ transaction.executeSql(deleteStatement, deleteParams, () => {
147
+ resolve(null);
148
+ }, (_, error) => {
149
+ reject(error);
150
+ logger.warn(error);
151
+ return true;
152
+ });
153
+ });
154
+ resolveTransaction(result);
155
+ }
156
+ catch (error) {
157
+ rejectTransaction(error);
158
+ logger.warn(error);
159
+ }
160
+ });
161
+ });
162
+ }
163
+ executeStatements(statements) {
164
+ return new Promise((resolveTransaction, rejectTransaction) => {
165
+ this.db.transaction(async (transaction) => {
166
+ try {
167
+ await Promise.all(statements.map(statement => new Promise((resolve, reject) => {
168
+ transaction.executeSql(statement, [], () => {
169
+ resolve(null);
170
+ }, (_, error) => {
171
+ reject(error);
172
+ return true;
173
+ });
174
+ })));
175
+ resolveTransaction(null);
176
+ }
177
+ catch (error) {
178
+ rejectTransaction(error);
179
+ logger.warn(error);
180
+ }
181
+ });
182
+ });
183
+ }
184
+ async closeDB() {
185
+ if (this.db) {
186
+ logger.debug('Closing Database');
187
+ // closing database is not supported by expo-sqlite.
188
+ // Workaround is to access the private db variable and call the close() method.
189
+ await this.db._db.close();
190
+ logger.debug('Database closed');
191
+ this.db = undefined;
192
+ }
193
+ }
194
+ }
195
+ exports.default = ExpoSQLiteDatabase;
196
+ //# sourceMappingURL=ExpoSQLiteDatabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpoSQLiteDatabase.js","sourceRoot":"","sources":["../../../src/ExpoSQLiteAdapter/ExpoSQLiteDatabase.ts"],"names":[],"mappings":";;AAAA,qEAAqE;AACrE,sCAAsC;AACtC,4CAAkD;AAElD,uDAAkE;AAClE,6CAA2D;AAC3D,mDAA8C;AAG9C,MAAM,MAAM,GAAG,IAAI,oBAAa,CAAC,oBAAoB,CAAC,CAAC;AAEvD;;;;;;;EAOE;AAEF,MAAM,kBAAkB;IAGhB,KAAK,CAAC,IAAI;QAChB,2BAA2B;QAE3B,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACb,wEAAwE;YACxE,oFAAoF;YACpF,yCAAyC;YACzC,IAAI,CAAC,EAAE,GAAG,IAAA,0BAAY,EAAC,mBAAO,CAAC,CAAC;SAChC;IACF,CAAC;IAEM,YAAY,CAAC,UAAoB;QACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,KAAK;QACjB,IAAI;YACH,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAClC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,mDAAmD;YACnD,4EAA4E;YAC5E,MAAM,IAAA,8BAAW,EAAC,GAAG,oCAAiB,UAAU,mBAAO,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;SACjC;QAAC,OAAO,KAAK,EAAE;YACf,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACnD,2EAA2E;YAC3E,IAAI,CAAC,IAAI,EAAE,CAAC;SACZ;IACF,CAAC;IAEM,KAAK,CAAC,GAAG,CACf,SAAiB,EACjB,MAA2B;QAE3B,MAAM,OAAO,GAAQ,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC1D,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAEM,MAAM,CACZ,SAAiB,EACjB,MAA2B;QAE3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE;gBACrC,WAAW,CAAC,UAAU,CACrB,SAAS,EACT,MAAM,EACN,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;oBACb,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBACnC,CAAC,EACD,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;oBACZ,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACnB,OAAO,IAAI,CAAC;gBACb,CAAC,CACD,CAAC;YACH,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAEM,IAAI,CAAC,SAAiB,EAAE,MAA2B;QACzD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;gBACjC,WAAW,CAAC,UAAU,CACrB,SAAS,EACT,MAAM,EACN,GAAG,EAAE;oBACJ,OAAO,CAAC,IAAI,CAAC,CAAC;gBACf,CAAC,EACD,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;oBACZ,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACnB,OAAO,IAAI,CAAC;gBACb,CAAC,CACD,CAAC;YACH,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAEM,UAAU,CAChB,+BAA4D,IAAI,GAAG,EAAE;QAErE,OAAO,IAAI,OAAO,CAAC,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,EAAE;YAC5D,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAC,WAAW,EAAC,EAAE;gBACvC,IAAI;oBACH,MAAM,OAAO,GAAU,MAAM,OAAO,CAAC,GAAG,CACvC,CAAC,GAAG,4BAA4B,CAAC,CAAC,GAAG,CACpC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,CACvB,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBAC/B,WAAW,CAAC,UAAU,CACrB,SAAS,EACT,MAAM,EACN,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;4BACb,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;wBAChC,CAAC,EACD,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;4BACZ,MAAM,CAAC,KAAK,CAAC,CAAC;4BACd,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BACnB,OAAO,IAAI,CAAC;wBACb,CAAC,CACD,CAAC;oBACH,CAAC,CAAC,CACH,CACD,CAAC;oBACF,kBAAkB,CAAC,OAAO,CAAC,CAAC;iBAC5B;gBAAC,OAAO,KAAK,EAAE;oBACf,iBAAiB,CAAC,KAAK,CAAC,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACnB;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAEM,SAAS,CACf,8BAA2D,IAAI,GAAG,EAAE,EACpE,6BAA2D;QAE3D,OAAO,IAAI,OAAO,CAAC,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,EAAE;YAC5D,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAC,WAAW,EAAC,EAAE;gBACvC,IAAI;oBACH,mDAAmD;oBACnD,MAAM,OAAO,CAAC,GAAG,CAChB,CAAC,GAAG,2BAA2B,CAAC,CAAC,GAAG,CACnC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,CACvB,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBAC/B,WAAW,CAAC,UAAU,CACrB,SAAS,EACT,MAAM,EACN,GAAG,EAAE;4BACJ,OAAO,CAAC,IAAI,CAAC,CAAC;wBACf,CAAC,EACD,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;4BACZ,MAAM,CAAC,KAAK,CAAC,CAAC;4BACd,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BACnB,OAAO,IAAI,CAAC;wBACb,CAAC,CACD,CAAC;oBACH,CAAC,CAAC,CACH,CACD,CAAC;oBACF,IAAI,6BAA6B,EAAE;wBAClC,MAAM,OAAO,CAAC,GAAG,CAChB,CAAC,GAAG,6BAA6B,CAAC,CAAC,GAAG,CACrC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,CACvB,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAC/B,WAAW,CAAC,UAAU,CACrB,SAAS,EACT,MAAM,EACN,GAAG,EAAE;4BACJ,OAAO,CAAC,IAAI,CAAC,CAAC;wBACf,CAAC,EACD,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;4BACZ,MAAM,CAAC,KAAK,CAAC,CAAC;4BACd,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BACnB,OAAO,IAAI,CAAC;wBACb,CAAC,CACD,CACD,CACF,CACD,CAAC;qBACF;oBACD,kBAAkB,CAAC,IAAI,CAAC,CAAC;iBACzB;gBAAC,OAAO,KAAK,EAAE;oBACf,iBAAiB,CAAC,KAAK,CAAC,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACnB;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAEM,eAAe,CACrB,2BAAmD,EACnD,4BAAoD;QAEpD,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,GAAG,2BAA2B,CAAC;QAClE,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,GAAG,4BAA4B,CAAC;QAErE,OAAO,IAAI,OAAO,CAAC,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,EAAE;YAC5D,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAC,WAAW,EAAC,EAAE;gBACvC,IAAI;oBACH,MAAM,MAAM,GAAQ,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBACzD,WAAW,CAAC,UAAU,CACrB,cAAc,EACd,WAAW,EACX,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;4BACb,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;wBACnC,CAAC,EACD,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;4BACZ,MAAM,CAAC,KAAK,CAAC,CAAC;4BACd,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BACnB,OAAO,IAAI,CAAC;wBACb,CAAC,CACD,CAAC;oBACH,CAAC,CAAC,CAAC;oBACH,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBACrC,WAAW,CAAC,UAAU,CACrB,eAAe,EACf,YAAY,EACZ,GAAG,EAAE;4BACJ,OAAO,CAAC,IAAI,CAAC,CAAC;wBACf,CAAC,EACD,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;4BACZ,MAAM,CAAC,KAAK,CAAC,CAAC;4BACd,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BACnB,OAAO,IAAI,CAAC;wBACb,CAAC,CACD,CAAC;oBACH,CAAC,CAAC,CAAC;oBACH,kBAAkB,CAAC,MAAM,CAAC,CAAC;iBAC3B;gBAAC,OAAO,KAAK,EAAE;oBACf,iBAAiB,CAAC,KAAK,CAAC,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACnB;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,UAAoB;QAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,EAAE;YAC5D,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAC,WAAW,EAAC,EAAE;gBACvC,IAAI;oBACH,MAAM,OAAO,CAAC,GAAG,CAChB,UAAU,CAAC,GAAG,CACb,SAAS,CAAC,EAAE,CACX,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBAC/B,WAAW,CAAC,UAAU,CACrB,SAAS,EACT,EAAE,EACF,GAAG,EAAE;4BACJ,OAAO,CAAC,IAAI,CAAC,CAAC;wBACf,CAAC,EACD,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;4BACZ,MAAM,CAAC,KAAK,CAAC,CAAC;4BACd,OAAO,IAAI,CAAC;wBACb,CAAC,CACD,CAAC;oBACH,CAAC,CAAC,CACH,CACD,CAAC;oBACF,kBAAkB,CAAC,IAAI,CAAC,CAAC;iBACzB;gBAAC,OAAO,KAAK,EAAE;oBACf,iBAAiB,CAAC,KAAK,CAAC,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACnB;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,OAAO;QACpB,IAAI,IAAI,CAAC,EAAE,EAAE;YACZ,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACjC,oDAAoD;YACpD,+EAA+E;YAC/E,MAAO,IAAI,CAAC,EAAU,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAChC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;SACpB;IACF,CAAC;CACD;AAED,kBAAe,kBAAkB,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ // SPDX-License-Identifier: Apache-2.0
6
+ const CommonSQLiteAdapter_1 = require("../common/CommonSQLiteAdapter");
7
+ const SQLiteDatabase_1 = tslib_1.__importDefault(require("./SQLiteDatabase"));
8
+ const SQLiteAdapter = new CommonSQLiteAdapter_1.CommonSQLiteAdapter(new SQLiteDatabase_1.default());
9
+ exports.default = SQLiteAdapter;
10
+ //# sourceMappingURL=SQLiteAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SQLiteAdapter.js","sourceRoot":"","sources":["../../../src/SQLiteAdapter/SQLiteAdapter.ts"],"names":[],"mappings":";;;AAAA,qEAAqE;AACrE,sCAAsC;AACtC,uEAAoE;AACpE,8EAA8C;AAE9C,MAAM,aAAa,GAAwB,IAAI,yCAAmB,CACjE,IAAI,wBAAc,EAAE,CACpB,CAAC;AAEF,kBAAe,aAAa,CAAC"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ // SPDX-License-Identifier: Apache-2.0
6
+ const react_native_sqlite_storage_1 = tslib_1.__importDefault(require("react-native-sqlite-storage"));
7
+ const core_1 = require("@aws-amplify/core");
8
+ const constants_1 = require("../common/constants");
9
+ const logger = new core_1.ConsoleLogger('SQLiteDatabase');
10
+ react_native_sqlite_storage_1.default.enablePromise(true);
11
+ if (core_1.ConsoleLogger.LOG_LEVEL === 'DEBUG') {
12
+ react_native_sqlite_storage_1.default.DEBUG(true);
13
+ }
14
+ /*
15
+
16
+ Note:
17
+ I purposely avoided using arrow functions () => {} in this class,
18
+ Because I ran into issues with them in some of the SQLite method callbacks
19
+
20
+ Also, even though the SQLite library is promisified, certain operations
21
+ only work correctly with callbacks. Specifically, any time you need to
22
+ get the result of an `executeSql` command inside of a transaction
23
+ (see the batchQuery method below)
24
+
25
+ */
26
+ class SQLiteDatabase {
27
+ async init() {
28
+ // only open database once.
29
+ if (!this.db) {
30
+ this.db = await react_native_sqlite_storage_1.default.openDatabase({
31
+ name: constants_1.DB_NAME,
32
+ location: 'default',
33
+ });
34
+ }
35
+ }
36
+ async createSchema(statements) {
37
+ return await this.executeStatements(statements);
38
+ }
39
+ async clear() {
40
+ await this.closeDB();
41
+ logger.debug('Deleting database');
42
+ await react_native_sqlite_storage_1.default.deleteDatabase({ name: constants_1.DB_NAME, location: 'default' });
43
+ logger.debug('Database deleted');
44
+ }
45
+ async get(statement, params) {
46
+ const results = await this.getAll(statement, params);
47
+ return results[0];
48
+ }
49
+ async getAll(statement, params) {
50
+ const [resultSet] = await this.db.executeSql(statement, params);
51
+ const result = resultSet &&
52
+ resultSet.rows &&
53
+ resultSet.rows.length &&
54
+ resultSet.rows.raw &&
55
+ resultSet.rows.raw();
56
+ return result || [];
57
+ }
58
+ async save(statement, params) {
59
+ await this.db.executeSql(statement, params);
60
+ }
61
+ async batchQuery(queryParameterizedStatements) {
62
+ const results = [];
63
+ await this.db.readTransaction(tx => {
64
+ for (const [statement, params] of queryParameterizedStatements) {
65
+ tx.executeSql(statement, params, (_, res) => {
66
+ results.push(res.rows.raw()[0]);
67
+ }, logger.warn);
68
+ }
69
+ });
70
+ return results;
71
+ }
72
+ async batchSave(saveParameterizedStatements, deleteParameterizedStatements) {
73
+ await this.db.transaction(tx => {
74
+ for (const [statement, params] of saveParameterizedStatements) {
75
+ tx.executeSql(statement, params);
76
+ }
77
+ });
78
+ if (deleteParameterizedStatements) {
79
+ await this.db.transaction(tx => {
80
+ for (const [statement, params] of deleteParameterizedStatements) {
81
+ tx.executeSql(statement, params);
82
+ }
83
+ });
84
+ }
85
+ }
86
+ async selectAndDelete(queryParameterizedStatement, deleteParameterizedStatement) {
87
+ let results = [];
88
+ const [queryStatement, queryParams] = queryParameterizedStatement;
89
+ const [deleteStatement, deleteParams] = deleteParameterizedStatement;
90
+ await this.db.transaction(tx => {
91
+ tx.executeSql(queryStatement, queryParams, (_, res) => {
92
+ results = res.rows.raw();
93
+ }, logger.warn);
94
+ tx.executeSql(deleteStatement, deleteParams, () => { }, logger.warn);
95
+ });
96
+ return results;
97
+ }
98
+ async executeStatements(statements) {
99
+ await this.db.transaction(tx => {
100
+ for (const statement of statements) {
101
+ tx.executeSql(statement);
102
+ }
103
+ });
104
+ }
105
+ async closeDB() {
106
+ if (this.db) {
107
+ logger.debug('Closing Database');
108
+ await this.db.close();
109
+ logger.debug('Database closed');
110
+ this.db = undefined;
111
+ }
112
+ }
113
+ }
114
+ exports.default = SQLiteDatabase;
115
+ //# sourceMappingURL=SQLiteDatabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SQLiteDatabase.js","sourceRoot":"","sources":["../../../src/SQLiteAdapter/SQLiteDatabase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommonSQLiteAdapter = void 0;
4
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ // SPDX-License-Identifier: Apache-2.0
6
+ const core_1 = require("@aws-amplify/core");
7
+ const SQLiteUtils_1 = require("../common/SQLiteUtils");
8
+ const datastore_1 = require("@aws-amplify/datastore");
9
+ const { traverseModel, validatePredicate, isModelConstructor } = datastore_1.utils;
10
+ const logger = new core_1.ConsoleLogger('DataStore');
11
+ class CommonSQLiteAdapter {
12
+ constructor(db) {
13
+ this.db = db;
14
+ }
15
+ async setUp(theSchema, namespaceResolver, modelInstanceCreator, getModelConstructorByModelName) {
16
+ if (!this.initPromise) {
17
+ this.initPromise = new Promise((res, rej) => {
18
+ this.resolve = res;
19
+ this.reject = rej;
20
+ });
21
+ }
22
+ else {
23
+ await this.initPromise;
24
+ return;
25
+ }
26
+ this.schema = theSchema;
27
+ this.namespaceResolver = namespaceResolver;
28
+ this.modelInstanceCreator = modelInstanceCreator;
29
+ this.getModelConstructorByModelName = getModelConstructorByModelName;
30
+ try {
31
+ const usesCPKCodegen = Object.values(this.schema.namespaces.user.models).some(model => Object.values(model.fields).some(field => field.association?.hasOwnProperty('targetNames')));
32
+ if (usesCPKCodegen) {
33
+ 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
+ }
35
+ await this.db.init();
36
+ const statements = (0, SQLiteUtils_1.generateSchemaStatements)(this.schema);
37
+ await this.db.createSchema(statements);
38
+ this.resolve();
39
+ }
40
+ catch (error) {
41
+ this.reject(error);
42
+ }
43
+ }
44
+ async clear() {
45
+ await this.db.clear();
46
+ this.initPromise = undefined;
47
+ }
48
+ async save(model, condition) {
49
+ const modelConstructor = Object.getPrototypeOf(model)
50
+ .constructor;
51
+ const { name: tableName } = modelConstructor;
52
+ const connectedModels = traverseModel(modelConstructor.name, model, this.schema.namespaces[this.namespaceResolver(modelConstructor)], this.modelInstanceCreator, this.getModelConstructorByModelName);
53
+ const connectionStoreNames = Object.values(connectedModels).map(({ modelName, item, instance }) => {
54
+ return { modelName, item, instance };
55
+ });
56
+ const [queryStatement, params] = (0, SQLiteUtils_1.queryByIdStatement)(model.id, tableName);
57
+ const fromDB = await this.db.get(queryStatement, params);
58
+ if (condition && fromDB) {
59
+ const predicates = datastore_1.ModelPredicateCreator.getPredicates(condition);
60
+ const { predicates: predicateObjs, type } = predicates;
61
+ const isValid = validatePredicate(fromDB, type, predicateObjs);
62
+ if (!isValid) {
63
+ const msg = 'Conditional update failed';
64
+ logger.error(msg, { model: fromDB, condition: predicateObjs });
65
+ throw new Error(msg);
66
+ }
67
+ }
68
+ const result = [];
69
+ const saveStatements = new Set();
70
+ for await (const resItem of connectionStoreNames) {
71
+ const { modelName, item, instance } = resItem;
72
+ 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
77
+ ? (0, SQLiteUtils_1.modelUpdateStatement)(instance, modelName)
78
+ : (0, SQLiteUtils_1.modelInsertStatement)(instance, modelName);
79
+ if (id === model.id || opType === datastore_1.OpType.INSERT) {
80
+ saveStatements.add(saveStatement);
81
+ result.push([instance, opType]);
82
+ }
83
+ }
84
+ await this.db.batchSave(saveStatements);
85
+ return result;
86
+ }
87
+ async load(namespaceName, srcModelName, records) {
88
+ const namespace = this.schema.namespaces[namespaceName];
89
+ const relations = namespace.relationships[srcModelName].relationTypes;
90
+ const connectionTableNames = relations.map(({ modelName }) => modelName);
91
+ const modelConstructor = this.getModelConstructorByModelName(namespaceName, srcModelName);
92
+ if (connectionTableNames.length === 0) {
93
+ return records.map(record => this.modelInstanceCreator(modelConstructor, record));
94
+ }
95
+ // Remove related-model fields. They're all `null` in the database,
96
+ // and any that happen to be required will result in a false validation
97
+ // error when DataStore attempts to initialize with `null`.
98
+ // These fields aren't actually needed here. DataStore will use the FK's
99
+ // from the schema model.
100
+ return records.map(record => {
101
+ for (const r of relations) {
102
+ delete record[r.fieldName];
103
+ }
104
+ return this.modelInstanceCreator(modelConstructor, record);
105
+ });
106
+ }
107
+ async query(modelConstructor, predicate, pagination) {
108
+ const { name: tableName } = modelConstructor;
109
+ const namespaceName = this.namespaceResolver(modelConstructor);
110
+ const predicates = predicate && datastore_1.ModelPredicateCreator.getPredicates(predicate);
111
+ const sortPredicates = pagination &&
112
+ pagination.sort &&
113
+ datastore_1.ModelSortPredicateCreator.getPredicates(pagination.sort);
114
+ const limit = pagination && pagination.limit;
115
+ const page = limit && pagination.page;
116
+ const queryById = predicates && this.idFromPredicate(predicates);
117
+ const records = await (async () => {
118
+ if (queryById) {
119
+ const record = await this.getById(tableName, queryById);
120
+ return record ? [record] : [];
121
+ }
122
+ 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);
126
+ }
127
+ async getById(tableName, id) {
128
+ const [queryStatement, params] = (0, SQLiteUtils_1.queryByIdStatement)(id, tableName);
129
+ const record = await this.db.get(queryStatement, params);
130
+ return record;
131
+ }
132
+ idFromPredicate(predicates) {
133
+ const { predicates: predicateObjs } = predicates;
134
+ const idPredicate = predicateObjs.length === 1 &&
135
+ predicateObjs.find(p => (0, datastore_1.isPredicateObj)(p) && p.field === 'id' && p.operator === 'eq');
136
+ return idPredicate && idPredicate.operand;
137
+ }
138
+ async queryOne(modelConstructor, firstOrLast = datastore_1.QueryOne.FIRST) {
139
+ const { name: tableName } = modelConstructor;
140
+ const [queryStatement, params] = (0, SQLiteUtils_1.queryOneStatement)(firstOrLast, tableName);
141
+ const result = await this.db.get(queryStatement, params);
142
+ const modelInstance = result && this.modelInstanceCreator(modelConstructor, result);
143
+ return modelInstance;
144
+ }
145
+ // Currently does not cascade
146
+ // TODO: use FKs in relations and have `ON DELETE CASCADE` set
147
+ // For Has Many and Has One relations to have SQL handle cascades automatically
148
+ async delete(modelOrModelConstructor, condition) {
149
+ if (isModelConstructor(modelOrModelConstructor)) {
150
+ const modelConstructor = modelOrModelConstructor;
151
+ const namespaceName = this.namespaceResolver(modelConstructor);
152
+ const { name: tableName } = modelConstructor;
153
+ const predicates = condition && datastore_1.ModelPredicateCreator.getPredicates(condition);
154
+ const queryStatement = (0, SQLiteUtils_1.queryAllStatement)(tableName, predicates);
155
+ const deleteStatement = (0, SQLiteUtils_1.deleteByPredicateStatement)(tableName, predicates);
156
+ const models = await this.db.selectAndDelete(queryStatement, deleteStatement);
157
+ const modelInstances = await this.load(namespaceName, modelConstructor.name, models);
158
+ return [modelInstances, modelInstances];
159
+ }
160
+ else {
161
+ const model = modelOrModelConstructor;
162
+ const modelConstructor = Object.getPrototypeOf(model)
163
+ .constructor;
164
+ const { name: tableName } = modelConstructor;
165
+ if (condition) {
166
+ const [queryStatement, params] = (0, SQLiteUtils_1.queryByIdStatement)(model.id, tableName);
167
+ const fromDB = await this.db.get(queryStatement, params);
168
+ if (fromDB === undefined) {
169
+ const msg = 'Model instance not found in storage';
170
+ logger.warn(msg, { model });
171
+ return [[model], []];
172
+ }
173
+ const predicates = datastore_1.ModelPredicateCreator.getPredicates(condition);
174
+ const { predicates: predicateObjs, type } = predicates;
175
+ const isValid = validatePredicate(fromDB, type, predicateObjs);
176
+ if (!isValid) {
177
+ const msg = 'Conditional update failed';
178
+ logger.error(msg, { model: fromDB, condition: predicateObjs });
179
+ throw new Error(msg);
180
+ }
181
+ const [deleteStatement, deleteParams] = (0, SQLiteUtils_1.deleteByIdStatement)(model.id, tableName);
182
+ await this.db.save(deleteStatement, deleteParams);
183
+ return [[model], [model]];
184
+ }
185
+ else {
186
+ const [deleteStatement, params] = (0, SQLiteUtils_1.deleteByIdStatement)(model.id, tableName);
187
+ await this.db.save(deleteStatement, params);
188
+ return [[model], [model]];
189
+ }
190
+ }
191
+ }
192
+ async batchSave(modelConstructor, items) {
193
+ const { name: tableName } = modelConstructor;
194
+ const result = [];
195
+ const itemsToSave = [];
196
+ // To determine whether an item should result in an insert or update operation
197
+ // We first need to query the local DB on the item id
198
+ const queryStatements = new Set();
199
+ // Deletes don't need to be queried first, because if the item doesn't exist,
200
+ // the delete operation will be a no-op
201
+ const deleteStatements = new Set();
202
+ const saveStatements = new Set();
203
+ for (const item of items) {
204
+ const connectedModels = traverseModel(modelConstructor.name, this.modelInstanceCreator(modelConstructor, item), this.schema.namespaces[this.namespaceResolver(modelConstructor)], this.modelInstanceCreator, this.getModelConstructorByModelName);
205
+ const { id, _deleted } = item;
206
+ const { instance } = connectedModels.find(({ instance }) => instance.id === id);
207
+ if (_deleted) {
208
+ // create the delete statements right away
209
+ const deleteStatement = (0, SQLiteUtils_1.deleteByIdStatement)(instance.id, tableName);
210
+ deleteStatements.add(deleteStatement);
211
+ result.push([item, datastore_1.OpType.DELETE]);
212
+ }
213
+ else {
214
+ // query statements for the saves at first
215
+ const queryStatement = (0, SQLiteUtils_1.queryByIdStatement)(id, tableName);
216
+ queryStatements.add(queryStatement);
217
+ // combination of insert and update items
218
+ itemsToSave.push(instance);
219
+ }
220
+ }
221
+ // returns the query results for each of the save items
222
+ const queryResponses = await this.db.batchQuery(queryStatements);
223
+ queryResponses.forEach((response, idx) => {
224
+ if (response === undefined) {
225
+ const insertStatement = (0, SQLiteUtils_1.modelInsertStatement)(itemsToSave[idx], tableName);
226
+ saveStatements.add(insertStatement);
227
+ result.push([itemsToSave[idx], datastore_1.OpType.INSERT]);
228
+ }
229
+ else {
230
+ const updateStatement = (0, SQLiteUtils_1.modelUpdateStatement)(itemsToSave[idx], tableName);
231
+ saveStatements.add(updateStatement);
232
+ result.push([itemsToSave[idx], datastore_1.OpType.UPDATE]);
233
+ }
234
+ });
235
+ // perform all of the insert/update/delete operations in a single transaction
236
+ await this.db.batchSave(saveStatements, deleteStatements);
237
+ return result;
238
+ }
239
+ }
240
+ exports.CommonSQLiteAdapter = CommonSQLiteAdapter;
241
+ //# sourceMappingURL=CommonSQLiteAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommonSQLiteAdapter.js","sourceRoot":"","sources":["../../../src/common/CommonSQLiteAdapter.ts"],"names":[],"mappings":";;;AAAA,qEAAqE;AACrE,sCAAsC;AACtC,4CAAkD;AAClD,uDAS+B;AAE/B,sDAkBgC;AAOhC,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,GAAG,iBAAK,CAAC;AAEvE,MAAM,MAAM,GAAG,IAAI,oBAAa,CAAC,WAAW,CAAC,CAAC;AAE9C,MAAa,mBAAmB;IAa/B,YAAY,EAAwB;QACnC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,KAAK,CACjB,SAAyB,EACzB,iBAAoC,EACpC,oBAA0C,EAC1C,8BAGoC;QAEpC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACtB,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBAC3C,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;gBACnB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;YACnB,CAAC,CAAC,CAAC;SACH;aAAM;YACN,MAAM,IAAI,CAAC,WAAW,CAAC;YACvB,OAAO;SACP;QACD,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,8BAA8B,GAAG,8BAA8B,CAAC;QAErE,IAAI;YACH,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CACnC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAClC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CACd,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAC/B,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,cAAc,CAAC,aAAa,CAAC,CACzD,CACD,CAAC;YACF,IAAI,cAAc,EAAE;gBACnB,MAAM,CAAC,KAAK,CACX,+UAA+U,CAC/U,CAAC;aACF;YACD,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,UAAU,GAAG,IAAA,sCAAwB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzD,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAEvC,IAAI,CAAC,OAAO,EAAE,CAAC;SACf;QAAC,OAAO,KAAK,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACnB;IACF,CAAC;IAED,KAAK,CAAC,KAAK;QACV,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAEtB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,IAAI,CACT,KAAQ,EACR,SAA6B;QAE7B,MAAM,gBAAgB,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC;aACnD,WAA4C,CAAC;QAC/C,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC;QAC7C,MAAM,eAAe,GAAG,aAAa,CACpC,gBAAgB,CAAC,IAAI,EACrB,KAAK,EACL,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,EAChE,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,8BAA8B,CACnC,CAAC;QACF,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAC9D,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;YACjC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACtC,CAAC,CACD,CAAC;QAEF,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,IAAA,gCAAkB,EAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAEzE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAEzD,IAAI,SAAS,IAAI,MAAM,EAAE;YACxB,MAAM,UAAU,GAAG,iCAAqB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAClE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;YAEvD,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;YAE/D,IAAI,CAAC,OAAO,EAAE;gBACb,MAAM,GAAG,GAAG,2BAA2B,CAAC;gBACxC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;gBAE/D,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;aACrB;SACD;QAED,MAAM,MAAM,GAAyC,EAAE,CAAC;QACxD,MAAM,cAAc,GAAG,IAAI,GAAG,EAA0B,CAAC;QAEzD,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,oBAAoB,EAAE;YACjD,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;YAC9C,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;YAEpB,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,IAAA,gCAAkB,EAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YACnE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YAEzD,MAAM,MAAM,GACX,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAM,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAM,CAAC,MAAM,CAAC;YAEtD,MAAM,aAAa,GAAG,MAAM;gBAC3B,CAAC,CAAC,IAAA,kCAAoB,EAAC,QAAQ,EAAE,SAAS,CAAC;gBAC3C,CAAC,CAAC,IAAA,kCAAoB,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAE7C,IAAI,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,MAAM,KAAK,kBAAM,CAAC,MAAM,EAAE;gBAChD,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;aAChC;SACD;QAED,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAExC,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,IAAI,CACjB,aAAqB,EACrB,YAAoB,EACpB,OAAY;QAEZ,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC;QACtE,MAAM,oBAAoB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;QAEzE,MAAM,gBAAgB,GAAG,IAAI,CAAC,8BAA8B,CAC3D,aAAa,EACb,YAAY,CACZ,CAAC;QAEF,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE;YACtC,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAC3B,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CACnD,CAAC;SACF;QAED,mEAAmE;QACnE,uEAAuE;QACvE,2DAA2D;QAC3D,wEAAwE;QACxE,yBAAyB;QACzB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC3B,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;gBAC1B,OAAO,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;aAC3B;YACD,OAAO,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CACV,gBAA+C,EAC/C,SAA6B,EAC7B,UAA+B;QAE/B,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC;QAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QAE/D,MAAM,UAAU,GACf,SAAS,IAAI,iCAAqB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,cAAc,GACnB,UAAU;YACV,UAAU,CAAC,IAAI;YACf,qCAAyB,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC;QAC7C,MAAM,IAAI,GAAG,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC;QAEtC,MAAM,SAAS,GAAG,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAEjE,MAAM,OAAO,GAAa,MAAM,CAAC,KAAK,IAAI,EAAE;YAC3C,IAAI,SAAS,EAAE;gBACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBACxD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9B;YAED,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,IAAA,+BAAiB,EACjD,SAAS,EACT,UAAU,EACV,cAAc,EACd,KAAK,EACL,IAAI,CACJ,CAAC;YAEF,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACrD,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAEO,KAAK,CAAC,OAAO,CACpB,SAAiB,EACjB,EAAU;QAEV,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,IAAA,gCAAkB,EAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAI,cAAc,EAAE,MAAM,CAAC,CAAC;QAE5D,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,eAAe,CACtB,UAA8B;QAE9B,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC;QACjD,MAAM,WAAW,GAChB,aAAa,CAAC,MAAM,KAAK,CAAC;YACzB,aAAa,CAAC,IAAI,CAClB,CAAC,CAAC,EAAE,CAAC,IAAA,0BAAc,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CAC1C,CAAC;QAE1B,OAAO,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,QAAQ,CACb,gBAA+C,EAC/C,cAAwB,oBAAQ,CAAC,KAAK;QAEtC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC;QAC7C,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,IAAA,+BAAiB,EAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAE3E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAI,cAAc,EAAE,MAAM,CAAC,CAAC;QAE5D,MAAM,aAAa,GAClB,MAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAE/D,OAAO,aAAa,CAAC;IACtB,CAAC;IAED,6BAA6B;IAC7B,8DAA8D;IAC9D,+EAA+E;IAC/E,KAAK,CAAC,MAAM,CACX,uBAA0D,EAC1D,SAA6B;QAE7B,IAAI,kBAAkB,CAAC,uBAAuB,CAAC,EAAE;YAChD,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;YACjD,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;YAC/D,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC;YAE7C,MAAM,UAAU,GACf,SAAS,IAAI,iCAAqB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAE7D,MAAM,cAAc,GAAG,IAAA,+BAAiB,EAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAChE,MAAM,eAAe,GAAG,IAAA,wCAA0B,EAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAE1E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAC3C,cAAc,EACd,eAAe,CACf,CAAC;YAEF,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CACrC,aAAa,EACb,gBAAgB,CAAC,IAAI,EACrB,MAAM,CACN,CAAC;YAEF,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;SACxC;aAAM;YACN,MAAM,KAAK,GAAG,uBAA4B,CAAC;YAC3C,MAAM,gBAAgB,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC;iBACnD,WAA4C,CAAC;YAC/C,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC;YAE7C,IAAI,SAAS,EAAE;gBACd,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,IAAA,gCAAkB,EAClD,KAAK,CAAC,EAAE,EACR,SAAS,CACT,CAAC;gBAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;gBAEzD,IAAI,MAAM,KAAK,SAAS,EAAE;oBACzB,MAAM,GAAG,GAAG,qCAAqC,CAAC;oBAClD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;oBAE5B,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;iBACrB;gBAED,MAAM,UAAU,GAAG,iCAAqB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;gBAClE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;gBAEvD,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;gBAE/D,IAAI,CAAC,OAAO,EAAE;oBACb,MAAM,GAAG,GAAG,2BAA2B,CAAC;oBACxC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;oBAE/D,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;iBACrB;gBAED,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,GAAG,IAAA,iCAAmB,EAC1D,KAAK,CAAC,EAAE,EACR,SAAS,CACT,CAAC;gBACF,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;gBAElD,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;aAC1B;iBAAM;gBACN,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,IAAA,iCAAmB,EACpD,KAAK,CAAC,EAAE,EACR,SAAS,CACT,CAAC;gBACF,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;gBAE5C,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;aAC1B;SACD;IACF,CAAC;IAED,KAAK,CAAC,SAAS,CACd,gBAAiD,EACjD,KAAoC;QAEpC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC;QAC7C,MAAM,MAAM,GAAkB,EAAE,CAAC;QAEjC,MAAM,WAAW,GAAQ,EAAE,CAAC;QAC5B,8EAA8E;QAC9E,qDAAqD;QACrD,MAAM,eAAe,GAAG,IAAI,GAAG,EAA0B,CAAC;QAC1D,6EAA6E;QAC7E,uCAAuC;QACvC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA0B,CAAC;QAC3D,MAAM,cAAc,GAAG,IAAI,GAAG,EAA0B,CAAC;QAEzD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACzB,MAAM,eAAe,GAAG,aAAa,CACpC,gBAAgB,CAAC,IAAI,EACrB,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,IAAI,CAAC,EACjD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,EAChE,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,8BAA8B,CACnC,CAAC;YAEF,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;YAE9B,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,IAAI,CACxC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CACpC,CAAC;YAEF,IAAI,QAAQ,EAAE;gBACb,0CAA0C;gBAC1C,MAAM,eAAe,GAAG,IAAA,iCAAmB,EAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACpE,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,CAAc,IAAK,EAAE,kBAAM,CAAC,MAAM,CAAC,CAAC,CAAC;aACjD;iBAAM;gBACN,0CAA0C;gBAC1C,MAAM,cAAc,GAAG,IAAA,gCAAkB,EAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACzD,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBACpC,yCAAyC;gBACzC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC3B;SACD;QAED,uDAAuD;QACvD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QAEjE,cAAc,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;YACxC,IAAI,QAAQ,KAAK,SAAS,EAAE;gBAC3B,MAAM,eAAe,GAAG,IAAA,kCAAoB,EAC3C,WAAW,CAAC,GAAG,CAAC,EAChB,SAAS,CACT,CAAC;gBACF,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC,CAAc,WAAW,CAAC,GAAG,CAAE,EAAE,kBAAM,CAAC,MAAM,CAAC,CAAC,CAAC;aAC7D;iBAAM;gBACN,MAAM,eAAe,GAAG,IAAA,kCAAoB,EAC3C,WAAW,CAAC,GAAG,CAAC,EAChB,SAAS,CACT,CAAC;gBACF,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC,CAAc,WAAW,CAAC,GAAG,CAAE,EAAE,kBAAM,CAAC,MAAM,CAAC,CAAC,CAAC;aAC7D;QACF,CAAC,CAAC,CAAC;QAEH,6EAA6E;QAC7E,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QAE1D,OAAO,MAAM,CAAC;IACf,CAAC;CACD;AA9YD,kDA8YC"}