tinybase 9.5.1 → 9.6.0-beta.1

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 (147) hide show
  1. package/@types/omni/index.d.ts +4 -0
  2. package/@types/omni/with-schemas/index.d.ts +4 -0
  3. package/@types/persisters/index.d.ts +8 -1
  4. package/@types/persisters/persister-better-sqlite3/index.d.ts +178 -0
  5. package/@types/persisters/persister-better-sqlite3/with-schemas/index.d.ts +202 -0
  6. package/@types/persisters/persister-capacitor-sqlite/index.d.ts +181 -0
  7. package/@types/persisters/persister-capacitor-sqlite/with-schemas/index.d.ts +205 -0
  8. package/@types/persisters/persister-indexed-db/index.d.ts +17 -9
  9. package/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +18 -10
  10. package/@types/persisters/persister-libsql/index.d.ts +27 -0
  11. package/@types/persisters/persister-libsql/with-schemas/index.d.ts +27 -0
  12. package/@types/persisters/persister-pg/index.d.ts +197 -0
  13. package/@types/persisters/persister-pg/with-schemas/index.d.ts +222 -0
  14. package/@types/persisters/persister-supabase/index.d.ts +201 -0
  15. package/@types/persisters/persister-supabase/with-schemas/index.d.ts +217 -0
  16. package/@types/persisters/with-schemas/index.d.ts +8 -1
  17. package/@types/ui-react-dom/index.d.ts +10 -10
  18. package/@types/ui-react-dom/with-schemas/index.d.ts +10 -10
  19. package/@types/ui-react-dom-charts/index.d.ts +7 -7
  20. package/@types/ui-react-dom-charts/with-schemas/index.d.ts +7 -7
  21. package/@types/ui-react-inspector/index.d.ts +1 -1
  22. package/@types/ui-react-inspector/with-schemas/index.d.ts +1 -1
  23. package/@types/ui-solid-dom/index.d.ts +10 -10
  24. package/@types/ui-solid-dom/with-schemas/index.d.ts +10 -10
  25. package/@types/ui-solid-inspector/index.d.ts +1 -1
  26. package/@types/ui-solid-inspector/with-schemas/index.d.ts +1 -1
  27. package/@types/ui-svelte-dom/index.d.ts +10 -10
  28. package/@types/ui-svelte-dom/with-schemas/index.d.ts +10 -10
  29. package/@types/ui-svelte-inspector/index.d.ts +1 -1
  30. package/@types/ui-svelte-inspector/with-schemas/index.d.ts +1 -1
  31. package/min/omni/index.js +1 -1
  32. package/min/omni/index.js.gz +0 -0
  33. package/min/omni/with-schemas/index.js +1 -1
  34. package/min/omni/with-schemas/index.js.gz +0 -0
  35. package/min/persisters/index.js +1 -1
  36. package/min/persisters/index.js.gz +0 -0
  37. package/min/persisters/persister-better-sqlite3/index.js +1 -0
  38. package/min/persisters/persister-better-sqlite3/index.js.gz +0 -0
  39. package/min/persisters/persister-better-sqlite3/with-schemas/index.js +1 -0
  40. package/min/persisters/persister-better-sqlite3/with-schemas/index.js.gz +0 -0
  41. package/min/persisters/persister-capacitor-sqlite/index.js +1 -0
  42. package/min/persisters/persister-capacitor-sqlite/index.js.gz +0 -0
  43. package/min/persisters/persister-capacitor-sqlite/with-schemas/index.js +1 -0
  44. package/min/persisters/persister-capacitor-sqlite/with-schemas/index.js.gz +0 -0
  45. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  46. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  47. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  48. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  49. package/min/persisters/persister-durable-object-sql-storage/index.js +1 -1
  50. package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
  51. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
  52. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js.gz +0 -0
  53. package/min/persisters/persister-electric-sql/index.js +1 -1
  54. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  55. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  56. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  57. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  58. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  59. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  60. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  61. package/min/persisters/persister-indexed-db/index.js +1 -1
  62. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  63. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  64. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  65. package/min/persisters/persister-libsql/index.js +1 -1
  66. package/min/persisters/persister-libsql/index.js.gz +0 -0
  67. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  68. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  69. package/min/persisters/persister-pg/index.js +1 -0
  70. package/min/persisters/persister-pg/index.js.gz +0 -0
  71. package/min/persisters/persister-pg/with-schemas/index.js +1 -0
  72. package/min/persisters/persister-pg/with-schemas/index.js.gz +0 -0
  73. package/min/persisters/persister-pglite/index.js +1 -1
  74. package/min/persisters/persister-pglite/index.js.gz +0 -0
  75. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  76. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  77. package/min/persisters/persister-postgres/index.js +1 -1
  78. package/min/persisters/persister-postgres/index.js.gz +0 -0
  79. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  80. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  81. package/min/persisters/persister-powersync/index.js +1 -1
  82. package/min/persisters/persister-powersync/index.js.gz +0 -0
  83. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  84. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  85. package/min/persisters/persister-react-native-sqlite/index.js +1 -1
  86. package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
  87. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -1
  88. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js.gz +0 -0
  89. package/min/persisters/persister-sqlite-bun/index.js +1 -1
  90. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  91. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
  92. package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
  93. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  94. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  95. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  96. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  97. package/min/persisters/persister-sqlite3/index.js +1 -1
  98. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  99. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  100. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  101. package/min/persisters/persister-supabase/index.js +1 -0
  102. package/min/persisters/persister-supabase/index.js.gz +0 -0
  103. package/min/persisters/persister-supabase/with-schemas/index.js +1 -0
  104. package/min/persisters/persister-supabase/with-schemas/index.js.gz +0 -0
  105. package/min/persisters/with-schemas/index.js +1 -1
  106. package/min/persisters/with-schemas/index.js.gz +0 -0
  107. package/omni/index.js +269 -34
  108. package/omni/with-schemas/index.js +269 -34
  109. package/package.json +164 -4
  110. package/persisters/index.js +23 -7
  111. package/persisters/persister-better-sqlite3/index.js +1767 -0
  112. package/persisters/persister-better-sqlite3/with-schemas/index.js +1767 -0
  113. package/persisters/persister-capacitor-sqlite/index.js +1769 -0
  114. package/persisters/persister-capacitor-sqlite/with-schemas/index.js +1769 -0
  115. package/persisters/persister-cr-sqlite-wasm/index.js +20 -6
  116. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +20 -6
  117. package/persisters/persister-durable-object-sql-storage/index.js +20 -7
  118. package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +20 -7
  119. package/persisters/persister-electric-sql/index.js +20 -6
  120. package/persisters/persister-electric-sql/with-schemas/index.js +20 -6
  121. package/persisters/persister-expo-sqlite/index.js +20 -6
  122. package/persisters/persister-expo-sqlite/with-schemas/index.js +20 -6
  123. package/persisters/persister-indexed-db/index.js +48 -20
  124. package/persisters/persister-indexed-db/with-schemas/index.js +48 -20
  125. package/persisters/persister-libsql/index.js +20 -6
  126. package/persisters/persister-libsql/with-schemas/index.js +20 -6
  127. package/persisters/persister-pg/index.js +1905 -0
  128. package/persisters/persister-pg/with-schemas/index.js +1905 -0
  129. package/persisters/persister-pglite/index.js +20 -6
  130. package/persisters/persister-pglite/with-schemas/index.js +20 -6
  131. package/persisters/persister-postgres/index.js +20 -6
  132. package/persisters/persister-postgres/with-schemas/index.js +20 -6
  133. package/persisters/persister-powersync/index.js +27 -10
  134. package/persisters/persister-powersync/with-schemas/index.js +27 -10
  135. package/persisters/persister-react-native-sqlite/index.js +20 -6
  136. package/persisters/persister-react-native-sqlite/with-schemas/index.js +20 -6
  137. package/persisters/persister-sqlite-bun/index.js +20 -6
  138. package/persisters/persister-sqlite-bun/with-schemas/index.js +20 -6
  139. package/persisters/persister-sqlite-wasm/index.js +20 -6
  140. package/persisters/persister-sqlite-wasm/with-schemas/index.js +20 -6
  141. package/persisters/persister-sqlite3/index.js +20 -6
  142. package/persisters/persister-sqlite3/with-schemas/index.js +20 -6
  143. package/persisters/persister-supabase/index.js +883 -0
  144. package/persisters/persister-supabase/with-schemas/index.js +883 -0
  145. package/persisters/with-schemas/index.js +23 -7
  146. package/readme.md +14 -14
  147. package/releases.md +163 -66
