@powersync/service-core 0.17.0 → 0.18.0

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 (95) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/auth/CachedKeyCollector.js +26 -25
  3. package/dist/auth/CachedKeyCollector.js.map +1 -1
  4. package/dist/auth/CompoundKeyCollector.js +1 -0
  5. package/dist/auth/CompoundKeyCollector.js.map +1 -1
  6. package/dist/auth/KeySpec.js +3 -0
  7. package/dist/auth/KeySpec.js.map +1 -1
  8. package/dist/auth/KeyStore.js +4 -0
  9. package/dist/auth/KeyStore.js.map +1 -1
  10. package/dist/auth/LeakyBucket.js +5 -0
  11. package/dist/auth/LeakyBucket.js.map +1 -1
  12. package/dist/auth/RemoteJWKSCollector.js +4 -1
  13. package/dist/auth/RemoteJWKSCollector.js.map +1 -1
  14. package/dist/auth/StaticKeyCollector.js +1 -0
  15. package/dist/auth/StaticKeyCollector.js.map +1 -1
  16. package/dist/auth/StaticSupabaseKeyCollector.js +1 -0
  17. package/dist/auth/StaticSupabaseKeyCollector.js.map +1 -1
  18. package/dist/metrics/Metrics.js +35 -1
  19. package/dist/metrics/Metrics.js.map +1 -1
  20. package/dist/modules/AbstractModule.js +2 -0
  21. package/dist/modules/AbstractModule.js.map +1 -1
  22. package/dist/modules/ModuleManager.js +1 -3
  23. package/dist/modules/ModuleManager.js.map +1 -1
  24. package/dist/replication/AbstractReplicationJob.js +4 -2
  25. package/dist/replication/AbstractReplicationJob.js.map +1 -1
  26. package/dist/replication/AbstractReplicator.js +18 -12
  27. package/dist/replication/AbstractReplicator.js.map +1 -1
  28. package/dist/replication/ReplicationEngine.js +1 -3
  29. package/dist/replication/ReplicationEngine.js.map +1 -1
  30. package/dist/replication/ReplicationModule.js +3 -0
  31. package/dist/replication/ReplicationModule.js.map +1 -1
  32. package/dist/routes/RouterEngine.js +8 -0
  33. package/dist/routes/RouterEngine.js.map +1 -1
  34. package/dist/routes/endpoints/admin.js +4 -1
  35. package/dist/routes/endpoints/admin.js.map +1 -1
  36. package/dist/routes/endpoints/checkpointing.js +1 -1
  37. package/dist/routes/endpoints/checkpointing.js.map +1 -1
  38. package/dist/routes/endpoints/sync-rules.js +7 -2
  39. package/dist/routes/endpoints/sync-rules.js.map +1 -1
  40. package/dist/runner/teardown.js +2 -2
  41. package/dist/runner/teardown.js.map +1 -1
  42. package/dist/storage/BucketStorage.d.ts +4 -3
  43. package/dist/storage/BucketStorage.js.map +1 -1
  44. package/dist/storage/ChecksumCache.js +12 -7
  45. package/dist/storage/ChecksumCache.js.map +1 -1
  46. package/dist/storage/SourceTable.js +32 -25
  47. package/dist/storage/SourceTable.js.map +1 -1
  48. package/dist/storage/StorageEngine.js +4 -3
  49. package/dist/storage/StorageEngine.js.map +1 -1
  50. package/dist/storage/bson.d.ts +5 -3
  51. package/dist/storage/bson.js.map +1 -1
  52. package/dist/sync/BroadcastIterable.js +4 -3
  53. package/dist/sync/BroadcastIterable.js.map +1 -1
  54. package/dist/sync/LastValueSink.js +2 -0
  55. package/dist/sync/LastValueSink.js.map +1 -1
  56. package/dist/sync/RequestTracker.js +2 -4
  57. package/dist/sync/RequestTracker.js.map +1 -1
  58. package/dist/sync/merge.js +4 -0
  59. package/dist/sync/merge.js.map +1 -1
  60. package/dist/sync/sync.js +2 -2
  61. package/dist/sync/sync.js.map +1 -1
  62. package/dist/sync/util.js +2 -2
  63. package/dist/sync/util.js.map +1 -1
  64. package/dist/system/ServiceContext.js +3 -0
  65. package/dist/system/ServiceContext.js.map +1 -1
  66. package/dist/util/Mutex.js +5 -0
  67. package/dist/util/Mutex.js.map +1 -1
  68. package/dist/util/config/compound-config-collector.js +3 -1
  69. package/dist/util/config/compound-config-collector.js.map +1 -1
  70. package/dist/util/config/sync-rules/impl/base64-sync-rules-collector.js +1 -0
  71. package/dist/util/config/sync-rules/impl/base64-sync-rules-collector.js.map +1 -1
  72. package/dist/util/config/sync-rules/impl/filesystem-sync-rules-collector.js +1 -0
  73. package/dist/util/config/sync-rules/impl/filesystem-sync-rules-collector.js.map +1 -1
  74. package/dist/util/config/sync-rules/impl/inline-sync-rules-collector.js +1 -0
  75. package/dist/util/config/sync-rules/impl/inline-sync-rules-collector.js.map +1 -1
  76. package/dist/util/config/sync-rules/sync-rules-provider.d.ts +2 -0
  77. package/dist/util/config/sync-rules/sync-rules-provider.js +4 -0
  78. package/dist/util/config/sync-rules/sync-rules-provider.js.map +1 -1
  79. package/dist/util/config/types.d.ts +1 -0
  80. package/dist/util/memory-tracking.js +1 -1
  81. package/dist/util/memory-tracking.js.map +1 -1
  82. package/package.json +5 -5
  83. package/src/replication/AbstractReplicator.ts +9 -3
  84. package/src/routes/endpoints/admin.ts +4 -1
  85. package/src/routes/endpoints/sync-rules.ts +7 -2
  86. package/src/storage/BucketStorage.ts +4 -2
  87. package/src/storage/bson.ts +9 -7
  88. package/src/util/config/compound-config-collector.ts +2 -1
  89. package/src/util/config/sync-rules/impl/base64-sync-rules-collector.ts +1 -0
  90. package/src/util/config/sync-rules/impl/filesystem-sync-rules-collector.ts +1 -0
  91. package/src/util/config/sync-rules/impl/inline-sync-rules-collector.ts +1 -0
  92. package/src/util/config/sync-rules/sync-rules-provider.ts +6 -0
  93. package/src/util/config/types.ts +1 -0
  94. package/src/util/memory-tracking.ts +2 -2
  95. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceContext.js","sourceRoot":"","sources":["../../src/system/ServiceContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAqB,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAErH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,uBAAuB,CAAC;AAEjD,OAAO,KAAK,WAAW,MAAM,qCAAqC,CAAC;AACnE,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AAavD;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;IAIlC,YAAmB,aAA4C;QAA5C,kBAAa,GAAb,aAAa,CAA+B;QAC7D,IAAI,CAAC,eAAe,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAE9C,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;YAC7C,aAAa;SACd,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAChD,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,uBAAuB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;QAE1F,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,gBAAgB,EAAE;YACnD,yDAAyD;YACzD,KAAK,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;SACrD,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE;YACrD,KAAK,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;YAC/C,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE;SAClD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,YAAY;QACd,OAAO,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,OAAO;QACT,OAAO,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;IAC1F,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAI,UAAgC,EAAE,cAAiB;QAC7D,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,GAAG,CAAI,UAAgC;QACrC,OAAO,SAAS,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;CACF"}
