tinybase 10.0.0-beta.0 → 10.0.0-beta.2

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 (185) hide show
  1. package/@types/common/index.d.ts +1 -0
  2. package/@types/common/with-schemas/index.d.ts +1 -0
  3. package/@types/indexes/index.d.ts +4 -3
  4. package/@types/indexes/with-schemas/index.d.ts +4 -3
  5. package/@types/metrics/index.d.ts +1 -0
  6. package/@types/metrics/with-schemas/index.d.ts +1 -0
  7. package/@types/omni/index.d.ts +1 -0
  8. package/@types/omni/with-schemas/index.d.ts +1 -0
  9. package/@types/persisters/index.d.ts +1 -0
  10. package/@types/persisters/persister-partykit-server/index.d.ts +17 -0
  11. package/@types/persisters/persister-partykit-server/with-schemas/index.d.ts +17 -0
  12. package/@types/persisters/persister-tinyjoin/index.d.ts +197 -0
  13. package/@types/persisters/persister-tinyjoin/with-schemas/index.d.ts +221 -0
  14. package/@types/persisters/with-schemas/index.d.ts +1 -0
  15. package/@types/queries/index.d.ts +3 -0
  16. package/@types/queries/with-schemas/index.d.ts +3 -0
  17. package/@types/relationships/index.d.ts +1 -0
  18. package/@types/relationships/with-schemas/index.d.ts +1 -0
  19. package/@types/store/index.d.ts +4 -0
  20. package/@types/store/with-schemas/index.d.ts +4 -0
  21. package/@types/ui-react/index.d.ts +2 -0
  22. package/@types/ui-react/with-schemas/index.d.ts +1 -0
  23. package/@types/ui-react-dom-charts/index.d.ts +7 -0
  24. package/@types/ui-react-dom-charts/with-schemas/index.d.ts +7 -0
  25. package/@types/ui-solid/index.d.ts +2 -0
  26. package/@types/ui-solid/with-schemas/index.d.ts +1 -0
  27. package/@types/ui-svelte/index.d.ts +23 -0
  28. package/@types/ui-svelte/with-schemas/index.d.ts +23 -0
  29. package/@types/ui-svelte-dom/index.d.ts +10 -0
  30. package/@types/ui-svelte-dom/with-schemas/index.d.ts +10 -0
  31. package/@types/ui-svelte-inspector/index.d.ts +1 -0
  32. package/@types/ui-svelte-inspector/with-schemas/index.d.ts +1 -0
  33. package/checkpoints/index.js +4 -2
  34. package/checkpoints/with-schemas/index.js +4 -2
  35. package/index.js +37 -4
  36. package/metrics/index.js +2 -1
  37. package/metrics/with-schemas/index.js +2 -1
  38. package/min/checkpoints/index.js +1 -1
  39. package/min/checkpoints/index.js.gz +0 -0
  40. package/min/checkpoints/with-schemas/index.js +1 -1
  41. package/min/checkpoints/with-schemas/index.js.gz +0 -0
  42. package/min/index.js +1 -1
  43. package/min/index.js.gz +0 -0
  44. package/min/metrics/index.js +1 -1
  45. package/min/metrics/index.js.gz +0 -0
  46. package/min/metrics/with-schemas/index.js +1 -1
  47. package/min/metrics/with-schemas/index.js.gz +0 -0
  48. package/min/omni/index.js +1 -1
  49. package/min/omni/index.js.gz +0 -0
  50. package/min/omni/with-schemas/index.js +1 -1
  51. package/min/omni/with-schemas/index.js.gz +0 -0
  52. package/min/persisters/index.js +1 -1
  53. package/min/persisters/index.js.gz +0 -0
  54. package/min/persisters/persister-better-sqlite3/index.js +1 -1
  55. package/min/persisters/persister-better-sqlite3/index.js.gz +0 -0
  56. package/min/persisters/persister-better-sqlite3/with-schemas/index.js +1 -1
  57. package/min/persisters/persister-better-sqlite3/with-schemas/index.js.gz +0 -0
  58. package/min/persisters/persister-capacitor-sqlite/index.js +1 -1
  59. package/min/persisters/persister-capacitor-sqlite/index.js.gz +0 -0
  60. package/min/persisters/persister-capacitor-sqlite/with-schemas/index.js +1 -1
  61. package/min/persisters/persister-capacitor-sqlite/with-schemas/index.js.gz +0 -0
  62. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  63. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  64. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  65. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  66. package/min/persisters/persister-durable-object-sql-storage/index.js +1 -1
  67. package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
  68. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
  69. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js.gz +0 -0
  70. package/min/persisters/persister-electric-sql/index.js +1 -1
  71. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  72. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  73. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  74. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  75. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  76. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  77. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  78. package/min/persisters/persister-libsql/index.js +1 -1
  79. package/min/persisters/persister-libsql/index.js.gz +0 -0
  80. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  81. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  82. package/min/persisters/persister-pg/index.js +1 -1
  83. package/min/persisters/persister-pg/index.js.gz +0 -0
  84. package/min/persisters/persister-pg/with-schemas/index.js +1 -1
  85. package/min/persisters/persister-pg/with-schemas/index.js.gz +0 -0
  86. package/min/persisters/persister-pglite/index.js +1 -1
  87. package/min/persisters/persister-pglite/index.js.gz +0 -0
  88. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  89. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  90. package/min/persisters/persister-postgres/index.js +1 -1
  91. package/min/persisters/persister-postgres/index.js.gz +0 -0
  92. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  93. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  94. package/min/persisters/persister-powersync/index.js +1 -1
  95. package/min/persisters/persister-powersync/index.js.gz +0 -0
  96. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  97. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  98. package/min/persisters/persister-react-native-sqlite/index.js +1 -1
  99. package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
  100. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -1
  101. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js.gz +0 -0
  102. package/min/persisters/persister-sqlite-bun/index.js +1 -1
  103. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  104. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
  105. package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
  106. package/min/persisters/persister-sqlite-node/index.js +1 -1
  107. package/min/persisters/persister-sqlite-node/index.js.gz +0 -0
  108. package/min/persisters/persister-sqlite-node/with-schemas/index.js +1 -1
  109. package/min/persisters/persister-sqlite-node/with-schemas/index.js.gz +0 -0
  110. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  111. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  112. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  113. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  114. package/min/persisters/persister-sqlite3/index.js +1 -1
  115. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  116. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  117. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  118. package/min/persisters/persister-tinyjoin/index.js +1 -0
  119. package/min/persisters/persister-tinyjoin/index.js.gz +0 -0
  120. package/min/persisters/persister-tinyjoin/with-schemas/index.js +1 -0
  121. package/min/persisters/persister-tinyjoin/with-schemas/index.js.gz +0 -0
  122. package/min/persisters/with-schemas/index.js +1 -1
  123. package/min/persisters/with-schemas/index.js.gz +0 -0
  124. package/min/queries/index.js +1 -1
  125. package/min/queries/index.js.gz +0 -0
  126. package/min/queries/with-schemas/index.js +1 -1
  127. package/min/queries/with-schemas/index.js.gz +0 -0
  128. package/min/relationships/index.js +1 -1
  129. package/min/relationships/index.js.gz +0 -0
  130. package/min/relationships/with-schemas/index.js +1 -1
  131. package/min/relationships/with-schemas/index.js.gz +0 -0
  132. package/min/synchronizers/synchronizer-local/index.js +1 -1
  133. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  134. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  135. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  136. package/min/with-schemas/index.js +1 -1
  137. package/min/with-schemas/index.js.gz +0 -0
  138. package/omni/index.js +205 -94
  139. package/omni/with-schemas/index.js +205 -94
  140. package/package.json +54 -14
  141. package/persisters/index.js +28 -13
  142. package/persisters/persister-better-sqlite3/index.js +70 -55
  143. package/persisters/persister-better-sqlite3/with-schemas/index.js +70 -55
  144. package/persisters/persister-capacitor-sqlite/index.js +70 -55
  145. package/persisters/persister-capacitor-sqlite/with-schemas/index.js +70 -55
  146. package/persisters/persister-cr-sqlite-wasm/index.js +70 -55
  147. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +70 -55
  148. package/persisters/persister-durable-object-sql-storage/index.js +28 -13
  149. package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +28 -13
  150. package/persisters/persister-electric-sql/index.js +70 -55
  151. package/persisters/persister-electric-sql/with-schemas/index.js +70 -55
  152. package/persisters/persister-expo-sqlite/index.js +70 -55
  153. package/persisters/persister-expo-sqlite/with-schemas/index.js +70 -55
  154. package/persisters/persister-libsql/index.js +91 -78
  155. package/persisters/persister-libsql/with-schemas/index.js +91 -78
  156. package/persisters/persister-pg/index.js +77 -62
  157. package/persisters/persister-pg/with-schemas/index.js +77 -62
  158. package/persisters/persister-pglite/index.js +28 -13
  159. package/persisters/persister-pglite/with-schemas/index.js +28 -13
  160. package/persisters/persister-postgres/index.js +28 -13
  161. package/persisters/persister-postgres/with-schemas/index.js +28 -13
  162. package/persisters/persister-powersync/index.js +81 -66
  163. package/persisters/persister-powersync/with-schemas/index.js +81 -66
  164. package/persisters/persister-react-native-sqlite/index.js +70 -55
  165. package/persisters/persister-react-native-sqlite/with-schemas/index.js +70 -55
  166. package/persisters/persister-sqlite-bun/index.js +70 -55
  167. package/persisters/persister-sqlite-bun/with-schemas/index.js +70 -55
  168. package/persisters/persister-sqlite-node/index.js +70 -55
  169. package/persisters/persister-sqlite-node/with-schemas/index.js +70 -55
  170. package/persisters/persister-sqlite-wasm/index.js +70 -55
  171. package/persisters/persister-sqlite-wasm/with-schemas/index.js +70 -55
  172. package/persisters/persister-sqlite3/index.js +70 -55
  173. package/persisters/persister-sqlite3/with-schemas/index.js +70 -55
  174. package/persisters/persister-tinyjoin/index.js +1710 -0
  175. package/persisters/persister-tinyjoin/with-schemas/index.js +1710 -0
  176. package/persisters/with-schemas/index.js +28 -13
  177. package/queries/index.js +2 -1
  178. package/queries/with-schemas/index.js +2 -1
  179. package/readme.md +3 -3
  180. package/relationships/index.js +39 -9
  181. package/relationships/with-schemas/index.js +39 -9
  182. package/releases.md +20 -1
  183. package/synchronizers/synchronizer-local/index.js +1 -1
  184. package/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  185. package/with-schemas/index.js +37 -4
