@powersync/web 0.0.0-dev-20260414110516 → 0.0.0-dev-20260504100448

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 (76) hide show
  1. package/dist/2075a31bb151adbb9767.wasm +0 -0
  2. package/dist/3322bc84de986b63c2cd.wasm +0 -0
  3. package/dist/8e97452e297be23b5e50.wasm +0 -0
  4. package/dist/fbc178b70d530e8ce02b.wasm +0 -0
  5. package/dist/index.umd.js +4289 -4786
  6. package/dist/index.umd.js.map +1 -1
  7. package/dist/worker/SharedSyncImplementation.umd.js +37 -798
  8. package/dist/worker/SharedSyncImplementation.umd.js.map +1 -1
  9. package/dist/worker/WASQLiteDB.umd.js +99 -737
  10. package/dist/worker/WASQLiteDB.umd.js.map +1 -1
  11. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-9af0a7.umd.js +31 -0
  12. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-9af0a7.umd.js.map +1 -0
  13. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-bbf5a9.umd.js +31 -0
  14. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-bbf5a9.umd.js.map +1 -0
  15. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqli-c26e0f.umd.js +31 -0
  16. package/dist/worker/{node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqli-cc5fcc.umd.js.map → node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqli-c26e0f.umd.js.map} +1 -1
  17. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqlite_mjs.umd.js +31 -0
  18. package/dist/worker/{node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqlite_mjs.umd.js.map → node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqlite_mjs.umd.js.map} +1 -1
  19. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-2fb422.umd.js +3562 -0
  20. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-2fb422.umd.js.map +1 -0
  21. package/dist/worker/{node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_src_examples-0df390.umd.js → node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-96fb23.umd.js} +16 -16
  22. package/dist/worker/{node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_src_examples-0df390.umd.js.map → node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-96fb23.umd.js.map} +1 -1
  23. package/dist/worker/{node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_src_examples-151024.umd.js → node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-c89911.umd.js} +12 -12
  24. package/dist/worker/{node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_src_examples-151024.umd.js.map → node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-c89911.umd.js.map} +1 -1
  25. package/dist/worker/{node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_src_examples-c01ef0.umd.js → node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-ec4eb1.umd.js} +14 -14
  26. package/dist/worker/{node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_src_examples-c01ef0.umd.js.map → node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-ec4eb1.umd.js.map} +1 -1
  27. package/lib/package.json +4 -7
  28. package/lib/src/db/PowerSyncDatabase.d.ts +1 -1
  29. package/lib/src/db/PowerSyncDatabase.js +0 -8
  30. package/lib/src/db/adapters/AsyncWebAdapter.d.ts +13 -3
  31. package/lib/src/db/adapters/AsyncWebAdapter.js +115 -21
  32. package/lib/src/db/adapters/wa-sqlite/DatabaseServer.js +1 -2
  33. package/lib/src/db/adapters/wa-sqlite/RawSqliteConnection.js +1 -1
  34. package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.d.ts +16 -2
  35. package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.js +60 -38
  36. package/lib/src/db/adapters/wa-sqlite/vfs.d.ts +7 -18
  37. package/lib/src/db/adapters/wa-sqlite/vfs.js +34 -49
  38. package/lib/src/db/sync/SSRWebStreamingSyncImplementation.d.ts +4 -0
  39. package/lib/src/db/sync/SSRWebStreamingSyncImplementation.js +4 -0
  40. package/lib/src/db/sync/SharedWebStreamingSyncImplementation.d.ts +0 -1
  41. package/lib/src/db/sync/SharedWebStreamingSyncImplementation.js +0 -3
  42. package/lib/src/db/sync/WebRemote.d.ts +1 -3
  43. package/lib/src/db/sync/WebRemote.js +0 -12
  44. package/lib/src/worker/db/MultiDatabaseServer.js +4 -1
  45. package/lib/src/worker/db/open-worker-database.js +2 -2
  46. package/lib/src/worker/sync/SharedSyncImplementation.d.ts +0 -2
  47. package/lib/src/worker/sync/SharedSyncImplementation.js +4 -16
  48. package/lib/src/worker/sync/WorkerClient.d.ts +0 -1
  49. package/lib/src/worker/sync/WorkerClient.js +0 -3
  50. package/lib/tsconfig.tsbuildinfo +1 -1
  51. package/package.json +5 -8
  52. package/src/db/PowerSyncDatabase.ts +1 -9
  53. package/src/db/adapters/AsyncWebAdapter.ts +138 -22
  54. package/src/db/adapters/wa-sqlite/DatabaseServer.ts +4 -2
  55. package/src/db/adapters/wa-sqlite/RawSqliteConnection.ts +4 -1
  56. package/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts +89 -44
  57. package/src/db/adapters/wa-sqlite/vfs.ts +33 -49
  58. package/src/db/sync/SSRWebStreamingSyncImplementation.ts +5 -0
  59. package/src/db/sync/SharedWebStreamingSyncImplementation.ts +0 -4
  60. package/src/db/sync/WebRemote.ts +0 -16
  61. package/src/worker/db/MultiDatabaseServer.ts +4 -1
  62. package/src/worker/db/open-worker-database.ts +2 -2
  63. package/src/worker/sync/SharedSyncImplementation.ts +4 -18
  64. package/src/worker/sync/WorkerClient.ts +0 -4
  65. package/dist/26d61ca9f5694d064635.wasm +0 -0
  66. package/dist/b4c6283dc473b6b3fd24.wasm +0 -0
  67. package/dist/c78985091a0b22aaef03.wasm +0 -0
  68. package/dist/ca59e199e1138b553fad.wasm +0 -0
  69. package/dist/worker/node_modules_pnpm_bson_6_10_4_node_modules_bson_lib_bson_mjs.umd.js +0 -4646
  70. package/dist/worker/node_modules_pnpm_bson_6_10_4_node_modules_bson_lib_bson_mjs.umd.js.map +0 -1
  71. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-b9c070.umd.js +0 -31
  72. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-b9c070.umd.js.map +0 -1
  73. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-c99c07.umd.js +0 -31
  74. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-c99c07.umd.js.map +0 -1
  75. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqli-cc5fcc.umd.js +0 -31
  76. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqlite_mjs.umd.js +0 -31
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  AbstractRemote,
3
3
  AbstractRemoteOptions,
