@powersync/common 0.0.0-dev-20260202160933 → 0.0.0-dev-20260202163643

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 (214) hide show
  1. package/dist/bundle.cjs +14470 -0
  2. package/dist/bundle.cjs.map +1 -0
  3. package/dist/bundle.mjs +14379 -0
  4. package/dist/bundle.mjs.map +1 -0
  5. package/dist/bundle.node.cjs +11948 -0
  6. package/dist/bundle.node.cjs.map +1 -0
  7. package/dist/bundle.node.mjs +11857 -0
  8. package/dist/bundle.node.mjs.map +1 -0
  9. package/dist/index.d.cts +4272 -0
  10. package/lib/attachments/AttachmentContext.d.ts +86 -0
  11. package/lib/attachments/AttachmentContext.js +229 -0
  12. package/lib/attachments/AttachmentContext.js.map +1 -0
  13. package/lib/attachments/AttachmentErrorHandler.d.ts +31 -0
  14. package/lib/attachments/AttachmentErrorHandler.js +2 -0
  15. package/lib/attachments/AttachmentErrorHandler.js.map +1 -0
  16. package/lib/attachments/AttachmentQueue.d.ts +149 -0
  17. package/lib/attachments/AttachmentQueue.js +362 -0
  18. package/lib/attachments/AttachmentQueue.js.map +1 -0
  19. package/lib/attachments/AttachmentService.d.ts +29 -0
  20. package/lib/attachments/AttachmentService.js +56 -0
  21. package/lib/attachments/AttachmentService.js.map +1 -0
  22. package/lib/attachments/LocalStorageAdapter.d.ts +62 -0
  23. package/lib/attachments/LocalStorageAdapter.js +6 -0
  24. package/lib/attachments/LocalStorageAdapter.js.map +1 -0
  25. package/lib/attachments/RemoteStorageAdapter.d.ts +27 -0
  26. package/lib/attachments/RemoteStorageAdapter.js +2 -0
  27. package/lib/attachments/RemoteStorageAdapter.js.map +1 -0
  28. package/lib/attachments/Schema.d.ts +50 -0
  29. package/lib/attachments/Schema.js +62 -0
  30. package/lib/attachments/Schema.js.map +1 -0
  31. package/lib/attachments/SyncingService.d.ts +62 -0
  32. package/lib/attachments/SyncingService.js +168 -0
  33. package/lib/attachments/SyncingService.js.map +1 -0
  34. package/lib/attachments/WatchedAttachmentItem.d.ts +17 -0
  35. package/lib/attachments/WatchedAttachmentItem.js +2 -0
  36. package/lib/attachments/WatchedAttachmentItem.js.map +1 -0
  37. package/lib/client/AbstractPowerSyncDatabase.d.ts +615 -0
  38. package/lib/client/AbstractPowerSyncDatabase.js +983 -0
  39. package/lib/client/AbstractPowerSyncDatabase.js.map +1 -0
  40. package/lib/client/AbstractPowerSyncOpenFactory.d.ts +22 -0
  41. package/lib/client/AbstractPowerSyncOpenFactory.js +25 -0
  42. package/lib/client/AbstractPowerSyncOpenFactory.js.map +1 -0
  43. package/lib/client/ConnectionManager.d.ts +112 -0
  44. package/lib/client/ConnectionManager.js +294 -0
  45. package/lib/client/ConnectionManager.js.map +1 -0
  46. package/lib/client/CustomQuery.d.ts +22 -0
  47. package/lib/client/CustomQuery.js +43 -0
  48. package/lib/client/CustomQuery.js.map +1 -0
  49. package/lib/client/Query.d.ts +97 -0
  50. package/lib/client/Query.js +2 -0
  51. package/lib/client/Query.js.map +1 -0
  52. package/lib/client/SQLOpenFactory.d.ts +42 -0
  53. package/lib/client/SQLOpenFactory.js +20 -0
  54. package/lib/client/SQLOpenFactory.js.map +1 -0
  55. package/lib/client/compilableQueryWatch.d.ts +7 -0
  56. package/lib/client/compilableQueryWatch.js +38 -0
  57. package/lib/client/compilableQueryWatch.js.map +1 -0
  58. package/lib/client/connection/PowerSyncBackendConnector.d.ts +23 -0
  59. package/lib/client/connection/PowerSyncBackendConnector.js +2 -0
  60. package/lib/client/connection/PowerSyncBackendConnector.js.map +1 -0
  61. package/lib/client/connection/PowerSyncCredentials.d.ts +5 -0
  62. package/lib/client/connection/PowerSyncCredentials.js +2 -0
  63. package/lib/client/connection/PowerSyncCredentials.js.map +1 -0
  64. package/lib/client/constants.d.ts +1 -0
  65. package/lib/client/constants.js +2 -0
  66. package/lib/client/constants.js.map +1 -0
  67. package/lib/client/runOnSchemaChange.d.ts +2 -0
  68. package/lib/client/runOnSchemaChange.js +24 -0
  69. package/lib/client/runOnSchemaChange.js.map +1 -0
  70. package/lib/client/sync/bucket/BucketStorageAdapter.d.ts +102 -0
  71. package/lib/client/sync/bucket/BucketStorageAdapter.js +19 -0
  72. package/lib/client/sync/bucket/BucketStorageAdapter.js.map +1 -0
  73. package/lib/client/sync/bucket/CrudBatch.d.ts +31 -0
  74. package/lib/client/sync/bucket/CrudBatch.js +26 -0
  75. package/lib/client/sync/bucket/CrudBatch.js.map +1 -0
  76. package/lib/client/sync/bucket/CrudEntry.d.ts +95 -0
  77. package/lib/client/sync/bucket/CrudEntry.js +110 -0
  78. package/lib/client/sync/bucket/CrudEntry.js.map +1 -0
  79. package/lib/client/sync/bucket/CrudTransaction.d.ts +29 -0
  80. package/lib/client/sync/bucket/CrudTransaction.js +25 -0
  81. package/lib/client/sync/bucket/CrudTransaction.js.map +1 -0
  82. package/lib/client/sync/bucket/OpType.d.ts +16 -0
  83. package/lib/client/sync/bucket/OpType.js +23 -0
  84. package/lib/client/sync/bucket/OpType.js.map +1 -0
  85. package/lib/client/sync/bucket/OplogEntry.d.ts +23 -0
  86. package/lib/client/sync/bucket/OplogEntry.js +36 -0
  87. package/lib/client/sync/bucket/OplogEntry.js.map +1 -0
  88. package/lib/client/sync/bucket/SqliteBucketStorage.d.ts +61 -0
  89. package/lib/client/sync/bucket/SqliteBucketStorage.js +324 -0
  90. package/lib/client/sync/bucket/SqliteBucketStorage.js.map +1 -0
  91. package/lib/client/sync/bucket/SyncDataBatch.d.ts +6 -0
  92. package/lib/client/sync/bucket/SyncDataBatch.js +12 -0
  93. package/lib/client/sync/bucket/SyncDataBatch.js.map +1 -0
  94. package/lib/client/sync/bucket/SyncDataBucket.d.ts +40 -0
  95. package/lib/client/sync/bucket/SyncDataBucket.js +40 -0
  96. package/lib/client/sync/bucket/SyncDataBucket.js.map +1 -0
  97. package/lib/client/sync/stream/AbstractRemote.d.ts +140 -0
  98. package/lib/client/sync/stream/AbstractRemote.js +506 -0
  99. package/lib/client/sync/stream/AbstractRemote.js.map +1 -0
  100. package/lib/client/sync/stream/AbstractStreamingSyncImplementation.d.ts +240 -0
  101. package/lib/client/sync/stream/AbstractStreamingSyncImplementation.js +990 -0
  102. package/lib/client/sync/stream/AbstractStreamingSyncImplementation.js.map +1 -0
  103. package/lib/client/sync/stream/WebsocketClientTransport.d.ts +15 -0
  104. package/lib/client/sync/stream/WebsocketClientTransport.js +61 -0
  105. package/lib/client/sync/stream/WebsocketClientTransport.js.map +1 -0
  106. package/lib/client/sync/stream/core-instruction.d.ts +72 -0
  107. package/lib/client/sync/stream/core-instruction.js +27 -0
  108. package/lib/client/sync/stream/core-instruction.js.map +1 -0
  109. package/lib/client/sync/stream/streaming-sync-types.d.ts +143 -0
  110. package/lib/client/sync/stream/streaming-sync-types.js +26 -0
  111. package/lib/client/sync/stream/streaming-sync-types.js.map +1 -0
  112. package/lib/client/sync/sync-streams.d.ts +98 -0
  113. package/lib/client/sync/sync-streams.js +2 -0
  114. package/lib/client/sync/sync-streams.js.map +1 -0
  115. package/lib/client/triggers/MemoryTriggerClaimManager.d.ts +6 -0
  116. package/lib/client/triggers/MemoryTriggerClaimManager.js +21 -0
  117. package/lib/client/triggers/MemoryTriggerClaimManager.js.map +1 -0
  118. package/lib/client/triggers/TriggerManager.d.ts +459 -0
  119. package/lib/client/triggers/TriggerManager.js +11 -0
  120. package/lib/client/triggers/TriggerManager.js.map +1 -0
  121. package/lib/client/triggers/TriggerManagerImpl.d.ts +39 -0
  122. package/lib/client/triggers/TriggerManagerImpl.js +393 -0
  123. package/lib/client/triggers/TriggerManagerImpl.js.map +1 -0
  124. package/lib/client/triggers/sanitizeSQL.d.ts +34 -0
  125. package/lib/client/triggers/sanitizeSQL.js +69 -0
  126. package/lib/client/triggers/sanitizeSQL.js.map +1 -0
  127. package/lib/client/watched/GetAllQuery.d.ts +32 -0
  128. package/lib/client/watched/GetAllQuery.js +25 -0
  129. package/lib/client/watched/GetAllQuery.js.map +1 -0
  130. package/lib/client/watched/WatchedQuery.d.ts +100 -0
  131. package/lib/client/watched/WatchedQuery.js +14 -0
  132. package/lib/client/watched/WatchedQuery.js.map +1 -0
  133. package/lib/client/watched/processors/AbstractQueryProcessor.d.ts +68 -0
  134. package/lib/client/watched/processors/AbstractQueryProcessor.js +151 -0
  135. package/lib/client/watched/processors/AbstractQueryProcessor.js.map +1 -0
  136. package/lib/client/watched/processors/DifferentialQueryProcessor.d.ts +121 -0
  137. package/lib/client/watched/processors/DifferentialQueryProcessor.js +173 -0
  138. package/lib/client/watched/processors/DifferentialQueryProcessor.js.map +1 -0
  139. package/lib/client/watched/processors/OnChangeQueryProcessor.d.ts +33 -0
  140. package/lib/client/watched/processors/OnChangeQueryProcessor.js +83 -0
  141. package/lib/client/watched/processors/OnChangeQueryProcessor.js.map +1 -0
  142. package/lib/client/watched/processors/comparators.d.ts +30 -0
  143. package/lib/client/watched/processors/comparators.js +35 -0
  144. package/lib/client/watched/processors/comparators.js.map +1 -0
  145. package/lib/db/ConnectionClosedError.d.ts +10 -0
  146. package/lib/db/ConnectionClosedError.js +21 -0
  147. package/lib/db/ConnectionClosedError.js.map +1 -0
  148. package/lib/db/DBAdapter.d.ts +115 -0
  149. package/lib/db/DBAdapter.js +20 -0
  150. package/lib/db/DBAdapter.js.map +1 -0
  151. package/lib/db/crud/SyncProgress.d.ts +68 -0
  152. package/lib/db/crud/SyncProgress.js +61 -0
  153. package/lib/db/crud/SyncProgress.js.map +1 -0
  154. package/lib/db/crud/SyncStatus.d.ts +195 -0
  155. package/lib/db/crud/SyncStatus.js +250 -0
  156. package/lib/db/crud/SyncStatus.js.map +1 -0
  157. package/lib/db/crud/UploadQueueStatus.d.ts +20 -0
  158. package/lib/db/crud/UploadQueueStatus.js +25 -0
  159. package/lib/db/crud/UploadQueueStatus.js.map +1 -0
  160. package/lib/db/schema/Column.d.ts +30 -0
  161. package/lib/db/schema/Column.js +43 -0
  162. package/lib/db/schema/Column.js.map +1 -0
  163. package/lib/db/schema/Index.d.ts +22 -0
  164. package/lib/db/schema/Index.js +30 -0
  165. package/lib/db/schema/Index.js.map +1 -0
  166. package/lib/db/schema/IndexedColumn.d.ts +19 -0
  167. package/lib/db/schema/IndexedColumn.js +30 -0
  168. package/lib/db/schema/IndexedColumn.js.map +1 -0
  169. package/lib/db/schema/RawTable.d.ts +61 -0
  170. package/lib/db/schema/RawTable.js +33 -0
  171. package/lib/db/schema/RawTable.js.map +1 -0
  172. package/lib/db/schema/Schema.d.ts +54 -0
  173. package/lib/db/schema/Schema.js +61 -0
  174. package/lib/db/schema/Schema.js.map +1 -0
  175. package/lib/db/schema/Table.d.ts +157 -0
  176. package/lib/db/schema/Table.js +208 -0
  177. package/lib/db/schema/Table.js.map +1 -0
  178. package/lib/db/schema/TableV2.d.ts +9 -0
  179. package/lib/db/schema/TableV2.js +9 -0
  180. package/lib/db/schema/TableV2.js.map +1 -0
  181. package/lib/index.d.ts +62 -0
  182. package/lib/index.js +63 -0
  183. package/lib/index.js.map +1 -0
  184. package/lib/types/types.d.ts +8 -0
  185. package/lib/types/types.js +2 -0
  186. package/lib/types/types.js.map +1 -0
  187. package/lib/utils/AbortOperation.d.ts +9 -0
  188. package/lib/utils/AbortOperation.js +19 -0
  189. package/lib/utils/AbortOperation.js.map +1 -0
  190. package/lib/utils/BaseObserver.d.ts +18 -0
  191. package/lib/utils/BaseObserver.js +27 -0
  192. package/lib/utils/BaseObserver.js.map +1 -0
  193. package/lib/utils/ControlledExecutor.d.ts +25 -0
  194. package/lib/utils/ControlledExecutor.js +51 -0
  195. package/lib/utils/ControlledExecutor.js.map +1 -0
  196. package/lib/utils/DataStream.d.ts +62 -0
  197. package/lib/utils/DataStream.js +169 -0
  198. package/lib/utils/DataStream.js.map +1 -0
  199. package/lib/utils/Logger.d.ts +31 -0
  200. package/lib/utils/Logger.js +37 -0
  201. package/lib/utils/Logger.js.map +1 -0
  202. package/lib/utils/MetaBaseObserver.d.ts +29 -0
  203. package/lib/utils/MetaBaseObserver.js +51 -0
  204. package/lib/utils/MetaBaseObserver.js.map +1 -0
  205. package/lib/utils/async.d.ts +23 -0
  206. package/lib/utils/async.js +55 -0
  207. package/lib/utils/async.js.map +1 -0
  208. package/lib/utils/mutex.d.ts +7 -0
  209. package/lib/utils/mutex.js +29 -0
  210. package/lib/utils/mutex.js.map +1 -0
  211. package/lib/utils/parseQuery.d.ts +6 -0
  212. package/lib/utils/parseQuery.js +17 -0
  213. package/lib/utils/parseQuery.js.map +1 -0
  214. package/package.json +1 -1