@@ -105,50 +105,6 @@ const tryFinallyAsync = async (action, finallyAction) => {
105
105
  }
106
106
  };
107
107
 
108
- const SINGLE_ROW_ID = '_';
109
- const DEFAULT_ROW_ID_COLUMN_NAME = '_id';
110
- const SELECT = 'SELECT';
111
- const WHERE = 'WHERE';
112
- const TABLE = 'TABLE';
113
- const INSERT = 'INSERT';
114
- const DELETE = 'DELETE';
115
- const UPDATE = 'UPDATE';
116
- const ALTER_TABLE = 'ALTER ' + TABLE;
117
- const FROM = 'FROM';
118
- const DELETE_FROM = DELETE + ' ' + FROM;
119
- const SELECT_STAR_FROM = SELECT + '*' + FROM;
120
- const PRAGMA = 'pragma_';
121
- const DATA_VERSION = 'data_version';
122
- const SCHEMA_VERSION = 'schema_version';
123
- const PRAGMA_TABLE = 'pragma_table_';
124
- const CREATE = 'CREATE ';
125
- const CREATE_TABLE = CREATE + TABLE;
126
- const TABLE_NAME_PLACEHOLDER_REGEX = /\$tableName/g;
127
- const getWrappedCommand = (executeCommand, onSqlCommand) =>
128
- onSqlCommand
129
- ? async (sql, params) => {
130
- onSqlCommand(sql, params);
131
- return await executeCommand(sql, params);
132
- }
133
- : executeCommand;
134
- const escapeId = (str) =>
135
- arrayJoin(
136
- arrayMap(strSplit(str, DOT), (part) => `"${strReplace(part, /"/g, '""')}"`),
137
- DOT,
138
- );
139
- const escapeColumnNames = (...columnNames) =>
140
- arrayJoin(arrayMap(columnNames, escapeId), COMMA);
141
- const anonymousPlaceholder = () => '?';
142
- const getPlaceholders = (array, getPlaceholder, offset = [1]) =>
143
- arrayJoin(
144
- arrayMap(array, () => getPlaceholder(offset)),
145
- COMMA,
146
- );
147
- const getWhereCondition = (tableName, condition = TRUE) =>
148
- WHERE + `(${replaceTableName(condition, escapeId(tableName))})`;
149
- const replaceTableName = (condition, tableName) =>
150
- strReplace(condition, TABLE_NAME_PLACEHOLDER_REGEX, tableName);
151
-
152
108
  const object = Object;
