@kronos-ts/postgres 0.1.1 → 0.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.
Files changed (46) hide show
  1. package/README.md +81 -0
  2. package/dist/adapter.d.ts +13 -0
  3. package/dist/adapter.d.ts.map +1 -1
  4. package/dist/adapters/bun-sql.d.ts.map +1 -1
  5. package/dist/adapters/bun-sql.js +3 -0
  6. package/dist/adapters/bun-sql.js.map +1 -1
  7. package/dist/adapters/pg.d.ts.map +1 -1
  8. package/dist/adapters/pg.js +3 -0
  9. package/dist/adapters/pg.js.map +1 -1
  10. package/dist/adapters/postgres.d.ts.map +1 -1
  11. package/dist/adapters/postgres.js +3 -0
  12. package/dist/adapters/postgres.js.map +1 -1
  13. package/dist/index.d.ts +3 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +11 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/postgres-event-scheduler.d.ts +88 -0
  18. package/dist/postgres-event-scheduler.d.ts.map +1 -0
  19. package/dist/postgres-event-scheduler.js +226 -0
  20. package/dist/postgres-event-scheduler.js.map +1 -0
  21. package/dist/postgres-event-store.d.ts.map +1 -1
  22. package/dist/postgres-event-store.js +70 -35
  23. package/dist/postgres-event-store.js.map +1 -1
  24. package/dist/postgres-transaction-manager.d.ts +33 -0
  25. package/dist/postgres-transaction-manager.d.ts.map +1 -0
  26. package/dist/postgres-transaction-manager.js +92 -0
  27. package/dist/postgres-transaction-manager.js.map +1 -0
  28. package/dist/postgres.d.ts +22 -5
  29. package/dist/postgres.d.ts.map +1 -1
  30. package/dist/postgres.js +54 -5
  31. package/dist/postgres.js.map +1 -1
  32. package/dist/schema.d.ts +47 -0
  33. package/dist/schema.d.ts.map +1 -1
  34. package/dist/schema.js +67 -0
  35. package/dist/schema.js.map +1 -1
  36. package/package.json +1 -1
  37. package/src/adapter.ts +13 -0
  38. package/src/adapters/bun-sql.ts +3 -0
  39. package/src/adapters/pg.ts +3 -0
  40. package/src/adapters/postgres.ts +3 -0
  41. package/src/index.ts +18 -0
  42. package/src/postgres-event-scheduler.ts +314 -0
  43. package/src/postgres-event-store.ts +77 -30
  44. package/src/postgres-transaction-manager.ts +120 -0
  45. package/src/postgres.ts +68 -5
  46. package/src/schema.ts +70 -0
package/README.md CHANGED
@@ -119,6 +119,87 @@ const adapter = bunSqlAdapter({
119
119
  })