@@ -138,9 +138,10 @@ const escapeId = (str) =>
138
138
  );
139
139
  const escapeColumnNames = (...columnNames) =>
140
140
  arrayJoin(arrayMap(columnNames, escapeId), COMMA);
141
- const getPlaceholders = (array, offset = [1]) =>
141
+ const anonymousPlaceholder = () => '?';
142
+ const getPlaceholders = (array, getPlaceholder, offset = [1]) =>
142
143
  arrayJoin(
143
- arrayMap(array, () => '$' + offset[0]++),
144
+ arrayMap(array, () => getPlaceholder(offset)),
144
145
  COMMA,
145
146
  );
146
147
  const getWhereCondition = (tableName, condition = TRUE) =>
@@ -1002,6 +1003,7 @@ const getCommandFunctions = (
1002
1003
  managedTableNames,
1003
1004
  querySchema,
1004
1005
  columnType,
1006
+ getPlaceholder,
1005
1007
  upsert = defaultUpsert,
1006
1008
  encode,
1007
1009
  decode,
@@ -1212,7 +1214,7 @@ const getCommandFunctions = (
1212
1214
  DELETE_FROM +
1213
1215
  escapeId(tableName) +
1214
1216
  getWhereCondition(tableName, condition) +
1215
- `AND(${escapeId(rowIdColumnName)}=$1)`,
1217
+ `AND(${escapeId(rowIdColumnName)}=${getPlaceholder([1])})`,
1216
1218
  [rowId],
1217
1219
  );
1218
1220
  } else if (!isEmpty(settingColumnNames)) {
@@ -1231,6 +1233,7 @@ const getCommandFunctions = (
1231
1233
  encode ? encode(row[cellId]) : row[cellId],
1232
1234
  ),
1233
1235
  },
