tinybase 9.5.0 → 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 (148) 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/agents.md +55 -2
  32. package/min/omni/index.js +1 -1
  33. package/min/omni/index.js.gz +0 -0
  34. package/min/omni/with-schemas/index.js +1 -1
  35. package/min/omni/with-schemas/index.js.gz +0 -0
  36. package/min/persisters/index.js +1 -1
  37. package/min/persisters/index.js.gz +0 -0
  38. package/min/persisters/persister-better-sqlite3/index.js +1 -0
  39. package/min/persisters/persister-better-sqlite3/index.js.gz +0 -0
  40. package/min/persisters/persister-better-sqlite3/with-schemas/index.js +1 -0
  41. package/min/persisters/persister-better-sqlite3/with-schemas/index.js.gz +0 -0
  42. package/min/persisters/persister-capacitor-sqlite/index.js +1 -0
  43. package/min/persisters/persister-capacitor-sqlite/index.js.gz +0 -0
  44. package/min/persisters/persister-capacitor-sqlite/with-schemas/index.js +1 -0
  45. package/min/persisters/persister-capacitor-sqlite/with-schemas/index.js.gz +0 -0
  46. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  47. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  48. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  49. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  50. package/min/persisters/persister-durable-object-sql-storage/index.js +1 -1
  51. package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
  52. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
  53. package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js.gz +0 -0
  54. package/min/persisters/persister-electric-sql/index.js +1 -1
  55. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  56. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  57. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  58. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  59. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  60. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  61. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  62. package/min/persisters/persister-indexed-db/index.js +1 -1
  63. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  64. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  65. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  66. package/min/persisters/persister-libsql/index.js +1 -1
  67. package/min/persisters/persister-libsql/index.js.gz +0 -0
  68. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  69. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  70. package/min/persisters/persister-pg/index.js +1 -0
  71. package/min/persisters/persister-pg/index.js.gz +0 -0
  72. package/min/persisters/persister-pg/with-schemas/index.js +1 -0
  73. package/min/persisters/persister-pg/with-schemas/index.js.gz +0 -0
  74. package/min/persisters/persister-pglite/index.js +1 -1
  75. package/min/persisters/persister-pglite/index.js.gz +0 -0
  76. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  77. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  78. package/min/persisters/persister-postgres/index.js +1 -1
  79. package/min/persisters/persister-postgres/index.js.gz +0 -0
  80. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  81. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  82. package/min/persisters/persister-powersync/index.js +1 -1
  83. package/min/persisters/persister-powersync/index.js.gz +0 -0
  84. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  85. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  86. package/min/persisters/persister-react-native-sqlite/index.js +1 -1
  87. package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
  88. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -1
  89. package/min/persisters/persister-react-native-sqlite/with-schemas/index.js.gz +0 -0
  90. package/min/persisters/persister-sqlite-bun/index.js +1 -1
  91. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  92. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
  93. package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
  94. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  95. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  96. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  97. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  98. package/min/persisters/persister-sqlite3/index.js +1 -1
  99. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  100. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  101. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  102. package/min/persisters/persister-supabase/index.js +1 -0
  103. package/min/persisters/persister-supabase/index.js.gz +0 -0
  104. package/min/persisters/persister-supabase/with-schemas/index.js +1 -0
  105. package/min/persisters/persister-supabase/with-schemas/index.js.gz +0 -0
  106. package/min/persisters/with-schemas/index.js +1 -1
  107. package/min/persisters/with-schemas/index.js.gz +0 -0
  108. package/omni/index.js +269 -34
  109. package/omni/with-schemas/index.js +269 -34
  110. package/package.json +164 -4
  111. package/persisters/index.js +23 -7
  112. package/persisters/persister-better-sqlite3/index.js +1767 -0
  113. package/persisters/persister-better-sqlite3/with-schemas/index.js +1767 -0
  114. package/persisters/persister-capacitor-sqlite/index.js +1769 -0
  115. package/persisters/persister-capacitor-sqlite/with-schemas/index.js +1769 -0
  116. package/persisters/persister-cr-sqlite-wasm/index.js +20 -6
  117. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +20 -6
  118. package/persisters/persister-durable-object-sql-storage/index.js +20 -7
  119. package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +20 -7
  120. package/persisters/persister-electric-sql/index.js +20 -6
  121. package/persisters/persister-electric-sql/with-schemas/index.js +20 -6
  122. package/persisters/persister-expo-sqlite/index.js +20 -6
  123. package/persisters/persister-expo-sqlite/with-schemas/index.js +20 -6
  124. package/persisters/persister-indexed-db/index.js +48 -20
  125. package/persisters/persister-indexed-db/with-schemas/index.js +48 -20
  126. package/persisters/persister-libsql/index.js +20 -6
  127. package/persisters/persister-libsql/with-schemas/index.js +20 -6
  128. package/persisters/persister-pg/index.js +1905 -0
  129. package/persisters/persister-pg/with-schemas/index.js +1905 -0
  130. package/persisters/persister-pglite/index.js +20 -6
  131. package/persisters/persister-pglite/with-schemas/index.js +20 -6
  132. package/persisters/persister-postgres/index.js +20 -6
  133. package/persisters/persister-postgres/with-schemas/index.js +20 -6
  134. package/persisters/persister-powersync/index.js +27 -10
  135. package/persisters/persister-powersync/with-schemas/index.js +27 -10
  136. package/persisters/persister-react-native-sqlite/index.js +20 -6
  137. package/persisters/persister-react-native-sqlite/with-schemas/index.js +20 -6
  138. package/persisters/persister-sqlite-bun/index.js +20 -6
  139. package/persisters/persister-sqlite-bun/with-schemas/index.js +20 -6
  140. package/persisters/persister-sqlite-wasm/index.js +20 -6
  141. package/persisters/persister-sqlite-wasm/with-schemas/index.js +20 -6
  142. package/persisters/persister-sqlite3/index.js +20 -6
  143. package/persisters/persister-sqlite3/with-schemas/index.js +20 -6
  144. package/persisters/persister-supabase/index.js +883 -0
  145. package/persisters/persister-supabase/with-schemas/index.js +883 -0
  146. package/persisters/with-schemas/index.js +23 -7
  147. package/readme.md +14 -14
  148. 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,