@powersync/web 0.0.0-dev-20260630141119 → 0.0.0-dev-20260708103617

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 (234) hide show
  1. package/bin/powersync.cjs +1 -1
  2. package/dist/index.umd.js +7821 -0
  3. package/dist/index.umd.js.map +1 -0
  4. package/dist/worker/SharedSyncImplementation.umd.js +16139 -0
  5. package/dist/worker/SharedSyncImplementation.umd.js.map +1 -0
  6. package/dist/worker/WASQLiteDB.umd.js +17434 -0
  7. package/dist/worker/WASQLiteDB.umd.js.map +1 -0
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqli-c26e0f.umd.js.map +1 -0
  14. 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
  15. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqlite_mjs.umd.js.map +1 -0
  16. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-2fb422.umd.js +3562 -0
  17. 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
  18. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-833585.umd.js +1400 -0
  19. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-833585.umd.js.map +1 -0
  20. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-96fb23.umd.js +2478 -0
  21. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-96fb23.umd.js.map +1 -0
  22. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-c89911.umd.js +1681 -0
  23. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-c89911.umd.js.map +1 -0
  24. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-ec4eb1.umd.js +1820 -0
  25. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-ec4eb1.umd.js.map +1 -0
  26. package/lib/package.json +91 -0
  27. package/lib/src/attachments/IndexDBFileSystemAdapter.js.map +1 -0
  28. package/lib/{db → src/db}/NavigatorTriggerClaimManager.d.ts +1 -1
  29. package/lib/src/db/NavigatorTriggerClaimManager.js.map +1 -0
  30. package/lib/src/db/PowerSyncDatabase.d.ts +78 -0
  31. package/lib/{db → src/db}/PowerSyncDatabase.js +61 -47
  32. package/lib/src/db/PowerSyncDatabase.js.map +1 -0
  33. package/lib/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.d.ts +23 -0
  34. package/lib/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.js +27 -0
  35. package/lib/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.js.map +1 -0
  36. package/lib/src/db/adapters/AsyncWebAdapter.d.ts +50 -0
  37. package/lib/{db → src/db}/adapters/AsyncWebAdapter.js +14 -14
  38. package/lib/src/db/adapters/AsyncWebAdapter.js.map +1 -0
  39. package/lib/src/db/adapters/SSRDBAdapter.d.ts +30 -0
  40. package/lib/src/db/adapters/SSRDBAdapter.js +69 -0
  41. package/lib/src/db/adapters/SSRDBAdapter.js.map +1 -0
  42. package/lib/{db → src/db}/adapters/WebDBAdapter.d.ts +1 -1
  43. package/lib/src/db/adapters/WebDBAdapter.js.map +1 -0
  44. package/lib/{db → src/db}/adapters/wa-sqlite/ConcurrentConnection.d.ts +4 -3
  45. package/lib/{db → src/db}/adapters/wa-sqlite/ConcurrentConnection.js +2 -2
  46. package/lib/src/db/adapters/wa-sqlite/ConcurrentConnection.js.map +1 -0
  47. package/lib/{db → src/db}/adapters/wa-sqlite/DatabaseClient.d.ts +4 -4
  48. package/lib/{db → src/db}/adapters/wa-sqlite/DatabaseClient.js +37 -11
  49. package/lib/src/db/adapters/wa-sqlite/DatabaseClient.js.map +1 -0
  50. package/lib/{db → src/db}/adapters/wa-sqlite/DatabaseServer.d.ts +5 -5
  51. package/lib/{db → src/db}/adapters/wa-sqlite/DatabaseServer.js +7 -11
  52. package/lib/src/db/adapters/wa-sqlite/DatabaseServer.js.map +1 -0
  53. package/lib/{db → src/db}/adapters/wa-sqlite/RawSqliteConnection.d.ts +12 -23
  54. package/lib/{db → src/db}/adapters/wa-sqlite/RawSqliteConnection.js +11 -17
  55. package/lib/src/db/adapters/wa-sqlite/RawSqliteConnection.js.map +1 -0
  56. package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.d.ts +45 -0
  57. package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.js +146 -0
  58. package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.js.map +1 -0
  59. package/lib/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.d.ts +15 -0
  60. package/lib/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.js +22 -0
  61. package/lib/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.js.map +1 -0
  62. package/lib/src/db/adapters/wa-sqlite/vfs.d.ts +40 -0
  63. package/lib/src/db/adapters/wa-sqlite/vfs.js +95 -0
  64. package/lib/src/db/adapters/wa-sqlite/vfs.js.map +1 -0
  65. package/lib/src/db/adapters/web-sql-flags.d.ts +92 -0
  66. package/lib/src/db/adapters/web-sql-flags.js +37 -0
  67. package/lib/src/db/adapters/web-sql-flags.js.map +1 -0
  68. package/lib/{db → src/db}/sync/SSRWebStreamingSyncImplementation.d.ts +8 -4
  69. package/lib/{db → src/db}/sync/SSRWebStreamingSyncImplementation.js +11 -4
  70. package/lib/src/db/sync/SSRWebStreamingSyncImplementation.js.map +1 -0
  71. package/lib/{db → src/db}/sync/SharedWebStreamingSyncImplementation.d.ts +14 -13
  72. package/lib/{db → src/db}/sync/SharedWebStreamingSyncImplementation.js +66 -31
  73. package/lib/src/db/sync/SharedWebStreamingSyncImplementation.js.map +1 -0
  74. package/lib/src/db/sync/WebRemote.d.ts +7 -0
  75. package/lib/src/db/sync/WebRemote.js +33 -0
  76. package/lib/src/db/sync/WebRemote.js.map +1 -0
  77. package/lib/{db → src/db}/sync/WebStreamingSyncImplementation.d.ts +4 -2
  78. package/lib/{db → src/db}/sync/WebStreamingSyncImplementation.js +2 -3
  79. package/lib/src/db/sync/WebStreamingSyncImplementation.js.map +1 -0
  80. package/lib/src/db/sync/userAgent.js.map +1 -0
  81. package/lib/{index.d.ts → src/index.d.ts} +3 -1
  82. package/lib/{index.js → src/index.js} +3 -1
  83. package/lib/src/index.js.map +1 -0
  84. package/lib/src/shared/navigator.js.map +1 -0
  85. package/lib/src/shared/tab_close_signal.js.map +1 -0
  86. package/lib/src/worker/db/MultiDatabaseServer.d.ts +17 -0
  87. package/lib/{worker → src/worker}/db/MultiDatabaseServer.js +18 -26
  88. package/lib/src/worker/db/MultiDatabaseServer.js.map +1 -0
  89. package/lib/src/worker/db/WASQLiteDB.worker.d.ts +4 -0
  90. package/lib/src/worker/db/WASQLiteDB.worker.js +31 -0
  91. package/lib/src/worker/db/WASQLiteDB.worker.js.map +1 -0
  92. package/lib/src/worker/db/open-worker-database.d.ts +14 -0
  93. package/lib/src/worker/db/open-worker-database.js +53 -0
  94. package/lib/src/worker/db/open-worker-database.js.map +1 -0
  95. package/lib/src/worker/sync/AbstractSharedSyncClientProvider.d.ts +19 -0
  96. package/lib/src/worker/sync/AbstractSharedSyncClientProvider.js.map +1 -0
  97. package/lib/src/worker/sync/BroadcastLogger.d.ts +47 -0
  98. package/lib/src/worker/sync/BroadcastLogger.js +129 -0
  99. package/lib/src/worker/sync/BroadcastLogger.js.map +1 -0
  100. package/lib/{worker → src/worker}/sync/SharedSyncImplementation.d.ts +15 -11
  101. package/lib/{worker → src/worker}/sync/SharedSyncImplementation.js +43 -42
  102. package/lib/src/worker/sync/SharedSyncImplementation.js.map +1 -0
  103. package/lib/src/worker/sync/SharedSyncImplementation.worker.js +12 -0
  104. package/lib/src/worker/sync/SharedSyncImplementation.worker.js.map +1 -0
  105. package/lib/{worker → src/worker}/sync/WorkerClient.d.ts +3 -3
  106. package/lib/{worker → src/worker}/sync/WorkerClient.js +2 -2
  107. package/lib/src/worker/sync/WorkerClient.js.map +1 -0
  108. package/lib/tsconfig.tsbuildinfo +1 -0
  109. package/package.json +29 -22
  110. package/src/db/NavigatorTriggerClaimManager.ts +1 -1
  111. package/src/db/PowerSyncDatabase.ts +122 -80
  112. package/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.ts +47 -0
  113. package/src/db/adapters/AsyncWebAdapter.ts +26 -17
  114. package/src/db/adapters/SSRDBAdapter.ts +64 -14
  115. package/src/db/adapters/WebDBAdapter.ts +1 -1
  116. package/src/db/adapters/wa-sqlite/ConcurrentConnection.ts +5 -4
  117. package/src/db/adapters/wa-sqlite/DatabaseClient.ts +56 -20
  118. package/src/db/adapters/wa-sqlite/DatabaseServer.ts +12 -15
  119. package/src/db/adapters/wa-sqlite/RawSqliteConnection.ts +24 -41
  120. package/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts +126 -63
  121. package/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.ts +24 -0
  122. package/src/db/adapters/wa-sqlite/vfs.ts +67 -54
  123. package/src/db/adapters/web-sql-flags.ts +141 -0
  124. package/src/db/sync/SSRWebStreamingSyncImplementation.ts +22 -4
  125. package/src/db/sync/SharedWebStreamingSyncImplementation.ts +77 -38
  126. package/src/db/sync/WebRemote.ts +26 -23
  127. package/src/db/sync/WebStreamingSyncImplementation.ts +5 -4
  128. package/src/index.ts +3 -1
  129. package/src/worker/db/MultiDatabaseServer.ts +25 -41
  130. package/src/worker/db/WASQLiteDB.worker.ts +35 -0
  131. package/src/worker/db/open-worker-database.ts +62 -0
  132. package/src/worker/sync/AbstractSharedSyncClientProvider.ts +10 -4
  133. package/src/worker/sync/BroadcastLogger.ts +103 -35
  134. package/src/worker/sync/SharedSyncImplementation.ts +63 -62
  135. package/src/worker/sync/SharedSyncImplementation.worker.ts +14 -0
  136. package/src/worker/sync/WorkerClient.ts +4 -4
  137. package/dist/index.react_native_web.js +0 -1879
  138. package/dist/index.react_native_web.js.map +0 -1
  139. package/dist/worker/AccessHandlePoolVFS-BPUHfZME.js +0 -2
  140. package/dist/worker/AccessHandlePoolVFS-BPUHfZME.js.map +0 -1
  141. package/dist/worker/FacadeVFS-d1ZDvud7.js +0 -2
  142. package/dist/worker/FacadeVFS-d1ZDvud7.js.map +0 -1
  143. package/dist/worker/IDBBatchAtomicVFS-DbkDb777.js +0 -2
  144. package/dist/worker/IDBBatchAtomicVFS-DbkDb777.js.map +0 -1
  145. package/dist/worker/OPFSCoopSyncVFS-DRKedN0p.js +0 -2
  146. package/dist/worker/OPFSCoopSyncVFS-DRKedN0p.js.map +0 -1
  147. package/dist/worker/OPFSWriteAheadVFS-BzodSqNq.js +0 -2
  148. package/dist/worker/OPFSWriteAheadVFS-BzodSqNq.js.map +0 -1
  149. package/dist/worker/mc-wa-sqlite-DiBqIVE5.js +0 -2
  150. package/dist/worker/mc-wa-sqlite-DiBqIVE5.js.map +0 -1
  151. package/dist/worker/mc-wa-sqlite-async-DUEhO9ef.js +0 -2
  152. package/dist/worker/mc-wa-sqlite-async-DUEhO9ef.js.map +0 -1
  153. package/dist/worker/wa-sqlite-BlSx7-_P.js +0 -2
  154. package/dist/worker/wa-sqlite-BlSx7-_P.js.map +0 -1
  155. package/dist/worker/wa-sqlite-async-BdR24Ucf.js +0 -2
  156. package/dist/worker/wa-sqlite-async-BdR24Ucf.js.map +0 -1
  157. package/dist/worker/websockets-Q8W_lerF.js +0 -9
  158. package/dist/worker/websockets-Q8W_lerF.js.map +0 -1
  159. package/dist/worker/worker.js +0 -7
  160. package/dist/worker/worker.js.map +0 -1
  161. package/lib/attachments/IndexDBFileSystemAdapter.js.map +0 -1
  162. package/lib/db/NavigatorTriggerClaimManager.js.map +0 -1
  163. package/lib/db/PowerSyncDatabase.d.ts +0 -67
  164. package/lib/db/PowerSyncDatabase.js.map +0 -1
  165. package/lib/db/adapters/AsyncWebAdapter.d.ts +0 -32
  166. package/lib/db/adapters/AsyncWebAdapter.js.map +0 -1
  167. package/lib/db/adapters/SSRDBAdapter.d.ts +0 -17
  168. package/lib/db/adapters/SSRDBAdapter.js +0 -37
  169. package/lib/db/adapters/SSRDBAdapter.js.map +0 -1
  170. package/lib/db/adapters/WebDBAdapter.js.map +0 -1
  171. package/lib/db/adapters/options.d.ts +0 -87
  172. package/lib/db/adapters/options.js +0 -6
  173. package/lib/db/adapters/options.js.map +0 -1
  174. package/lib/db/adapters/resolveAndValidateOptions.d.ts +0 -5
  175. package/lib/db/adapters/resolveAndValidateOptions.js +0 -33
  176. package/lib/db/adapters/resolveAndValidateOptions.js.map +0 -1
  177. package/lib/db/adapters/wa-sqlite/ConcurrentConnection.js.map +0 -1
  178. package/lib/db/adapters/wa-sqlite/DatabaseClient.js.map +0 -1
  179. package/lib/db/adapters/wa-sqlite/DatabaseServer.js.map +0 -1
  180. package/lib/db/adapters/wa-sqlite/RawSqliteConnection.js.map +0 -1
  181. package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.d.ts +0 -18
  182. package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.js +0 -131
  183. package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.js.map +0 -1
  184. package/lib/db/adapters/wa-sqlite/vfs.d.ts +0 -50
  185. package/lib/db/adapters/wa-sqlite/vfs.js +0 -77
  186. package/lib/db/adapters/wa-sqlite/vfs.js.map +0 -1
  187. package/lib/db/sync/SSRWebStreamingSyncImplementation.js.map +0 -1
  188. package/lib/db/sync/SharedWebStreamingSyncImplementation.js.map +0 -1
  189. package/lib/db/sync/WebRemote.d.ts +0 -10
  190. package/lib/db/sync/WebRemote.js +0 -33
  191. package/lib/db/sync/WebRemote.js.map +0 -1
  192. package/lib/db/sync/WebStreamingSyncImplementation.js.map +0 -1
  193. package/lib/db/sync/userAgent.js.map +0 -1
  194. package/lib/index.js.map +0 -1
  195. package/lib/shared/navigator.js.map +0 -1
  196. package/lib/shared/tab_close_signal.js.map +0 -1
  197. package/lib/worker/SharedWorkerConnectionRequest.d.ts +0 -5
  198. package/lib/worker/SharedWorkerConnectionRequest.js +0 -2
  199. package/lib/worker/SharedWorkerConnectionRequest.js.map +0 -1
  200. package/lib/worker/client.d.ts +0 -15
  201. package/lib/worker/client.js +0 -77
  202. package/lib/worker/client.js.map +0 -1
  203. package/lib/worker/db/MultiDatabaseServer.d.ts +0 -22
  204. package/lib/worker/db/MultiDatabaseServer.js.map +0 -1
  205. package/lib/worker/sync/AbstractSharedSyncClientProvider.d.ts +0 -13
  206. package/lib/worker/sync/AbstractSharedSyncClientProvider.js.map +0 -1
  207. package/lib/worker/sync/BroadcastLogger.d.ts +0 -27
  208. package/lib/worker/sync/BroadcastLogger.js +0 -65
  209. package/lib/worker/sync/BroadcastLogger.js.map +0 -1
  210. package/lib/worker/sync/SharedSyncImplementation.js.map +0 -1
  211. package/lib/worker/sync/WorkerClient.js.map +0 -1
  212. package/lib/worker/worker.js +0 -34
  213. package/lib/worker/worker.js.map +0 -1
  214. package/src/db/adapters/options.ts +0 -100
  215. package/src/db/adapters/resolveAndValidateOptions.ts +0 -40
  216. package/src/worker/SharedWorkerConnectionRequest.ts +0 -6
  217. package/src/worker/client.ts +0 -100
  218. package/src/worker/worker.ts +0 -38
  219. /package/dist/{worker/assets/mc-wa-sqlite-async-D6idQS2r.wasm → 2075a31bb151adbb9767.wasm} +0 -0
  220. /package/dist/{worker/assets/wa-sqlite-XZW__iJk.wasm → 3322bc84de986b63c2cd.wasm} +0 -0
  221. /package/dist/{worker/assets/mc-wa-sqlite-CnHbhWvs.wasm → 8e97452e297be23b5e50.wasm} +0 -0
  222. /package/dist/{worker/assets/wa-sqlite-async-rHzzC98y.wasm → fbc178b70d530e8ce02b.wasm} +0 -0
  223. /package/lib/{attachments → src/attachments}/IndexDBFileSystemAdapter.d.ts +0 -0
  224. /package/lib/{attachments → src/attachments}/IndexDBFileSystemAdapter.js +0 -0
  225. /package/lib/{db → src/db}/NavigatorTriggerClaimManager.js +0 -0
  226. /package/lib/{db → src/db}/adapters/WebDBAdapter.js +0 -0
  227. /package/lib/{db → src/db}/sync/userAgent.d.ts +0 -0
  228. /package/lib/{db → src/db}/sync/userAgent.js +0 -0
  229. /package/lib/{shared → src/shared}/navigator.d.ts +0 -0
  230. /package/lib/{shared → src/shared}/navigator.js +0 -0
  231. /package/lib/{shared → src/shared}/tab_close_signal.d.ts +0 -0
  232. /package/lib/{shared → src/shared}/tab_close_signal.js +0 -0
  233. /package/lib/{worker → src/worker}/sync/AbstractSharedSyncClientProvider.js +0 -0
  234. /package/lib/{worker/worker.d.ts → src/worker/sync/SharedSyncImplementation.worker.d.ts} +0 -0