1236
+ getPlaceholder,
1234
1237
  currentColumnNames,
1235
1238
  );
1236
1239
  }
@@ -1264,13 +1267,14 @@ const getCommandFunctions = (
1264
1267
  rowIdColumnName,
1265
1268
  changingColumnNames,
1266
1269
  rows,
1270
+ getPlaceholder,
1267
1271
  currentColumnNames,
1268
1272
  );
1269
1273
  await executeCommand(
1270
1274
  DELETE_FROM +
1271
1275
  escapeId(tableName) +
1272
1276
  getWhereCondition(tableName, condition) + // eslint-disable-next-line max-len
1273
- `AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds)})`,
1277
+ `AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds, getPlaceholder)})`,
1274
1278
  deleteRowIds,
1275
1279
  );
1276
1280
  } else if (
@@ -1313,6 +1317,7 @@ const defaultUpsert = async (
1313
1317
  rowIdColumnName,
1314
1318
  changingColumnNames,
1315
1319
  rows,
1320
+ getPlaceholder,
1316
1321
  ) => {
1317
1322
  const offset = [1];
1318
1323
  await executeCommand(
@@ -1326,7 +1331,11 @@ const defaultUpsert = async (
1326
1331
  objToArray(
1327
1332
  rows,
1328
1333
  (row) =>
1329
- '($' + offset[0]++ + ',' + getPlaceholders(row, offset) + ')',
1334
+ '(' +
1335
+ getPlaceholder(offset) +
1336
+ ',' +
1337
+ getPlaceholders(row, getPlaceholder, offset) +
1338
+ ')',
1330
1339
  ),
1331
1340
  COMMA,
1332
1341
  ) +
@@ -1362,6 +1371,7 @@ const createJsonPersister = (
1362
1371
  thing,
1363
1372
  getThing,
1364
1373
  columnType,
1374
+ getPlaceholder,
1365
1375
  upsert,
1366
1376
  _encode,
1367
1377
  _decode,
@@ -1373,6 +1383,7 @@ const createJsonPersister = (
1373
1383
  managedTableNames,
1374
1384
  querySchema,
1375
1385
  columnType,
1386
+ getPlaceholder,
1376
1387
  upsert,
1377
1388
  void 0,
1378
1389
  void 0,
@@ -1440,6 +1451,7 @@ const createTabularPersister = (
1440
1451
  thing,
1441
1452
  getThing,
1442
1453
  columnType,
1454
+ getPlaceholder,
1443
1455
  upsert,
1444
1456
  encode,
1445
1457
  decode,
@@ -1451,6 +1463,7 @@ const createTabularPersister = (
1451
1463
  managedTableNames,
1452
1464
  querySchema,
1453
1465
  columnType,
1466
+ getPlaceholder,
1454
1467
  upsert,
1455
1468
  encode,
1456
1469
  decode,
@@ -1710,12 +1723,13 @@ const createCustomSqlitePersister = (
1710
1723
  async (executeCommand2, managedTableNames) =>
1711
1724
  await executeCommand2(
1712
1725
  SELECT + // eslint-disable-next-line max-len
1713
- ` t.name tn,c.name cn,c.pk OR EXISTS(${SELECT} 1 FROM ${PRAGMA}index_list(t.name)i,${PRAGMA}index_info(i.name)ii ${WHERE} i."unique"=1 AND ii.name=c.name AND(${SELECT} count(*) FROM ${PRAGMA}index_info(i.name))=1)uq FROM ${PRAGMA_TABLE}list()t,${PRAGMA_TABLE}info(t.name)c ${WHERE} t.schema='main'AND t.type IN('table','view')AND t.name IN(${getPlaceholders(managedTableNames)})ORDER BY t.name,c.name`,
1726
+ ` t.name tn,c.name cn,c.pk OR EXISTS(${SELECT} 1 FROM ${PRAGMA}index_list(t.name)i,${PRAGMA}index_info(i.name)ii ${WHERE} i."unique"=1 AND ii.name=c.name AND(${SELECT} count(*) FROM ${PRAGMA}index_info(i.name))=1)uq FROM ${PRAGMA_TABLE}list()t,${PRAGMA_TABLE}info(t.name)c ${WHERE} t.schema='main'AND t.type IN('table','view')AND t.name IN(${getPlaceholders(managedTableNames, anonymousPlaceholder)})ORDER BY t.name,c.name`,
1714
1727
  managedTableNames,
1715
1728
  ),
1716
1729
  thing,
1717
1730
  getThing,
1718
1731
  EMPTY_STRING,
1732
+ anonymousPlaceholder,
1719
1733
  upsert,
1720
1734
  (cellOrValue) =>
1721
1735
  isTrue(cellOrValue) ? 1 : isFalse(cellOrValue) ? 0 : cellOrValue,
@@ -138,9 +138,10 @@ const escapeId = (str) =>
138
138
  );
139
139
  const escapeColumnNames = (...columnNames) =>
140
140
  arrayJoin(arrayMap(columnNames, escapeId), COMMA);
141
- const getPlaceholders = (array, offset = [1]) =>
141
+ const anonymousPlaceholder = () => '?';
142
+ const getPlaceholders = (array, getPlaceholder, offset = [1]) =>
142
143
  arrayJoin(
143
- arrayMap(array, () => '$' + offset[0]++),
144
+ arrayMap(array, () => getPlaceholder(offset)),
144
145
  COMMA,
145
146
  );
146
147
  const getWhereCondition = (tableName, condition = TRUE) =>
@@ -1002,6 +1003,7 @@ const getCommandFunctions = (
1002
1003
  managedTableNames,
1003
1004
  querySchema,
1004
1005
  columnType,
1006
+ getPlaceholder,
1005
1007
  upsert = defaultUpsert,
1006
1008
  encode,
1007
1009
  decode,
@@ -1212,7 +1214,7 @@ const getCommandFunctions = (
1212
1214
  DELETE_FROM +
1213
1215
  escapeId(tableName) +
1214
1216
  getWhereCondition(tableName, condition) +
1215
- `AND(${escapeId(rowIdColumnName)}=$1)`,
1217
+ `AND(${escapeId(rowIdColumnName)}=${getPlaceholder([1])})`,
1216
1218
  [rowId],
1217
1219
  );
1218
1220
  } else if (!isEmpty(settingColumnNames)) {
@@ -1231,6 +1233,7 @@ const getCommandFunctions = (
1231
1233
  encode ? encode(row[cellId]) : row[cellId],
1232
1234
  ),
1233
1235
  },
1236
+ getPlaceholder,
1234
1237
  currentColumnNames,
1235
1238
  );
1236
1239
  }
@@ -1264,13 +1267,14 @@ const getCommandFunctions = (
1264
1267
  rowIdColumnName,
1265
1268
  changingColumnNames,
1266
1269
  rows,
1270
+ getPlaceholder,
1267
1271
  currentColumnNames,
1268
1272
  );
1269
1273
  await executeCommand(
1270
1274
  DELETE_FROM +
1271
1275
  escapeId(tableName) +
1272
1276
  getWhereCondition(tableName, condition) + // eslint-disable-next-line max-len
1273
- `AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds)})`,
1277
+ `AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds, getPlaceholder)})`,
1274
1278
  deleteRowIds,
1275
1279
  );
1276
1280
  } else if (
@@ -1313,6 +1317,7 @@ const defaultUpsert = async (
1313
1317
  rowIdColumnName,
1314
1318
  changingColumnNames,
1315
1319
  rows,
1320
+ getPlaceholder,
1316
1321
  ) => {
1317
1322
  const offset = [1];
1318
1323
  await executeCommand(
@@ -1326,7 +1331,11 @@ const defaultUpsert = async (
1326
1331
  objToArray(
1327
1332
  rows,
1328
1333
  (row) =>
1329
- '($' + offset[0]++ + ',' + getPlaceholders(row, offset) + ')',
1334
+ '(' +
1335
+ getPlaceholder(offset) +
1336
+ ',' +
1337
+ getPlaceholders(row, getPlaceholder, offset) +
1338
+ ')',
1330
1339
  ),
1331
1340
  COMMA,
1332
1341
  ) +
@@ -1362,6 +1371,7 @@ const createJsonPersister = (
1362
1371
  thing,
1363
1372
  getThing,
1364
1373
  columnType,
1374
+ getPlaceholder,
1365
1375
  upsert,
1366
1376
  _encode,
1367
1377
  _decode,
@@ -1373,6 +1383,7 @@ const createJsonPersister = (
1373
1383
  managedTableNames,
1374
1384
  querySchema,
1375
1385
  columnType,
1386
+ getPlaceholder,
1376
1387
  upsert,
1377
1388
  void 0,
1378
1389
  void 0,
@@ -1440,6 +1451,7 @@ const createTabularPersister = (
1440
1451
  thing,
1441
1452
  getThing,
1442
1453
  columnType,
1454
+ getPlaceholder,
1443
1455
  upsert,
1444
1456
  encode,
1445
1457
  decode,
@@ -1451,6 +1463,7 @@ const createTabularPersister = (
1451
1463
  managedTableNames,
1452
1464
  querySchema,
1453
1465
  columnType,
1466
+ getPlaceholder,
1454
1467
  upsert,
1455
1468
  encode,
1456
1469
  decode,
@@ -1710,12 +1723,13 @@ const createCustomSqlitePersister = (
1710
1723
  async (executeCommand2, managedTableNames) =>
1711
1724
  await executeCommand2(
1712
1725
  SELECT + // eslint-disable-next-line max-len
1713
- ` t.name tn,c.name cn,c.pk OR EXISTS(${SELECT} 1 FROM ${PRAGMA}index_list(t.name)i,${PRAGMA}index_info(i.name)ii ${WHERE} i."unique"=1 AND ii.name=c.name AND(${SELECT} count(*) FROM ${PRAGMA}index_info(i.name))=1)uq FROM ${PRAGMA_TABLE}list()t,${PRAGMA_TABLE}info(t.name)c ${WHERE} t.schema='main'AND t.type IN('table','view')AND t.name IN(${getPlaceholders(managedTableNames)})ORDER BY t.name,c.name`,
1726
+ ` t.name tn,c.name cn,c.pk OR EXISTS(${SELECT} 1 FROM ${PRAGMA}index_list(t.name)i,${PRAGMA}index_info(i.name)ii ${WHERE} i."unique"=1 AND ii.name=c.name AND(${SELECT} count(*) FROM ${PRAGMA}index_info(i.name))=1)uq FROM ${PRAGMA_TABLE}list()t,${PRAGMA_TABLE}info(t.name)c ${WHERE} t.schema='main'AND t.type IN('table','view')AND t.name IN(${getPlaceholders(managedTableNames, anonymousPlaceholder)})ORDER BY t.name,c.name`,
1714
1727
  managedTableNames,
1715
1728
  ),
1716
1729
  thing,
1717
1730
  getThing,
1718
1731
  EMPTY_STRING,
1732
+ anonymousPlaceholder,
1719
1733
  upsert,
1720
1734
  (cellOrValue) =>
1721
1735
  isTrue(cellOrValue) ? 1 : isFalse(cellOrValue) ? 0 : cellOrValue,
@@ -143,9 +143,10 @@ const escapeId = (str) =>
143
143
  );
144
144
  const escapeColumnNames = (...columnNames) =>
145
145
  arrayJoin(arrayMap(columnNames, escapeId), COMMA);
146
- const getPlaceholders = (array, offset = [1]) =>
146
+ const anonymousPlaceholder = () => '?';
147
+ const getPlaceholders = (array, getPlaceholder, offset = [1]) =>
147
148
  arrayJoin(
148
- arrayMap(array, () => '$' + offset[0]++),
149
+ arrayMap(array, () => getPlaceholder(offset)),
149
150
  COMMA,
150
151
  );
151
152
  const getWhereCondition = (tableName, condition = TRUE) =>
@@ -1007,6 +1008,7 @@ const getCommandFunctions = (
1007
1008
  managedTableNames,
1008
1009
  querySchema,
1009
1010
  columnType,
1011
+ getPlaceholder,
1010
1012
  upsert = defaultUpsert,
1011
1013
  encode,
1012
1014
  decode,
@@ -1217,7 +1219,7 @@ const getCommandFunctions = (
1217
1219
  DELETE_FROM +
1218
1220
  escapeId(tableName) +
1219
1221
  getWhereCondition(tableName, condition) +
1220
- `AND(${escapeId(rowIdColumnName)}=$1)`,
1222
+ `AND(${escapeId(rowIdColumnName)}=${getPlaceholder([1])})`,
1221
1223
  [rowId],
1222
1224
  );
1223
1225
  } else if (!isEmpty(settingColumnNames)) {
@@ -1236,6 +1238,7 @@ const getCommandFunctions = (
1236
1238
  encode ? encode(row[cellId]) : row[cellId],
1237
1239
  ),
1238
1240
  },
1241
+ getPlaceholder,
1239
1242
  currentColumnNames,
1240
1243
  );
1241
1244
  }
@@ -1269,13 +1272,14 @@ const getCommandFunctions = (
1269
1272
  rowIdColumnName,
1270
1273
  changingColumnNames,
1271
1274
  rows,
1275
+ getPlaceholder,
1272
1276
  currentColumnNames,
1273
1277
  );
1274
1278
  await executeCommand(
1275
1279
  DELETE_FROM +
1276
1280
  escapeId(tableName) +
1277
1281
  getWhereCondition(tableName, condition) + // eslint-disable-next-line max-len
1278
- `AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds)})`,
1282
+ `AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds, getPlaceholder)})`,
1279
1283
  deleteRowIds,
1280
1284
  );
1281
1285
  } else if (
@@ -1318,6 +1322,7 @@ const defaultUpsert = async (
1318
1322
  rowIdColumnName,
1319
1323
  changingColumnNames,
1320
1324
  rows,
1325
+ getPlaceholder,
1321
1326
  ) => {
1322
1327
  const offset = [1];
1323
1328
  await executeCommand(
@@ -1331,7 +1336,11 @@ const defaultUpsert = async (
1331
1336
  objToArray(
1332
1337
  rows,
1333
1338
  (row) =>
1334
- '($' + offset[0]++ + ',' + getPlaceholders(row, offset) + ')',
1339
+ '(' +
1340
+ getPlaceholder(offset) +
1341
+ ',' +
1342
+ getPlaceholders(row, getPlaceholder, offset) +
1343
+ ')',
1335
1344
  ),
1336
1345
  COMMA,
1337
1346
  ) +
@@ -1367,6 +1376,7 @@ const createJsonPersister = (
1367
1376
  thing,
1368
1377
  getThing,
1369
1378
  columnType,
1379
+ getPlaceholder,
1370
1380
  upsert,
1371
1381
  _encode,
1372
1382
  _decode,
@@ -1378,6 +1388,7 @@ const createJsonPersister = (
1378
1388
  managedTableNames,
1379
1389
  querySchema,
1380
1390
  columnType,
1391
+ getPlaceholder,
1381
1392
  upsert,
1382
1393
  void 0,
1383
1394
  void 0,
@@ -1445,6 +1456,7 @@ const createTabularPersister = (
1445
1456
  thing,
1446
1457
  getThing,
1447
1458
  columnType,
1459
+ getPlaceholder,
1448
1460
  upsert,
1449
1461
  encode,
1450
1462
  decode,
@@ -1456,6 +1468,7 @@ const createTabularPersister = (
1456
1468
  managedTableNames,
1457
1469
  querySchema,
1458
1470
  columnType,
1471
+ getPlaceholder,
1459
1472
  upsert,
1460
1473
  encode,
1461
1474
  decode,
@@ -1715,12 +1728,13 @@ const createCustomSqlitePersister = (
1715
1728
  async (executeCommand2, managedTableNames) =>
1716
1729
  await executeCommand2(
1717
1730
  SELECT + // eslint-disable-next-line max-len
1718
- ` t.name tn,c.name cn,c.pk OR EXISTS(${SELECT} 1 FROM ${PRAGMA}index_list(t.name)i,${PRAGMA}index_info(i.name)ii ${WHERE} i."unique"=1 AND ii.name=c.name AND(${SELECT} count(*) FROM ${PRAGMA}index_info(i.name))=1)uq FROM ${PRAGMA_TABLE}list()t,${PRAGMA_TABLE}info(t.name)c ${WHERE} t.schema='main'AND t.type IN('table','view')AND t.name IN(${getPlaceholders(managedTableNames)})ORDER BY t.name,c.name`,
1731
+ ` t.name tn,c.name cn,c.pk OR EXISTS(${SELECT} 1 FROM ${PRAGMA}index_list(t.name)i,${PRAGMA}index_info(i.name)ii ${WHERE} i."unique"=1 AND ii.name=c.name AND(${SELECT} count(*) FROM ${PRAGMA}index_info(i.name))=1)uq FROM ${PRAGMA_TABLE}list()t,${PRAGMA_TABLE}info(t.name)c ${WHERE} t.schema='main'AND t.type IN('table','view')AND t.name IN(${getPlaceholders(managedTableNames, anonymousPlaceholder)})ORDER BY t.name,c.name`,
1719
1732
  managedTableNames,
1720
1733
  ),
1721
1734
  thing,
1722
1735
  getThing,
1723
1736
  EMPTY_STRING,
1737
+ anonymousPlaceholder,
1724
1738
  upsert,
1725
1739
  (cellOrValue) =>
1726
1740
  isTrue(cellOrValue) ? 1 : isFalse(cellOrValue) ? 0 : cellOrValue,
@@ -143,9 +143,10 @@ const escapeId = (str) =>
143
143
  );
144
144
  const escapeColumnNames = (...columnNames) =>
145
145
  arrayJoin(arrayMap(columnNames, escapeId), COMMA);
146
- const getPlaceholders = (array, offset = [1]) =>
146
+ const anonymousPlaceholder = () => '?';
147
+ const getPlaceholders = (array, getPlaceholder, offset = [1]) =>
147
148
  arrayJoin(
148
- arrayMap(array, () => '$' + offset[0]++),
149
+ arrayMap(array, () => getPlaceholder(offset)),
149
150
  COMMA,
150
151
  );
151
152
  const getWhereCondition = (tableName, condition = TRUE) =>
@@ -1007,6 +1008,7 @@ const getCommandFunctions = (
1007
1008
  managedTableNames,
1008
1009
  querySchema,
1009
1010
  columnType,
1011
+ getPlaceholder,
1010
1012
  upsert = defaultUpsert,
1011
1013
  encode,
1012
1014
  decode,
@@ -1217,7 +1219,7 @@ const getCommandFunctions = (
1217
1219
  DELETE_FROM +
1218
1220
  escapeId(tableName) +
1219
1221
  getWhereCondition(tableName, condition) +
1220
- `AND(${escapeId(rowIdColumnName)}=$1)`,
1222
+ `AND(${escapeId(rowIdColumnName)}=${getPlaceholder([1])})`,
1221
1223
  [rowId],
1222
1224
  );
1223
1225
  } else if (!isEmpty(settingColumnNames)) {
@@ -1236,6 +1238,7 @@ const getCommandFunctions = (
1236
1238
  encode ? encode(row[cellId]) : row[cellId],
1237
1239
  ),
1238
1240
  },
1241
+ getPlaceholder,
1239
1242
  currentColumnNames,
1240
1243
  );
1241
1244
  }
@@ -1269,13 +1272,14 @@ const getCommandFunctions = (
1269
1272
  rowIdColumnName,
1270
1273
  changingColumnNames,
1271
1274
  rows,
1275
+ getPlaceholder,
1272
1276
  currentColumnNames,
1273
1277
  );
1274
1278
  await executeCommand(
1275
1279
  DELETE_FROM +
1276
1280
  escapeId(tableName) +
1277
1281
  getWhereCondition(tableName, condition) + // eslint-disable-next-line max-len
1278
- `AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds)})`,
1282
+ `AND${escapeId(rowIdColumnName)}NOT IN(${getPlaceholders(deleteRowIds, getPlaceholder)})`,
1279
1283
  deleteRowIds,
1280
1284
  );
1281
1285
  } else if (
@@ -1318,6 +1322,7 @@ const defaultUpsert = async (
1318
1322
  rowIdColumnName,
1319
1323
  changingColumnNames,
1320
1324
  rows,
1325
+ getPlaceholder,
1321
1326
  ) => {
1322
1327
  const offset = [1];
1323
1328
  await executeCommand(
@@ -1331,7 +1336,11 @@ const defaultUpsert = async (
1331
1336
  objToArray(
1332
1337
  rows,
1333
1338
  (row) =>
1334
- '($' + offset[0]++ + ',' + getPlaceholders(row, offset) + ')',
1339
+ '(' +
1340
+ getPlaceholder(offset) +
1341
+ ',' +
1342
+ getPlaceholders(row, getPlaceholder, offset) +
1343
+ ')',
1335
1344
  ),
1336
1345
  COMMA,
1337
1346
  ) +
@@ -1367,6 +1376,7 @@ const createJsonPersister = (
1367
1376
  thing,
1368
1377
  getThing,
1369
1378
  columnType,
1379
+ getPlaceholder,
1370
1380
  upsert,
1371
1381
  _encode,
1372
1382
  _decode,
@@ -1378,6 +1388,7 @@ const createJsonPersister = (
1378
1388
  managedTableNames,
1379
1389
  querySchema,
1380
1390
  columnType,
1391
+ getPlaceholder,
1381
1392
  upsert,
1382
1393
  void 0,
1383
1394
  void 0,
@@ -1445,6 +1456,7 @@ const createTabularPersister = (
1445
1456
  thing,
1446
1457
  getThing,
1447
1458
  columnType,
1459
+ getPlaceholder,
1448
1460
  upsert,
1449
1461
  encode,
1450
1462
  decode,
@@ -1456,6 +1468,7 @@ const createTabularPersister = (
1456
1468
  managedTableNames,
1457
1469
  querySchema,
1458
1470
  columnType,
1471
+ getPlaceholder,
1459
1472
  upsert,
1460
1473
  encode,
1461
1474
  decode,
@@ -1715,12 +1728,13 @@ const createCustomSqlitePersister = (
1715
1728
  async (executeCommand2, managedTableNames) =>
1716
1729
  await executeCommand2(
1717
1730
  SELECT + // eslint-disable-next-line max-len
1718
- ` t.name tn,c.name cn,c.pk OR EXISTS(${SELECT} 1 FROM ${PRAGMA}index_list(t.name)i,${PRAGMA}index_info(i.name)ii ${WHERE} i."unique"=1 AND ii.name=c.name AND(${SELECT} count(*) FROM ${PRAGMA}index_info(i.name))=1)uq FROM ${PRAGMA_TABLE}list()t,${PRAGMA_TABLE}info(t.name)c ${WHERE} t.schema='main'AND t.type IN('table','view')AND t.name IN(${getPlaceholders(managedTableNames)})ORDER BY t.name,c.name`,
1731
+ ` t.name tn,c.name cn,c.pk OR EXISTS(${SELECT} 1 FROM ${PRAGMA}index_list(t.name)i,${PRAGMA}index_info(i.name)ii ${WHERE} i."unique"=1 AND ii.name=c.name AND(${SELECT} count(*) FROM ${PRAGMA}index_info(i.name))=1)uq FROM ${PRAGMA_TABLE}list()t,${PRAGMA_TABLE}info(t.name)c ${WHERE} t.schema='main'AND t.type IN('table','view')AND t.name IN(${getPlaceholders(managedTableNames, anonymousPlaceholder)})ORDER BY t.name,c.name`,
1719
1732
  managedTableNames,
1720
1733
  ),
1721
1734
  thing,
1722
1735
  getThing,
1723
1736
  EMPTY_STRING,
1737
+ anonymousPlaceholder,
1724
1738
  upsert,
1725
1739
  (cellOrValue) =>
1726
1740
  isTrue(cellOrValue) ? 1 : isFalse(cellOrValue) ? 0 : cellOrValue,