153
109
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
154
110
  const objEntries = object.entries;
@@ -198,6 +154,62 @@ const objValues = (obj) => object.values(obj);
198
154
  const objSize = (obj) => size(objIds(obj));
199
155
  const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
200
156
 
157
+ const SINGLE_ROW_ID = '_';
158
+ const DEFAULT_ROW_ID_COLUMN_NAME = '_id';
159
+ const SELECT = 'SELECT';
160
+ const WHERE = 'WHERE';
161
+ const TABLE = 'TABLE';
162
+ const INSERT = 'INSERT';
163
+ const DELETE = 'DELETE';
164
+ const UPDATE = 'UPDATE';
165
+ const ALTER_TABLE = 'ALTER ' + TABLE;
166
+ const FROM = 'FROM';
167
+ const DELETE_FROM = DELETE + ' ' + FROM;
168
+ const SELECT_STAR_FROM = SELECT + '*' + FROM;
169
+ const PRAGMA = 'pragma_';
170
+ const DATA_VERSION = 'data_version';
171
+ const SCHEMA_VERSION = 'schema_version';
172
+ const PRAGMA_TABLE = 'pragma_table_';
173
+ const CREATE = 'CREATE ';
174
+ const CREATE_TABLE = CREATE + TABLE;
175
+ const TABLE_NAME_PLACEHOLDER_REGEX = /\$tableName/g;
176
+ const getWrappedCommand = (executeCommand, onSqlCommand) =>
177
+ onSqlCommand
178
+ ? async (sql, params) => {
179
+ onSqlCommand(sql, params);
180
+ return await executeCommand(sql, params);
181
+ }
182
+ : executeCommand;
183
+ const escapeId = (str) =>
184
+ arrayJoin(
185
+ arrayMap(strSplit(str, DOT), (part) => `"${strReplace(part, /"/g, '""')}"`),
186
+ DOT,
187
+ );
188
+ const escapeColumnNames = (...columnNames) =>
189
+ arrayJoin(arrayMap(columnNames, escapeId), COMMA);
190
+ const anonymousPlaceholder = () => '?';
191
+ const getPlaceholders = (array, getPlaceholder, offset = [1]) =>
192
+ arrayJoin(
193
+ arrayMap(array, () => getPlaceholder(offset)),
194
+ COMMA,
195
+ );
196
+ const getWhere = (tableName, condition = TRUE, extraCondition) => {
197
+ const conditions = arrayFilter(
198
+ [
199
+ condition == TRUE
200
+ ? void 0
201
+ : `(${replaceTableName(condition, escapeId(tableName))})`,
202
+ extraCondition,
203
+ ],
204
+ (condition2) => !isUndefined(condition2),
205
+ );
206
+ return isEmpty(conditions)
207
+ ? EMPTY_STRING
208
+ : WHERE + arrayJoin(conditions, 'AND');
209
+ };
210
+ const replaceTableName = (condition, tableName) =>
211
+ strReplace(condition, TABLE_NAME_PLACEHOLDER_REGEX, tableName);
212
+
201
213
  const map = Map;