@@ -1,16 +1,21 @@
1
- import { LogRecord, PowerSyncCredentials } from '@powersync/common';
1
+ import {
2
+ PowerSyncConnectionOptions,
3
+ PowerSyncCredentials,
4
+ SubscribedStream,
5
+ SyncStatusOptions
6
+ } from '@powersync/common';
2
7
  import * as Comlink from 'comlink';
8
+ import { getNavigatorLocks } from '../../shared/navigator.js';
3
9
  import { AbstractSharedSyncClientProvider } from '../../worker/sync/AbstractSharedSyncClientProvider.js';
4
10
  import { ManualSharedSyncPayload, SharedSyncClientEvent } from '../../worker/sync/SharedSyncImplementation.js';
5
11
  import { WorkerClient } from '../../worker/sync/WorkerClient.js';
6
12
  import { WebDBAdapter } from '../adapters/WebDBAdapter.js';
13
+ import { DEFAULT_CACHE_SIZE_KB, TemporaryStorageOption, resolveWebSQLFlags } from '../adapters/web-sql-flags.js';
7
14
  import {
8
15
  WebStreamingSyncImplementation,
9
16
  WebStreamingSyncImplementationOptions
10
17
  } from './WebStreamingSyncImplementation.js';
11
18
  import { generateTabCloseSignal } from '../../shared/tab_close_signal.js';