4
- BSONImplementation,
5
4
  DEFAULT_REMOTE_LOGGER,
6
5
  FetchImplementation,
7
6
  FetchImplementationProvider,
@@ -21,8 +20,6 @@ class WebFetchProvider extends FetchImplementationProvider {
21
20
  }
22
21
 
23
22
  export class WebRemote extends AbstractRemote {
24
- private _bson: BSONImplementation | undefined;
25
-
26
23
  constructor(
27
24
  protected connector: RemoteConnector,
28
25
  protected logger: ILogger = DEFAULT_REMOTE_LOGGER,
@@ -43,17 +40,4 @@ export class WebRemote extends AbstractRemote {
43
40
  }
44
41
  return ua.join(' ');
45
42
  }
46
-
47
- async getBSON(): Promise<BSONImplementation> {
48
- if (this._bson) {
49
- return this._bson;
50
- }
51
-
52
- /**
53
- * Dynamic import to be used only when needed.
54
- */
55
- const { BSON } = await import('bson');
56
- this._bson = BSON;
57
- return this._bson;
58
- }
59
43
  }
@@ -61,7 +61,10 @@ export class MultiDatabaseServer {
61
61
 
62
62
  let server: DatabaseServer | undefined = this.activeDatabases.get(dbFilename);
63
63
  if (server == null) {
64
- const needsNavigatorLocks = !isSharedWorker;
64
+ // We don't need navigator locks for shared workers because all queries run in this shared worker exclusively.
65
+ // For read-only connections, we use a VFS that supports concurrent reads (so a single lock on the connection is
66
+ // fine).
67
+ const needsNavigatorLocks = !(isSharedWorker || options.isReadOnly);
65
68
  const connection = new RawSqliteConnection(options);
66
69
  const withSafeConcurrency = new ConcurrentSqliteConnection(connection, needsNavigatorLocks);
67
70
 
@@ -1,5 +1,5 @@
1
1
  import * as Comlink from 'comlink';
2
- import { WASQLiteVFS } from '../../db/adapters/wa-sqlite/vfs.js';
2
+ import { vfsRequiresDedicatedWorkers, WASQLiteVFS } from '../../db/adapters/wa-sqlite/vfs.js';
3
3
  import { OpenWorkerConnection } from '../../db/adapters/wa-sqlite/DatabaseClient.js';
4
4
 
5
5
  /**
@@ -11,7 +11,7 @@ export function openWorkerDatabasePort(
11
11
  worker: string | URL = '',
12
12
  vfs?: WASQLiteVFS
13
13
  ) {
14
- const needsDedicated = vfs == WASQLiteVFS.AccessHandlePoolVFS || vfs == WASQLiteVFS.OPFSCoopSyncVFS;
14
+ const needsDedicated = vfs && vfsRequiresDedicatedWorkers(vfs);
15
15
 
16
16
  if (worker) {
17
17
  return !needsDedicated && multipleTabs
@@ -162,10 +162,6 @@ export class SharedSyncImplementation extends BaseObserver<SharedSyncImplementat
162
162
  });
163
163
  }
164
164
 
165
- get lastSyncedAt(): Date | undefined {
166
- return this.connectionManager.syncStreamImplementation?.lastSyncedAt;
167
- }
168
-
169
165
  get isConnected(): boolean {
170
166
  return this.connectionManager.syncStreamImplementation?.isConnected ?? false;
171
167
  }
@@ -362,12 +358,6 @@ export class SharedSyncImplementation extends BaseObserver<SharedSyncImplementat
362
358
  });
363
359
  }
364
360
 
365
- async hasCompletedSync(): Promise<boolean> {
366
- return this.withSyncImplementation(async (sync) => {
367
- return sync.hasCompletedSync();
368
- });
369
- }
370
-
371
361
  async getWriteCheckpoint(): Promise<string> {
372
362
  return this.withSyncImplementation(async (sync) => {
373
363
  return sync.getWriteCheckpoint();
@@ -618,14 +608,10 @@ export class SharedSyncImplementation extends BaseObserver<SharedSyncImplementat
618
608
  const impl = sharedSync.connectionManager.syncStreamImplementation! as WebStreamingSyncImplementation;
619
609
  impl?.triggerCrudUpload();
620
610
 
621
- /**
622
- * FIXME or IMPROVE ME
623
- * The Rust client implementation stores sync state on the connection level.
624
- * Reopening the database causes a state machine error which should cause the
625
- * StreamingSyncImplementation to reconnect. It would be nicer if we could trigger
626
- * this reconnect earlier.
627
- * This reconnect is not required for IndexedDB.
628
- */
611
+ // The Rust client implementation stores sync state on the connection level. Reopening the database causes a
612
+ // disruption of the connection state and forces us to reconnect. We want to do that as soon as possible to
613
+ // minimize downtime.
614
+ impl?.markConnectionMayHaveChanged();
629
615
  }
630
616
  }
631
617
 
@@ -82,10 +82,6 @@ export class WorkerClient {
82
82
  return this.sync.getWriteCheckpoint();
83
83
  }
84
84
 
85
- hasCompletedSync() {
86
- return this.sync.hasCompletedSync();
87
- }
88
-
89
85
  connect(options?: PowerSyncConnectionOptions) {
90
86
  return this.sync.connect(options);
91
87
  }
Binary file
Binary file
Binary file
Binary file