@@ -0,0 +1,29 @@
1
+ import { BaseListener, BaseObserver, BaseObserverInterface } from './BaseObserver.js';
2
+ /**
3
+ * Represents the counts of listeners for each event type in a BaseListener.
4
+ */
5
+ export type ListenerCounts<Listener extends BaseListener> = Partial<Record<keyof Listener, number>> & {
6
+ total: number;
7
+ };
8
+ /**
9
+ * Meta listener which reports the counts of listeners for each event type.
10
+ */
11
+ export interface MetaListener<ParentListener extends BaseListener> extends BaseListener {
12
+ listenersChanged?: (counts: ListenerCounts<ParentListener>) => void;
13
+ }
14
+ export interface ListenerMetaManager<Listener extends BaseListener> extends BaseObserverInterface<MetaListener<Listener>> {
15
+ counts: ListenerCounts<Listener>;
16
+ }
17
+ export interface MetaBaseObserverInterface<Listener extends BaseListener> extends BaseObserverInterface<Listener> {
18
+ listenerMeta: ListenerMetaManager<Listener>;
19
+ }
20
+ /**
21
+ * A BaseObserver that tracks the counts of listeners for each event type.
22
+ */
23
+ export declare class MetaBaseObserver<Listener extends BaseListener> extends BaseObserver<Listener> implements MetaBaseObserverInterface<Listener> {
24
+ protected get listenerCounts(): ListenerCounts<Listener>;
25
+ get listenerMeta(): ListenerMetaManager<Listener>;
26
+ protected metaListener: BaseObserver<MetaListener<Listener>>;
27
+ constructor();
28
+ registerListener(listener: Partial<Listener>): () => void;
29
+ }
@@ -0,0 +1,51 @@
1
+ import { BaseObserver } from './BaseObserver.js';
2
+ /**
3
+ * A BaseObserver that tracks the counts of listeners for each event type.
4
+ */
5
+ export class MetaBaseObserver extends BaseObserver {
6
+ get listenerCounts() {
7
+ const counts = {};
8
+ let total = 0;
9
+ for (const listener of this.listeners) {
10
+ for (const key in listener) {
11
+ if (listener[key]) {
12
+ counts[key] = (counts[key] ?? 0) + 1;
13
+ total++;
14
+ }
15
+ }
16
+ }
17
+ return {
18
+ ...counts,
19
+ total
20
+ };
21
+ }
22
+ get listenerMeta() {
23
+ return {
24
+ counts: this.listenerCounts,
25
+ // Allows registering a meta listener that will be notified of changes in listener counts
26
+ registerListener: (listener) => {
27
+ return this.metaListener.registerListener(listener);
28
+ }
29
+ };
30
+ }
31
+ metaListener;
32
+ constructor() {
33
+ super();
34
+ this.metaListener = new BaseObserver();
35
+ }
36
+ registerListener(listener) {
37
+ const dispose = super.registerListener(listener);
38
+ const updatedCount = this.listenerCounts;
39
+ this.metaListener.iterateListeners((l) => {
40
+ l.listenersChanged?.(updatedCount);
41
+ });
42
+ return () => {
43
+ dispose();
44
+ const updatedCount = this.listenerCounts;
45
+ this.metaListener.iterateListeners((l) => {
46
+ l.listenersChanged?.(updatedCount);
47
+ });
48
+ };
49
+ }
50
+ }
51
+ //# sourceMappingURL=MetaBaseObserver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetaBaseObserver.js","sourceRoot":"","sources":["../../src/utils/MetaBaseObserver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,YAAY,EAAyB,MAAM,mBAAmB,CAAC;AAyBtF;;GAEG;AACH,MAAM,OAAO,gBACX,SAAQ,YAAsB;IAG9B,IAAc,cAAc;QAC1B,MAAM,MAAM,GAAG,EAA6C,CAAC;QAC7D,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBACrC,KAAK,EAAE,CAAC;gBACV,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO;YACL,GAAG,MAAM;YACT,KAAK;SACN,CAAC;IACJ,CAAC;IAED,IAAI,YAAY;QACd,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,cAAc;YAC3B,yFAAyF;YACzF,gBAAgB,EAAE,CAAC,QAAyC,EAAE,EAAE;gBAC9D,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACtD,CAAC;SACF,CAAC;IACJ,CAAC;IAES,YAAY,CAAuC;IAE7D;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAA0B,CAAC;IACjE,CAAC;IAED,gBAAgB,CAAC,QAA2B;QAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE;YACvC,CAAC,CAAC,gBAAgB,EAAE,CAAC,YAAY,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACV,OAAO,EAAE,CAAC;YACV,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE;gBACvC,CAAC,CAAC,gBAAgB,EAAE,CAAC,YAAY,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * A ponyfill for `Symbol.asyncIterator` that is compatible with the
3
+ * [recommended polyfill](https://github.com/Azure/azure-sdk-for-js/blob/%40azure/core-asynciterator-polyfill_1.0.2/sdk/core/core-asynciterator-polyfill/src/index.ts#L4-L6)
4
+ * we recommend for React Native.
5
+ *
6
+ * As long as we use this symbol (instead of `for await` and `async *`) in this package, we can be compatible with async
7
+ * iterators without requiring them.
8
+ */
9
+ export declare const symbolAsyncIterator: typeof Symbol.asyncIterator;
10
+ /**
11
+ * Throttle a function to be called at most once every "wait" milliseconds,
12
+ * on the trailing edge.
13
+ *
14
+ * Roughly equivalent to lodash/throttle with {leading: false, trailing: true}
15
+ */
16
+ export declare function throttleTrailing(func: () => void, wait: number): () => void;
17
+ /**
18
+ * Throttle a function to be called at most once every "wait" milliseconds,
19
+ * on the leading and trailing edge.
20
+ *
21
+ * Roughly equivalent to lodash/throttle with {leading: true, trailing: true}
22
+ */
23
+ export declare function throttleLeadingTrailing(func: () => void, wait: number): () => void;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * A ponyfill for `Symbol.asyncIterator` that is compatible with the
3
+ * [recommended polyfill](https://github.com/Azure/azure-sdk-for-js/blob/%40azure/core-asynciterator-polyfill_1.0.2/sdk/core/core-asynciterator-polyfill/src/index.ts#L4-L6)
4
+ * we recommend for React Native.
5
+ *
6
+ * As long as we use this symbol (instead of `for await` and `async *`) in this package, we can be compatible with async
7
+ * iterators without requiring them.
8
+ */
9
+ export const symbolAsyncIterator = Symbol.asyncIterator ?? Symbol.for('Symbol.asyncIterator');
10
+ /**
11
+ * Throttle a function to be called at most once every "wait" milliseconds,
12
+ * on the trailing edge.
13
+ *
14
+ * Roughly equivalent to lodash/throttle with {leading: false, trailing: true}
15
+ */
16
+ export function throttleTrailing(func, wait) {
17
+ let timeoutId = null;
18
+ const later = () => {
19
+ func();
20
+ timeoutId = null;
21
+ };
22
+ return function () {
23
+ if (timeoutId == null) {
24
+ timeoutId = setTimeout(later, wait);
25
+ }
26
+ };
27
+ }
28
+ /**
29
+ * Throttle a function to be called at most once every "wait" milliseconds,
30
+ * on the leading and trailing edge.
31
+ *
32
+ * Roughly equivalent to lodash/throttle with {leading: true, trailing: true}
33
+ */
34
+ export function throttleLeadingTrailing(func, wait) {
35
+ let timeoutId = null;
36
+ let lastCallTime = 0;
37
+ const invokeFunction = () => {
38
+ func();
39
+ lastCallTime = Date.now();
40
+ timeoutId = null;
41
+ };
42
+ return function () {
43
+ const now = Date.now();
44
+ const timeToWait = wait - (now - lastCallTime);
45
+ if (timeToWait <= 0) {
46
+ // Leading edge: Call the function immediately if enough time has passed
47
+ invokeFunction();
48
+ }
49
+ else if (!timeoutId) {
50
+ // Set a timeout for the trailing edge if not already set
51
+ timeoutId = setTimeout(invokeFunction, timeToWait);
52
+ }
53
+ };
54
+ }
55
+ //# sourceMappingURL=async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.js","sourceRoot":"","sources":["../../src/utils/async.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAC9B,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAgB,EAAE,IAAY;IAC7D,IAAI,SAAS,GAAyC,IAAI,CAAC;IAE3D,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,EAAE,CAAC;QACP,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAgB,EAAE,IAAY;IACpE,IAAI,SAAS,GAAyC,IAAI,CAAC;IAC3D,IAAI,YAAY,GAAW,CAAC,CAAC;IAE7B,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,IAAI,EAAE,CAAC;QACP,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1B,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO;QACL,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC;QAE/C,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;YACpB,wEAAwE;YACxE,cAAc,EAAE,CAAC;QACnB,CAAC;aAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACtB,yDAAyD;YACzD,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Mutex } from 'async-mutex';
2
+ /**
3
+ * Wrapper for async-mutex runExclusive, which allows for a timeout on each exclusive lock.
4
+ */
5
+ export declare function mutexRunExclusive<T>(mutex: Mutex, callback: () => Promise<T>, options?: {
6
+ timeoutMs?: number;
7
+ }): Promise<T>;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Wrapper for async-mutex runExclusive, which allows for a timeout on each exclusive lock.
3
+ */
4
+ export async function mutexRunExclusive(mutex, callback, options) {
5
+ return new Promise((resolve, reject) => {
6
+ const timeout = options?.timeoutMs;
7
+ let timedOut = false;
8
+ const timeoutId = timeout
9
+ ? setTimeout(() => {
10
+ timedOut = true;
11
+ reject(new Error('Timeout waiting for lock'));
12
+ }, timeout)
13
+ : undefined;
14
+ mutex.runExclusive(async () => {
15
+ if (timeoutId) {
16
+ clearTimeout(timeoutId);
17
+ }
18
+ if (timedOut)
19
+ return;
20
+ try {
21
+ resolve(await callback());
22
+ }
23
+ catch (ex) {
24
+ reject(ex);
25
+ }
26
+ });
27
+ });
28
+ }
29
+ //# sourceMappingURL=mutex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutex.js","sourceRoot":"","sources":["../../src/utils/mutex.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAY,EACZ,QAA0B,EAC1B,OAAgC;IAEhC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,OAAO,EAAE,SAAS,CAAC;QACnC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,SAAS,GAAG,OAAO;YACvB,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;gBACd,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;YAChD,CAAC,EAAE,OAAO,CAAC;YACb,CAAC,CAAC,SAAS,CAAC;QAEd,KAAK,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YAC5B,IAAI,SAAS,EAAE,CAAC;gBACd,YAAY,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC;YACD,IAAI,QAAQ;gBAAE,OAAO;YAErB,IAAI,CAAC;gBACH,OAAO,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,EAAE,EAAE,CAAC;gBACZ,MAAM,CAAC,EAAE,CAAC,CAAC;YACb,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { CompilableQuery } from '../types/types.js';
2
+ export interface ParsedQuery {
3
+ sqlStatement: string;
4
+ parameters: any[];
5
+ }
6
+ export declare const parseQuery: <T>(query: string | CompilableQuery<T>, parameters: any[]) => ParsedQuery;
@@ -0,0 +1,17 @@
1
+ export const parseQuery = (query, parameters) => {
2
+ let sqlStatement;
3
+ if (typeof query == 'string') {
4
+ sqlStatement = query;
5
+ }
6
+ else {
7
+ const hasAdditionalParameters = parameters.length > 0;
8
+ if (hasAdditionalParameters) {
9
+ throw new Error('You cannot pass parameters to a compiled query.');
10
+ }
11
+ const compiled = query.compile();
12
+ sqlStatement = compiled.sql;
13
+ parameters = compiled.parameters;
14
+ }
15
+ return { sqlStatement, parameters: parameters };
16
+ };
17
+ //# sourceMappingURL=parseQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseQuery.js","sourceRoot":"","sources":["../../src/utils/parseQuery.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAI,KAAkC,EAAE,UAAiB,EAAe,EAAE;IAClG,IAAI,YAAoB,CAAC;IAEzB,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,YAAY,GAAG,KAAK,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,MAAM,uBAAuB,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QACtD,IAAI,uBAAuB,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QACjC,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC;QAC5B,UAAU,GAAG,QAAQ,CAAC,UAAmB,CAAC;IAC5C,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AAClD,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powersync/common",
3
- "version": "0.0.0-dev-20260202160933",
3
+ "version": "0.0.0-dev-20260202163643",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"