12
- import { SubscribedStream, SyncStatusJson, ResolvedSyncOptions } from '@powersync/shared-internals';
13
- import { connectToExistingWorker, connectToWorker, WorkerConnection } from '../../worker/client.js';
14
19
 
15
20
  /**
16
21
  * The shared worker will trigger methods on this side of the message port
@@ -19,7 +24,7 @@ import { connectToExistingWorker, connectToWorker, WorkerConnection } from '../.
19
24
  class SharedSyncClientProvider extends AbstractSharedSyncClientProvider {
20
25
  constructor(
21
26
  protected options: WebStreamingSyncImplementationOptions,
22
- public statusChanged: (status: SyncStatusJson) => void,
27
+ public statusChanged: (status: SyncStatusOptions) => void,
23
28
  protected webDB: WebDBAdapter
24
29
  ) {
25
30
  super();
@@ -63,15 +68,34 @@ class SharedSyncClientProvider extends AbstractSharedSyncClientProvider {
63
68
  return this.options.logger;
64
69
  }
65
70
 
66
- log(record: LogRecord): void {
67
- this.logger.log(record);
71
+ trace(...x: any[]): void {
72
+ this.logger?.trace(...x);
73
+ }
74
+ debug(...x: any[]): void {
75
+ this.logger?.debug(...x);
76
+ }
77
+ info(...x: any[]): void {
78
+ this.logger?.info(...x);
79
+ }
80
+ log(...x: any[]): void {
81
+ this.logger?.log(...x);
82
+ }
83
+ warn(...x: any[]): void {
84
+ this.logger?.warn(...x);
85
+ }
86
+ error(...x: any[]): void {
87
+ this.logger?.error(...x);
88
+ }
89
+ time(label: string): void {
90
+ this.logger?.time(label);
91
+ }
92
+ timeEnd(label: string): void {
93
+ this.logger?.timeEnd(label);
68
94
  }
69
95
  }
70
96
 
71
97
  export interface SharedWebStreamingSyncImplementationOptions extends WebStreamingSyncImplementationOptions {
72
- logLevel: number;
73
98
  db: WebDBAdapter;
74
- enableBroadcastLogs: boolean;
75
99
  }
76
100
 
77
101
  /**
@@ -80,30 +104,46 @@ export interface SharedWebStreamingSyncImplementationOptions extends WebStreamin
80
104
  export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplementation {
81
105
  protected syncManager: Comlink.Remote<WorkerClient>;
82
106
  protected clientProvider: SharedSyncClientProvider;
83
- protected worker: WorkerConnection;
107
+ protected messagePort: MessagePort;
84
108
 
85
109
  protected isInitialized: Promise<void>;
86
110
  protected dbAdapter: WebDBAdapter;
87
111
  private abortOnClose = new AbortController();
88
- private logLevel: number;
89
- private enableBroadcastLogs: boolean;
90
112
 
91
113
  constructor(options: SharedWebStreamingSyncImplementationOptions) {
92
114
  super(options);
93
115
  this.dbAdapter = options.db;
94
- this.logLevel = options.logLevel;
95
- this.enableBroadcastLogs = options.enableBroadcastLogs;
116
+ /**
117
+ * Configure or connect to the shared sync worker.
118
+ * This worker will manage all syncing operations remotely.
119
+ */
120
+ const resolvedWorkerOptions = {
121
+ dbFilename: this.options.identifier!,
122
+ temporaryStorage: TemporaryStorageOption.MEMORY,
123
+ cacheSizeKb: DEFAULT_CACHE_SIZE_KB,
124
+ ...options,
125
+ flags: resolveWebSQLFlags(options.flags)
126
+ };
96
127
 