1
+ {"version":3,"file":"ServiceContext.js","sourceRoot":"","sources":["../../src/system/ServiceContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAqB,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAErH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,uBAAuB,CAAC;AAEjD,OAAO,KAAK,WAAW,MAAM,qCAAqC,CAAC;AACnE,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AAavD;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;IAIf;IAHnB,eAAe,CAAmB;IAClC,aAAa,CAAwB;IAErC,YAAmB,aAA4C;QAA5C,kBAAa,GAAb,aAAa,CAA+B;QAC7D,IAAI,CAAC,eAAe,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAE9C,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;YAC7C,aAAa;SACd,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAChD,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,uBAAuB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;QAE1F,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,gBAAgB,EAAE;YACnD,yDAAyD;YACzD,KAAK,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;SACrD,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE;YACrD,KAAK,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;YAC/C,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE;SAClD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,YAAY;QACd,OAAO,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,OAAO;QACT,OAAO,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;IAC1F,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAI,UAAgC,EAAE,cAAiB;QAC7D,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,GAAG,CAAI,UAAgC;QACrC,OAAO,SAAS,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;CACF"}
@@ -1,5 +1,6 @@
1
1
  const DEBUG_MUTEX = false;
2
2
  class ExclusiveContext {
3
+ mutex;
3
4
  constructor(mutex) {
4
5
  this.mutex = mutex;
5
6
  }
@@ -11,6 +12,7 @@ class ExclusiveContext {
11
12
  }
12
13
  }
13
14
  class SharedContext {
15
+ mutex;
14
16
  constructor(mutex) {
15
17
  this.mutex = mutex;
16
18
  }
@@ -26,6 +28,9 @@ class SharedContext {
26
28
  * are executed sequentially (whereas normally they would execute their async code concurrently).
27
29
  */
28
30
  export class Mutex {
31
+ queue;
32
+ sharedCount;
33
+ exclusiveLocked;
29
34
  constructor() {
30
35
  this.queue = [];
31
36
  this.sharedCount = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"Mutex.js","sourceRoot":"","sources":["../../src/util/Mutex.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,GAAG,KAAK,CAAC;AAe1B,MAAM,gBAAgB;IACpB,YAAoB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAEpC,aAAa,CAAI,SAA6B;QAC5C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,UAAU,CAAI,SAA6B;QACzC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;CACF;AAED,MAAM,aAAa;IACjB,YAAoB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAEpC,KAAK,CAAC,aAAa,CAAI,SAA6B;QAClD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,UAAU,CAAI,SAAmC;QAC/C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,KAAK;IAKhB;QACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAI,SAA6B;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAgB,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAI,SAAmC;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAEO,KAAK,CAAC,IAAI,CAAI,SAAmC,EAAE,SAAmB;QAC5E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC;gBAChC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;oBACxB,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;gBAC5D,CAAC,EAAE,KAAK,CAAC,CAAC;YACZ,CAAC;YACD,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;gBAAS,CAAC;YACT,IAAI,WAAW,EAAE,CAAC;gBAChB,YAAY,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC/B,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,EAAE,CAAI,EAAsB;QAC1B,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO;YACL,IAAI,IAAI,GAAG,SAAS,CAAC;YACrB,OAAO,IAAI,CAAC,aAAa,CAAC;gBACxB,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,SAAS,CAAC,SAAmB;QACnC,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,IAAI,OAAO,CAAqB,UAAU,OAAO,EAAE,MAAM;YAC9D,MAAM,IAAI,GAAS;gBACjB,OAAO,EAAE,OAAO;gBAChB,SAAS,EAAE,SAAS,IAAI,KAAK;aAC9B,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,QAAQ;QACd,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"Mutex.js","sourceRoot":"","sources":["../../src/util/Mutex.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ const DEFAULT_COLLECTOR_OPTIONS = {
16
16
  ]
17
17
  };
18
18
  export class CompoundConfigCollector {
19
+ options;
19
20
  constructor(options = DEFAULT_COLLECTOR_OPTIONS) {
20
21
  this.options = options;
21
22
  }
@@ -141,7 +142,8 @@ export class CompoundConfigCollector {
141
142
  }
142
143
  }
143
144
  return {
144
- present: false
145
+ present: false,
146
+ exit_on_error: true
145
147
  };
146
148
  }
147
149
  }
@@ -1 +1 @@
1
- {"version":3,"file":"compound-config-collector.js","sourceRoot":"","sources":["../../../src/util/config/compound-config-collector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compound-config-collector.js","sourceRoot":"","sources":["../../../src/util/config/compound-config-collector.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export class Base64SyncRulesCollector extends SyncRulesCollector {
10
10
  }
11
11
  return {
12
12
  present: true,
13
+ exit_on_error: baseConfig.sync_rules?.exit_on_error ?? true,
13
14
  content: Buffer.from(sync_rules_base64, 'base64').toString()
14
15
  };
15
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base64-sync-rules-collector.js","sourceRoot":"","sources":["../../../../../src/util/config/sync-rules/impl/base64-sync-rules-collector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,OAAO,wBAAyB,SAAQ,kBAAkB;IAC9D,IAAI,IAAI;QACN,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAsC,EAAE,YAA0B;QAC9E,MAAM,EAAE,iBAAiB,EAAE,GAAG,YAAY,CAAC;QAC3C,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE;SAC7D,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"base64-sync-rules-collector.js","sourceRoot":"","sources":["../../../../../src/util/config/sync-rules/impl/base64-sync-rules-collector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,OAAO,wBAAyB,SAAQ,kBAAkB;IAC9D,IAAI,IAAI;QACN,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAsC,EAAE,YAA0B;QAC9E,MAAM,EAAE,iBAAiB,EAAE,GAAG,YAAY,CAAC;QAC3C,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,UAAU,CAAC,UAAU,EAAE,aAAa,IAAI,IAAI;YAC3D,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE;SAC7D,CAAC;IACJ,CAAC;CACF"}
@@ -14,6 +14,7 @@ export class FileSystemSyncRulesCollector extends SyncRulesCollector {
14
14
  // Only persist the path here, and load on demand using `loadSyncRules()`.
15
15
  return {
16
16
  present: true,
17
+ exit_on_error: baseConfig.sync_rules?.exit_on_error ?? true,
17
18
  path: config_path ? path.resolve(path.dirname(config_path), sync_path) : sync_path
18
19
  };
19
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem-sync-rules-collector.js","sourceRoot":"","sources":["../../../../../src/util/config/sync-rules/impl/filesystem-sync-rules-collector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,OAAO,4BAA6B,SAAQ,kBAAkB;IAClE,IAAI,IAAI;QACN,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAsC,EAAE,YAA0B;QAC9E,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;QAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC;QAErC,0EAA0E;QAC1E,0EAA0E;QAC1E,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;SACnF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"filesystem-sync-rules-collector.js","sourceRoot":"","sources":["../../../../../src/util/config/sync-rules/impl/filesystem-sync-rules-collector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,OAAO,4BAA6B,SAAQ,kBAAkB;IAClE,IAAI,IAAI;QACN,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAsC,EAAE,YAA0B;QAC9E,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;QAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC;QAErC,0EAA0E;QAC1E,0EAA0E;QAC1E,OAAO;YACL,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,UAAU,CAAC,UAAU,EAAE,aAAa,IAAI,IAAI;YAC3D,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;SACnF,CAAC;IACJ,CAAC;CACF"}
@@ -10,6 +10,7 @@ export class InlineSyncRulesCollector extends SyncRulesCollector {
10
10
  }
11
11
  return {
12
12
  present: true,
13
+ exit_on_error: true,
13
14
  ...baseConfig.sync_rules
14
15
  };
15
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"inline-sync-rules-collector.js","sourceRoot":"","sources":["../../../../../src/util/config/sync-rules/impl/inline-sync-rules-collector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,OAAO,wBAAyB,SAAQ,kBAAkB;IAC9D,IAAI,IAAI;QACN,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAsC;QAClD,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,GAAG,UAAU,CAAC,UAAU;SACzB,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"inline-sync-rules-collector.js","sourceRoot":"","sources":["../../../../../src/util/config/sync-rules/impl/inline-sync-rules-collector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,OAAO,wBAAyB,SAAQ,kBAAkB;IAC9D,IAAI,IAAI;QACN,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAsC;QAClD,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,IAAI;YACnB,GAAG,UAAU,CAAC,UAAU;SACzB,CAAC;IACJ,CAAC;CACF"}
@@ -1,9 +1,11 @@
1
1
  import { SyncRulesConfig } from '../types.js';
2
2
  export interface SyncRulesProvider {
3
3
  get(): Promise<string | undefined>;
4
+ readonly exitOnError: boolean;
4
5
  }
5
6
  export declare class ConfigurationFileSyncRulesProvider implements SyncRulesProvider {
6
7
  private config;
7
8
  constructor(config: SyncRulesConfig);
8
9
  get(): Promise<string | undefined>;
10
+ get exitOnError(): boolean;
9
11
  }
@@ -1,5 +1,6 @@
1
1
  import fs from 'fs/promises';
2
2
  export class ConfigurationFileSyncRulesProvider {
3
+ config;
3
4
  constructor(config) {
4
5
  this.config = config;
5
6
  }
@@ -11,5 +12,8 @@ export class ConfigurationFileSyncRulesProvider {
11
12
  return await fs.readFile(this.config.path, 'utf-8');
12
13
  }
13
14
  }
15
+ get exitOnError() {
16
+ return this.config.exit_on_error;
17
+ }
14
18
  }
15
19
  //# sourceMappingURL=sync-rules-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync-rules-provider.js","sourceRoot":"","sources":["../../../../src/util/config/sync-rules/sync-rules-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,aAAa,CAAC;AAM7B,MAAM,OAAO,kCAAkC;IAC7C,YAAoB,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;IAAG,CAAC;IAE/C,KAAK,CAAC,GAAG;QACP,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAC7B,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5B,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"sync-rules-provider.js","sourceRoot":"","sources":["../../../../src/util/config/sync-rules/sync-rules-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,aAAa,CAAC;AAQ7B,MAAM,OAAO,kCAAkC;IACzB;IAApB,YAAoB,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;IAAG,CAAC;IAE/C,KAAK,CAAC,GAAG;QACP,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAC7B,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5B,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IACnC,CAAC;CACF"}
@@ -21,6 +21,7 @@ export type SyncRulesConfig = {
21
21
  present: boolean;
22
22
  content?: string;
23
23
  path?: string;
24
+ exit_on_error: boolean;
24
25
  };
25
26
  export type ResolvedPowerSyncConfig = {
26
27
  base_config: PowerSyncConfig;
@@ -32,7 +32,7 @@ export function trackMemoryUsage() {
32
32
  const mem = process.memoryUsage();
33
33
  let isDifferent = false;
34
34
  for (const key in mem) {
35
- if (Math.abs(mem[key] - lastMem[key]) > 5000000) {
35
+ if (Math.abs(mem[key] - lastMem[key]) > 5_000_000) {
36
36
  isDifferent = true;
37
37
  }
38
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"memory-tracking.js","sourceRoot":"","sources":["../../src/util/memory-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEpC,IAAI,YAAY,GAAG;QACjB,KAAK,EAAE,CAAC;QACR,WAAW,EAAE,CAAC;QACd,eAAe,EAAE,CAAC;QAClB,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;KACV,CAAC;IAEF,MAAM,cAAc,GAAG,IAAI,oBAAoB,CAAsC,CAAC,CAAC,EAAE,EAAE;QACzF,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,YAAY,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,GAAgC,CAAC;QAClD,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAA+B,CAAC;QACxE,MAAM,CAAC,QAAQ,CAAC,GAAG,UAAU,GAAG,IAAW;YACzC,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAClD,YAAY,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC;YAC5C,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/D,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,GAAG,EAAE;QACf,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAElC,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACtB,IAAI,IAAI,CAAC,GAAG,CAAE,GAAW,CAAC,GAAG,CAAC,GAAI,OAAe,CAAC,GAAG,CAAC,CAAC,GAAG,OAAS,EAAE,CAAC;gBACpE,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,GAAG,GAAG,CAAC;YAEd,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;cACzB,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;eAChB,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;;kBAEb,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC;kBACpB,EAAE,CAAC,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,WAAW,GAAG,YAAY,CAAC,eAAe,CAAC;iBACjF,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC;mBACnB,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;;QAElC,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAE3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAED,SAAS,EAAE,CAAC,CAAS;IACnB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"memory-tracking.js","sourceRoot":"","sources":["../../src/util/memory-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEpC,IAAI,YAAY,GAAG;QACjB,KAAK,EAAE,CAAC;QACR,WAAW,EAAE,CAAC;QACd,eAAe,EAAE,CAAC;QAClB,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;KACV,CAAC;IAEF,MAAM,cAAc,GAAG,IAAI,oBAAoB,CAAsC,CAAC,CAAC,EAAE,EAAE;QACzF,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,YAAY,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,GAAgC,CAAC;QAClD,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAA+B,CAAC;QACxE,MAAM,CAAC,QAAQ,CAAC,GAAG,UAAkE,GAAG,IAAW;YACjG,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAyB,CAAC;YAC1E,YAAY,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC;YAC5C,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/D,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,GAAG,EAAE;QACf,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAElC,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACtB,IAAI,IAAI,CAAC,GAAG,CAAE,GAAW,CAAC,GAAG,CAAC,GAAI,OAAe,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC;gBACpE,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,GAAG,GAAG,CAAC;YAEd,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;cACzB,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;eAChB,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;;kBAEb,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC;kBACpB,EAAE,CAAC,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,WAAW,GAAG,YAAY,CAAC,eAAe,CAAC;iBACjF,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC;mBACnB,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;;QAElC,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAE3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAED,SAAS,EAAE,CAAC,CAAS;IACnB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AAC5C,CAAC"}
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
- "version": "0.17.0",
8
+ "version": "0.18.0",
9
9
  "main": "dist/index.js",
10
10
  "license": "FSL-1.1-Apache-2.0",
11
11
  "type": "module",
@@ -32,11 +32,11 @@
32
32
  "uuid": "^9.0.1",
33
33
  "winston": "^3.13.0",
34
34
  "yaml": "^2.3.2",
35
- "@powersync/lib-services-framework": "0.5.0",
35
+ "@powersync/lib-services-framework": "0.5.1",
36
36
  "@powersync/service-jsonbig": "0.17.10",
37
- "@powersync/service-rsocket-router": "0.0.17",
38
- "@powersync/service-sync-rules": "0.23.3",
39
- "@powersync/service-types": "0.7.1"
37
+ "@powersync/service-rsocket-router": "0.0.18",
38
+ "@powersync/service-sync-rules": "0.23.4",
39
+ "@powersync/service-types": "0.8.0"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@types/async": "^3.2.24",
@@ -93,21 +93,27 @@ export abstract class AbstractReplicator<T extends AbstractReplicationJob = Abst
93
93
 
94
94
  private async runLoop() {
95
95
  const syncRules = await this.syncRuleProvider.get();
96
+
96
97
  let configuredLock: storage.ReplicationLock | undefined = undefined;
97
98
  if (syncRules != null) {
98
99
  this.logger.info('Loaded sync rules');
99
100
  try {
100
101
  // Configure new sync rules, if they have changed.
101
102
  // In that case, also immediately take out a lock, so that another process doesn't start replication on it.
102
- const { lock } = await this.storage.configureSyncRules(syncRules, {
103
- lock: true
103
+
104
+ const { lock } = await this.storage.configureSyncRules({
105
+ content: syncRules,
106
+ lock: true,
107
+ validate: this.syncRuleProvider.exitOnError
104
108
  });
105
109
  if (lock) {
106
110
  configuredLock = lock;
107
111
  }
108
112
  } catch (e) {
109
- // Log, but continue with previous sync rules
113
+ // Log and re-raise to exit.
114
+ // Should only reach this due to validation errors if exit_on_error is true.
110
115
  this.logger.error(`Failed to update sync rules from configuration`, e);
116
+ throw e;
111
117
  }
112
118
  } else {
113
119
  this.logger.info('No sync rules configured - configure via API');
@@ -128,7 +128,10 @@ export const reprocess = routeDefinition({
128
128
  }
129
129
 
130
130
  const new_rules = await activeBucketStorage.updateSyncRules({
131
- content: active.sync_rules.content
131
+ content: active.sync_rules.content,
132
+ // These sync rules already passed validation. But if the rules are not valid anymore due
133
+ // to a service change, we do want to report the error here.
134
+ validate: true
132
135
  });
133
136
 
134
137
  const baseConfig = await apiHandler.getSourceConfig();
@@ -69,7 +69,9 @@ export const deploySyncRules = routeDefinition({
69
69
  }
70
70
 
71
71
  const sync_rules = await storageEngine.activeBucketStorage.updateSyncRules({
72
- content: content
72
+ content: content,
73
+ // Aready validated above
74
+ validate: false
73
75
  });
74
76
 
75
77
  return {
@@ -167,7 +169,10 @@ export const reprocessSyncRules = routeDefinition({
167
169
  }
168
170
 
169
171
  const new_rules = await activeBucketStorage.updateSyncRules({
170
- content: sync_rules.sync_rules.content
172
+ content: sync_rules.sync_rules.content,
173
+ // These sync rules already passed validation. But if the rules are not valid anymore due
174
+ // to a service change, we do want to report the error here.
175
+ validate: true
171
176
  });
172
177
  return {
173
178
  slot_name: new_rules.slot_name
@@ -79,8 +79,7 @@ export interface BucketStorageFactory extends AsyncDisposableObserverClient<Buck
79
79
  * Update sync rules from configuration, if changed.
80
80
  */
81
81
  configureSyncRules(
82
- sync_rules: string,
83
- options?: { lock?: boolean }
82
+ options: UpdateSyncRulesOptions
84
83
  ): Promise<{ updated: boolean; persisted_sync_rules?: PersistedSyncRulesContent; lock?: ReplicationLock }>;
85
84
 
86
85
  /**
@@ -90,6 +89,8 @@ export interface BucketStorageFactory extends AsyncDisposableObserverClient<Buck
90
89
 
91
90
  /**
92
91
  * Deploy new sync rules.
92
+ *
93
+ * Similar to configureSyncRules, but applies the update unconditionally.
93
94
  */
94
95
  updateSyncRules(options: UpdateSyncRulesOptions): Promise<PersistedSyncRulesContent>;
95
96
 
@@ -232,6 +233,7 @@ export interface PersistedSyncRules {
232
233
  export interface UpdateSyncRulesOptions {
233
234
  content: string;
234
235
  lock?: boolean;
236
+ validate?: boolean;
235
237
  }
236
238
 
237
239
  export interface SyncRulesBucketStorageOptions {
@@ -3,6 +3,8 @@ import * as bson from 'bson';
3
3
  import { SqliteJsonValue } from '@powersync/service-sync-rules';
4
4
  import { ReplicaId } from './BucketStorage.js';
5
5
 
6
+ type NodeBuffer = Buffer<ArrayBuffer>;
7
+
6
8
  export const BSON_DESERIALIZE_OPTIONS: bson.DeserializeOptions = {
7
9
  // use bigint instead of Long
8
10
  useBigInt64: true
@@ -12,7 +14,7 @@ export const BSON_DESERIALIZE_OPTIONS: bson.DeserializeOptions = {
12
14
  * Lookup serialization must be number-agnostic. I.e. normalize numbers, instead of preserving numbers.
13
15
  * @param lookup
14
16
  */
15
- export const serializeLookupBuffer = (lookup: SqliteJsonValue[]): Buffer => {
17
+ export const serializeLookupBuffer = (lookup: SqliteJsonValue[]): NodeBuffer => {
16
18
  const normalized = lookup.map((value) => {
17
19
  if (typeof value == 'number' && Number.isInteger(value)) {
18
20
  return BigInt(value);
@@ -20,7 +22,7 @@ export const serializeLookupBuffer = (lookup: SqliteJsonValue[]): Buffer => {
20
22
  return value;
21
23
  }
22
24
  });
23
- return bson.serialize({ l: normalized }) as Buffer;
25
+ return bson.serialize({ l: normalized }) as NodeBuffer;
24
26
  };
25
27
 
26
28
  export const serializeLookup = (lookup: SqliteJsonValue[]) => {
@@ -40,8 +42,8 @@ export const isUUID = (value: any): value is bson.UUID => {
40
42
  return uuid._bsontype == 'Binary' && uuid.sub_type == bson.Binary.SUBTYPE_UUID;
41
43
  };
42
44
 
43
- export const serializeReplicaId = (id: ReplicaId): Buffer => {
44
- return bson.serialize({ id }) as Buffer;
45
+ export const serializeReplicaId = (id: ReplicaId): NodeBuffer => {
46
+ return bson.serialize({ id }) as NodeBuffer;
45
47
  };
46
48
 
47
49
  export const deserializeReplicaId = (id: Buffer): ReplicaId => {
@@ -53,8 +55,8 @@ export const deserializeBson = (buffer: Buffer) => {
53
55
  return bson.deserialize(buffer, BSON_DESERIALIZE_OPTIONS);
54
56
  };
55
57
 
56
- export const serializeBson = (document: any): Buffer => {
57
- return bson.serialize(document) as Buffer;
58
+ export const serializeBson = (document: any): NodeBuffer => {
59
+ return bson.serialize(document) as NodeBuffer;
58
60
  };
59
61
 
60
62
  /**
@@ -73,6 +75,6 @@ export const replicaIdEquals = (a: ReplicaId, b: ReplicaId) => {
73
75
  return false;
74
76
  } else {
75
77
  // There are many possible primitive values, this covers them all
76
- return serializeReplicaId(a).equals(serializeReplicaId(b) as ArrayBuffer as Uint8Array);
78
+ return serializeReplicaId(a).equals(serializeReplicaId(b));
77
79
  }
78
80
  };
@@ -196,7 +196,8 @@ export class CompoundConfigCollector {
196
196
  }
197
197
  }
198
198
  return {
199
- present: false
199
+ present: false,
200
+ exit_on_error: true
200
201
  };
201
202
  }
202
203
  }
@@ -15,6 +15,7 @@ export class Base64SyncRulesCollector extends SyncRulesCollector {
15
15
 
16
16
  return {
17
17
  present: true,
18
+ exit_on_error: baseConfig.sync_rules?.exit_on_error ?? true,
18
19
  content: Buffer.from(sync_rules_base64, 'base64').toString()
19
20
  };
20
21
  }
@@ -20,6 +20,7 @@ export class FileSystemSyncRulesCollector extends SyncRulesCollector {
20
20
  // Only persist the path here, and load on demand using `loadSyncRules()`.
21
21
  return {
22
22
  present: true,
23
+ exit_on_error: baseConfig.sync_rules?.exit_on_error ?? true,
23
24
  path: config_path ? path.resolve(path.dirname(config_path), sync_path) : sync_path
24
25
  };
25
26
  }
@@ -15,6 +15,7 @@ export class InlineSyncRulesCollector extends SyncRulesCollector {
15
15
 
16
16
  return {
17
17
  present: true,
18
+ exit_on_error: true,
18
19
  ...baseConfig.sync_rules
19
20
  };
20
21
  }
@@ -3,6 +3,8 @@ import fs from 'fs/promises';
3
3
 
4
4
  export interface SyncRulesProvider {
5
5
  get(): Promise<string | undefined>;
6
+
7
+ readonly exitOnError: boolean;
6
8
  }
7
9
 
8
10
  export class ConfigurationFileSyncRulesProvider implements SyncRulesProvider {
@@ -15,4 +17,8 @@ export class ConfigurationFileSyncRulesProvider implements SyncRulesProvider {
15
17
  return await fs.readFile(this.config.path, 'utf-8');
16
18
  }
17
19
  }
20
+
21
+ get exitOnError() {
22
+ return this.config.exit_on_error;
23
+ }
18
24
  }
@@ -26,6 +26,7 @@ export type SyncRulesConfig = {
26
26
  present: boolean;
27
27
  content?: string;
28
28
  path?: string;
29
+ exit_on_error: boolean;
29
30
  };
30
31
 
31
32
  export type ResolvedPowerSyncConfig = {
@@ -25,8 +25,8 @@ export function trackMemoryUsage() {
25
25
  for (let key of Object.keys(bufferMemory)) {
26
26
  const typedKey = key as keyof typeof bufferMemory;
27
27
  const originalFunction = Buffer[typedKey] as (...args: any[]) => Buffer;
28
- Buffer[typedKey] = function (...args: any[]) {
29
- const buffer = originalFunction.apply(this, args);
28
+ Buffer[typedKey] = function <TArrayBuffer extends ArrayBufferLike = ArrayBufferLike>(...args: any[]) {
29
+ const buffer = originalFunction.apply(this, args) as Buffer<TArrayBuffer>;
30
30
  bufferMemory[typedKey] += buffer.byteLength;
31
31
  bufferRegistry.register(buffer, [typedKey, buffer.byteLength]);
32
32
  return buffer;