120
120
  ```
121
121
 
122
+ ## Transactions
123
+
124
+ Every command handler runs inside a single Unit of Work, and with this extension that UoW carries a Postgres transaction. A handler's appended events are buffered and flushed as one bulk write at commit; anything else you write **on the same transaction** commits — or rolls back — atomically with them. So "edit a row and append an `Updated` event" is one atomic operation.
125
+
126
+ The transaction is **lazy**: it opens on the first writer (an append, or your own SQL) and never opens for pure-read handlers, so read-only work claims no connection from the pool.
127
+
128
+ This is the framework's transaction, exposed for you to enroll work into. The extension does **not** ship an ORM client — you bring (or wrap) your own. The two pieces you need are both from `@kronos-ts/messaging`:
129
+
130
+ - `getOrBeginActiveTransaction<PostgresAdapterTransaction>()` — returns the UoW's transaction, opening the lazy one on first call. Use on **write** paths.
131
+ - `getActiveTransaction<PostgresAdapterTransaction>()` — returns it only if already open (else `undefined`), without forcing one. Use on **read-only** paths that shouldn't provoke a connection.
132
+
133
+ ### Running your own SQL — no ORM needed
134
+
135
+ The transaction handle runs parameterised SQL directly (it's what the event store appends with):
136
+
137
+ ```typescript
138
+ import { getOrBeginActiveTransaction } from "@kronos-ts/messaging"
139
+ import type { PostgresAdapterTransaction } from "@kronos-ts/postgres"
140
+ import { append } from "@kronos-ts/eventsourcing"
141
+
142
+ // inside a command handler:
143
+ const tx = await getOrBeginActiveTransaction<PostgresAdapterTransaction>()
144
+ await tx!.query("UPDATE widgets SET name = $1 WHERE id = $2", [name, id])
145
+ append(WidgetUpdated, { id, name }) // commits together, rolls back together
146
+ ```
147
+
148
+ ### Handing the transaction to an ORM
149
+
150
+ `tx.unwrap<T>()` returns the live driver connection backing the transaction — the *same* connection the event store appends on. Bind your ORM to it and its writes join the transaction. The handle type depends on the adapter you wired:
151
+
152
+ | Adapter | `unwrap()` returns |
153
+ |---------|--------------------|
154
+ | `pgAdapter` | `pg` `PoolClient` |
155
+ | `postgresAdapter` | scoped `Sql` (porsager) |
156
+ | `bunSqlAdapter` | scoped Bun `SQL` |
157
+
158
+ #### Drizzle (the easy case)
159
+
160
+ `drizzle(connection)` accepts an already-open connection, so binding is a one-liner — pick the import matching your adapter:
161
+
162
+ ```typescript
163
+ // pgAdapter
164
+ import { drizzle } from "drizzle-orm/node-postgres"
165
+ import type { PoolClient } from "pg"
166
+ const db = drizzle(tx.unwrap<PoolClient>(), { schema })
167
+
168
+ // postgresAdapter
169
+ import { drizzle } from "drizzle-orm/postgres-js"
170
+ import type { Sql } from "postgres"
171
+ const db = drizzle(tx.unwrap<Sql>(), { schema })
172
+
173
+ // bunSqlAdapter
174
+ import { drizzle } from "drizzle-orm/bun-sql"
175
+ import type { SQL } from "bun"
176
+ const db = drizzle(tx.unwrap<SQL>(), { schema })
177
+ ```
178
+
179
+ `drizzle(conn)` is a thin wrapper, so a small per-call helper is the ergonomic shape:
180
+
181
+ ```typescript
182
+ async function uowDb() {
183
+ const tx = await getOrBeginActiveTransaction<PostgresAdapterTransaction>()
184
+ if (!tx) throw new Error("no active UnitOfWork transaction")
185
+ return drizzle(tx.unwrap<PoolClient>(), { schema })
186
+ }
187
+
188
+ // in a command handler:
189
+ const db = await uowDb()
190
+ await db.insert(widgets).values({ id, name })
191
+ .onConflictDoUpdate({ target: widgets.id, set: { name } })
192
+ append(WidgetUpdated, { id, name })
193
+ ```
194
+
195
+ #### Kysely / TypeORM and other pool-owning ORMs
196
+
197
+ ORMs that manage their own connection pool are more work — they don't take a borrowed connection directly. The route is a thin custom dialect/driver whose `acquireConnection()` hands back `unwrap()`'s connection and whose begin/commit/release are no-ops (the UoW owns the transaction lifecycle). Doable, just more plumbing than Drizzle. For occasional statements, the raw `tx.query(...)` path above is usually simpler than wiring a dialect.
198
+
199
+ ### The one rule
200
+
201
+ Bind your client to **`unwrap()`'s connection** — never to a separately-created pool. A separate pool is a separate connection, hence a separate transaction, and your writes silently stop being atomic with your events. `unwrap()` is the guarantee that you're on the framework's connection.
202
+
122
203
  ## DCB Semantics
123
204
 
124
205
  The engine implements [Dynamic Consistency Boundaries](https://dcb.events):
package/dist/adapter.d.ts CHANGED
@@ -38,6 +38,19 @@ export type QueryRow = Record<string, unknown>;
38
38
  */
39
39
  export interface PostgresAdapterTransaction {
40
40
  query<R extends QueryRow = QueryRow>(sql: string, params?: unknown[]): Promise<R[]>;
41
+ /**
42
+ * Escape hatch returning the live driver-specific handle backing this
43
+ * transaction — the pg `PoolClient`, or the scoped `sql` for postgres.js /
44
+ * Bun.sql. Lets an external query builder (e.g. Drizzle) issue statements on
45
+ * the SAME connection, and therefore the SAME transaction, as the engine's
46
+ * appends — so an application's CRUD writes commit or roll back atomically
47
+ * with its events.
48
+ *
49
+ * The caller owns the cast (the handle type is driver-specific) and the
50
+ * handle is valid ONLY for the lifetime of this transaction — never retain
51
+ * it past the UoW that opened it.
52
+ */
53
+ unwrap<T = unknown>(): T;
41
54
  }
42
55
  /** Handle to a live LISTEN subscription. unlisten() unregisters + releases
43
56
  * the dedicated connection (if any). */
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;CAIjB,CAAA;AACV,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAA;AAEjF;2CAC2C;AAC3C,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE9C;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;CACpF;AAED;yCACyC;AACzC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,KAAK,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;IAEnF;;;OAGG;IACH,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAE3F;;;;;;;;;;OAUG;IACH,WAAW,CAAC,CAAC,EACX,cAAc,EAAE,cAAc,EAC9B,EAAE,EAAE,CAAC,EAAE,EAAE,0BAA0B,KAAK,OAAO,CAAC,CAAC,CAAC,GACjD,OAAO,CAAC,CAAC,CAAC,CAAA;IAEb;;;;;;OAMG;IACH,MAAM,CACJ,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,GACpD,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAE9B,yDAAyD;IACzD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAExB,yEAAyE;IACzE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5B"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;CAIjB,CAAA;AACV,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAA;AAEjF;2CAC2C;AAC3C,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE9C;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;IACnF;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,CAAC,GAAG,OAAO,KAAK,CAAC,CAAA;CACzB;AAED;yCACyC;AACzC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,KAAK,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;IAEnF;;;OAGG;IACH,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAE3F;;;;;;;;;;OAUG;IACH,WAAW,CAAC,CAAC,EACX,cAAc,EAAE,cAAc,EAC9B,EAAE,EAAE,CAAC,EAAE,EAAE,0BAA0B,KAAK,OAAO,CAAC,CAAC,CAAC,GACjD,OAAO,CAAC,CAAC,CAAC,CAAA;IAEb;;;;;;OAMG;IACH,MAAM,CACJ,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,GACpD,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAE9B,yDAAyD;IACzD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAExB,yEAAyE;IACzE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"bun-sql.d.ts","sourceRoot":"","sources":["../../src/adapters/bun-sql.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EACV,eAAe,EAIhB,MAAM,eAAe,CAAA;AAGtB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;CAClC;AA6ED,wBAAgB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,eAAe,CA0H1E"}
1
+ {"version":3,"file":"bun-sql.d.ts","sourceRoot":"","sources":["../../src/adapters/bun-sql.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EACV,eAAe,EAIhB,MAAM,eAAe,CAAA;AAGtB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;CAClC;AA6ED,wBAAgB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,eAAe,CA6H1E"}
@@ -128,6 +128,9 @@ export function bunSqlAdapter(config) {
128
128
  // normalized (errno -> code) via normalizeBunSqlError before propagating.
129
129
  return inst.begin(`ISOLATION LEVEL ${isolationLevel}`, async (txSql) => {
130
130
  const tx = {
131
+ unwrap() {
132
+ return txSql;
133
+ },
131
134
  async query(text, params) {
132
135
  return txSql.unsafe(text, normalizeParams(params)).catch(normalizeBunSqlError);
133
136
  },
@@ -1 +1 @@
1
- {"version":3,"file":"bun-sql.js","sourceRoot":"","sources":["../../src/adapters/bun-sql.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bun-sql.js","sourceRoot":"","sources":["../../src/adapters/bun-sql.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../../src/adapters/pg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAyB,KAAK,UAAU,EAAE,MAAM,IAAI,CAAA;AAC3D,OAAO,KAAK,EACV,eAAe,EAIhB,MAAM,eAAe,CAAA;AAGtB,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,oFAAoF;IACpF,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAA;CAC3D;AAOD,wBAAgB,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CAwJlE"}
1
+ {"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../../src/adapters/pg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAyB,KAAK,UAAU,EAAE,MAAM,IAAI,CAAA;AAC3D,OAAO,KAAK,EACV,eAAe,EAIhB,MAAM,eAAe,CAAA;AAGtB,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,oFAAoF;IACpF,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAA;CAC3D;AAOD,wBAAgB,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CA2JlE"}
@@ -90,6 +90,9 @@ export function pgAdapter(config) {
90
90
  try {
91
91
  await client.query(`BEGIN ISOLATION LEVEL ${isolationLevel}`);
92
92
  const tx = {
93
+ unwrap() {
94
+ return client;
95
+ },
93
96
  async query(sql, params) {
94
97
  const result = await client.query(sql, params);
95
98
  return result.rows;
@@ -1 +1 @@
1
- {"version":3,"file":"pg.js","sourceRoot":"","sources":["../../src/adapters/pg.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pg.js","sourceRoot":"","sources":["../../src/adapters/pg.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/adapters/postgres.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,cAAc,MAAM,UAAU,CAAA;AAErC,OAAO,KAAK,EACV,eAAe,EAIhB,MAAM,eAAe,CAAA;AAGtB,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,wFAAwF;IACxF,QAAQ,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;CAC9D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,eAAe,CAkG9E"}
1
+ {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/adapters/postgres.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,cAAc,MAAM,UAAU,CAAA;AAErC,OAAO,KAAK,EACV,eAAe,EAIhB,MAAM,eAAe,CAAA;AAGtB,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,wFAAwF;IACxF,QAAQ,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;CAC9D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,eAAe,CAqG9E"}
@@ -74,6 +74,9 @@ export function postgresAdapter(config) {
74
74
  // pins to the underlying connection for the duration.
75
75
  return (await c.begin(`ISOLATION LEVEL ${isolationLevel}`, async (txSql) => {
76
76
  const tx = {
77
+ unwrap() {
78
+ return txSql;
79
+ },
77
80
  async query(text, params) {
78
81
  const rows = (await txSql.unsafe(text, (params ?? [])));
79
82
  return rows;
@@ -1 +1 @@
1
- {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/adapters/postgres.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/adapters/postgres.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,5 +3,7 @@ export { IsolationLevel, type PostgresAdapter, type PostgresAdapterTransaction,
3
3
  export { createPostgresEventStore, type PostgresEventStoreConfig, type Serializer, type TagResolver, } from "./postgres-event-store.js";
4
4
  export { createPostgresSnapshotStore, type PostgresSnapshotStoreConfig, } from "./postgres-snapshot-store.js";
5
5
  export { postgres, type PostgresConfig } from "./postgres.js";
6
- export { bootstrapSchema, buildEventsTableDDL, buildEventsIndexesDDL, buildSnapshotsTableDDL, DEFAULT_TABLE_NAMES, type TableNames, } from "./schema.js";
6
+ export { postgresTransactionManager } from "./postgres-transaction-manager.js";
7
+ export { createPostgresEventScheduler, type PostgresEventScheduler, type PostgresEventSchedulerConfig, } from "./postgres-event-scheduler.js";
8
+ export { bootstrapSchema, buildEventsTableDDL, buildEventsIndexesDDL, buildSnapshotsTableDDL, buildScheduledEventsTableDDL, buildScheduledEventsIndexesDDL, DEFAULT_TABLE_NAMES, type TableNames, } from "./schema.js";
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAC7B,cAAc,GACf,MAAM,aAAa,CAAA;AAKpB,OAAO,EACL,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,QAAQ,GACd,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,wBAAwB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,2BAA2B,CAAA;AAGlC,OAAO,EACL,2BAA2B,EAC3B,KAAK,2BAA2B,GACjC,MAAM,8BAA8B,CAAA;AAGrC,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAK7D,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAC7B,cAAc,GACf,MAAM,aAAa,CAAA;AAKpB,OAAO,EACL,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,QAAQ,GACd,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,wBAAwB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,2BAA2B,CAAA;AAGlC,OAAO,EACL,2BAA2B,EAC3B,KAAK,2BAA2B,GACjC,MAAM,8BAA8B,CAAA;AAGrC,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAM7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAM9E,OAAO,EACL,4BAA4B,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,GAClC,MAAM,+BAA+B,CAAA;AAKtC,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,4BAA4B,EAC5B,8BAA8B,EAC9B,mBAAmB,EACnB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAA"}
package/dist/index.js CHANGED
@@ -19,8 +19,18 @@ export { createPostgresEventStore, } from "./postgres-event-store.js";
19
19
  export { createPostgresSnapshotStore, } from "./postgres-snapshot-store.js";
20
20
  // Extension factory (Plan 05)
21
21
  export { postgres } from "./postgres.js";
22
+ // Transaction manager — bridges the framework's TransactionManager lifecycle
23
+ // to adapter.transaction(). Users typically get this wired automatically via
24
+ // `postgres(config)`; exported for direct use when composing UoW runners by
25
+ // hand.
26
+ export { postgresTransactionManager } from "./postgres-transaction-manager.js";
27
+ // Postgres event scheduler — durable schedule() + cancel() + polling worker
28
+ // that fires due schedules into the event store. Wired into postgres()
29
+ // automatically when a uowFactory with the lazy postgres tx is in place;
30
+ // exported here so users who compose their own wiring can construct one.
31
+ export { createPostgresEventScheduler, } from "./postgres-event-scheduler.js";
22
32
  // Schema bootstrap + DDL builders — exposed for users who want to run their
23
33
  // own migrations (set `postgres({ bootstrap: false })`) or drive the store
24
34
  // directly without going through the extension factory.
25
- export { bootstrapSchema, buildEventsTableDDL, buildEventsIndexesDDL, buildSnapshotsTableDDL, DEFAULT_TABLE_NAMES, } from "./schema.js";
35
+ export { bootstrapSchema, buildEventsTableDDL, buildEventsIndexesDDL, buildSnapshotsTableDDL, buildScheduledEventsTableDDL, buildScheduledEventsIndexesDDL, DEFAULT_TABLE_NAMES, } from "./schema.js";
26
36
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,EAAE;AACF,oEAAoE;AACpE,6EAA6E;AAC7E,mEAAmE;AACnE,yEAAyE;AACzE,EAAE;AACF,2EAA2E;AAC3E,0DAA0D;AAC1D,gEAAgE;AAEhE,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAC7B,cAAc,GACf,MAAM,aAAa,CAAA;AAEpB,uDAAuD;AACvD,uEAAuE;AACvE,8CAA8C;AAC9C,OAAO,EACL,cAAc,GAKf,MAAM,cAAc,CAAA;AAErB,iDAAiD;AACjD,OAAO,EACL,wBAAwB,GAIzB,MAAM,2BAA2B,CAAA;AAElC,mCAAmC;AACnC,OAAO,EACL,2BAA2B,GAE5B,MAAM,8BAA8B,CAAA;AAErC,8BAA8B;AAC9B,OAAO,EAAE,QAAQ,EAAuB,MAAM,eAAe,CAAA;AAE7D,4EAA4E;AAC5E,2EAA2E;AAC3E,wDAAwD;AACxD,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,GAEpB,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,EAAE;AACF,oEAAoE;AACpE,6EAA6E;AAC7E,mEAAmE;AACnE,yEAAyE;AACzE,EAAE;AACF,2EAA2E;AAC3E,0DAA0D;AAC1D,gEAAgE;AAEhE,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAC7B,cAAc,GACf,MAAM,aAAa,CAAA;AAEpB,uDAAuD;AACvD,uEAAuE;AACvE,8CAA8C;AAC9C,OAAO,EACL,cAAc,GAKf,MAAM,cAAc,CAAA;AAErB,iDAAiD;AACjD,OAAO,EACL,wBAAwB,GAIzB,MAAM,2BAA2B,CAAA;AAElC,mCAAmC;AACnC,OAAO,EACL,2BAA2B,GAE5B,MAAM,8BAA8B,CAAA;AAErC,8BAA8B;AAC9B,OAAO,EAAE,QAAQ,EAAuB,MAAM,eAAe,CAAA;AAE7D,6EAA6E;AAC7E,6EAA6E;AAC7E,4EAA4E;AAC5E,QAAQ;AACR,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAE9E,4EAA4E;AAC5E,uEAAuE;AACvE,yEAAyE;AACzE,yEAAyE;AACzE,OAAO,EACL,4BAA4B,GAG7B,MAAM,+BAA+B,CAAA;AAEtC,4EAA4E;AAC5E,2EAA2E;AAC3E,wDAAwD;AACxD,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,4BAA4B,EAC5B,8BAA8B,EAC9B,mBAAmB,GAEpB,MAAM,aAAa,CAAA"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * createPostgresEventScheduler — durable {@link EventScheduler} backed by
3
+ * the kronos_scheduled_events table, plus a polling worker that fires
4
+ * due schedules into the event store.
5
+ *
6
+ * # Schedule path (caller-driven, inside a UoW)
7
+ *
8
+ * schedule(event, at)
9
+ * → requires INVOCATION phase
10
+ * → captures tags via the configured TagResolver at schedule-time
11
+ * → INSERT row (schedule_id = event.identifier, status='pending')
12
+ * → joins the active UoW transaction via getOrBeginActiveTransaction;
13
+ * if the UoW rolls back, the schedule is never persisted
14
+ * → returns { id: schedule_id } as the cancellation token
15
+ *
16
+ * # Cancel path
17
+ *
18
+ * cancel(token)
19
+ * → SELECT … FOR UPDATE to lock the row + read prior status
20
+ * → branch:
21
+ * status='pending' → UPDATE status='cancelled' → { kind: 'cancelled' }
22
+ * status='appended' → no UPDATE → { kind: 'already-appended' }
23
+ * status='cancelled' → no UPDATE → { kind: 'not-found' }
24
+ * no row → no UPDATE → { kind: 'not-found' }
25
+ * → cancel inside a UoW joins the active tx; outside, opens its own
26
+ * adapter.transaction so the SELECT-FOR-UPDATE + UPDATE land atomically
27
+ *
28
+ * # Worker path (background)
29
+ *
30
+ * start() spins a setInterval that, per tick, runs inside a fresh UoW:
31
+ * 1. force the lazy pg tx open via getOrBeginActiveTransaction
32
+ * 2. SELECT … WHERE status='pending' AND fire_at <= now()
33
+ * ORDER BY fire_at LIMIT $batchSize FOR UPDATE SKIP LOCKED
34
+ * — the SKIP LOCKED keeps multiple worker instances safe
35
+ * 3. for each row: reconstruct EventMessage, call eventStore.append
36
+ * (which joins the same UoW tx), UPDATE status='appended'
37
+ * 4. UoW COMMIT → all appends + status flips land atomically
38
+ *
39
+ * If the worker process dies mid-tick before COMMIT, the rows stay
40
+ * 'pending' and get re-picked on the next tick — at-least-once delivery.
41
+ * The schedule_id is reused as event.identifier so the events table's
42
+ * UNIQUE constraint dedupes any spurious double-append (e.g., on the
43
+ * rare race where a previous COMMIT succeeded but the status UPDATE
44
+ * failed afterwards — though here they share a tx, so this is mainly
45
+ * a defensive note).
46
+ *
47
+ * # Multi-node safety
48
+ *
49
+ * FOR UPDATE SKIP LOCKED is the locking primitive. Two worker processes
50
+ * polling the same table will hand non-overlapping batches of rows to
51
+ * their respective ticks; neither blocks the other. No leader election
52
+ * or distributed lock is needed.
53
+ */
54
+ import type { EventScheduler, UoWRunner } from "@kronos-ts/messaging";
55
+ import type { EventStore } from "@kronos-ts/eventsourcing";
56
+ import type { PostgresAdapter } from "./adapter.js";
57
+ import { type TableNames } from "./schema.js";
58
+ import type { TagResolver } from "./postgres-event-store.js";
59
+ export interface PostgresEventSchedulerConfig {
60
+ readonly adapter: PostgresAdapter;
61
+ readonly eventStore: EventStore;
62
+ /**
63
+ * The composed UoW runner the worker uses per tick — must be wrapped
64
+ * with {@link lazyTransactionalUnitOfWorkFactory} (or equivalent) so
65
+ * the worker's UoW sees the postgres tx. Typically the resolved
66
+ * `unitOfWorkFactory` slot.
67
+ */
68
+ readonly uowFactory: UoWRunner;
69
+ readonly tagResolver: TagResolver;
70
+ readonly tableNames?: TableNames;
71
+ /**
72
+ * Worker poll interval. Defaults to 1000ms — a compromise between
73
+ * fire-latency and DB chatter. Production users wanting tighter
74
+ * latency should lower this, ideally combined with LISTEN/NOTIFY
75
+ * wake-up (not yet wired here).
76
+ */
77
+ readonly pollIntervalMs?: number;
78
+ /** Max rows the worker processes per tick. Defaults to 50. */
79
+ readonly batchSize?: number;
80
+ }
81
+ export interface PostgresEventScheduler extends EventScheduler {
82
+ /** Begin background polling. Idempotent. */
83
+ start(): Promise<void>;
84
+ /** Stop polling. Resolves once the in-flight tick (if any) has settled. */
85
+ stop(): Promise<void>;
86
+ }
87
+ export declare function createPostgresEventScheduler(config: PostgresEventSchedulerConfig): PostgresEventScheduler;
88
+ //# sourceMappingURL=postgres-event-scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-event-scheduler.d.ts","sourceRoot":"","sources":["../src/postgres-event-scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAIH,OAAO,KAAK,EACV,cAAc,EAGd,SAAS,EACV,MAAM,sBAAsB,CAAA;AAM7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAE1D,OAAO,KAAK,EAAE,eAAe,EAA8B,MAAM,cAAc,CAAA;AAE/E,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,aAAa,CAAA;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAE5D,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;IACjC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAA;IAC9B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D,4CAA4C;IAC5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,2EAA2E;IAC3E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAaD,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,4BAA4B,GACnC,sBAAsB,CAoMxB"}
@@ -0,0 +1,226 @@
1
+ /**
2
+ * createPostgresEventScheduler — durable {@link EventScheduler} backed by
3
+ * the kronos_scheduled_events table, plus a polling worker that fires
4
+ * due schedules into the event store.
5
+ *
6
+ * # Schedule path (caller-driven, inside a UoW)
7
+ *
8
+ * schedule(event, at)
9
+ * → requires INVOCATION phase
10
+ * → captures tags via the configured TagResolver at schedule-time
11
+ * → INSERT row (schedule_id = event.identifier, status='pending')
12
+ * → joins the active UoW transaction via getOrBeginActiveTransaction;
13
+ * if the UoW rolls back, the schedule is never persisted
14
+ * → returns { id: schedule_id } as the cancellation token
15
+ *
16
+ * # Cancel path
17
+ *
18
+ * cancel(token)
19
+ * → SELECT … FOR UPDATE to lock the row + read prior status
20
+ * → branch:
21
+ * status='pending' → UPDATE status='cancelled' → { kind: 'cancelled' }
22
+ * status='appended' → no UPDATE → { kind: 'already-appended' }
23
+ * status='cancelled' → no UPDATE → { kind: 'not-found' }
24
+ * no row → no UPDATE → { kind: 'not-found' }
25
+ * → cancel inside a UoW joins the active tx; outside, opens its own
26
+ * adapter.transaction so the SELECT-FOR-UPDATE + UPDATE land atomically
27
+ *
28
+ * # Worker path (background)
29
+ *
30
+ * start() spins a setInterval that, per tick, runs inside a fresh UoW:
31
+ * 1. force the lazy pg tx open via getOrBeginActiveTransaction
32
+ * 2. SELECT … WHERE status='pending' AND fire_at <= now()
33
+ * ORDER BY fire_at LIMIT $batchSize FOR UPDATE SKIP LOCKED
34
+ * — the SKIP LOCKED keeps multiple worker instances safe
35
+ * 3. for each row: reconstruct EventMessage, call eventStore.append
36
+ * (which joins the same UoW tx), UPDATE status='appended'
37
+ * 4. UoW COMMIT → all appends + status flips land atomically
38
+ *
39
+ * If the worker process dies mid-tick before COMMIT, the rows stay
40
+ * 'pending' and get re-picked on the next tick — at-least-once delivery.
41
+ * The schedule_id is reused as event.identifier so the events table's
42
+ * UNIQUE constraint dedupes any spurious double-append (e.g., on the
43
+ * rare race where a previous COMMIT succeeded but the status UPDATE
44
+ * failed afterwards — though here they share a tx, so this is mainly
45
+ * a defensive note).
46
+ *
47
+ * # Multi-node safety
48
+ *
49
+ * FOR UPDATE SKIP LOCKED is the locking primitive. Two worker processes
50
+ * polling the same table will hand non-overlapping batches of rows to
51
+ * their respective ticks; neither blocks the other. No leader election
52
+ * or distributed lock is needed.
53
+ */
54
+ import { qualifiedNameToString, qualifiedNameFromString } from "@kronos-ts/common";
55
+ import { getOrBeginActiveTransaction } from "@kronos-ts/messaging";
56
+ // Deep-path import: requireInvocationPhase is intentionally not in the
57
+ // messaging barrel — it's the framework-internal mutator guard consumed
58
+ // by append/send/emitUpdate, and now schedule(). Same access pattern.
59
+ import { requireInvocationPhase } from "@kronos-ts/messaging/processing-state";
60
+ import { IsolationLevel } from "./adapter.js";
61
+ import { encodeTag } from "./criteria-sql.js";
62
+ import { DEFAULT_TABLE_NAMES } from "./schema.js";
63
+ export function createPostgresEventScheduler(config) {
64
+ const { adapter, eventStore, uowFactory, tagResolver } = config;
65
+ const tables = config.tableNames ?? DEFAULT_TABLE_NAMES;
66
+ const pollIntervalMs = config.pollIntervalMs ?? 1000;
67
+ const batchSize = config.batchSize ?? 50;
68
+ async function insertSchedule(tx, event, at) {
69
+ const scheduleId = event.identifier;
70
+ const encodedTags = tagResolver
71
+ .resolve(event)
72
+ .map((t) => encodeTag(t.key, t.value));
73
+ await tx.query(`INSERT INTO ${tables.scheduled}
74
+ (schedule_id, fire_at, status, type, tags, payload, metadata, version, message_timestamp)
75
+ VALUES ($1, $2, 'pending', $3, $4, $5, $6, $7, $8)`, [
76
+ scheduleId,
77
+ at.toISOString(),
78
+ qualifiedNameToString(event.name),
79
+ encodedTags,
80
+ JSON.stringify(event.payload ?? {}),
81
+ JSON.stringify(event.metadata ?? {}),
82
+ event.version,
83
+ event.timestamp,
84
+ ]);
85
+ return scheduleId;
86
+ }
87
+ async function cancelOnTx(tx, scheduleId) {
88
+ const rows = await tx.query(`SELECT status FROM ${tables.scheduled} WHERE schedule_id = $1 FOR UPDATE`, [scheduleId]);
89
+ const row = rows[0];
90
+ if (!row)
91
+ return { kind: "not-found" };
92
+ if (row.status === "appended")
93
+ return { kind: "already-appended" };
94
+ if (row.status === "cancelled")
95
+ return { kind: "not-found" };
96
+ await tx.query(`UPDATE ${tables.scheduled} SET status = 'cancelled' WHERE schedule_id = $1`, [scheduleId]);
97
+ return { kind: "cancelled" };
98
+ }
99
+ function decodeJsonbValue(v) {
100
+ if (typeof v === "string") {
101
+ try {
102
+ return JSON.parse(v);
103
+ }
104
+ catch {
105
+ return v;
106
+ }
107
+ }
108
+ return v ?? {};
109
+ }
110
+ function decodeTags(encoded) {
111
+ return encoded.map((t) => {
112
+ // U+001F unit separator — matches encodeTag in criteria-sql.ts
113
+ const sep = t.indexOf("");
114
+ return sep >= 0
115
+ ? { key: t.slice(0, sep), value: t.slice(sep + 1) }
116
+ : { key: t, value: "" };
117
+ });
118
+ }
119
+ function reconstructEvent(row) {
120
+ return {
121
+ identifier: row.schedule_id,
122
+ name: qualifiedNameFromString(row.type),
123
+ payload: decodeJsonbValue(row.payload),
124
+ metadata: decodeJsonbValue(row.metadata),
125
+ timestamp: Number(row.message_timestamp),
126
+ version: row.version,
127
+ tags: decodeTags(row.tags),
128
+ };
129
+ }
130
+ // Worker state
131
+ let running = false;
132
+ let timer;
133
+ let activeTick;
134
+ async function tick() {
135
+ try {
136
+ await uowFactory(undefined, async () => {
137
+ const tx = await getOrBeginActiveTransaction();
138
+ if (!tx) {
139
+ // No lazy tx factory installed on the UoW — the scheduler was
140
+ // configured with a uowFactory that doesn't wrap the postgres tx
141
+ // manager. Without a shared tx the worker can't atomically
142
+ // append-and-mark, so refuse to fire rather than risk
143
+ // partial-state. This is a misconfiguration; surface loudly.
144
+ throw new Error("postgresEventScheduler worker requires a uowFactory wrapped with lazyTransactionalUnitOfWorkFactory + postgresTransactionManager");
145
+ }
146
+ const rows = await tx.query(`SELECT schedule_id, type, tags, payload, metadata, version, message_timestamp
147
+ FROM ${tables.scheduled}
148
+ WHERE status = 'pending' AND fire_at <= now()
149
+ ORDER BY fire_at
150
+ LIMIT $1
151
+ FOR UPDATE SKIP LOCKED`, [batchSize]);
152
+ if (rows.length === 0)
153
+ return;
154
+ for (const row of rows) {
155
+ const event = reconstructEvent(row);
156
+ // eventStore.append joins our shared UoW tx via
157
+ // getOrBeginActiveTransaction (postgres-event-store refactor).
158
+ // event_id = schedule_id, so re-fires after a crash dedupe via
159
+ // the events table's UNIQUE(event_id) constraint.
160
+ await eventStore.append([event]);
161
+ await tx.query(`UPDATE ${tables.scheduled} SET status = 'appended' WHERE schedule_id = $1`, [row.schedule_id]);
162
+ }
163
+ });
164
+ }
165
+ catch (err) {
166
+ // A failed tick leaves rows 'pending' (the UoW rolls back the whole
167
+ // batch). The next tick re-tries. Log so operators see persistent
168
+ // failures rather than a silent hang.
169
+ console.warn("postgresEventScheduler: worker tick failed:", err);
170
+ }
171
+ }
172
+ function scheduleNextTick() {
173
+ if (!running)
174
+ return;
175
+ timer = setTimeout(() => {
176
+ activeTick = tick().finally(() => {
177
+ activeTick = undefined;
178
+ scheduleNextTick();
179
+ });
180
+ }, pollIntervalMs);
181
+ }
182
+ return {
183
+ async schedule(event, at) {
184
+ requireInvocationPhase();
185
+ const shared = await getOrBeginActiveTransaction();
186
+ if (shared === undefined) {
187
+ // schedule() must be transactional with the caller's UoW so a
188
+ // rolled-back command does not leak schedules. Refuse rather
189
+ // than open a side-channel tx the caller can't roll back.
190
+ throw new Error("postgresEventScheduler.schedule requires a UoW with a postgres transaction (configure lazyTransactionalUnitOfWorkFactory + postgresTransactionManager)");
191
+ }
192
+ const id = await insertSchedule(shared, event, at);
193
+ return { id };
194
+ },
195
+ async cancel(token) {
196
+ const shared = await getOrBeginActiveTransaction();
197
+ if (shared !== undefined) {
198
+ return cancelOnTx(shared, token.id);
199
+ }
200
+ return adapter.transaction(IsolationLevel.READ_COMMITTED, (tx) => cancelOnTx(tx, token.id));
201
+ },
202
+ async start() {
203
+ if (running)
204
+ return;
205
+ running = true;
206
+ scheduleNextTick();
207
+ },
208
+ async stop() {
209
+ running = false;
210
+ if (timer !== undefined) {
211
+ clearTimeout(timer);
212
+ timer = undefined;
213
+ }
214
+ if (activeTick !== undefined) {
215
+ try {
216
+ await activeTick;
217
+ }
218
+ catch {
219
+ // The tick logs its own failures; stop() returns successfully
220
+ // either way so callers can shut down deterministically.
221
+ }
222
+ }
223
+ },
224
+ };
225
+ }
226
+ //# sourceMappingURL=postgres-event-scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-event-scheduler.js","sourceRoot":"","sources":["../src/postgres-event-scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAEH,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAQlF,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AAClE,uEAAuE;AACvE,wEAAwE;AACxE,sEAAsE;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAA;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAmB,mBAAmB,EAAE,MAAM,aAAa,CAAA;AA4ClE,MAAM,UAAU,4BAA4B,CAC1C,MAAoC;IAEpC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,CAAA;IAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,IAAI,mBAAmB,CAAA;IACvD,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,IAAI,CAAA;IACpD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAA;IAExC,KAAK,UAAU,cAAc,CAC3B,EAA8B,EAC9B,KAAmB,EACnB,EAAQ;QAER,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;QACnC,MAAM,WAAW,GAAG,WAAW;aAC5B,OAAO,CAAC,KAAK,CAAC;aACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;QACxC,MAAM,EAAE,CAAC,KAAK,CACZ,eAAe,MAAM,CAAC,SAAS;;0DAEqB,EACpD;YACE,UAAU;YACV,EAAE,CAAC,WAAW,EAAE;YAChB,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC;YACjC,WAAW;YACX,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;YACpC,KAAK,CAAC,OAAO;YACb,KAAK,CAAC,SAAS;SAChB,CACF,CAAA;QACD,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,KAAK,UAAU,UAAU,CACvB,EAA8B,EAC9B,UAAkB;QAElB,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CACzB,sBAAsB,MAAM,CAAC,SAAS,oCAAoC,EAC1E,CAAC,UAAU,CAAC,CACb,CAAA;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;QACtC,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;YAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAA;QAClE,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW;YAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;QAE5D,MAAM,EAAE,CAAC,KAAK,CACZ,UAAU,MAAM,CAAC,SAAS,kDAAkD,EAC5E,CAAC,UAAU,CAAC,CACb,CAAA;QACD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;IAC9B,CAAC;IAED,SAAS,gBAAgB,CAAC,CAAU;QAClC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACtB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,CAAA;YACV,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,CAAA;IAChB,CAAC;IAED,SAAS,UAAU,CAAC,OAAiB;QACnC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACvB,+DAA+D;YAC/D,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAC1B,OAAO,GAAG,IAAI,CAAC;gBACb,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE;gBACnD,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;QAC3B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,gBAAgB,CAAC,GAAgB;QACxC,OAAO;YACL,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,IAAI,EAAE,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC;YACvC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC;YACtC,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAA6B;YACpE,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;YACxC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;SAC3B,CAAA;IACH,CAAC;IAED,eAAe;IACf,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,KAAgD,CAAA;IACpD,IAAI,UAAqC,CAAA;IAEzC,KAAK,UAAU,IAAI;QACjB,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;gBACrC,MAAM,EAAE,GAAG,MAAM,2BAA2B,EAA8B,CAAA;gBAC1E,IAAI,CAAC,EAAE,EAAE,CAAC;oBACR,8DAA8D;oBAC9D,iEAAiE;oBACjE,2DAA2D;oBAC3D,sDAAsD;oBACtD,6DAA6D;oBAC7D,MAAM,IAAI,KAAK,CACb,kIAAkI,CACnI,CAAA;gBACH,CAAC;gBAED,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CACzB;kBACQ,MAAM,CAAC,SAAS;;;;kCAIA,EACxB,CAAC,SAAS,CAAC,CACZ,CAAA;gBACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAM;gBAE7B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;oBACnC,gDAAgD;oBAChD,+DAA+D;oBAC/D,+DAA+D;oBAC/D,kDAAkD;oBAClD,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;oBAChC,MAAM,EAAE,CAAC,KAAK,CACZ,UAAU,MAAM,CAAC,SAAS,iDAAiD,EAC3E,CAAC,GAAG,CAAC,WAAW,CAAC,CAClB,CAAA;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,oEAAoE;YACpE,kEAAkE;YAClE,sCAAsC;YACtC,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,GAAG,CAAC,CAAA;QAClE,CAAC;IACH,CAAC;IAED,SAAS,gBAAgB;QACvB,IAAI,CAAC,OAAO;YAAE,OAAM;QACpB,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,UAAU,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC/B,UAAU,GAAG,SAAS,CAAA;gBACtB,gBAAgB,EAAE,CAAA;YACpB,CAAC,CAAC,CAAA;QACJ,CAAC,EAAE,cAAc,CAAC,CAAA;IACpB,CAAC;IAED,OAAO;QACL,KAAK,CAAC,QAAQ,CAAC,KAAmB,EAAE,EAAQ;YAC1C,sBAAsB,EAAE,CAAA;YACxB,MAAM,MAAM,GAAG,MAAM,2BAA2B,EAA8B,CAAA;YAC9E,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,8DAA8D;gBAC9D,6DAA6D;gBAC7D,0DAA0D;gBAC1D,MAAM,IAAI,KAAK,CACb,wJAAwJ,CACzJ,CAAA;YACH,CAAC;YACD,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;YAClD,OAAO,EAAE,EAAE,EAAE,CAAA;QACf,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,KAAoB;YAC/B,MAAM,MAAM,GAAG,MAAM,2BAA2B,EAA8B,CAAA;YAC9E,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;YACrC,CAAC;YACD,OAAO,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,CAC/D,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CACzB,CAAA;QACH,CAAC;QAED,KAAK,CAAC,KAAK;YACT,IAAI,OAAO;gBAAE,OAAM;YACnB,OAAO,GAAG,IAAI,CAAA;YACd,gBAAgB,EAAE,CAAA;QACpB,CAAC;QAED,KAAK,CAAC,IAAI;YACR,OAAO,GAAG,KAAK,CAAA;YACf,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,YAAY,CAAC,KAAK,CAAC,CAAA;gBACnB,KAAK,GAAG,SAAS,CAAA;YACnB,CAAC;YACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACH,MAAM,UAAU,CAAA;gBAClB,CAAC;gBAAC,MAAM,CAAC;oBACP,8DAA8D;oBAC9D,yDAAyD;gBAC3D,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-event-store.d.ts","sourceRoot":"","sources":["../src/postgres-event-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAGV,UAAU,EACX,MAAM,0BAA0B,CAAA;AAMjC,OAAO,KAAK,EACV,YAAY,EAMb,MAAM,sBAAsB,CAAA;AAG7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAA8B,MAAM,cAAc,CAAA;AAK/E,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,aAAa,CAAA;AAIlE,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC5E;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;IACjC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;CACjC;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,wBAAwB,GAC/B,UAAU,CA+dZ"}
1
+ {"version":3,"file":"postgres-event-store.d.ts","sourceRoot":"","sources":["../src/postgres-event-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAGV,UAAU,EACX,MAAM,0BAA0B,CAAA;AAMjC,OAAO,KAAK,EACV,YAAY,EAMb,MAAM,sBAAsB,CAAA;AAS7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAA8B,MAAM,cAAc,CAAA;AAK/E,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,aAAa,CAAA;AAIlE,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC5E;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;IACjC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;CACjC;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,wBAAwB,GAC/B,UAAU,CAwgBZ"}