97
128
  const syncWorker = options.sync?.worker;
98
- if (typeof syncWorker === 'function') {
99
- this.worker = connectToExistingWorker(syncWorker(), 'sync');
129
+ if (syncWorker) {
130
+ if (typeof syncWorker === 'function') {
131
+ this.messagePort = syncWorker(resolvedWorkerOptions).port;
132
+ } else {
133
+ this.messagePort = new SharedWorker(`${syncWorker}`, {
134
+ /* @vite-ignore */
135
+ name: `shared-sync-${this.webOptions.identifier}`
136
+ }).port;
137
+ }
100
138
  } else {
101
- this.worker = connectToWorker({
102
- service: 'sync',
103
- databaseIdentifier: this.webOptions.identifier!,
104
- shared: true,
105
- customWorker: syncWorker
106
- });
139
+ this.messagePort = new SharedWorker(
140
+ new URL('../../worker/sync/SharedSyncImplementation.worker.js', import.meta.url),
141
+ {
142
+ /* @vite-ignore */
143
+ name: `shared-sync-${this.webOptions.identifier}`,
144
+ type: 'module'
145
+ }
146
+ ).port;
107
147
  }
108
148
 
109
149
  /**
@@ -111,21 +151,21 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
111
151
  */
112
152
  this.clientProvider = new SharedSyncClientProvider(
113
153
  this.webOptions,
114
- ({ core, dataFlow }) => {
115
- this.updateSyncStatus(core, dataFlow);
154
+ (status) => {
155
+ this.updateSyncStatus(status);
116
156
  },
117
157
  options.db
118
158
  );
119
159
 
120
- this.syncManager = Comlink.wrap<WorkerClient>(this.worker.endpoint);
160
+ this.syncManager = Comlink.wrap<WorkerClient>(this.messagePort);
121
161
  /**
122
162
  * The sync worker will call this client provider when it needs
123
163
  * to fetch credentials or upload data.
124
164
  * This performs bi-directional method calling.
125
165
  */
126
- Comlink.expose(this.clientProvider, this.worker.endpoint);
166
+ Comlink.expose(this.clientProvider, this.messagePort);
127
167
 
128
- this.syncManager.setLogLevel(this.logLevel);
168
+ this.syncManager.setLogLevel(this.logger.getLevel());
129
169
 
130
170
  this.triggerCrudUpload = this.syncManager.triggerCrudUpload;
131
171
 
@@ -157,16 +197,18 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
157
197
  // Awaiting here ensures the worker is waiting for the lock
158
198
  await this.syncManager.addLockBasedCloseSignal(closeSignal);
159
199
 
160
- const { identifier } = this.options;
200
+ const { crudUploadThrottleMs, identifier, retryDelayMs } = this.options;
201
+ const flags = { ...this.webOptions.flags, workers: undefined };
161
202
 
162
203
  await this.syncManager.setParams(
163
204
  {
164
205
  dbParams: this.dbAdapter.getConfiguration(),
165
206
  streamOptions: {
207
+ crudUploadThrottleMs,
166
208
  identifier,
167
- serializedSchema: this.options.serializedSchema
168
- },
169
- enableBroadcastLogs: this.enableBroadcastLogs
209
+ retryDelayMs,
210
+ flags: flags
211
+ }
170
212
  },
171
213
  this.options.subscriptions
172
214
  );
@@ -176,9 +218,9 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
176
218
  * Starts the sync process, this effectively acts as a call to
177
219
  * `connect` if not yet connected.
178
220
  */
179
- async connect(options: ResolvedSyncOptions): Promise<void> {
221
+ async connect(options?: PowerSyncConnectionOptions): Promise<void> {
180
222
  await this.waitForReady();
181
- return this.syncManager.connect(options, this.options.serializedSchema);
223
+ return this.syncManager.connect(options);
182
224
  }
183
225
 
184
226
  async disconnect(): Promise<void> {
@@ -195,11 +237,8 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
195
237
  await this.waitForReady();
196
238
 
197
239
  await new Promise<void>((resolve) => {
198
- // This will always be a message port since we use shared workers.
199
- const messagePort = this.worker.endpoint as MessagePort;
200
-
201
240
  // Listen for the close acknowledgment from the worker
202
- messagePort.addEventListener('message', (event) => {
241
+ this.messagePort.addEventListener('message', (event) => {
203
242
  const payload = event.data as ManualSharedSyncPayload;
204
243
  if (payload?.event === SharedSyncClientEvent.CLOSE_ACK) {
205
244
  resolve();
@@ -211,7 +250,7 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
211
250
  event: SharedSyncClientEvent.CLOSE_CLIENT,
212
251
  data: {}
213
252
  };
214
- messagePort.postMessage(closeMessagePayload);
253
+ this.messagePort.postMessage(closeMessagePayload);
215
254
  });
216
255
 
217
256
  await super.dispose();
@@ -220,7 +259,7 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
220
259
 
221
260
  // Release the proxy
222
261
  this.syncManager[Comlink.releaseProxy]();
223
- this.worker.close();
262
+ this.messagePort.close();
224
263
  }
225
264
 
226
265
  async waitForReady() {
@@ -1,40 +1,43 @@
1
- import { LogLevels, PowerSyncLogger } from '@powersync/common';
2
- import { AbstractRemote, FetchOptions, RemoteConnector } from '@powersync/shared-internals';
1
+ import {
2
+ AbstractRemote,
3
+ AbstractRemoteOptions,
4
+ DEFAULT_REMOTE_LOGGER,
5
+ FetchImplementation,
6
+ FetchImplementationProvider,
7
+ ILogger,
8
+ RemoteConnector
9
+ } from '@powersync/common';
3
10
 
4
11
  import { getUserAgentInfo } from './userAgent.js';
5
- import type { WebSocketSyncStreamPlatform, WebSocketSupport } from '@powersync/shared-internals/websockets';
12
+
13
+ /*
14
+ * Depends on browser's implementation of global fetch.
15
+ */
16
+ class WebFetchProvider extends FetchImplementationProvider {
17
+ getFetch(): FetchImplementation {
18
+ return fetch.bind(globalThis);
19
+ }
20
+ }
6
21
 
7
22
  export class WebRemote extends AbstractRemote {
8
23
  constructor(
9
24
  protected connector: RemoteConnector,
10
- logger: PowerSyncLogger
25
+ protected logger: ILogger = DEFAULT_REMOTE_LOGGER,
26
+ options?: Partial<AbstractRemoteOptions>
11
27
  ) {
12
- super(connector, logger);
13
- }
14
-
15
- protected fetch({ resource, request }: FetchOptions): Promise<Response> {
16
- return fetch(resource, request);
17
- }
18
-
19
- protected async loadWebSocketSupport(platform: WebSocketSyncStreamPlatform): Promise<WebSocketSupport> {
20
- if (!websockets) {
21
- // loadWebSocketSupport being called concurrently is safe, the import resolves to the same module in that case.
22
- const module = await import('@powersync/shared-internals/websockets');
23
- websockets = new module.WebSocketSupport(platform);
24
- }
25
-
26
- return websockets;
28
+ super(connector, logger, {
29
+ ...(options ?? {}),
30
+ fetchImplementation: options?.fetchImplementation ?? new WebFetchProvider()
31
+ });
27
32
  }
28
33
 
29
34
  getUserAgent(): string {
30
35
  let ua = [super.getUserAgent(), `powersync-web`];
31
36
  try {
32
37
  ua.push(...getUserAgentInfo());
33
- } catch (error) {
34
- this.logger.log({ level: LogLevels.warn, message: 'Failed to get user agent info', error });
38
+ } catch (e) {
39
+ this.logger.warn('Failed to get user agent info', e);
35
40
  }
36
41
  return ua.join(' ');
37
42
  }
38
43
  }
39
-
40
- let websockets: WebSocketSupport | undefined;
@@ -1,15 +1,16 @@
1
- import { LogLevels } from '@powersync/common';
2
1
  import {
3
2
  AbstractStreamingSyncImplementation,
4
3
  AbstractStreamingSyncImplementationOptions,
5
4
  LockOptions,
6
5
  LockType
7
- } from '@powersync/shared-internals';
6
+ } from '@powersync/common';
8
7
  import { getNavigatorLocks } from '../../shared/navigator.js';
8
+ import { ResolvedWebSQLOpenOptions, WebSQLFlags } from '../adapters/web-sql-flags.js';
9
9
 
10
10
  export interface WebStreamingSyncImplementationOptions extends AbstractStreamingSyncImplementationOptions {
11
+ flags?: WebSQLFlags;
11
12
  sync?: {
12
- worker?: string | URL | (() => SharedWorker);
13
+ worker?: string | URL | ((options: ResolvedWebSQLOpenOptions) => SharedWorker);
13
14
  };
14
15
  }
15
16
 
@@ -26,7 +27,7 @@ export class WebStreamingSyncImplementation extends AbstractStreamingSyncImpleme
26
27
  async obtainLock<T>(lockOptions: LockOptions<T>): Promise<T> {
27
28
  const identifier = `streaming-sync-${lockOptions.type}-${this.webOptions.identifier}`;
28
29
  if (lockOptions.type == LockType.SYNC) {
29
- this.logger.log({ level: LogLevels.debug, message: `requesting lock for ${identifier}` });
30
+ this.logger.debug('requesting lock for ', identifier);
30
31
  }
31
32
  return getNavigatorLocks().request(identifier, { signal: lockOptions.signal }, lockOptions.callback);
32
33
  }
package/src/index.ts CHANGED
@@ -1,8 +1,10 @@
1
1
  export * from '@powersync/common';
2
2
  export * from './attachments/IndexDBFileSystemAdapter.js';
3
+ export * from './db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.js';
3
4
  export { WASQLiteVFS } from './db/adapters/wa-sqlite/vfs.js';
4
5
  export * from './db/adapters/wa-sqlite/WASQLiteOpenFactory.js';
5
- export * from './db/adapters/options.js';
6
+ export * from './db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.js';
7
+ export * from './db/adapters/web-sql-flags.js';
6
8
  export * from './db/PowerSyncDatabase.js';
7
9
  export * from './db/sync/SharedWebStreamingSyncImplementation.js';
8
10
  export * from './db/sync/WebRemote.js';
@@ -1,38 +1,28 @@
1
- import { LogLevels, PowerSyncLogger } from '@powersync/common';
1
+ import { ILogger } from '@powersync/common';
2
2
  import * as Comlink from 'comlink';
3
3
  import { ClientConnectionView, DatabaseServer } from '../../db/adapters/wa-sqlite/DatabaseServer.js';
4
+ import {
5
+ ResolvedWASQLiteOpenFactoryOptions,
6
+ WorkerDBOpenerOptions
7
+ } from '../../db/adapters/wa-sqlite/WASQLiteOpenFactory.js';
4
8
  import { getNavigatorLocks } from '../../shared/navigator.js';
5
- import { RawSqliteConnection, RawWaSqliteDatabaseOptions } from '../../db/adapters/wa-sqlite/RawSqliteConnection.js';
9
+ import { RawSqliteConnection } from '../../db/adapters/wa-sqlite/RawSqliteConnection.js';
6
10
  import { ConcurrentSqliteConnection } from '../../db/adapters/wa-sqlite/ConcurrentConnection.js';
11
+ import { WASQLiteVFS } from '../../db/adapters/wa-sqlite/vfs.js';
7
12
 
8
13
  const OPEN_DB_LOCK = 'open-wasqlite-db';
9
14
 
10
- export interface ConnectToMultiDatabaseServerOptions {
11
- logLevel: number;
12
- database: RawWaSqliteDatabaseOptions;
13
- lockName: string;
14
- }
15
-
16
15
  /**
17
16
  * Shared state to manage multiple database connections hosted by a worker.
18
17
  */
19
18
  export class MultiDatabaseServer {
20
19
  private activeDatabases = new Map<string, DatabaseServer>();
21
20
 
22
- constructor(readonly logger: PowerSyncLogger) {}
21
+ constructor(readonly logger: ILogger) {}
23
22
 
24
- async handleConnection({
25
- logLevel,
26
- database,
27
- lockName
28
- }: ConnectToMultiDatabaseServerOptions): Promise<ClientConnectionView> {
29
- const logger: PowerSyncLogger = {
30
- log: (record) => {
31
- if (record.level >= logLevel) this.logger.log(record);
32
- }
33
- };
34
-
35
- return Comlink.proxy(await this.openConnectionLocally(logger, database, lockName));
23
+ async handleConnection(options: WorkerDBOpenerOptions): Promise<ClientConnectionView> {
24
+ this.logger.setLevel(options.logLevel);
25
+ return Comlink.proxy(await this.openConnectionLocally(options, options.lockName));
36
26
  }
37
27
 
38
28
  async connectToExisting(name: string, lockName: string): Promise<ClientConnectionView> {
@@ -46,7 +36,7 @@ export class MultiDatabaseServer {
46
36
  });
47
37
  }
48
38
 
49
- async openConnectionLocally(logger: PowerSyncLogger, options: RawWaSqliteDatabaseOptions, lockName?: string) {
39
+ async openConnectionLocally(options: ResolvedWASQLiteOpenFactoryOptions, lockName?: string) {
50
40
  // Especially on Firefox, we're sometimes seeing "NoModificationAllowedError"s when opening OPFS databases we can
51
41
  // work around by retrying.
52
42
  const maxAttempts = 3;
@@ -54,35 +44,29 @@ export class MultiDatabaseServer {
54
44
 
55
45
  for (let count = 0; count < maxAttempts - 1; count++) {
56
46
  try {
57
- server = await this.databaseOpenAttempt(logger, options);
58
- } catch (error) {
59
- this.logger.log({
60
- level: LogLevels.warn,
61
- message: `Attempt ${count + 1} of ${maxAttempts} to open database failed, retrying in 1 second...`,
62
- error
63
- });
47
+ server = await this.databaseOpenAttempt(options);
48
+ } catch (ex) {
49
+ this.logger.warn(`Attempt ${count + 1} of ${maxAttempts} to open database failed, retrying in 1 second...`, ex);
64
50
  await new Promise((resolve) => setTimeout(resolve, 1000));
65
51
  }
66
52
  }
67
53
 
68
54
  // Final attempt if we haven't been able to open the server - rethrow errors if we still can't open.
69
- server ??= await this.databaseOpenAttempt(logger, options);
55
+ server ??= await this.databaseOpenAttempt(options);
70
56
  return server.connect(lockName);
71
57
  }
72
58
 
73
- private async databaseOpenAttempt(
74
- logger: PowerSyncLogger,
75
- options: RawWaSqliteDatabaseOptions
76
- ): Promise<DatabaseServer> {
59
+ private async databaseOpenAttempt(options: ResolvedWASQLiteOpenFactoryOptions): Promise<DatabaseServer> {
77
60
  return getNavigatorLocks().request(OPEN_DB_LOCK, async () => {
78
- const { filename } = options;
61
+ const { dbFilename, isReadOnly, vfs } = options;
79
62
 
80
- let server: DatabaseServer | undefined = this.activeDatabases.get(filename);
63
+ let server: DatabaseServer | undefined = this.activeDatabases.get(dbFilename);
81
64
  if (server == null) {
82
65
  // We don't need navigator locks for shared workers because all queries run in this shared worker exclusively.
83
66
  // For read-only connections, we use a VFS that supports concurrent reads (so a single lock on the connection is
84
- // fine).
85
- const needsNavigatorLocks = !(isSharedWorker || options.readonly);
67
+ // fine). In-memory databases either run in a shared worker or aren't shared across tabs at all, so the internal
68
+ // lock is enough.
69
+ const needsNavigatorLocks = !(isSharedWorker || isReadOnly || vfs == WASQLiteVFS.InMemoryVfs);
86
70
  const connection = new RawSqliteConnection(options);
87
71
  const withSafeConcurrency = new ConcurrentSqliteConnection(connection, needsNavigatorLocks);
88
72
 
@@ -99,13 +83,13 @@ export class MultiDatabaseServer {
99
83
  }
100
84
  returnLease();
101
85
 
102
- const onClose = () => this.activeDatabases.delete(filename);
86
+ const onClose = () => this.activeDatabases.delete(dbFilename);
103
87
  server = new DatabaseServer({
104
88
  inner: withSafeConcurrency,
105
- logger,
89
+ logger: this.logger,
106
90
  onClose
107
91
  });
108
- this.activeDatabases.set(filename, server);
92
+ this.activeDatabases.set(dbFilename, server);
109
93
  }
110
94
 
111
95
  return server;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Supports both shared and dedicated workers, based on how the worker is constructed (new SharedWorker vs new Worker()).
3
+ */
4
+
5
+ import '@journeyapps/wa-sqlite';
6
+ import { createBaseLogger, createLogger } from '@powersync/common';
7
+ import * as Comlink from 'comlink';
8
+ import { isSharedWorker, MultiDatabaseServer } from './MultiDatabaseServer.js';
9
+ import { OpenWorkerConnection } from '../../db/adapters/wa-sqlite/DatabaseClient.js';
10
+
11
+ const baseLogger = createBaseLogger();
12
+ baseLogger.useDefaults();
13
+ const logger = createLogger('db-worker');
14
+
15
+ const server = new MultiDatabaseServer(logger);
16
+ const exposedFunctions: OpenWorkerConnection = {
17
+ connect: (config) => server.handleConnection(config),
18
+ connectToExisting: ({ identifier, lockName }) => server.connectToExisting(identifier, lockName)
19
+ };
20
+
21
+ // Check if we're in a SharedWorker context
22
+ if (isSharedWorker) {
23
+ const _self: SharedWorkerGlobalScope = self as any;
24
+ _self.onconnect = function (event: MessageEvent<string>) {
25
+ const port = event.ports[0];
26
+ Comlink.expose(exposedFunctions, port);
27
+ };
28
+ } else {
29
+ // A dedicated worker can be shared externally
30
+ Comlink.expose(exposedFunctions);
31
+ }
32
+
33
+ addEventListener('unload', () => {
34
+ server.closeAll();
35
+ });
@@ -0,0 +1,62 @@
1
+ import * as Comlink from 'comlink';
2
+ import { vfsRequiresDedicatedWorkers, WASQLiteVFS } from '../../db/adapters/wa-sqlite/vfs.js';
3
+ import { OpenWorkerConnection } from '../../db/adapters/wa-sqlite/DatabaseClient.js';
4
+
5
+ /**
6
+ * Opens a shared or dedicated worker which exposes opening of database connections
7
+ */
8
+ export function openWorkerDatabasePort(
9
+ workerIdentifier: string,
10
+ multipleTabs = true,
11
+ worker: string | URL = '',
12
+ vfs?: WASQLiteVFS
13
+ ) {
14
+ const needsDedicated = vfs && vfsRequiresDedicatedWorkers(vfs);
15
+
16
+ if (worker) {
17
+ return !needsDedicated && multipleTabs
18
+ ? new SharedWorker(`${worker}`, {
19
+ /* @vite-ignore */
20
+ name: `shared-DB-worker-${workerIdentifier}`
21
+ }).port
22
+ : new Worker(`${worker}`, {
23
+ /* @vite-ignore */
24
+ name: `DB-worker-${workerIdentifier}`
25
+ });
26
+ } else {
27
+ /**
28
+ * Webpack V5 can bundle the worker automatically if the full Worker constructor syntax is used
29
+ * https://webpack.js.org/guides/web-workers/
30
+ * This enables multi tab support by default, but falls back if SharedWorker is not available
31
+ * (in the case of Android)
32
+ */
33
+ return !needsDedicated && multipleTabs
34
+ ? new SharedWorker(new URL('./WASQLiteDB.worker.js', import.meta.url), {
35
+ /* @vite-ignore */
36
+ name: `shared-DB-worker-${workerIdentifier}`,
37
+ type: 'module'
38
+ }).port
39
+ : new Worker(new URL('./WASQLiteDB.worker.js', import.meta.url), {
40
+ /* @vite-ignore */
41
+ name: `DB-worker-${workerIdentifier}`,
42
+ type: 'module'
43
+ });
44
+ }
45
+ }
46
+
47
+ /**
48
+ * @returns A function which allows for opening database connections inside
49
+ * a worker.
50
+ */
51
+ export function getWorkerDatabaseOpener(workerIdentifier: string, multipleTabs = true, worker: string | URL = '') {
52
+ return Comlink.wrap<OpenWorkerConnection>(openWorkerDatabasePort(workerIdentifier, multipleTabs, worker));
53
+ }
54
+
55
+ export function resolveWorkerDatabasePortFactory(worker: () => Worker | SharedWorker) {
56
+ const workerInstance = worker();
57
+ return isSharedWorker(workerInstance) ? workerInstance.port : workerInstance;
58
+ }
59
+
60
+ export function isSharedWorker(worker: Worker | SharedWorker): worker is SharedWorker {
61
+ return 'port' in worker;
62
+ }
@@ -1,5 +1,4 @@
1
- import type { LogRecord, PowerSyncCredentials } from '@powersync/common';
2
- import { SyncStatusJson } from '@powersync/shared-internals';
1
+ import type { PowerSyncCredentials, SyncStatusOptions } from '@powersync/common';
3
2
 
4
3
  /**
5
4
  * The client side port should provide these methods.
@@ -8,8 +7,15 @@ export abstract class AbstractSharedSyncClientProvider {
8
7
  abstract fetchCredentials(): Promise<PowerSyncCredentials | null>;
9
8
  abstract invalidateCredentials(): void;
10
9
  abstract uploadCrud(): Promise<void>;
11
- abstract statusChanged(status: SyncStatusJson): void;
10
+ abstract statusChanged(status: SyncStatusOptions): void;
12
11
  abstract getDBWorkerPort(): Promise<MessagePort>;
13
12
 
14
- abstract log(record: LogRecord): void;
13
+ abstract trace(...x: any[]): void;
14
+ abstract debug(...x: any[]): void;
15
+ abstract info(...x: any[]): void;
16
+ abstract log(...x: any[]): void;
17
+ abstract warn(...x: any[]): void;
18
+ abstract error(...x: any[]): void;
19
+ abstract time(label: string): void;
20
+ abstract timeEnd(label: string): void;
15
21
  }