@supacloud/lite 0.5.3 → 0.5.4

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.5.4](https://github.com/zuohuadong/supacloud/compare/supacloud-lite-v0.5.3...supacloud-lite-v0.5.4) (2026-08-02)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **lite:** await realtime listener shutdown ([797699b](https://github.com/zuohuadong/supacloud/commit/797699bcc8b0fcaafccf076acec3c8a49a7ee447))
9
+ * **lite:** ignore stale background timer callbacks ([004ba74](https://github.com/zuohuadong/supacloud/commit/004ba74bf3f7970377fc743368d45cf4b6837da4))
10
+ * **lite:** skip runtime services for utility commands ([050576e](https://github.com/zuohuadong/supacloud/commit/050576ebcf0a25a0ddd28db020eca759c2521753))
11
+
3
12
  ## [0.5.3](https://github.com/zuohuadong/supacloud/compare/supacloud-lite-v0.5.2...supacloud-lite-v0.5.3) (2026-08-02)
4
13
 
5
14
 
package/dist/cli.js CHANGED
@@ -8,7 +8,7 @@ import { dirname as dirname5, join as join9, resolve as resolve4 } from "path";
8
8
  // package.json
9
9
  var package_default = {
10
10
  name: "@supacloud/lite",
11
- version: "0.5.3",
11
+ version: "0.5.4",
12
12
  description: "Bun-native, single-project Supabase-compatible backend powered by PGlite",
13
13
  type: "module",
14
14
  license: "Apache-2.0",
@@ -3527,7 +3527,9 @@ class Database {
3527
3527
  schemaCache = new Map;
3528
3528
  fnCache = new Map;
3529
3529
  cdcListeners = new Set;
3530
- cdcStarted = false;
3530
+ cdcStarting = null;
3531
+ cdcStopping = null;
3532
+ cdcUnsubscribe = null;
3531
3533
  constructor(engine) {
3532
3534
  this.engine = engine;
3533
3535
  }
@@ -3774,17 +3776,54 @@ class Database {
3774
3776
  }
3775
3777
  async onCdcEvent(cb) {
3776
3778
  this.cdcListeners.add(cb);
3777
- if (!this.cdcStarted) {
3778
- this.cdcStarted = true;
3779
- await this.engine.listen("tinbase_cdc", (payload) => {
3780
- try {
3781
- const event = JSON.parse(payload);
3782
- for (const listener of this.cdcListeners)
3783
- listener(event);
3784
- } catch {}
3785
- });
3779
+ try {
3780
+ await this.startCdcListener();
3781
+ } catch (error) {
3782
+ this.cdcListeners.delete(cb);
3783
+ throw error;
3784
+ }
3785
+ return async () => {
3786
+ if (!this.cdcListeners.delete(cb) || this.cdcListeners.size > 0)
3787
+ return;
3788
+ await this.stopCdcListener();
3789
+ };
3790
+ }
3791
+ async startCdcListener() {
3792
+ if (this.cdcStopping)
3793
+ await this.cdcStopping;
3794
+ if (this.cdcUnsubscribe)
3795
+ return;
3796
+ const starting = this.cdcStarting ?? this.attachCdcListener();
3797
+ this.cdcStarting = starting;
3798
+ try {
3799
+ await starting;
3800
+ } finally {
3801
+ if (this.cdcStarting === starting)
3802
+ this.cdcStarting = null;
3803
+ }
3804
+ }
3805
+ async attachCdcListener() {
3806
+ this.cdcUnsubscribe = await this.engine.listen("tinbase_cdc", (payload) => {
3807
+ try {
3808
+ const event = JSON.parse(payload);
3809
+ for (const listener of this.cdcListeners)
3810
+ listener(event);
3811
+ } catch {}
3812
+ });
3813
+ }
3814
+ async stopCdcListener() {
3815
+ const unsubscribe = this.cdcUnsubscribe;
3816
+ if (!unsubscribe)
3817
+ return;
3818
+ this.cdcUnsubscribe = null;
3819
+ const stopping = Promise.resolve().then(unsubscribe);
3820
+ this.cdcStopping = stopping;
3821
+ try {
3822
+ await stopping;
3823
+ } finally {
3824
+ if (this.cdcStopping === stopping)
3825
+ this.cdcStopping = null;
3786
3826
  }
3787
- return () => this.cdcListeners.delete(cb);
3788
3827
  }
3789
3828
  get jsCdc() {
3790
3829
  return !!this.engine.minimalBootstrap;
@@ -3923,14 +3962,22 @@ class RealtimeEngine {
3923
3962
  } catch {}
3924
3963
  });
3925
3964
  }
3926
- stop() {
3927
- this.stopCdc?.();
3965
+ async stop() {
3966
+ const stopCdc = this.stopCdc;
3967
+ const stopDbBroadcast = this.stopDbBroadcast;
3928
3968
  this.stopCdc = null;
3929
- this.stopDbBroadcast?.();
3930
3969
  this.stopDbBroadcast = null;
3931
3970
  for (const conn of this.connections)
3932
3971
  conn.socket.close(1001, "server shutting down");
3933
3972
  this.connections.clear();
3973
+ const [cdcStop, broadcastStop] = await Promise.allSettled([
3974
+ Promise.resolve().then(() => stopCdc?.()),
3975
+ Promise.resolve().then(() => stopDbBroadcast?.())
3976
+ ]);
3977
+ if (cdcStop.status === "rejected")
3978
+ throw cdcStop.reason;
3979
+ if (broadcastStop.status === "rejected")
3980
+ throw broadcastStop.reason;
3934
3981
  }
3935
3982
  connect(socket, opts = {}) {
3936
3983
  const conn = { socket, channels: new Map, vsn: opts.vsn ?? "1.0.0" };
@@ -6950,6 +6997,7 @@ class NetService {
6950
6997
  tickMs;
6951
6998
  onDeliver;
6952
6999
  timer = null;
7000
+ timerGeneration = 0;
6953
7001
  inFlight = null;
6954
7002
  constructor(db, fetchImpl = fetch, tickMs = 500, onDeliver) {
6955
7003
  this.db = db;
@@ -6958,18 +7006,26 @@ class NetService {
6958
7006
  this.onDeliver = onDeliver;
6959
7007
  }
6960
7008
  start() {
6961
- if (this.timer)
7009
+ if (this.timer !== null)
6962
7010
  return;
6963
- this.timer = setInterval(() => void this.tick(), this.tickMs);
6964
- if (typeof this.timer === "object" && "unref" in this.timer)
6965
- this.timer.unref();
7011
+ const generation = ++this.timerGeneration;
7012
+ let timer;
7013
+ timer = setInterval(() => {
7014
+ if (this.timer === timer && this.timerGeneration === generation)
7015
+ this.tick();
7016
+ }, this.tickMs);
7017
+ this.timer = timer;
7018
+ if (typeof timer === "object" && "unref" in timer)
7019
+ timer.unref();
6966
7020
  }
6967
7021
  async stop() {
6968
- if (this.timer)
6969
- clearInterval(this.timer);
7022
+ const timer = this.timer;
6970
7023
  this.timer = null;
6971
- await this.inFlight?.catch(() => {});
6972
- this.inFlight = null;
7024
+ this.timerGeneration += 1;
7025
+ if (timer !== null)
7026
+ clearInterval(timer);
7027
+ const inFlight = this.inFlight;
7028
+ await inFlight?.catch(() => {});
6973
7029
  }
6974
7030
  tick() {
6975
7031
  if (this.inFlight)
@@ -7108,10 +7164,11 @@ class WebhooksService {
7108
7164
  this.started = true;
7109
7165
  this.stop = await this.db.onCdcEvent((e) => this.dispatch(e));
7110
7166
  }
7111
- stopService() {
7112
- this.stop?.();
7167
+ async stopService() {
7168
+ const stop = this.stop;
7113
7169
  this.stop = null;
7114
7170
  this.started = false;
7171
+ await stop?.();
7115
7172
  }
7116
7173
  dispatch(event) {
7117
7174
  for (const hook of this.hooks) {
@@ -7164,6 +7221,7 @@ class CronService {
7164
7221
  tickMs;
7165
7222
  now;
7166
7223
  timer = null;
7224
+ timerGeneration = 0;
7167
7225
  lastRun = new Map;
7168
7226
  lastMinute = new Map;
7169
7227
  inFlight = null;
@@ -7173,18 +7231,26 @@ class CronService {
7173
7231
  this.now = now;
7174
7232
  }
7175
7233
  start() {
7176
- if (this.timer)
7234
+ if (this.timer !== null)
7177
7235
  return;
7178
- this.timer = setInterval(() => void this.tick(), this.tickMs);
7179
- if (typeof this.timer === "object" && "unref" in this.timer)
7180
- this.timer.unref();
7236
+ const generation = ++this.timerGeneration;
7237
+ let timer;
7238
+ timer = setInterval(() => {
7239
+ if (this.timer === timer && this.timerGeneration === generation)
7240
+ this.tick();
7241
+ }, this.tickMs);
7242
+ this.timer = timer;
7243
+ if (typeof timer === "object" && "unref" in timer)
7244
+ timer.unref();
7181
7245
  }
7182
7246
  async stop() {
7183
- if (this.timer)
7184
- clearInterval(this.timer);
7247
+ const timer = this.timer;
7185
7248
  this.timer = null;
7186
- await this.inFlight?.catch(() => {});
7187
- this.inFlight = null;
7249
+ this.timerGeneration += 1;
7250
+ if (timer !== null)
7251
+ clearInterval(timer);
7252
+ const inFlight = this.inFlight;
7253
+ await inFlight?.catch(() => {});
7188
7254
  }
7189
7255
  tick() {
7190
7256
  if (this.inFlight)
@@ -7301,6 +7367,7 @@ class RetentionService {
7301
7367
  db;
7302
7368
  now;
7303
7369
  timer = null;
7370
+ timerGeneration = 0;
7304
7371
  inFlight = null;
7305
7372
  intervalMs;
7306
7373
  auditLogDays;
@@ -7313,18 +7380,27 @@ class RetentionService {
7313
7380
  this.refreshTokenDays = config.refreshTokenDays ?? 30;
7314
7381
  }
7315
7382
  start() {
7316
- if (this.timer)
7383
+ if (this.timer !== null)
7317
7384
  return;
7318
7385
  this.sweep();
7319
- this.timer = setInterval(() => void this.sweep(), this.intervalMs);
7320
- if (typeof this.timer === "object" && "unref" in this.timer)
7321
- this.timer.unref();
7386
+ const generation = ++this.timerGeneration;
7387
+ let timer;
7388
+ timer = setInterval(() => {
7389
+ if (this.timer === timer && this.timerGeneration === generation)
7390
+ this.sweep();
7391
+ }, this.intervalMs);
7392
+ this.timer = timer;
7393
+ if (typeof timer === "object" && "unref" in timer)
7394
+ timer.unref();
7322
7395
  }
7323
7396
  async stop() {
7324
- if (this.timer)
7325
- clearInterval(this.timer);
7397
+ const timer = this.timer;
7326
7398
  this.timer = null;
7327
- await this.inFlight?.catch(() => {});
7399
+ this.timerGeneration += 1;
7400
+ if (timer !== null)
7401
+ clearInterval(timer);
7402
+ const inFlight = this.inFlight;
7403
+ await inFlight?.catch(() => {});
7328
7404
  }
7329
7405
  sweep() {
7330
7406
  if (this.inFlight)
@@ -7869,20 +7945,22 @@ ${msg.text}` : `[mail] to=${msg.to} subject="${msg.subject}"`));
7869
7945
  const cron = new CronService(db);
7870
7946
  const retention = new RetentionService(db, config.retention);
7871
7947
  const net = new NetService(db, config.netFetch, undefined, (d) => log(`[net] ${d.method} ${d.url} -> ${d.timedOut ? "TIMEOUT" : d.error ? "FAILED " + d.error : d.status}`));
7872
- try {
7873
- await realtime.start();
7874
- cleanup.push(() => realtime.stop());
7875
- if (config.webhooks?.length)
7876
- await webhooks.start(config.webhooks);
7877
- cleanup.push(() => webhooks.stopService());
7878
- cron.start();
7879
- cleanup.push(() => cron.stop());
7880
- retention.start();
7881
- cleanup.push(() => retention.stop());
7882
- net.start();
7883
- cleanup.push(() => net.stop());
7884
- } catch (e) {
7885
- await failStartup(e);
7948
+ if (config.startRuntimeServices !== false) {
7949
+ try {
7950
+ await realtime.start();
7951
+ cleanup.push(() => realtime.stop());
7952
+ if (config.webhooks?.length)
7953
+ await webhooks.start(config.webhooks);
7954
+ cleanup.push(() => webhooks.stopService());
7955
+ cron.start();
7956
+ cleanup.push(() => cron.stop());
7957
+ retention.start();
7958
+ cleanup.push(() => retention.stop());
7959
+ net.start();
7960
+ cleanup.push(() => net.stop());
7961
+ } catch (e) {
7962
+ await failStartup(e);
7963
+ }
7886
7964
  }
7887
7965
  const fnMap = config.functions instanceof Map ? config.functions : new Map(Object.entries(config.functions ?? {}));
7888
7966
  const fnEnv = {
@@ -8077,7 +8155,8 @@ async function computeDbDiff(opts) {
8077
8155
  const schema = opts.schema ?? "public";
8078
8156
  const shadow = await createBackend({
8079
8157
  engine: opts.makeShadowEngine ? await opts.makeShadowEngine() : undefined,
8080
- migrations: opts.migrations
8158
+ migrations: opts.migrations,
8159
+ startRuntimeServices: false
8081
8160
  });
8082
8161
  let live;
8083
8162
  let operationFailed = false;
@@ -8085,7 +8164,8 @@ async function computeDbDiff(opts) {
8085
8164
  live = await createBackend({
8086
8165
  engine: opts.liveEngine,
8087
8166
  dataDir: opts.liveEngine ? undefined : opts.liveDataDir,
8088
- migrations: opts.migrations
8167
+ migrations: opts.migrations,
8168
+ startRuntimeServices: false
8089
8169
  });
8090
8170
  const shadowSnap = await snapshotSchema(shadow.db, schema);
8091
8171
  const liveSnap = await snapshotSchema(live.db, schema);
@@ -8106,7 +8186,8 @@ async function pullSchema(opts) {
8106
8186
  const schema = opts.schema ?? "public";
8107
8187
  const shadow = await createBackend({
8108
8188
  engine: opts.makeShadowEngine ? await opts.makeShadowEngine() : undefined,
8109
- migrations: opts.migrations
8189
+ migrations: opts.migrations,
8190
+ startRuntimeServices: false
8110
8191
  });
8111
8192
  let live;
8112
8193
  let operationFailed = false;
@@ -8114,7 +8195,8 @@ async function pullSchema(opts) {
8114
8195
  live = await createBackend({
8115
8196
  engine: opts.liveEngine,
8116
8197
  dataDir: opts.liveEngine ? undefined : opts.liveDataDir,
8117
- migrations: opts.migrations
8198
+ migrations: opts.migrations,
8199
+ startRuntimeServices: false
8118
8200
  });
8119
8201
  const ddl = diffSchemas(await snapshotSchema(shadow.db, schema), await snapshotSchema(live.db, schema), schema);
8120
8202
  if (ddl.length === 0)
@@ -9084,6 +9166,7 @@ async function createProjectBackend(options = {}) {
9084
9166
  functionVerifyJwt: Object.fromEntries(Object.entries(config.functions).map(([name, functionOptions]) => [name, functionOptions.verifyJwt !== false])),
9085
9167
  functionEnv,
9086
9168
  webhooks,
9169
+ startRuntimeServices: options.startRuntimeServices,
9087
9170
  storageDriver: options.storageDriver ?? createStorageDriver(configuredStorageBackend, paths.storageDir, options.s3),
9088
9171
  log: options.log
9089
9172
  });
@@ -9119,7 +9202,7 @@ function createStorageDriver(backend, storageDir, s3Options) {
9119
9202
  }
9120
9203
  async function startProjectServer(options = {}) {
9121
9204
  const resolvedOptions = options.port === 0 ? { ...options, port: await findEphemeralPort(options.host) } : options;
9122
- const project = await createProjectBackend(resolvedOptions);
9205
+ const project = await createProjectBackend({ ...resolvedOptions, startRuntimeServices: true });
9123
9206
  try {
9124
9207
  const server = await serveBun(project.backend, { host: project.host, port: project.port });
9125
9208
  let closePromise = null;
@@ -9704,7 +9787,13 @@ Use --service-role to print the privileged key.`);
9704
9787
  if (options.positionals[0] && options.positionals[0] !== "types" && options.positionals[0] !== "typescript") {
9705
9788
  throw new Error(`unknown gen subcommand: ${options.positionals[0]}`);
9706
9789
  }
9707
- const project2 = await createProjectBackend({ ...options, includeFunctions: false, includeWebhooks: false, log: quietLog });
9790
+ const project2 = await createProjectBackend({
9791
+ ...options,
9792
+ includeFunctions: false,
9793
+ includeWebhooks: false,
9794
+ startRuntimeServices: false,
9795
+ log: quietLog
9796
+ });
9708
9797
  try {
9709
9798
  const source = await generateTypes(project2.backend.db, "public");
9710
9799
  if (options.output) {
@@ -9719,7 +9808,13 @@ Use --service-role to print the privileged key.`);
9719
9808
  return;
9720
9809
  }
9721
9810
  if (options.command === "inspect") {
9722
- const project2 = await createProjectBackend({ ...options, includeFunctions: false, includeWebhooks: false, log: quietLog });
9811
+ const project2 = await createProjectBackend({
9812
+ ...options,
9813
+ includeFunctions: false,
9814
+ includeWebhooks: false,
9815
+ startRuntimeServices: false,
9816
+ log: quietLog
9817
+ });
9723
9818
  try {
9724
9819
  printInspection(await inspectDb(project2.backend.db, "public"));
9725
9820
  } finally {
@@ -9734,6 +9829,7 @@ Use --service-role to print the privileged key.`);
9734
9829
  includeFunctions: false,
9735
9830
  includeWebhooks: false,
9736
9831
  includeSeed: options.command === "migrate",
9832
+ startRuntimeServices: false,
9737
9833
  log: quietLog
9738
9834
  });
9739
9835
  try {
@@ -9781,7 +9877,13 @@ async function runDbCommand(options) {
9781
9877
  if (paths.dataDir)
9782
9878
  await rm4(paths.dataDir, { recursive: true, force: true });
9783
9879
  await rm4(paths.storageDir, { recursive: true, force: true });
9784
- const project2 = await createProjectBackend({ ...options, includeFunctions: false, includeWebhooks: false, log: quietLog });
9880
+ const project2 = await createProjectBackend({
9881
+ ...options,
9882
+ includeFunctions: false,
9883
+ includeWebhooks: false,
9884
+ startRuntimeServices: false,
9885
+ log: quietLog
9886
+ });
9785
9887
  try {
9786
9888
  const applied = await project2.backend.db.listAppliedMigrations();
9787
9889
  console.log(`reset complete: ${applied.length} migration(s) applied`);
@@ -9871,6 +9973,7 @@ async function runUpgradeCommand(options) {
9871
9973
  includeFunctions: false,
9872
9974
  includeWebhooks: false,
9873
9975
  includeSeed: true,
9976
+ startRuntimeServices: false,
9874
9977
  log: quietLog
9875
9978
  });
9876
9979
  try {
package/dist/index.js CHANGED
@@ -71,7 +71,7 @@ function randomToken(bytes = 32) {
71
71
  // package.json
72
72
  var package_default = {
73
73
  name: "@supacloud/lite",
74
- version: "0.5.3",
74
+ version: "0.5.4",
75
75
  description: "Bun-native, single-project Supabase-compatible backend powered by PGlite",
76
76
  type: "module",
77
77
  license: "Apache-2.0",
@@ -3532,7 +3532,9 @@ class Database {
3532
3532
  schemaCache = new Map;
3533
3533
  fnCache = new Map;
3534
3534
  cdcListeners = new Set;
3535
- cdcStarted = false;
3535
+ cdcStarting = null;
3536
+ cdcStopping = null;
3537
+ cdcUnsubscribe = null;
3536
3538
  constructor(engine) {
3537
3539
  this.engine = engine;
3538
3540
  }
@@ -3779,17 +3781,54 @@ class Database {
3779
3781
  }
3780
3782
  async onCdcEvent(cb) {
3781
3783
  this.cdcListeners.add(cb);
3782
- if (!this.cdcStarted) {
3783
- this.cdcStarted = true;
3784
- await this.engine.listen("tinbase_cdc", (payload) => {
3785
- try {
3786
- const event = JSON.parse(payload);
3787
- for (const listener of this.cdcListeners)
3788
- listener(event);
3789
- } catch {}
3790
- });
3784
+ try {
3785
+ await this.startCdcListener();
3786
+ } catch (error) {
3787
+ this.cdcListeners.delete(cb);
3788
+ throw error;
3789
+ }
3790
+ return async () => {
3791
+ if (!this.cdcListeners.delete(cb) || this.cdcListeners.size > 0)
3792
+ return;
3793
+ await this.stopCdcListener();
3794
+ };
3795
+ }
3796
+ async startCdcListener() {
3797
+ if (this.cdcStopping)
3798
+ await this.cdcStopping;
3799
+ if (this.cdcUnsubscribe)
3800
+ return;
3801
+ const starting = this.cdcStarting ?? this.attachCdcListener();
3802
+ this.cdcStarting = starting;
3803
+ try {
3804
+ await starting;
3805
+ } finally {
3806
+ if (this.cdcStarting === starting)
3807
+ this.cdcStarting = null;
3808
+ }
3809
+ }
3810
+ async attachCdcListener() {
3811
+ this.cdcUnsubscribe = await this.engine.listen("tinbase_cdc", (payload) => {
3812
+ try {
3813
+ const event = JSON.parse(payload);
3814
+ for (const listener of this.cdcListeners)
3815
+ listener(event);
3816
+ } catch {}
3817
+ });
3818
+ }
3819
+ async stopCdcListener() {
3820
+ const unsubscribe = this.cdcUnsubscribe;
3821
+ if (!unsubscribe)
3822
+ return;
3823
+ this.cdcUnsubscribe = null;
3824
+ const stopping = Promise.resolve().then(unsubscribe);
3825
+ this.cdcStopping = stopping;
3826
+ try {
3827
+ await stopping;
3828
+ } finally {
3829
+ if (this.cdcStopping === stopping)
3830
+ this.cdcStopping = null;
3791
3831
  }
3792
- return () => this.cdcListeners.delete(cb);
3793
3832
  }
3794
3833
  get jsCdc() {
3795
3834
  return !!this.engine.minimalBootstrap;
@@ -3928,14 +3967,22 @@ class RealtimeEngine {
3928
3967
  } catch {}
3929
3968
  });
3930
3969
  }
3931
- stop() {
3932
- this.stopCdc?.();
3970
+ async stop() {
3971
+ const stopCdc = this.stopCdc;
3972
+ const stopDbBroadcast = this.stopDbBroadcast;
3933
3973
  this.stopCdc = null;
3934
- this.stopDbBroadcast?.();
3935
3974
  this.stopDbBroadcast = null;
3936
3975
  for (const conn of this.connections)
3937
3976
  conn.socket.close(1001, "server shutting down");
3938
3977
  this.connections.clear();
3978
+ const [cdcStop, broadcastStop] = await Promise.allSettled([
3979
+ Promise.resolve().then(() => stopCdc?.()),
3980
+ Promise.resolve().then(() => stopDbBroadcast?.())
3981
+ ]);
3982
+ if (cdcStop.status === "rejected")
3983
+ throw cdcStop.reason;
3984
+ if (broadcastStop.status === "rejected")
3985
+ throw broadcastStop.reason;
3939
3986
  }
3940
3987
  connect(socket, opts = {}) {
3941
3988
  const conn = { socket, channels: new Map, vsn: opts.vsn ?? "1.0.0" };
@@ -6955,6 +7002,7 @@ class NetService {
6955
7002
  tickMs;
6956
7003
  onDeliver;
6957
7004
  timer = null;
7005
+ timerGeneration = 0;
6958
7006
  inFlight = null;
6959
7007
  constructor(db, fetchImpl = fetch, tickMs = 500, onDeliver) {
6960
7008
  this.db = db;
@@ -6963,18 +7011,26 @@ class NetService {
6963
7011
  this.onDeliver = onDeliver;
6964
7012
  }
6965
7013
  start() {
6966
- if (this.timer)
7014
+ if (this.timer !== null)
6967
7015
  return;
6968
- this.timer = setInterval(() => void this.tick(), this.tickMs);
6969
- if (typeof this.timer === "object" && "unref" in this.timer)
6970
- this.timer.unref();
7016
+ const generation = ++this.timerGeneration;
7017
+ let timer;
7018
+ timer = setInterval(() => {
7019
+ if (this.timer === timer && this.timerGeneration === generation)
7020
+ this.tick();
7021
+ }, this.tickMs);
7022
+ this.timer = timer;
7023
+ if (typeof timer === "object" && "unref" in timer)
7024
+ timer.unref();
6971
7025
  }
6972
7026
  async stop() {
6973
- if (this.timer)
6974
- clearInterval(this.timer);
7027
+ const timer = this.timer;
6975
7028
  this.timer = null;
6976
- await this.inFlight?.catch(() => {});
6977
- this.inFlight = null;
7029
+ this.timerGeneration += 1;
7030
+ if (timer !== null)
7031
+ clearInterval(timer);
7032
+ const inFlight = this.inFlight;
7033
+ await inFlight?.catch(() => {});
6978
7034
  }
6979
7035
  tick() {
6980
7036
  if (this.inFlight)
@@ -7113,10 +7169,11 @@ class WebhooksService {
7113
7169
  this.started = true;
7114
7170
  this.stop = await this.db.onCdcEvent((e) => this.dispatch(e));
7115
7171
  }
7116
- stopService() {
7117
- this.stop?.();
7172
+ async stopService() {
7173
+ const stop = this.stop;
7118
7174
  this.stop = null;
7119
7175
  this.started = false;
7176
+ await stop?.();
7120
7177
  }
7121
7178
  dispatch(event) {
7122
7179
  for (const hook of this.hooks) {
@@ -7169,6 +7226,7 @@ class CronService {
7169
7226
  tickMs;
7170
7227
  now;
7171
7228
  timer = null;
7229
+ timerGeneration = 0;
7172
7230
  lastRun = new Map;
7173
7231
  lastMinute = new Map;
7174
7232
  inFlight = null;
@@ -7178,18 +7236,26 @@ class CronService {
7178
7236
  this.now = now;
7179
7237
  }
7180
7238
  start() {
7181
- if (this.timer)
7239
+ if (this.timer !== null)
7182
7240
  return;
7183
- this.timer = setInterval(() => void this.tick(), this.tickMs);
7184
- if (typeof this.timer === "object" && "unref" in this.timer)
7185
- this.timer.unref();
7241
+ const generation = ++this.timerGeneration;
7242
+ let timer;
7243
+ timer = setInterval(() => {
7244
+ if (this.timer === timer && this.timerGeneration === generation)
7245
+ this.tick();
7246
+ }, this.tickMs);
7247
+ this.timer = timer;
7248
+ if (typeof timer === "object" && "unref" in timer)
7249
+ timer.unref();
7186
7250
  }
7187
7251
  async stop() {
7188
- if (this.timer)
7189
- clearInterval(this.timer);
7252
+ const timer = this.timer;
7190
7253
  this.timer = null;
7191
- await this.inFlight?.catch(() => {});
7192
- this.inFlight = null;
7254
+ this.timerGeneration += 1;
7255
+ if (timer !== null)
7256
+ clearInterval(timer);
7257
+ const inFlight = this.inFlight;
7258
+ await inFlight?.catch(() => {});
7193
7259
  }
7194
7260
  tick() {
7195
7261
  if (this.inFlight)
@@ -7306,6 +7372,7 @@ class RetentionService {
7306
7372
  db;
7307
7373
  now;
7308
7374
  timer = null;
7375
+ timerGeneration = 0;
7309
7376
  inFlight = null;
7310
7377
  intervalMs;
7311
7378
  auditLogDays;
@@ -7318,18 +7385,27 @@ class RetentionService {
7318
7385
  this.refreshTokenDays = config.refreshTokenDays ?? 30;
7319
7386
  }
7320
7387
  start() {
7321
- if (this.timer)
7388
+ if (this.timer !== null)
7322
7389
  return;
7323
7390
  this.sweep();
7324
- this.timer = setInterval(() => void this.sweep(), this.intervalMs);
7325
- if (typeof this.timer === "object" && "unref" in this.timer)
7326
- this.timer.unref();
7391
+ const generation = ++this.timerGeneration;
7392
+ let timer;
7393
+ timer = setInterval(() => {
7394
+ if (this.timer === timer && this.timerGeneration === generation)
7395
+ this.sweep();
7396
+ }, this.intervalMs);
7397
+ this.timer = timer;
7398
+ if (typeof timer === "object" && "unref" in timer)
7399
+ timer.unref();
7327
7400
  }
7328
7401
  async stop() {
7329
- if (this.timer)
7330
- clearInterval(this.timer);
7402
+ const timer = this.timer;
7331
7403
  this.timer = null;
7332
- await this.inFlight?.catch(() => {});
7404
+ this.timerGeneration += 1;
7405
+ if (timer !== null)
7406
+ clearInterval(timer);
7407
+ const inFlight = this.inFlight;
7408
+ await inFlight?.catch(() => {});
7333
7409
  }
7334
7410
  sweep() {
7335
7411
  if (this.inFlight)
@@ -7713,20 +7789,22 @@ ${msg.text}` : `[mail] to=${msg.to} subject="${msg.subject}"`));
7713
7789
  const cron = new CronService(db);
7714
7790
  const retention = new RetentionService(db, config.retention);
7715
7791
  const net = new NetService(db, config.netFetch, undefined, (d) => log(`[net] ${d.method} ${d.url} -> ${d.timedOut ? "TIMEOUT" : d.error ? "FAILED " + d.error : d.status}`));
7716
- try {
7717
- await realtime.start();
7718
- cleanup.push(() => realtime.stop());
7719
- if (config.webhooks?.length)
7720
- await webhooks.start(config.webhooks);
7721
- cleanup.push(() => webhooks.stopService());
7722
- cron.start();
7723
- cleanup.push(() => cron.stop());
7724
- retention.start();
7725
- cleanup.push(() => retention.stop());
7726
- net.start();
7727
- cleanup.push(() => net.stop());
7728
- } catch (e) {
7729
- await failStartup(e);
7792
+ if (config.startRuntimeServices !== false) {
7793
+ try {
7794
+ await realtime.start();
7795
+ cleanup.push(() => realtime.stop());
7796
+ if (config.webhooks?.length)
7797
+ await webhooks.start(config.webhooks);
7798
+ cleanup.push(() => webhooks.stopService());
7799
+ cron.start();
7800
+ cleanup.push(() => cron.stop());
7801
+ retention.start();
7802
+ cleanup.push(() => retention.stop());
7803
+ net.start();
7804
+ cleanup.push(() => net.stop());
7805
+ } catch (e) {
7806
+ await failStartup(e);
7807
+ }
7730
7808
  }
7731
7809
  const fnMap = config.functions instanceof Map ? config.functions : new Map(Object.entries(config.functions ?? {}));
7732
7810
  const fnEnv = {
@@ -8772,6 +8850,7 @@ async function createProjectBackend(options = {}) {
8772
8850
  functionVerifyJwt: Object.fromEntries(Object.entries(config.functions).map(([name, functionOptions]) => [name, functionOptions.verifyJwt !== false])),
8773
8851
  functionEnv,
8774
8852
  webhooks,
8853
+ startRuntimeServices: options.startRuntimeServices,
8775
8854
  storageDriver: options.storageDriver ?? createStorageDriver(configuredStorageBackend, paths.storageDir, options.s3),
8776
8855
  log: options.log
8777
8856
  });
@@ -8807,7 +8886,7 @@ function createStorageDriver(backend, storageDir, s3Options) {
8807
8886
  }
8808
8887
  async function startProjectServer(options = {}) {
8809
8888
  const resolvedOptions = options.port === 0 ? { ...options, port: await findEphemeralPort(options.host) } : options;
8810
- const project = await createProjectBackend(resolvedOptions);
8889
+ const project = await createProjectBackend({ ...resolvedOptions, startRuntimeServices: true });
8811
8890
  try {
8812
8891
  const server = await serveBun(project.backend, { host: project.host, port: project.port });
8813
8892
  let closePromise = null;
@@ -32,6 +32,7 @@ export interface ProjectRuntimeOptions {
32
32
  includeFunctions?: boolean;
33
33
  includeWebhooks?: boolean;
34
34
  includeSeed?: boolean;
35
+ startRuntimeServices?: boolean;
35
36
  log?: (message: string) => void;
36
37
  }
37
38
  export interface ProjectBackend {
@@ -1 +1 @@
1
- {"version":3,"file":"project-runtime.d.ts","sourceRoot":"","sources":["../src/project-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-runtime.d.ts","sourceRoot":"","sources":["../src/project-runtime.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ export declare class CronService {
18
18
  private tickMs;
19
19
  private now;
20
20
  private timer;
21
+ private timerGeneration;
21
22
  private lastRun;
22
23
  private lastMinute;
23
24
  /** The in-flight tick, tracked so stop() can drain it before db.close(). */
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/vendor/tinbase/cron/service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAUjD;;;;GAIG;AACH,qBAAa,WAAW;IAQpB,OAAO,CAAC,EAAE;IACV,kFAAkF;IAClF,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,GAAG;IAVb,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,UAAU,CAA4B;IAC9C,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAA6B;gBAGnC,EAAE,EAAE,QAAQ;IACpB,kFAAkF;IAC1E,MAAM,SAAO,EACb,GAAG,GAAE,MAAM,IAAuB;IAG5C,iFAAiF;IACjF,KAAK,IAAI,IAAI;IAMb;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,+DAA+D;IAC/D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAWP,OAAO;IAarB,OAAO,CAAC,KAAK;YAcC,GAAG;YAYH,GAAG;CAWlB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAe7D"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/vendor/tinbase/cron/service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAUjD;;;;GAIG;AACH,qBAAa,WAAW;IASpB,OAAO,CAAC,EAAE;IACV,kFAAkF;IAClF,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,GAAG;IAXb,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,eAAe,CAAI;IAC3B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,UAAU,CAA4B;IAC9C,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAA6B;gBAGnC,EAAE,EAAE,QAAQ;IACpB,kFAAkF;IAC1E,MAAM,SAAO,EACb,GAAG,GAAE,MAAM,IAAuB;IAG5C,iFAAiF;IACjF,KAAK,IAAI,IAAI;IAWb;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,+DAA+D;IAC/D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAWP,OAAO;IAarB,OAAO,CAAC,KAAK;YAcC,GAAG;YAYH,GAAG;CAWlB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAe7D"}
@@ -85,7 +85,9 @@ export declare class Database {
85
85
  private schemaCache;
86
86
  private fnCache;
87
87
  private cdcListeners;
88
- private cdcStarted;
88
+ private cdcStarting;
89
+ private cdcStopping;
90
+ private cdcUnsubscribe;
89
91
  private constructor();
90
92
  /** Create a Database on PGlite (default) or any custom DbEngine. */
91
93
  static create(dataDirOrEngine?: string | DbEngine, opts?: {
@@ -135,7 +137,10 @@ export declare class Database {
135
137
  * Register a CDC listener; the first call starts the single LISTEN on the
136
138
  * shared `tinbase_cdc` channel. Returns an unsubscribe fn.
137
139
  */
138
- onCdcEvent(cb: (e: CdcEvent) => void): Promise<() => void>;
140
+ onCdcEvent(cb: (e: CdcEvent) => void): Promise<() => Promise<void>>;
141
+ private startCdcListener;
142
+ private attachCdcListener;
143
+ private stopCdcListener;
139
144
  /**
140
145
  * True when the engine can't run the trigger + `pg_notify` CDC pipeline
141
146
  * (pg-mem has no triggers/LISTEN/NOTIFY). For those engines the REST layer
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../../src/vendor/tinbase/db/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../../src/vendor/tinbase/db/database.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,8 @@ export interface EngineTx {
18
18
  /** run one or more statements within the transaction (no params) */
19
19
  exec(sql: string): Promise<void>;
20
20
  }
21
+ /** Detach a database listener; some engines issue an asynchronous UNLISTEN. */
22
+ export type EngineUnsubscribe = () => void | Promise<void>;
21
23
  /**
22
24
  * The single database interface the rest of tinbase talks to, regardless of
23
25
  * whether it's backed by PGlite, native embedded Postgres, or the pg-mem subset.
@@ -32,7 +34,7 @@ export interface DbEngine {
32
34
  /** serialized transaction; implementations must guarantee mutual exclusion */
33
35
  transaction<T>(fn: (tx: EngineTx) => Promise<T>): Promise<T>;
34
36
  /** subscribe to pg_notify on a channel; returns an unsubscribe function */
35
- listen(channel: string, cb: (payload: string) => void): Promise<() => void>;
37
+ listen(channel: string, cb: (payload: string) => void): Promise<EngineUnsubscribe>;
36
38
  /** close the underlying connection/instance */
37
39
  close(): Promise<void>;
38
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../src/vendor/tinbase/db/engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,iFAAiF;AACjF,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,GAAG;IACpC,gCAAgC;IAChC,IAAI,EAAE,CAAC,EAAE,CAAA;IACT,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,+EAA+E;AAC/E,MAAM,WAAW,QAAQ;IACvB,uDAAuD;IACvD,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1E,oEAAoE;IACpE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,qFAAqF;IACrF,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gCAAgC;IAChC,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1E,8CAA8C;IAC9C,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,8EAA8E;IAC9E,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAC5D,2EAA2E;IAC3E,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAA;IAC3E,+CAA+C;IAC/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,yEAAyE;AACzE,qBAAa,KAAK;IAChB,OAAO,CAAC,IAAI,CAAmC;IAE/C,uFAAuF;IACjF,IAAI,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;IASjC,qEAAqE;IAC/D,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAQ/C"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../src/vendor/tinbase/db/engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,iFAAiF;AACjF,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,GAAG;IACpC,gCAAgC;IAChC,IAAI,EAAE,CAAC,EAAE,CAAA;IACT,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,+EAA+E;AAC/E,MAAM,WAAW,QAAQ;IACvB,uDAAuD;IACvD,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1E,oEAAoE;IACpE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACjC;AAED,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAE1D;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,qFAAqF;IACrF,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gCAAgC;IAChC,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1E,8CAA8C;IAC9C,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,8EAA8E;IAC9E,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAC5D,2EAA2E;IAC3E,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAClF,+CAA+C;IAC/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,yEAAyE;AACzE,qBAAa,KAAK;IAChB,OAAO,CAAC,IAAI,CAAmC;IAE/C,uFAAuF;IACjF,IAAI,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;IASjC,qEAAqE;IAC/D,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAQ/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"pglite-engine.d.ts","sourceRoot":"","sources":["../../../../src/vendor/tinbase/db/pglite-engine.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAA2B,MAAM,aAAa,CAAA;AAOpE;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmG5E"}
1
+ {"version":3,"file":"pglite-engine.d.ts","sourceRoot":"","sources":["../../../../src/vendor/tinbase/db/pglite-engine.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAA8C,MAAM,aAAa,CAAA;AAOvF;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmG5E"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vendor/tinbase/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAqB,MAAM,wBAAwB,CAAA;AAG5E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAIrD,OAAO,EAAE,eAAe,EAAwB,MAAM,uBAAuB,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAoB,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,KAAK,EAAE,aAAa,EAAU,aAAa,EAAkB,MAAM,YAAY,CAAA;AAGtF,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9E,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAClG,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACjG,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACtF,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3D;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,oGAAoG;IACpG,KAAK,EAAE,OAAO,KAAK,CAAA;IACnB,mFAAmF;IACnF,EAAE,EAAE,QAAQ,CAAA;IACZ,6EAA6E;IAC7E,QAAQ,EAAE,cAAc,CAAA;IACxB,6EAA6E;IAC7E,SAAS,EAAE,gBAAgB,CAAA;IAC3B,qEAAqE;IACrE,QAAQ,EAAE,eAAe,CAAA;IACzB,mCAAmC;IACnC,IAAI,EAAE,WAAW,CAAA;IACjB,wDAAwD;IACxD,GAAG,EAAE,UAAU,CAAA;IACf,6EAA6E;IAC7E,SAAS,EAAE,gBAAgB,CAAA;IAC3B,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAA;IACf,+CAA+C;IAC/C,cAAc,EAAE,MAAM,CAAA;IACtB,oFAAoF;IACpF,SAAS,EAAE,MAAM,CAAA;IACjB,kEAAkE;IAClE,IAAI,EAAE,SAAS,CAAA;IACf,4FAA4F;IAC5F,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;IACzB,8CAA8C;IAC9C,OAAO,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC7E,gGAAgG;IAChG,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B;AAWD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,aAAa,CAAC,MAAM,GAAE,aAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAqWvF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vendor/tinbase/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAqB,MAAM,wBAAwB,CAAA;AAG5E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAIrD,OAAO,EAAE,eAAe,EAAwB,MAAM,uBAAuB,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAoB,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,KAAK,EAAE,aAAa,EAAU,aAAa,EAAkB,MAAM,YAAY,CAAA;AAGtF,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9E,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAClG,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACjG,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACtF,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3D;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,oGAAoG;IACpG,KAAK,EAAE,OAAO,KAAK,CAAA;IACnB,mFAAmF;IACnF,EAAE,EAAE,QAAQ,CAAA;IACZ,6EAA6E;IAC7E,QAAQ,EAAE,cAAc,CAAA;IACxB,6EAA6E;IAC7E,SAAS,EAAE,gBAAgB,CAAA;IAC3B,qEAAqE;IACrE,QAAQ,EAAE,eAAe,CAAA;IACzB,mCAAmC;IACnC,IAAI,EAAE,WAAW,CAAA;IACjB,wDAAwD;IACxD,GAAG,EAAE,UAAU,CAAA;IACf,6EAA6E;IAC7E,SAAS,EAAE,gBAAgB,CAAA;IAC3B,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAA;IACf,+CAA+C;IAC/C,cAAc,EAAE,MAAM,CAAA;IACtB,oFAAoF;IACpF,SAAS,EAAE,MAAM,CAAA;IACjB,kEAAkE;IAClE,IAAI,EAAE,SAAS,CAAA;IACf,4FAA4F;IAC5F,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;IACzB,8CAA8C;IAC9C,OAAO,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC7E,gGAAgG;IAChG,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B;AAWD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,aAAa,CAAC,MAAM,GAAE,aAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAuWvF"}
@@ -49,6 +49,7 @@ export declare class NetService {
49
49
  private tickMs;
50
50
  private onDeliver?;
51
51
  private timer;
52
+ private timerGeneration;
52
53
  /** The in-flight tick, tracked so stop() can drain it before db.close(). */
53
54
  private inFlight;
54
55
  constructor(db: Database, fetchImpl?: typeof fetch,
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/vendor/tinbase/net/service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAQjD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmB9D;AAqBD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAWlH;AAWD,mFAAmF;AACnF,MAAM,WAAW,WAAW;IAC1B,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iDAAiD;IACjD,QAAQ,EAAE,OAAO,CAAA;IACjB,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;GAIG;AACH,qBAAa,UAAU;IAMnB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,SAAS;IACjB,wCAAwC;IACxC,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS,CAAC;IATpB,OAAO,CAAC,KAAK,CAA8C;IAC3D,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAA6B;gBAGnC,EAAE,EAAE,QAAQ,EACZ,SAAS,GAAE,OAAO,KAAa;IACvC,wCAAwC;IAChC,MAAM,SAAM,EACZ,SAAS,CAAC,GAAE,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,aAAA;IAG9C,+EAA+E;IAC/E,KAAK,IAAI,IAAI;IAMb;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,wEAAwE;IACxE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAWP,UAAU;YAwBV,OAAO;IA6CrB,+EAA+E;YACjE,MAAM;CAoBrB"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/vendor/tinbase/net/service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAQjD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmB9D;AAqBD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAWlH;AAWD,mFAAmF;AACnF,MAAM,WAAW,WAAW;IAC1B,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iDAAiD;IACjD,QAAQ,EAAE,OAAO,CAAA;IACjB,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;GAIG;AACH,qBAAa,UAAU;IAOnB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,SAAS;IACjB,wCAAwC;IACxC,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS,CAAC;IAVpB,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,eAAe,CAAI;IAC3B,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAA6B;gBAGnC,EAAE,EAAE,QAAQ,EACZ,SAAS,GAAE,OAAO,KAAa;IACvC,wCAAwC;IAChC,MAAM,SAAM,EACZ,SAAS,CAAC,GAAE,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,aAAA;IAG9C,+EAA+E;IAC/E,KAAK,IAAI,IAAI;IAWb;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,wEAAwE;IACxE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAWP,UAAU;YAwBV,OAAO;IA6CrB,+EAA+E;YACjE,MAAM;CAoBrB"}
@@ -42,7 +42,7 @@ export declare class RealtimeEngine {
42
42
  /** Wire up the CDC and database-broadcast listeners; idempotent once started. */
43
43
  start(): Promise<void>;
44
44
  /** Detach listeners and close every open socket (server shutdown). */
45
- stop(): void;
45
+ stop(): Promise<void>;
46
46
  /** Attach a socket. Returns callbacks the transport must wire up. */
47
47
  connect(socket: RealtimeSocketLike, opts?: {
48
48
  vsn?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../src/vendor/tinbase/realtime/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAK3D,gFAAgF;AAChF,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAA;IACrC,wEAAwE;IACxE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5C;AA+DD,uFAAuF;AACvF,qBAAa,cAAc;IAUvB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,SAAS,CAAC;IAVpB,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,aAAa,CAAI;IACzB,0BAA0B;IAC1B,OAAO,CAAC,QAAQ,CAAgD;IAChE,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,eAAe,CAA4B;gBAGzC,EAAE,EAAE,QAAQ,EACZ,SAAS,CAAC,EAAE,MAAM,YAAA;IAG5B,oEAAoE;YACtD,gBAAgB;IAQ9B;;;;;OAKG;YACW,gBAAgB;IA0C9B,6EAA6E;IAC7E,OAAO,CAAC,mBAAmB;IAc3B,iFAAiF;IAC3E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B,sEAAsE;IACtE,IAAI,IAAI,IAAI;IASZ,qEAAqE;IACrE,OAAO,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG;QAChE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,KAAK,IAAI,CAAA;QAC9C,OAAO,EAAE,MAAM,IAAI,CAAA;KACpB;IAcD,OAAO,CAAC,IAAI;IAYZ,OAAO,CAAC,KAAK;YAUC,aAAa;YAgEb,UAAU;IAsGxB,OAAO,CAAC,YAAY;IAmBpB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IA+BpB,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,cAAc;IA+CtB,OAAO,CAAC,gBAAgB;YAQV,WAAW;IAoDzB;;;;;;;OAOG;YACW,MAAM;IA6BpB,OAAO,CAAC,cAAc;CAUvB;AAkBD,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CA2BjF"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../src/vendor/tinbase/realtime/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAM3D,gFAAgF;AAChF,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAA;IACrC,wEAAwE;IACxE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5C;AA+DD,uFAAuF;AACvF,qBAAa,cAAc;IAUvB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,SAAS,CAAC;IAVpB,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,aAAa,CAAI;IACzB,0BAA0B;IAC1B,OAAO,CAAC,QAAQ,CAAgD;IAChE,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,eAAe,CAAiC;gBAG9C,EAAE,EAAE,QAAQ,EACZ,SAAS,CAAC,EAAE,MAAM,YAAA;IAG5B,oEAAoE;YACtD,gBAAgB;IAQ9B;;;;;OAKG;YACW,gBAAgB;IA0C9B,6EAA6E;IAC7E,OAAO,CAAC,mBAAmB;IAc3B,iFAAiF;IAC3E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B,sEAAsE;IAChE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B,qEAAqE;IACrE,OAAO,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG;QAChE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,KAAK,IAAI,CAAA;QAC9C,OAAO,EAAE,MAAM,IAAI,CAAA;KACpB;IAcD,OAAO,CAAC,IAAI;IAYZ,OAAO,CAAC,KAAK;YAUC,aAAa;YAgEb,UAAU;IAsGxB,OAAO,CAAC,YAAY;IAmBpB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IA+BpB,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,cAAc;IA+CtB,OAAO,CAAC,gBAAgB;YAQV,WAAW;IAoDzB;;;;;;;OAOG;YACW,MAAM;IA6BpB,OAAO,CAAC,cAAc;CAUvB;AAkBD,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CA2BjF"}
@@ -22,6 +22,7 @@ export declare class RetentionService {
22
22
  private db;
23
23
  private now;
24
24
  private timer;
25
+ private timerGeneration;
25
26
  private inFlight;
26
27
  private readonly intervalMs;
27
28
  private readonly auditLogDays;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/vendor/tinbase/retention/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,qFAAqF;AACrF,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,yFAAyF;IACzF,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,8FAA8F;IAC9F,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAID,wFAAwF;AACxF,qBAAa,gBAAgB;IAYzB,OAAO,CAAC,EAAE;IAEV,OAAO,CAAC,GAAG;IAbb,OAAO,CAAC,KAAK,CAA8C;IAK3D,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;gBAG/B,EAAE,EAAE,QAAQ,EACpB,MAAM,GAAE,eAAoB,EACpB,GAAG,GAAE,MAAM,IAAuB;IAO5C,qFAAqF;IACrF,KAAK,IAAI,IAAI;IAOb;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,qEAAqE;IACrE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAWR,QAAQ;YAgBR,GAAG;CAOlB"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/vendor/tinbase/retention/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,qFAAqF;AACrF,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,yFAAyF;IACzF,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,8FAA8F;IAC9F,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAID,wFAAwF;AACxF,qBAAa,gBAAgB;IAazB,OAAO,CAAC,EAAE;IAEV,OAAO,CAAC,GAAG;IAdb,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,eAAe,CAAI;IAK3B,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;gBAG/B,EAAE,EAAE,QAAQ,EACpB,MAAM,GAAE,eAAoB,EACpB,GAAG,GAAE,MAAM,IAAuB;IAO5C,qFAAqF;IACrF,KAAK,IAAI,IAAI;IAYb;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,qEAAqE;IACrE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAWR,QAAQ;YAgBR,GAAG;CAOlB"}
@@ -117,6 +117,8 @@ export interface BackendConfig {
117
117
  authRateLimits?: Record<string, import('./auth/rate-limit.js').RateLimitRule>;
118
118
  /** Mount the auth service. Default true; config.toml auth.enabled = false turns /auth/v1 off. */
119
119
  authEnabled?: boolean;
120
+ /** Start Realtime and background services. Disable for short-lived maintenance commands. Default true. */
121
+ startRuntimeServices?: boolean;
120
122
  }
121
123
  /** A rendered outbound email (OTP code, magic link, recovery, etc.). */
122
124
  export interface MailMessage {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/vendor/tinbase/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/vendor/tinbase/types.ts"],"names":[],"mappings":"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"}
@@ -64,7 +64,7 @@ export declare class WebhooksService {
64
64
  start(initial?: WebhookConfig[]): Promise<void>;
65
65
  private ensureStarted;
66
66
  /** Unsubscribe from the CDC stream; registered hooks are retained. */
67
- stopService(): void;
67
+ stopService(): Promise<void>;
68
68
  private dispatch;
69
69
  private deliver;
70
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/vendor/tinbase/webhooks/service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG3D,oFAAoF;AACpF,MAAM,WAAW,aAAa;IAC5B,qBAAqB;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,8CAA8C;IAC9C,MAAM,CAAC,EAAE,CAAC,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAA;IAC3C,sBAAsB;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,4FAA4F;AAC5F,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,aAAa,CAAA;IACtB,iDAAiD;IACjD,KAAK,EAAE,QAAQ,CAAA;IACf,oFAAoF;IACpF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,qCAAqC;IACrC,EAAE,EAAE,OAAO,CAAA;IACX,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,oFAAoF;AACpF,qBAAa,eAAe;IAMxB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,UAAU,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAbzB,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,OAAO,CAAQ;gBAGb,EAAE,EAAE,QAAQ,EACZ,SAAS,GAAE,OAAO,KAAa,EAC/B,UAAU,CAAC,GAAE,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,aAAA;IACjD;;;;OAIG;IACK,eAAe,UAAQ;IAGjC,yCAAyC;IACzC,IAAI,IAAI,aAAa,EAAE;IAIvB,4EAA4E;IACtE,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlD,8EAA8E;IACxE,KAAK,CAAC,OAAO,GAAE,aAAa,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAQ3C,aAAa;IAM3B,sEAAsE;IACtE,WAAW,IAAI,IAAI;IAMnB,OAAO,CAAC,QAAQ;YAUF,OAAO;CAmCtB"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/vendor/tinbase/webhooks/service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAI3D,oFAAoF;AACpF,MAAM,WAAW,aAAa;IAC5B,qBAAqB;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,8CAA8C;IAC9C,MAAM,CAAC,EAAE,CAAC,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAA;IAC3C,sBAAsB;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,4FAA4F;AAC5F,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,aAAa,CAAA;IACtB,iDAAiD;IACjD,KAAK,EAAE,QAAQ,CAAA;IACf,oFAAoF;IACpF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,qCAAqC;IACrC,EAAE,EAAE,OAAO,CAAA;IACX,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,oFAAoF;AACpF,qBAAa,eAAe;IAMxB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,UAAU,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAbzB,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,IAAI,CAAiC;IAC7C,OAAO,CAAC,OAAO,CAAQ;gBAGb,EAAE,EAAE,QAAQ,EACZ,SAAS,GAAE,OAAO,KAAa,EAC/B,UAAU,CAAC,GAAE,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,aAAA;IACjD;;;;OAIG;IACK,eAAe,UAAQ;IAGjC,yCAAyC;IACzC,IAAI,IAAI,aAAa,EAAE;IAIvB,4EAA4E;IACtE,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlD,8EAA8E;IACxE,KAAK,CAAC,OAAO,GAAE,aAAa,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAQ3C,aAAa;IAM3B,sEAAsE;IAChE,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAOlC,OAAO,CAAC,QAAQ;YAUF,OAAO;CAmCtB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@supacloud/lite",
3
- "version": "0.5.3",
3
+ "version": "0.5.4",
4
4
  "description": "Bun-native, single-project Supabase-compatible backend powered by PGlite",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",