swarm-mail 1.2.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapter.d.ts +2 -2
- package/dist/db/client.d.ts +68 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/drizzle.d.ts +24 -0
- package/dist/db/drizzle.d.ts.map +1 -0
- package/dist/db/index.d.ts +25 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/migrate.d.ts +81 -0
- package/dist/db/migrate.d.ts.map +1 -0
- package/dist/db/schema/hive.d.ts +1596 -0
- package/dist/db/schema/hive.d.ts.map +1 -0
- package/dist/db/schema/index.d.ts +12 -0
- package/dist/db/schema/index.d.ts.map +1 -0
- package/dist/db/schema/memory.d.ts +214 -0
- package/dist/db/schema/memory.d.ts.map +1 -0
- package/dist/db/schema/streams.d.ts +1601 -0
- package/dist/db/schema/streams.d.ts.map +1 -0
- package/dist/hive/adapter.d.ts +8 -8
- package/dist/hive/adapter.d.ts.map +1 -1
- package/dist/hive/dependencies-drizzle.d.ts +31 -0
- package/dist/hive/dependencies-drizzle.d.ts.map +1 -0
- package/dist/hive/dependencies.d.ts.map +1 -1
- package/dist/hive/flush-manager.d.ts +2 -1
- package/dist/hive/flush-manager.d.ts.map +1 -1
- package/dist/hive/jsonl.d.ts.map +1 -1
- package/dist/hive/migrations.d.ts +23 -3
- package/dist/hive/migrations.d.ts.map +1 -1
- package/dist/hive/projections-drizzle.d.ts +43 -0
- package/dist/hive/projections-drizzle.d.ts.map +1 -0
- package/dist/hive/projections.d.ts +8 -0
- package/dist/hive/projections.d.ts.map +1 -1
- package/dist/hive/queries-drizzle.d.ts +52 -0
- package/dist/hive/queries-drizzle.d.ts.map +1 -0
- package/dist/hive/queries.d.ts +38 -0
- package/dist/hive/queries.d.ts.map +1 -1
- package/dist/hive/store.d.ts +36 -14
- package/dist/hive/store.d.ts.map +1 -1
- package/dist/index.d.ts +34 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +83666 -38455
- package/dist/libsql.convenience.d.ts +155 -0
- package/dist/libsql.convenience.d.ts.map +1 -0
- package/dist/libsql.d.ts +93 -0
- package/dist/libsql.d.ts.map +1 -0
- package/dist/memory/adapter.d.ts +6 -7
- package/dist/memory/adapter.d.ts.map +1 -1
- package/dist/memory/libsql-schema.d.ts +83 -0
- package/dist/memory/libsql-schema.d.ts.map +1 -0
- package/dist/memory/migrate-legacy.d.ts +3 -0
- package/dist/memory/migrate-legacy.d.ts.map +1 -1
- package/dist/memory/migrations.d.ts +11 -0
- package/dist/memory/migrations.d.ts.map +1 -1
- package/dist/memory/store.d.ts +39 -31
- package/dist/memory/store.d.ts.map +1 -1
- package/dist/memory/test-utils.d.ts +59 -0
- package/dist/memory/test-utils.d.ts.map +1 -0
- package/dist/migrate-pglite-to-libsql.d.ts +73 -0
- package/dist/migrate-pglite-to-libsql.d.ts.map +1 -0
- package/dist/pglite.d.ts +8 -170
- package/dist/pglite.d.ts.map +1 -1
- package/dist/streams/agent-mail.d.ts +13 -0
- package/dist/streams/agent-mail.d.ts.map +1 -1
- package/dist/streams/auto-migrate.d.ts +182 -0
- package/dist/streams/auto-migrate.d.ts.map +1 -0
- package/dist/streams/effect/ask.d.ts +5 -4
- package/dist/streams/effect/ask.d.ts.map +1 -1
- package/dist/streams/effect/cursor.d.ts +3 -2
- package/dist/streams/effect/cursor.d.ts.map +1 -1
- package/dist/streams/effect/deferred.d.ts +12 -9
- package/dist/streams/effect/deferred.d.ts.map +1 -1
- package/dist/streams/effect/lock.d.ts +13 -11
- package/dist/streams/effect/lock.d.ts.map +1 -1
- package/dist/streams/effect/mailbox.d.ts +3 -2
- package/dist/streams/effect/mailbox.d.ts.map +1 -1
- package/dist/streams/events.d.ts +4 -0
- package/dist/streams/events.d.ts.map +1 -1
- package/dist/streams/index.d.ts +20 -74
- package/dist/streams/index.d.ts.map +1 -1
- package/dist/streams/libsql-schema.d.ts +77 -0
- package/dist/streams/libsql-schema.d.ts.map +1 -0
- package/dist/streams/migrations.d.ts +8 -8
- package/dist/streams/migrations.d.ts.map +1 -1
- package/dist/streams/projections-drizzle.d.ts +175 -0
- package/dist/streams/projections-drizzle.d.ts.map +1 -0
- package/dist/streams/projections.d.ts +9 -0
- package/dist/streams/projections.d.ts.map +1 -1
- package/dist/streams/store-drizzle.d.ts +96 -0
- package/dist/streams/store-drizzle.d.ts.map +1 -0
- package/dist/streams/store.d.ts +23 -0
- package/dist/streams/store.d.ts.map +1 -1
- package/dist/streams/swarm-mail.d.ts +9 -0
- package/dist/streams/swarm-mail.d.ts.map +1 -1
- package/dist/test-libsql.d.ts +76 -0
- package/dist/test-libsql.d.ts.map +1 -0
- package/dist/types/adapter.d.ts +3 -3
- package/dist/types/database.d.ts +12 -12
- package/dist/types/hive-adapter.d.ts +5 -5
- package/package.json +5 -5
- package/dist/beads/adapter.d.ts +0 -38
- package/dist/beads/adapter.d.ts.map +0 -1
- package/dist/beads/blocked-cache.d.ts +0 -21
- package/dist/beads/blocked-cache.d.ts.map +0 -1
- package/dist/beads/comments.d.ts +0 -21
- package/dist/beads/comments.d.ts.map +0 -1
- package/dist/beads/dependencies.d.ts +0 -58
- package/dist/beads/dependencies.d.ts.map +0 -1
- package/dist/beads/events.d.ts +0 -163
- package/dist/beads/events.d.ts.map +0 -1
- package/dist/beads/flush-manager.d.ts +0 -71
- package/dist/beads/flush-manager.d.ts.map +0 -1
- package/dist/beads/index.d.ts +0 -25
- package/dist/beads/index.d.ts.map +0 -1
- package/dist/beads/jsonl.d.ts +0 -103
- package/dist/beads/jsonl.d.ts.map +0 -1
- package/dist/beads/labels.d.ts +0 -21
- package/dist/beads/labels.d.ts.map +0 -1
- package/dist/beads/merge.d.ts +0 -99
- package/dist/beads/merge.d.ts.map +0 -1
- package/dist/beads/migrations.d.ts +0 -41
- package/dist/beads/migrations.d.ts.map +0 -1
- package/dist/beads/operations.d.ts +0 -56
- package/dist/beads/operations.d.ts.map +0 -1
- package/dist/beads/projections.d.ts +0 -103
- package/dist/beads/projections.d.ts.map +0 -1
- package/dist/beads/queries.d.ts +0 -77
- package/dist/beads/queries.d.ts.map +0 -1
- package/dist/beads/store.d.ts +0 -98
- package/dist/beads/store.d.ts.map +0 -1
- package/dist/beads/validation.d.ts +0 -75
- package/dist/beads/validation.d.ts.map +0 -1
- package/dist/daemon.d.ts +0 -161
- package/dist/daemon.d.ts.map +0 -1
- package/dist/socket-adapter.d.ts +0 -78
- package/dist/socket-adapter.d.ts.map +0 -1
- package/dist/streams/debug.d.ts +0 -173
- package/dist/streams/debug.d.ts.map +0 -1
- package/dist/test-server.d.ts +0 -64
- package/dist/test-server.d.ts.map +0 -1
- package/dist/types/beads-adapter.d.ts +0 -397
- package/dist/types/beads-adapter.d.ts.map +0 -1
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @example
|
|
8
8
|
* ```typescript
|
|
9
|
-
* const response = await DurableDeferred.create<Response>({ ttlSeconds: 60 })
|
|
9
|
+
* const response = await DurableDeferred.create<Response>({ ttlSeconds: 60, db })
|
|
10
10
|
* await actor.append({ payload: message, replyTo: response.url })
|
|
11
11
|
* return response.value // blocks until resolved or timeout
|
|
12
12
|
* ```
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
* - Cleans up expired entries automatically
|
|
19
19
|
*/
|
|
20
20
|
import { Context, Effect, Layer } from "effect";
|
|
21
|
+
import type { DatabaseAdapter } from "../../types/database";
|
|
21
22
|
/**
|
|
22
23
|
* Timeout error when deferred expires before resolution
|
|
23
24
|
*/
|
|
@@ -50,8 +51,8 @@ export interface DeferredHandle<T> {
|
|
|
50
51
|
export interface DeferredConfig {
|
|
51
52
|
/** Time-to-live in seconds before timeout */
|
|
52
53
|
readonly ttlSeconds: number;
|
|
53
|
-
/**
|
|
54
|
-
readonly
|
|
54
|
+
/** Database adapter for storage */
|
|
55
|
+
readonly db: DatabaseAdapter;
|
|
55
56
|
}
|
|
56
57
|
declare const DurableDeferred_base: Context.TagClass<DurableDeferred, "DurableDeferred", {
|
|
57
58
|
/**
|
|
@@ -65,19 +66,21 @@ declare const DurableDeferred_base: Context.TagClass<DurableDeferred, "DurableDe
|
|
|
65
66
|
*
|
|
66
67
|
* @param url - Deferred identifier
|
|
67
68
|
* @param value - Resolution value
|
|
69
|
+
* @param db - Database adapter
|
|
68
70
|
*/
|
|
69
|
-
readonly resolve: <T>(url: string, value: T,
|
|
71
|
+
readonly resolve: <T>(url: string, value: T, db: DatabaseAdapter) => Effect.Effect<void, NotFoundError>;
|
|
70
72
|
/**
|
|
71
73
|
* Reject a deferred with an error
|
|
72
74
|
*
|
|
73
75
|
* @param url - Deferred identifier
|
|
74
76
|
* @param error - Error to reject with
|
|
77
|
+
* @param db - Database adapter
|
|
75
78
|
*/
|
|
76
|
-
readonly reject: (url: string, error: Error,
|
|
79
|
+
readonly reject: (url: string, error: Error, db: DatabaseAdapter) => Effect.Effect<void, NotFoundError>;
|
|
77
80
|
/**
|
|
78
81
|
* Await a deferred's resolution (internal - use handle.value instead)
|
|
79
82
|
*/
|
|
80
|
-
readonly await: <T>(url: string, ttlSeconds: number,
|
|
83
|
+
readonly await: <T>(url: string, ttlSeconds: number, db: DatabaseAdapter) => Effect.Effect<T, TimeoutError | NotFoundError>;
|
|
81
84
|
}>;
|
|
82
85
|
/**
|
|
83
86
|
* DurableDeferred service for distributed promises
|
|
@@ -95,14 +98,14 @@ export declare function createDeferred<T>(config: DeferredConfig): Effect.Effect
|
|
|
95
98
|
/**
|
|
96
99
|
* Resolve a deferred
|
|
97
100
|
*/
|
|
98
|
-
export declare function resolveDeferred<T>(url: string, value: T,
|
|
101
|
+
export declare function resolveDeferred<T>(url: string, value: T, db: DatabaseAdapter): Effect.Effect<void, NotFoundError, DurableDeferred>;
|
|
99
102
|
/**
|
|
100
103
|
* Reject a deferred
|
|
101
104
|
*/
|
|
102
|
-
export declare function rejectDeferred(url: string, error: Error,
|
|
105
|
+
export declare function rejectDeferred(url: string, error: Error, db: DatabaseAdapter): Effect.Effect<void, NotFoundError, DurableDeferred>;
|
|
103
106
|
/**
|
|
104
107
|
* Cleanup expired deferred entries (call periodically)
|
|
105
108
|
*/
|
|
106
|
-
export declare function cleanupDeferreds(
|
|
109
|
+
export declare function cleanupDeferreds(db: DatabaseAdapter): Effect.Effect<number>;
|
|
107
110
|
export {};
|
|
108
111
|
//# sourceMappingURL=deferred.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deferred.d.ts","sourceRoot":"","sources":["../../../src/streams/effect/deferred.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAsB,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"deferred.d.ts","sourceRoot":"","sources":["../../../src/streams/effect/deferred.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAsB,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAM5D;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;aAGnB,GAAG,EAAE,MAAM;aACX,UAAU,EAAE,MAAM;IAHpC,QAAQ,CAAC,IAAI,kBAAkB;gBAEb,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM;CAIrC;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;aAEV,GAAG,EAAE,MAAM;IADvC,QAAQ,CAAC,IAAI,mBAAmB;gBACJ,GAAG,EAAE,MAAM;CAGxC;AAMD;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,8CAA8C;IAC9C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,CAAC;CAChE;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,mCAAmC;IACnC,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC;CAC9B;;IAYG;;;;OAIG;qBACc,CAAC,CAAC,EACjB,MAAM,EAAE,cAAc,KACnB,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAErC;;;;;;OAMG;sBACe,CAAC,CAAC,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,EAAE,EAAE,eAAe,KAChB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC;IAEvC;;;;;;OAMG;qBACc,CACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE,eAAe,KAChB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC;IAEvC;;OAEG;oBACa,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,eAAe,KAChB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC;;AAhDvD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,oBA+ClC;CAAG;AAiQN;;GAEG;AACH,eAAO,MAAM,mBAAmB,4CAK9B,CAAC;AAMH;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,MAAM,EAAE,cAAc,GACrB,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAK1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,EAAE,EAAE,eAAe,GAClB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,CAAC,CAKrD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE,eAAe,GAClB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,eAAe,CAAC,CAKrD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAE3E"}
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
10
10
|
* ```typescript
|
|
11
|
-
* // Using Effect API
|
|
11
|
+
* // Using Effect API with DatabaseAdapter
|
|
12
12
|
* const program = Effect.gen(function* (_) {
|
|
13
|
-
* const lock = yield* _(acquireLock("my-resource", { ttlSeconds: 30 }))
|
|
13
|
+
* const lock = yield* _(acquireLock("my-resource", { ttlSeconds: 30, db }))
|
|
14
14
|
* try {
|
|
15
15
|
* // Critical section
|
|
16
16
|
* } finally {
|
|
@@ -21,11 +21,12 @@
|
|
|
21
21
|
* // Or use withLock helper
|
|
22
22
|
* const program = Effect.gen(function* (_) {
|
|
23
23
|
* const lock = yield* _(DurableLock)
|
|
24
|
-
* yield* _(lock.withLock("my-resource", Effect.succeed(42)))
|
|
24
|
+
* yield* _(lock.withLock("my-resource", Effect.succeed(42), { db }))
|
|
25
25
|
* }).pipe(Effect.provide(DurableLockLive))
|
|
26
26
|
* ```
|
|
27
27
|
*/
|
|
28
28
|
import { Context, Effect, Layer } from "effect";
|
|
29
|
+
import type { DatabaseAdapter } from "../../types/database";
|
|
29
30
|
/**
|
|
30
31
|
* Configuration for lock acquisition
|
|
31
32
|
*/
|
|
@@ -46,9 +47,10 @@ export interface LockConfig {
|
|
|
46
47
|
*/
|
|
47
48
|
baseDelayMs?: number;
|
|
48
49
|
/**
|
|
49
|
-
*
|
|
50
|
+
* Database adapter for lock storage
|
|
51
|
+
* Required for all operations
|
|
50
52
|
*/
|
|
51
|
-
|
|
53
|
+
db: DatabaseAdapter;
|
|
52
54
|
/**
|
|
53
55
|
* Custom holder ID (defaults to generated UUID)
|
|
54
56
|
*/
|
|
@@ -98,19 +100,19 @@ declare const DurableLock_base: Context.TagClass<DurableLock, "DurableLock", {
|
|
|
98
100
|
*
|
|
99
101
|
* Retries with exponential backoff on contention.
|
|
100
102
|
*/
|
|
101
|
-
readonly acquire: (resource: string, config
|
|
103
|
+
readonly acquire: (resource: string, config: LockConfig) => Effect.Effect<LockHandle, LockError>;
|
|
102
104
|
/**
|
|
103
105
|
* Release a lock
|
|
104
106
|
*
|
|
105
107
|
* Only succeeds if the holder matches.
|
|
106
108
|
*/
|
|
107
|
-
readonly release: (resource: string, holder: string,
|
|
109
|
+
readonly release: (resource: string, holder: string, db: DatabaseAdapter) => Effect.Effect<void, LockError>;
|
|
108
110
|
/**
|
|
109
111
|
* Execute an effect with automatic lock acquisition and release
|
|
110
112
|
*
|
|
111
113
|
* Guarantees lock release even on error (Effect.ensuring).
|
|
112
114
|
*/
|
|
113
|
-
readonly withLock: <A, E, R>(resource: string, effect: Effect.Effect<A, E, R>, config
|
|
115
|
+
readonly withLock: <A, E, R>(resource: string, effect: Effect.Effect<A, E, R>, config: LockConfig) => Effect.Effect<A, E | LockError, R | DurableLock>;
|
|
114
116
|
}>;
|
|
115
117
|
/**
|
|
116
118
|
* DurableLock service for distributed mutual exclusion
|
|
@@ -124,14 +126,14 @@ export declare const DurableLockLive: Layer.Layer<DurableLock, never, never>;
|
|
|
124
126
|
/**
|
|
125
127
|
* Acquire a lock (convenience Effect wrapper)
|
|
126
128
|
*/
|
|
127
|
-
export declare function acquireLock(resource: string, config
|
|
129
|
+
export declare function acquireLock(resource: string, config: LockConfig): Effect.Effect<LockHandle, LockError, DurableLock>;
|
|
128
130
|
/**
|
|
129
131
|
* Release a lock (convenience Effect wrapper)
|
|
130
132
|
*/
|
|
131
|
-
export declare function releaseLock(resource: string, holder: string,
|
|
133
|
+
export declare function releaseLock(resource: string, holder: string, db: DatabaseAdapter): Effect.Effect<void, LockError, DurableLock>;
|
|
132
134
|
/**
|
|
133
135
|
* Execute with lock (convenience Effect wrapper)
|
|
134
136
|
*/
|
|
135
|
-
export declare function withLock<A, E, R>(resource: string, effect: Effect.Effect<A, E, R>, config
|
|
137
|
+
export declare function withLock<A, E, R>(resource: string, effect: Effect.Effect<A, E, R>, config: LockConfig): Effect.Effect<A, E | LockError, R | DurableLock>;
|
|
136
138
|
export {};
|
|
137
139
|
//# sourceMappingURL=lock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../../src/streams/effect/lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;
|
|
1
|
+
{"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../../src/streams/effect/lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
*/
|
|
30
30
|
import { Context, Effect, Layer } from "effect";
|
|
31
31
|
import { DurableCursor } from "./cursor";
|
|
32
|
+
import type { DatabaseAdapter } from "../../types/database";
|
|
32
33
|
/**
|
|
33
34
|
* Envelope wrapping a message with metadata
|
|
34
35
|
*/
|
|
@@ -54,8 +55,8 @@ export interface MailboxConfig {
|
|
|
54
55
|
readonly agent: string;
|
|
55
56
|
/** Project key for scoping messages */
|
|
56
57
|
readonly projectKey: string;
|
|
57
|
-
/**
|
|
58
|
-
readonly
|
|
58
|
+
/** Database adapter for mailbox storage */
|
|
59
|
+
readonly db: DatabaseAdapter;
|
|
59
60
|
/** Batch size for reading messages (default: 100) */
|
|
60
61
|
readonly batchSize?: number;
|
|
61
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mailbox.d.ts","sourceRoot":"","sources":["../../../src/streams/effect/mailbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,aAAa,EAAe,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"mailbox.d.ts","sourceRoot":"","sources":["../../../src/streams/effect/mailbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,aAAa,EAAe,MAAM,UAAU,CAAC;AAGtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAM5D;;GAEG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,OAAO;IACnC,sBAAsB;IACtB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,mDAAmD;IACnD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,iCAAiC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,0BAA0B;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,mCAAmC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iCAAiC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC;IAC7B,qDAAqD;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,iBAAiB;IACjB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EACf,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,EACrB,QAAQ,EAAE;QACR,OAAO,EAAE,CAAC,CAAC;QACX,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;KACnD,KACE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,OAAO,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;CACrE;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,oCAAoC;IACpC,QAAQ,CAAC,MAAM,EAAE,CACf,MAAM,EAAE,aAAa,KAClB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;CACnD;;AAMD;;GAEG;AACH,qBAAa,cAAe,SAAQ,mBAGjC;CAAG;AAyMN;;GAEG;AACH,eAAO,MAAM,kBAAkB,2CAE7B,CAAC"}
|
package/dist/streams/events.d.ts
CHANGED
|
@@ -91,6 +91,7 @@ export declare const FileReservedEventSchema: z.ZodObject<{
|
|
|
91
91
|
exclusive: z.ZodDefault<z.ZodBoolean>;
|
|
92
92
|
ttl_seconds: z.ZodDefault<z.ZodNumber>;
|
|
93
93
|
expires_at: z.ZodNumber;
|
|
94
|
+
lock_holder_ids: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
94
95
|
}, z.core.$strip>;
|
|
95
96
|
export declare const FileReleasedEventSchema: z.ZodObject<{
|
|
96
97
|
id: z.ZodOptional<z.ZodNumber>;
|
|
@@ -101,6 +102,7 @@ export declare const FileReleasedEventSchema: z.ZodObject<{
|
|
|
101
102
|
agent_name: z.ZodString;
|
|
102
103
|
paths: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
103
104
|
reservation_ids: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
105
|
+
lock_holder_ids: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
104
106
|
}, z.core.$strip>;
|
|
105
107
|
export declare const TaskStartedEventSchema: z.ZodObject<{
|
|
106
108
|
id: z.ZodOptional<z.ZodNumber>;
|
|
@@ -303,6 +305,7 @@ export declare const AgentEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
303
305
|
exclusive: z.ZodDefault<z.ZodBoolean>;
|
|
304
306
|
ttl_seconds: z.ZodDefault<z.ZodNumber>;
|
|
305
307
|
expires_at: z.ZodNumber;
|
|
308
|
+
lock_holder_ids: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
306
309
|
}, z.core.$strip>, z.ZodObject<{
|
|
307
310
|
id: z.ZodOptional<z.ZodNumber>;
|
|
308
311
|
project_key: z.ZodString;
|
|
@@ -312,6 +315,7 @@ export declare const AgentEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
312
315
|
agent_name: z.ZodString;
|
|
313
316
|
paths: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
314
317
|
reservation_ids: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
318
|
+
lock_holder_ids: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
315
319
|
}, z.core.$strip>, z.ZodObject<{
|
|
316
320
|
id: z.ZodOptional<z.ZodNumber>;
|
|
317
321
|
project_key: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/streams/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;iBAW1B,CAAC;AAMH,eAAO,MAAM,0BAA0B;;;;;;;;;;iBAMrC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;iBAGjC,CAAC;AAMH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;iBAWjC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;iBAIjC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;iBAIlC,CAAC;AAMH,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/streams/events.ts"],"names":[],"mappings":"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"}
|
package/dist/streams/index.d.ts
CHANGED
|
@@ -1,38 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SwarmMail Event Store - PGLite-based event sourcing
|
|
3
|
-
*
|
|
4
|
-
* ## Thread Safety
|
|
5
|
-
*
|
|
6
|
-
* PGLite runs in-process as a single-threaded SQLite-compatible database.
|
|
7
|
-
* While Node.js is single-threaded, async operations can interleave.
|
|
8
|
-
*
|
|
9
|
-
* **Concurrency Model:**
|
|
10
|
-
* - Single PGLite instance per project (singleton pattern via LRU cache)
|
|
11
|
-
* - Transactions provide isolation for multi-statement operations
|
|
12
|
-
* - appendEvents uses BEGIN/COMMIT for atomic event batches
|
|
13
|
-
* - Concurrent reads are safe (no locks needed)
|
|
14
|
-
* - Concurrent writes are serialized by PGLite internally
|
|
15
|
-
*
|
|
16
|
-
* **Race Condition Mitigations:**
|
|
17
|
-
* - File reservations use INSERT with conflict detection
|
|
18
|
-
* - Sequence numbers are auto-incremented by database
|
|
19
|
-
* - Materialized views updated within same transaction as events
|
|
20
|
-
* - Pending instance promises prevent duplicate initialization
|
|
21
|
-
*
|
|
22
|
-
* **Known Limitations:**
|
|
23
|
-
* - No distributed locking (single-process only)
|
|
24
|
-
* - Large transactions may block other operations
|
|
25
|
-
* - No connection pooling (embedded database)
|
|
26
|
-
*
|
|
27
|
-
* ## Database Setup
|
|
28
|
-
*
|
|
29
|
-
* Embedded PostgreSQL database for event sourcing.
|
|
30
|
-
* No external server required - runs in-process.
|
|
31
|
-
*
|
|
32
|
-
* Database location: .opencode/streams.db (project-local)
|
|
33
|
-
* or ~/.opencode/streams.db (global fallback)
|
|
34
|
-
*/
|
|
35
|
-
import { PGlite } from "@electric-sql/pglite";
|
|
36
1
|
/**
|
|
37
2
|
* Wrap a promise with a timeout
|
|
38
3
|
*
|
|
@@ -53,54 +18,35 @@ export declare function withTimeout<T>(promise: Promise<T>, ms: number, operatio
|
|
|
53
18
|
*/
|
|
54
19
|
export declare function withTiming<T>(operation: string, fn: () => Promise<T>): Promise<T>;
|
|
55
20
|
/**
|
|
56
|
-
* Get the database path for
|
|
21
|
+
* Get the database path for SwarmMail
|
|
22
|
+
*
|
|
23
|
+
* Always returns global ~/.config/swarm-tools/swarm.db
|
|
24
|
+
* The projectPath parameter is kept for backward compatibility but ignored.
|
|
57
25
|
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
26
|
+
* @param projectPath - Deprecated, kept for backward compatibility but ignored
|
|
27
|
+
* @returns Path to global swarm-tools database
|
|
60
28
|
*/
|
|
61
29
|
export declare function getDatabasePath(projectPath?: string): string;
|
|
62
30
|
/**
|
|
63
|
-
* Get
|
|
31
|
+
* Get paths to old project-local databases for migration detection
|
|
64
32
|
*
|
|
65
|
-
*
|
|
33
|
+
* Returns paths that should be checked for existing data that needs migration:
|
|
34
|
+
* - libsql: Old libSQL database at {projectPath}/.opencode/streams.db
|
|
35
|
+
* - pglite: Old PGlite database directory at {projectPath}/.opencode/streams/
|
|
66
36
|
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*/
|
|
70
|
-
export declare function getDatabase(projectPath?: string): Promise<PGlite>;
|
|
71
|
-
/**
|
|
72
|
-
* Close a database instance
|
|
73
|
-
*/
|
|
74
|
-
export declare function closeDatabase(projectPath?: string): Promise<void>;
|
|
75
|
-
/**
|
|
76
|
-
* Close all database instances
|
|
77
|
-
*/
|
|
78
|
-
export declare function closeAllDatabases(): Promise<void>;
|
|
79
|
-
/**
|
|
80
|
-
* Reset database for testing - clears all data but keeps schema
|
|
81
|
-
*/
|
|
82
|
-
export declare function resetDatabase(projectPath?: string): Promise<void>;
|
|
83
|
-
/**
|
|
84
|
-
* Check if the database is healthy
|
|
85
|
-
*
|
|
86
|
-
* Returns false if database is in degraded mode (using in-memory fallback)
|
|
87
|
-
*/
|
|
88
|
-
export declare function isDatabaseHealthy(projectPath?: string): Promise<boolean>;
|
|
89
|
-
/**
|
|
90
|
-
* Get database statistics
|
|
37
|
+
* @param projectPath - Project directory path
|
|
38
|
+
* @returns Object with paths to check for migration
|
|
91
39
|
*/
|
|
92
|
-
export declare function
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
reservations: number;
|
|
97
|
-
}>;
|
|
98
|
-
export { PGlite };
|
|
40
|
+
export declare function getOldProjectDbPaths(projectPath: string): {
|
|
41
|
+
libsql: string;
|
|
42
|
+
pglite: string;
|
|
43
|
+
};
|
|
99
44
|
export * from "./agent-mail";
|
|
100
|
-
export * from "./debug";
|
|
101
45
|
export * from "./events";
|
|
102
46
|
export * from "./migrations";
|
|
103
|
-
export
|
|
104
|
-
export
|
|
47
|
+
export type { Agent, Conflict, EvalRecord, EvalStats, InboxOptions, Message, Reservation, } from "./projections-drizzle";
|
|
48
|
+
export { checkConflicts, getActiveReservations, getAgent, getAgents, getEvalRecords, getEvalStats, getInbox, getMessage, getThreadMessages, } from "./projections-drizzle";
|
|
49
|
+
export { clearAdapterCache } from "./store";
|
|
50
|
+
export { appendEvent, getLatestSequence, readEvents, } from "./store-drizzle";
|
|
105
51
|
export * from "./swarm-mail";
|
|
106
52
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/streams/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/streams/index.ts"],"names":[],"mappings":"AAkBA;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAClC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,CAAC,CAAC,CAQZ;AASD;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,CAAC,EACjC,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAClB,OAAO,CAAC,CAAC,CAAC,CAYZ;AAMD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAM5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CACf,CAMA;AAMD,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,YAAY,EACX,KAAK,EACL,QAAQ,EACR,UAAU,EACV,SAAS,EACT,YAAY,EACZ,OAAO,EACP,WAAW,GACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACN,cAAc,EACd,qBAAqB,EACrB,QAAQ,EACR,SAAS,EACT,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,iBAAiB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAG5C,OAAO,EACN,WAAW,EACX,iBAAiB,EACjB,UAAU,GACV,MAAM,iBAAiB,CAAC;AAGzB,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* libSQL Streams Schema - Event Store Tables and Indexes
|
|
3
|
+
*
|
|
4
|
+
* Provides table creation and index DDL for event store.
|
|
5
|
+
*
|
|
6
|
+
* ## Schema Source of Truth
|
|
7
|
+
* - **Table structure**: db/schema/streams.ts (Drizzle schema)
|
|
8
|
+
* - **Index DDL**: This file (Drizzle doesn't auto-create indexes)
|
|
9
|
+
*
|
|
10
|
+
* ## Synchronization
|
|
11
|
+
* Table definitions MUST match db/schema/streams.ts exactly.
|
|
12
|
+
* Changes to table structures should be made in db/schema/streams.ts first,
|
|
13
|
+
* then reflected here.
|
|
14
|
+
*
|
|
15
|
+
* ## Key Differences from PostgreSQL
|
|
16
|
+
*
|
|
17
|
+
* | PostgreSQL | libSQL |
|
|
18
|
+
* |---------------------|-------------------------------------|
|
|
19
|
+
* | `SERIAL` | `INTEGER PRIMARY KEY AUTOINCREMENT` |
|
|
20
|
+
* | `JSONB` | `TEXT` (JSON stored as string) |
|
|
21
|
+
* | `TIMESTAMP` | `TEXT` (ISO 8601 string) |
|
|
22
|
+
* | `BOOLEAN` | `INTEGER` (0/1) |
|
|
23
|
+
* | `CURRENT_TIMESTAMP` | `datetime('now')` |
|
|
24
|
+
* | `BIGINT` | `INTEGER` |
|
|
25
|
+
*
|
|
26
|
+
* @module streams/libsql-schema
|
|
27
|
+
*/
|
|
28
|
+
import type { DatabaseAdapter } from "../types/database.js";
|
|
29
|
+
/**
|
|
30
|
+
* Create libSQL event store schema
|
|
31
|
+
*
|
|
32
|
+
* Creates all tables, indexes, and constraints for the event store:
|
|
33
|
+
* - events (append-only log)
|
|
34
|
+
* - agents (materialized view)
|
|
35
|
+
* - messages (materialized view)
|
|
36
|
+
* - message_recipients (many-to-many)
|
|
37
|
+
* - reservations (file locks)
|
|
38
|
+
* - locks (distributed mutex)
|
|
39
|
+
* - cursors (stream positions)
|
|
40
|
+
*
|
|
41
|
+
* Idempotent - safe to call multiple times.
|
|
42
|
+
*
|
|
43
|
+
* @param db - DatabaseAdapter instance (must be libSQL-backed)
|
|
44
|
+
* @throws Error if schema creation fails
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* import { createLibSQLAdapter } from "../libsql.js";
|
|
49
|
+
* import { createLibSQLStreamsSchema } from "./libsql-schema.js";
|
|
50
|
+
*
|
|
51
|
+
* const db = await createLibSQLAdapter({ url: ":memory:" });
|
|
52
|
+
* await createLibSQLStreamsSchema(db);
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export declare function createLibSQLStreamsSchema(db: DatabaseAdapter): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Drop libSQL event store schema
|
|
58
|
+
*
|
|
59
|
+
* Removes all tables and indexes created by createLibSQLStreamsSchema.
|
|
60
|
+
* Useful for tests and cleanup.
|
|
61
|
+
*
|
|
62
|
+
* @param db - libSQL client instance
|
|
63
|
+
*/
|
|
64
|
+
export declare function dropLibSQLStreamsSchema(db: DatabaseAdapter): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Verify libSQL event store schema exists and is valid
|
|
67
|
+
*
|
|
68
|
+
* Checks for:
|
|
69
|
+
* - All required tables
|
|
70
|
+
* - Required columns on each table
|
|
71
|
+
* - Key indexes
|
|
72
|
+
*
|
|
73
|
+
* @param db - libSQL client instance
|
|
74
|
+
* @returns True if schema is valid, false otherwise
|
|
75
|
+
*/
|
|
76
|
+
export declare function validateLibSQLStreamsSchema(db: DatabaseAdapter): Promise<boolean>;
|
|
77
|
+
//# sourceMappingURL=libsql-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"libsql-schema.d.ts","sourceRoot":"","sources":["../../src/streams/libsql-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,yBAAyB,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAoOlF;AAED;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAShF;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,2BAA2B,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAkCvF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Schema Migration System
|
|
3
3
|
*
|
|
4
|
-
* Handles database schema evolution for the
|
|
4
|
+
* Handles database schema evolution for the event store.
|
|
5
5
|
*
|
|
6
6
|
* ## How It Works
|
|
7
7
|
*
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
*
|
|
41
41
|
* @module migrations
|
|
42
42
|
*/
|
|
43
|
-
import type {
|
|
43
|
+
import type { DatabaseAdapter } from "../types/database.js";
|
|
44
44
|
/**
|
|
45
45
|
* A database migration definition.
|
|
46
46
|
*/
|
|
@@ -65,18 +65,18 @@ export declare const migrations: Migration[];
|
|
|
65
65
|
*
|
|
66
66
|
* Returns -1 if no migrations have been applied (allows version 0 migrations)
|
|
67
67
|
*/
|
|
68
|
-
export declare function getCurrentVersion(db:
|
|
68
|
+
export declare function getCurrentVersion(db: DatabaseAdapter): Promise<number>;
|
|
69
69
|
/**
|
|
70
70
|
* Get all applied migrations
|
|
71
71
|
*/
|
|
72
|
-
export declare function getAppliedMigrations(db:
|
|
72
|
+
export declare function getAppliedMigrations(db: DatabaseAdapter): Promise<SchemaVersion[]>;
|
|
73
73
|
/**
|
|
74
74
|
* Run all pending migrations
|
|
75
75
|
*
|
|
76
76
|
* Idempotent - safe to run multiple times.
|
|
77
77
|
* Only runs migrations that haven't been applied yet.
|
|
78
78
|
*/
|
|
79
|
-
export declare function runMigrations(db:
|
|
79
|
+
export declare function runMigrations(db: DatabaseAdapter): Promise<{
|
|
80
80
|
applied: number[];
|
|
81
81
|
current: number;
|
|
82
82
|
}>;
|
|
@@ -86,17 +86,17 @@ export declare function runMigrations(db: PGlite): Promise<{
|
|
|
86
86
|
* WARNING: This will DROP tables and LOSE DATA.
|
|
87
87
|
* Only use for testing or emergency recovery.
|
|
88
88
|
*/
|
|
89
|
-
export declare function rollbackTo(db:
|
|
89
|
+
export declare function rollbackTo(db: DatabaseAdapter, targetVersion: number): Promise<{
|
|
90
90
|
rolledBack: number[];
|
|
91
91
|
current: number;
|
|
92
92
|
}>;
|
|
93
93
|
/**
|
|
94
94
|
* Check if a specific migration has been applied
|
|
95
95
|
*/
|
|
96
|
-
export declare function isMigrationApplied(db:
|
|
96
|
+
export declare function isMigrationApplied(db: DatabaseAdapter, version: number): Promise<boolean>;
|
|
97
97
|
/**
|
|
98
98
|
* Get pending migrations (not yet applied)
|
|
99
99
|
*/
|
|
100
|
-
export declare function getPendingMigrations(db:
|
|
100
|
+
export declare function getPendingMigrations(db: DatabaseAdapter): Promise<Migration[]>;
|
|
101
101
|
export {};
|
|
102
102
|
//# sourceMappingURL=migrations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/streams/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/streams/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAQ5D;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAMD,eAAO,MAAM,UAAU,EAAE,SAAS,EAwUjC,CAAC;AAmBF;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAU5E;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,eAAe,GAClB,OAAO,CAAC,aAAa,EAAE,CAAC,CAgB1B;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC;IAChE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAmDD;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,eAAe,EACnB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IACT,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CA4CD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,eAAe,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CASlB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAKpF"}
|