@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 +9 -0
- package/dist/cli.js +165 -62
- package/dist/index.js +134 -55
- package/dist/project-runtime.d.ts +1 -0
- package/dist/project-runtime.d.ts.map +1 -1
- package/dist/vendor/tinbase/cron/service.d.ts +1 -0
- package/dist/vendor/tinbase/cron/service.d.ts.map +1 -1
- package/dist/vendor/tinbase/db/database.d.ts +7 -2
- package/dist/vendor/tinbase/db/database.d.ts.map +1 -1
- package/dist/vendor/tinbase/db/engine.d.ts +3 -1
- package/dist/vendor/tinbase/db/engine.d.ts.map +1 -1
- package/dist/vendor/tinbase/db/pglite-engine.d.ts.map +1 -1
- package/dist/vendor/tinbase/index.d.ts.map +1 -1
- package/dist/vendor/tinbase/net/service.d.ts +1 -0
- package/dist/vendor/tinbase/net/service.d.ts.map +1 -1
- package/dist/vendor/tinbase/realtime/engine.d.ts +1 -1
- package/dist/vendor/tinbase/realtime/engine.d.ts.map +1 -1
- package/dist/vendor/tinbase/retention/service.d.ts +1 -0
- package/dist/vendor/tinbase/retention/service.d.ts.map +1 -1
- package/dist/vendor/tinbase/types.d.ts +2 -0
- package/dist/vendor/tinbase/types.d.ts.map +1 -1
- package/dist/vendor/tinbase/webhooks/service.d.ts +1 -1
- package/dist/vendor/tinbase/webhooks/service.d.ts.map +1 -1
- package/package.json +1 -1
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.
|
|
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
|
-
|
|
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
|
-
|
|
3778
|
-
this.
|
|
3779
|
-
|
|
3780
|
-
|
|
3781
|
-
|
|
3782
|
-
|
|
3783
|
-
|
|
3784
|
-
|
|
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
|
-
|
|
6964
|
-
|
|
6965
|
-
|
|
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
|
-
|
|
6969
|
-
clearInterval(this.timer);
|
|
7022
|
+
const timer = this.timer;
|
|
6970
7023
|
this.timer = null;
|
|
6971
|
-
|
|
6972
|
-
|
|
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
|
-
|
|
7179
|
-
|
|
7180
|
-
|
|
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
|
-
|
|
7184
|
-
clearInterval(this.timer);
|
|
7247
|
+
const timer = this.timer;
|
|
7185
7248
|
this.timer = null;
|
|
7186
|
-
|
|
7187
|
-
|
|
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
|
-
|
|
7320
|
-
|
|
7321
|
-
|
|
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
|
-
|
|
7325
|
-
clearInterval(this.timer);
|
|
7397
|
+
const timer = this.timer;
|
|
7326
7398
|
this.timer = null;
|
|
7327
|
-
|
|
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
|
-
|
|
7873
|
-
|
|
7874
|
-
|
|
7875
|
-
|
|
7876
|
-
|
|
7877
|
-
|
|
7878
|
-
|
|
7879
|
-
|
|
7880
|
-
|
|
7881
|
-
|
|
7882
|
-
|
|
7883
|
-
|
|
7884
|
-
|
|
7885
|
-
|
|
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({
|
|
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({
|
|
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({
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
3783
|
-
this.
|
|
3784
|
-
|
|
3785
|
-
|
|
3786
|
-
|
|
3787
|
-
|
|
3788
|
-
|
|
3789
|
-
|
|
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
|
-
|
|
6969
|
-
|
|
6970
|
-
|
|
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
|
-
|
|
6974
|
-
clearInterval(this.timer);
|
|
7027
|
+
const timer = this.timer;
|
|
6975
7028
|
this.timer = null;
|
|
6976
|
-
|
|
6977
|
-
|
|
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
|
-
|
|
7184
|
-
|
|
7185
|
-
|
|
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
|
-
|
|
7189
|
-
clearInterval(this.timer);
|
|
7252
|
+
const timer = this.timer;
|
|
7190
7253
|
this.timer = null;
|
|
7191
|
-
|
|
7192
|
-
|
|
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
|
-
|
|
7325
|
-
|
|
7326
|
-
|
|
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
|
-
|
|
7330
|
-
clearInterval(this.timer);
|
|
7402
|
+
const timer = this.timer;
|
|
7331
7403
|
this.timer = null;
|
|
7332
|
-
|
|
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
|
-
|
|
7717
|
-
|
|
7718
|
-
|
|
7719
|
-
|
|
7720
|
-
|
|
7721
|
-
|
|
7722
|
-
|
|
7723
|
-
|
|
7724
|
-
|
|
7725
|
-
|
|
7726
|
-
|
|
7727
|
-
|
|
7728
|
-
|
|
7729
|
-
|
|
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;
|
|
@@ -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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"}
|
|
@@ -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;
|
|
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
|
|
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":"AAgBA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,
|
|
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<
|
|
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,
|
|
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,
|
|
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":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vendor/tinbase/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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;
|
|
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"}
|
|
@@ -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;
|
|
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;
|
|
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"}
|