202
214
  const mapNew = (entries) => new map(entries);
203
215
  const mapGet = (map2, key) => map2?.get(key);
@@ -1045,7 +1057,7 @@ const getCommandFunctions = (
1045
1057
  await executeCommand(
1046
1058
  SELECT_STAR_FROM +
1047
1059
  escapeId(tableName) +
1048
- getWhereCondition(tableName, condition),
1060
+ getWhere(tableName, condition),
1049
1061
  ),
1050
1062
  (row) => {
1051
1063
  const rowId = row[rowIdColumnName];
@@ -1201,9 +1213,7 @@ const getCommandFunctions = (
1201
1213
  if (isUndefined(content)) {
1202
1214
  if (isUndefined(contentSubIdSet)) {
1203
1215
  await executeCommand(
1204
- DELETE_FROM +
1205
- escapeId(tableName) +
1206
- getWhereCondition(tableName, condition),
1216
+ DELETE_FROM + escapeId(tableName) + getWhere(tableName, condition),
1207
1217
  );
1208
1218
  }
1209
1219
  } else {
@@ -1213,8 +1223,11 @@ const getCommandFunctions = (
1213
1223
  await executeCommand(
1214
1224
  DELETE_FROM +
1215
1225
  escapeId(tableName) +
1216
- getWhereCondition(tableName, condition) +
1217
- `AND(${escapeId(rowIdColumnName)}=${getPlaceholder([1])})`,
1226
+ getWhere(
1227
+ tableName,
1228
+ condition,
1229
+ `(${escapeId(rowIdColumnName)}=${getPlaceholder([1])})`,
1230
+ ),
1218
1231
  [rowId],
1219
1232
  );
1220
1233
  } else if (!isEmpty(settingColumnNames)) {
@@ -1273,8 +1286,12 @@ const getCommandFunctions = (
1273
1286
  await executeCommand(
1274
1287
  DELETE_FROM +
1275
1288
  escapeId(tableName) +
1276
- getWhereCondition(tableName, condition) + // eslint-disable-next-line max-len
1277
- `AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds, getPlaceholder)})`,
1289
+ getWhere(
1290
+ tableName,
1291
+ condition,
1292
+ // eslint-disable-next-line max-len
1293
+ `${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds, getPlaceholder)})`,
1294
+ ),
1278
1295
  deleteRowIds,
1279
1296
  );
1280
1297
  } else if (
@@ -1282,9 +1299,7 @@ const getCommandFunctions = (
1282
1299
  collHas(schemaMap, tableName)
1283
1300
  ) {
1284
1301
  await executeCommand(
1285
- DELETE_FROM +
1286
- escapeId(tableName) +
1287
- getWhereCondition(tableName, condition),
1302
+ DELETE_FROM + escapeId(tableName) + getWhere(tableName, condition),
1288
1303
  );
1289
1304
  }
1290
1305
  }
@@ -107,50 +107,6 @@ const arrayClear = (array, to = size(array)) => array.splice(0, to);
107
107
  const arrayPush = (array, ...values) => array.push(...values);
108
108
  const arrayShift = (array) => array.shift();
109
109
 
110
- const SINGLE_ROW_ID = '_';
111
- const DEFAULT_ROW_ID_COLUMN_NAME = '_id';
112
- const SELECT = 'SELECT';
113
- const WHERE = 'WHERE';
114
- const TABLE = 'TABLE';
115
- const INSERT = 'INSERT';
116
- const DELETE = 'DELETE';
117
- const UPDATE = 'UPDATE';
118
- const ALTER_TABLE = 'ALTER ' + TABLE;
119
- const FROM = 'FROM';
120
- const DELETE_FROM = DELETE + ' ' + FROM;
121
- const SELECT_STAR_FROM = SELECT + '*' + FROM;
122
- const PRAGMA = 'pragma_';
123
- const DATA_VERSION = 'data_version';
124
- const SCHEMA_VERSION = 'schema_version';
125
- const PRAGMA_TABLE = 'pragma_table_';
126
- const CREATE = 'CREATE ';
127
- const CREATE_TABLE = CREATE + TABLE;
128
- const TABLE_NAME_PLACEHOLDER_REGEX = /\$tableName/g;
129
- const getWrappedCommand = (executeCommand, onSqlCommand) =>
130
- onSqlCommand
131
- ? async (sql, params) => {
132
- onSqlCommand(sql, params);
133
- return await executeCommand(sql, params);
134
- }
135
- : executeCommand;
136
- const escapeId = (str) =>
137
- arrayJoin(
138
- arrayMap(strSplit(str, DOT), (part) => `"${strReplace(part, /"/g, '""')}"`),
139
- DOT,
140
- );
141
- const escapeColumnNames = (...columnNames) =>
142
- arrayJoin(arrayMap(columnNames, escapeId), COMMA);
143
- const anonymousPlaceholder = () => '?';
144
- const getPlaceholders = (array, getPlaceholder, offset = [1]) =>
145
- arrayJoin(
146
- arrayMap(array, () => getPlaceholder(offset)),
147
- COMMA,
148
- );
149
- const getWhereCondition = (tableName, condition = TRUE) =>
150
- WHERE + `(${replaceTableName(condition, escapeId(tableName))})`;
151
- const replaceTableName = (condition, tableName) =>
152
- strReplace(condition, TABLE_NAME_PLACEHOLDER_REGEX, tableName);
153
-
154
110
  const object = Object;
155
111
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
156
112
  const objEntries = object.entries;
@@ -200,6 +156,62 @@ const objValues = (obj) => object.values(obj);
200
156
  const objSize = (obj) => size(objIds(obj));
201
157
  const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
202
158
 
159
+ const SINGLE_ROW_ID = '_';
160
+ const DEFAULT_ROW_ID_COLUMN_NAME = '_id';
161
+ const SELECT = 'SELECT';
162
+ const WHERE = 'WHERE';
163
+ const TABLE = 'TABLE';
164
+ const INSERT = 'INSERT';
165
+ const DELETE = 'DELETE';
166
+ const UPDATE = 'UPDATE';
167
+ const ALTER_TABLE = 'ALTER ' + TABLE;
168
+ const FROM = 'FROM';
169
+ const DELETE_FROM = DELETE + ' ' + FROM;
170
+ const SELECT_STAR_FROM = SELECT + '*' + FROM;
171
+ const PRAGMA = 'pragma_';
172
+ const DATA_VERSION = 'data_version';
173
+ const SCHEMA_VERSION = 'schema_version';
174
+ const PRAGMA_TABLE = 'pragma_table_';
175
+ const CREATE = 'CREATE ';
176
+ const CREATE_TABLE = CREATE + TABLE;
177
+ const TABLE_NAME_PLACEHOLDER_REGEX = /\$tableName/g;
178
+ const getWrappedCommand = (executeCommand, onSqlCommand) =>
179
+ onSqlCommand
180
+ ? async (sql, params) => {
181
+ onSqlCommand(sql, params);
182
+ return await executeCommand(sql, params);
183
+ }
184
+ : executeCommand;
185
+ const escapeId = (str) =>
186
+ arrayJoin(
187
+ arrayMap(strSplit(str, DOT), (part) => `"${strReplace(part, /"/g, '""')}"`),
188
+ DOT,
189
+ );
190
+ const escapeColumnNames = (...columnNames) =>
191
+ arrayJoin(arrayMap(columnNames, escapeId), COMMA);
192
+ const anonymousPlaceholder = () => '?';
193
+ const getPlaceholders = (array, getPlaceholder, offset = [1]) =>
194
+ arrayJoin(
195
+ arrayMap(array, () => getPlaceholder(offset)),
196
+ COMMA,
197
+ );
198
+ const getWhere = (tableName, condition = TRUE, extraCondition) => {
199
+ const conditions = arrayFilter(
200
+ [
201
+ condition == TRUE
202
+ ? void 0
203
+ : `(${replaceTableName(condition, escapeId(tableName))})`,
204
+ extraCondition,
205
+ ],
206
+ (condition2) => !isUndefined(condition2),
207
+ );
208
+ return isEmpty(conditions)
209
+ ? EMPTY_STRING
210
+ : WHERE + arrayJoin(conditions, 'AND');
211
+ };
212
+ const replaceTableName = (condition, tableName) =>
213
+ strReplace(condition, TABLE_NAME_PLACEHOLDER_REGEX, tableName);
214
+
203
215
  const map = Map;
204
216
  const mapNew = (entries) => new map(entries);
205
217
  const mapGet = (map2, key) => map2?.get(key);
@@ -1047,7 +1059,7 @@ const getCommandFunctions = (
1047
1059
  await executeCommand(
1048
1060
  SELECT_STAR_FROM +
1049
1061
  escapeId(tableName) +
1050
- getWhereCondition(tableName, condition),
1062
+ getWhere(tableName, condition),
1051
1063
  ),
1052
1064
  (row) => {
1053
1065
  const rowId = row[rowIdColumnName];
@@ -1203,9 +1215,7 @@ const getCommandFunctions = (
1203
1215
  if (isUndefined(content)) {
1204
1216
  if (isUndefined(contentSubIdSet)) {
1205
1217
  await executeCommand(
1206
- DELETE_FROM +
1207
- escapeId(tableName) +
1208
- getWhereCondition(tableName, condition),
1218
+ DELETE_FROM + escapeId(tableName) + getWhere(tableName, condition),
1209
1219
  );
1210
1220
  }
1211
1221
  } else {
@@ -1215,8 +1225,11 @@ const getCommandFunctions = (
1215
1225
  await executeCommand(
1216
1226
  DELETE_FROM +
1217
1227
  escapeId(tableName) +
1218
- getWhereCondition(tableName, condition) +
1219
- `AND(${escapeId(rowIdColumnName)}=${getPlaceholder([1])})`,
1228
+ getWhere(
1229
+ tableName,
1230
+ condition,
1231
+ `(${escapeId(rowIdColumnName)}=${getPlaceholder([1])})`,
1232
+ ),
1220
1233
  [rowId],
1221
1234
  );
1222
1235
  } else if (!isEmpty(settingColumnNames)) {
@@ -1275,8 +1288,12 @@ const getCommandFunctions = (
1275
1288
  await executeCommand(
1276
1289
  DELETE_FROM +
1277
1290
  escapeId(tableName) +
1278
- getWhereCondition(tableName, condition) + // eslint-disable-next-line max-len
1279
- `AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds, getPlaceholder)})`,
1291
+ getWhere(
1292
+ tableName,
1293
+ condition,
1294
+ // eslint-disable-next-line max-len
1295
+ `${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds, getPlaceholder)})`,
1296
+ ),
1280
1297
  deleteRowIds,
1281
1298
  );
1282
1299
  } else if (
@@ -1284,9 +1301,7 @@ const getCommandFunctions = (
1284
1301
  collHas(schemaMap, tableName)
1285
1302
  ) {
1286
1303
  await executeCommand(
1287
- DELETE_FROM +
1288
- escapeId(tableName) +
1289
- getWhereCondition(tableName, condition),
1304
+ DELETE_FROM + escapeId(tableName) + getWhere(tableName, condition),
1290
1305
  );
1291
1306
  }
1292
1307
  }
@@ -107,50 +107,6 @@ const arrayClear = (array, to = size(array)) => array.splice(0, to);
107
107
  const arrayPush = (array, ...values) => array.push(...values);
108
108
  const arrayShift = (array) => array.shift();
109
109
 
110
- const SINGLE_ROW_ID = '_';
111
- const DEFAULT_ROW_ID_COLUMN_NAME = '_id';
112
- const SELECT = 'SELECT';
113
- const WHERE = 'WHERE';
114
- const TABLE = 'TABLE';
115
- const INSERT = 'INSERT';
116
- const DELETE = 'DELETE';
117
- const UPDATE = 'UPDATE';
118
- const ALTER_TABLE = 'ALTER ' + TABLE;
119
- const FROM = 'FROM';
120
- const DELETE_FROM = DELETE + ' ' + FROM;
121
- const SELECT_STAR_FROM = SELECT + '*' + FROM;
122
- const PRAGMA = 'pragma_';
123
- const DATA_VERSION = 'data_version';
124
- const SCHEMA_VERSION = 'schema_version';
125
- const PRAGMA_TABLE = 'pragma_table_';
126
- const CREATE = 'CREATE ';
127
- const CREATE_TABLE = CREATE + TABLE;
128
- const TABLE_NAME_PLACEHOLDER_REGEX = /\$tableName/g;
129
- const getWrappedCommand = (executeCommand, onSqlCommand) =>
130
- onSqlCommand
131
- ? async (sql, params) => {
132
- onSqlCommand(sql, params);
133
- return await executeCommand(sql, params);
134
- }
135
- : executeCommand;
136
- const escapeId = (str) =>
137
- arrayJoin(
138
- arrayMap(strSplit(str, DOT), (part) => `"${strReplace(part, /"/g, '""')}"`),
139
- DOT,
140
- );
141
- const escapeColumnNames = (...columnNames) =>
142
- arrayJoin(arrayMap(columnNames, escapeId), COMMA);
143
- const anonymousPlaceholder = () => '?';
144
- const getPlaceholders = (array, getPlaceholder, offset = [1]) =>
145
- arrayJoin(
146
- arrayMap(array, () => getPlaceholder(offset)),
147
- COMMA,
148
- );
149
- const getWhereCondition = (tableName, condition = TRUE) =>
150
- WHERE + `(${replaceTableName(condition, escapeId(tableName))})`;
151
- const replaceTableName = (condition, tableName) =>
152
- strReplace(condition, TABLE_NAME_PLACEHOLDER_REGEX, tableName);
153
-
154
110
  const object = Object;
155
111
  const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
156
112
  const objEntries = object.entries;
@@ -200,6 +156,62 @@ const objValues = (obj) => object.values(obj);
200
156
  const objSize = (obj) => size(objIds(obj));
201
157
  const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
202
158
 
159
+ const SINGLE_ROW_ID = '_';
160
+ const DEFAULT_ROW_ID_COLUMN_NAME = '_id';
161
+ const SELECT = 'SELECT';
162
+ const WHERE = 'WHERE';
163
+ const TABLE = 'TABLE';
164
+ const INSERT = 'INSERT';
165
+ const DELETE = 'DELETE';
166
+ const UPDATE = 'UPDATE';
167
+ const ALTER_TABLE = 'ALTER ' + TABLE;
168
+ const FROM = 'FROM';
169
+ const DELETE_FROM = DELETE + ' ' + FROM;
170
+ const SELECT_STAR_FROM = SELECT + '*' + FROM;
171
+ const PRAGMA = 'pragma_';
172
+ const DATA_VERSION = 'data_version';
173
+ const SCHEMA_VERSION = 'schema_version';
174
+ const PRAGMA_TABLE = 'pragma_table_';
175
+ const CREATE = 'CREATE ';
176
+ const CREATE_TABLE = CREATE + TABLE;
177
+ const TABLE_NAME_PLACEHOLDER_REGEX = /\$tableName/g;
178
+ const getWrappedCommand = (executeCommand, onSqlCommand) =>
179
+ onSqlCommand
180
+ ? async (sql, params) => {
181
+ onSqlCommand(sql, params);
182
+ return await executeCommand(sql, params);
183
+ }
184
+ : executeCommand;
185
+ const escapeId = (str) =>
186
+ arrayJoin(
187
+ arrayMap(strSplit(str, DOT), (part) => `"${strReplace(part, /"/g, '""')}"`),
188
+ DOT,
189
+ );
190
+ const escapeColumnNames = (...columnNames) =>
191
+ arrayJoin(arrayMap(columnNames, escapeId), COMMA);
192
+ const anonymousPlaceholder = () => '?';
193
+ const getPlaceholders = (array, getPlaceholder, offset = [1]) =>
194
+ arrayJoin(
195
+ arrayMap(array, () => getPlaceholder(offset)),
196
+ COMMA,
197
+ );
198
+ const getWhere = (tableName, condition = TRUE, extraCondition) => {
199
+ const conditions = arrayFilter(
200
+ [
201
+ condition == TRUE
202
+ ? void 0
203
+ : `(${replaceTableName(condition, escapeId(tableName))})`,
204
+ extraCondition,
205
+ ],
206
+ (condition2) => !isUndefined(condition2),
207
+ );
208
+ return isEmpty(conditions)
209
+ ? EMPTY_STRING
210
+ : WHERE + arrayJoin(conditions, 'AND');
211
+ };
212
+ const replaceTableName = (condition, tableName) =>
213
+ strReplace(condition, TABLE_NAME_PLACEHOLDER_REGEX, tableName);
214
+
203
215
  const map = Map;
204
216
  const mapNew = (entries) => new map(entries);
205
217
  const mapGet = (map2, key) => map2?.get(key);
@@ -1047,7 +1059,7 @@ const getCommandFunctions = (
1047
1059
  await executeCommand(
1048
1060
  SELECT_STAR_FROM +
1049
1061
  escapeId(tableName) +
1050
- getWhereCondition(tableName, condition),
1062
+ getWhere(tableName, condition),
1051
1063
  ),
1052
1064
  (row) => {
1053
1065
  const rowId = row[rowIdColumnName];
@@ -1203,9 +1215,7 @@ const getCommandFunctions = (
1203
1215
  if (isUndefined(content)) {
1204
1216
  if (isUndefined(contentSubIdSet)) {
1205
1217
  await executeCommand(
1206
- DELETE_FROM +
1207
- escapeId(tableName) +
1208
- getWhereCondition(tableName, condition),
1218
+ DELETE_FROM + escapeId(tableName) + getWhere(tableName, condition),
1209
1219
  );
1210
1220
  }
1211
1221
  } else {
@@ -1215,8 +1225,11 @@ const getCommandFunctions = (
1215
1225
  await executeCommand(
1216
1226
  DELETE_FROM +
1217
1227
  escapeId(tableName) +
1218
- getWhereCondition(tableName, condition) +
1219
- `AND(${escapeId(rowIdColumnName)}=${getPlaceholder([1])})`,
1228
+ getWhere(
1229
+ tableName,
1230
+ condition,
1231
+ `(${escapeId(rowIdColumnName)}=${getPlaceholder([1])})`,
1232
+ ),
1220
1233
  [rowId],
1221
1234
  );
1222
1235
  } else if (!isEmpty(settingColumnNames)) {
@@ -1275,8 +1288,12 @@ const getCommandFunctions = (
1275
1288
  await executeCommand(
1276
1289
  DELETE_FROM +
1277
1290
  escapeId(tableName) +
1278
- getWhereCondition(tableName, condition) + // eslint-disable-next-line max-len
1279
- `AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds, getPlaceholder)})`,
1291
+ getWhere(
1292
+ tableName,
1293
+ condition,
1294
+ // eslint-disable-next-line max-len
1295
+ `${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds, getPlaceholder)})`,
1296
+ ),
1280
1297
  deleteRowIds,
1281
1298
  );
1282
1299
  } else if (
@@ -1284,9 +1301,7 @@ const getCommandFunctions = (
1284
1301
  collHas(schemaMap, tableName)
1285
1302
  ) {
1286
1303
  await executeCommand(
1287
- DELETE_FROM +
1288
- escapeId(tableName) +
1289
- getWhereCondition(tableName, condition),
1304
+ DELETE_FROM + escapeId(tableName) + getWhere(tableName, condition),
1290
1305
  );
1291
1306
  }
1292
1307
  }