@adonis-agora/durable 0.54.3 → 0.55.1

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.
@@ -1,5 +1,5 @@
1
1
  /** Keep in sync with this package's `version` in package.json. */
2
- export declare const VERSION = "0.54.3";
2
+ export declare const VERSION = "0.55.1";
3
3
  export { configure } from '../configure.js';
4
4
  export * from './admission.js';
5
5
  export type { AdmissionContext, AdmissionFactory, RedisAdmissionConfig, } from './admissions/factory.js';
package/dist/src/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /** Keep in sync with this package's `version` in package.json. */
2
- export const VERSION = '0.54.3';
2
+ export const VERSION = '0.55.1';
3
3
  // Re-export the configure hook from the package root so `node ace configure` finds it.
4
4
  // AdonisJS imports the package MAIN and reads `configure` off the module namespace —
5
5
  // the `./configure` subpath alone is never consulted.
@@ -18,11 +18,26 @@ export interface DiscoveredStep {
18
18
  * is the convention the `app/steps` discovery builds on.
19
19
  */
20
20
  export declare function registerStep(server: StepServer, step: DiscoveredStep): void;
21
+ /**
22
+ * A factory that instantiates a class carrying `@Step` methods, called **on every handler
23
+ * invocation**: each step execution runs on a fresh instance, like an `@adonisjs/queue` job. The
24
+ * AdonisJS provider passes `(Ctor) => app.container.make(Ctor)`, so constructor dependency injection
25
+ * (`@inject()`) works for step classes and a `container.swap(Service, ...)` made after boot is seen by
26
+ * the next execution. May return the instance or a Promise (the container's `make` is async). Never
27
+ * called for a `defineStep(...)` function — there is nothing to build. Without a factory, discovery
28
+ * keeps the old behaviour: one `new Ctor()` at registration, reused for every call.
29
+ */
30
+ export type StepClassFactory = (ctor: new () => object) => object | Promise<object>;
21
31
  /**
22
32
  * Collect every `@Step`/`defineStep` handler reachable from an exported value:
23
33
  * - a `defineStep(...)` function (stamped directly) → one handler, bound as-is.
24
- * - a class with `@Step`-decorated methods → instantiate once and bind each stamped method.
34
+ * - a class with `@Step`-decorated methods → instantiate once with `new Ctor()` and bind each stamped
35
+ * method.
25
36
  * Anything else is ignored. So a module can `export` either style (or both) and be discovered.
37
+ *
38
+ * Synchronous, so it can only build a class with `new Ctor()` (no constructor dependencies). The
39
+ * directory/barrel discovery ({@link registerStepsFromDir}, {@link registerStepsFromBarrel}) takes a
40
+ * {@link StepClassFactory} instead, which is how the AdonisJS provider injects dependencies.
26
41
  */
27
42
  export declare function collectSteps(exported: unknown): DiscoveredStep[];
28
43
  /** Discover + register every `@Step`/`defineStep` reachable from `exports` (e.g. a module's exports)
@@ -39,8 +54,13 @@ export declare function registerSteps(server: StepServer, exports: Iterable<unkn
39
54
  * `server` is anything with `handle(name, fn)`: a transport, the store-less `WorkerRuntime`, or the
40
55
  * `WorkflowEngine` itself (it forwards to its primary transport) — the latter is how app code
41
56
  * serves an extra directory from a preload: `await registerStepsFromDir(engine, dir)`.
57
+ *
58
+ * `factory` builds each class that carries `@Step` methods, once per handler call (see
59
+ * {@link StepClassFactory}); omitted, each class is built once with `new Ctor()` at registration.
60
+ * Pass `(Ctor) => app.container.make(Ctor)` for constructor injection — the provider does.
61
+ * `defineStep(...)` functions are served as-is either way.
42
62
  */
43
- export declare function registerStepsFromDir(server: StepServer, dir: string | readonly string[]): Promise<DurableStepMeta[]>;
63
+ export declare function registerStepsFromDir(server: StepServer, dir: string | readonly string[], factory?: StepClassFactory): Promise<DurableStepMeta[]>;
44
64
  /** The build-time barrel shape the Assembler `init` hook generates for `app/steps` (key → lazy
45
65
  * module import, nested per sub-directory), mirroring
46
66
  * {@link import('./workflow-discovery.js').WorkflowsBarrel}. A multi-root hook writes a
@@ -48,6 +68,7 @@ export declare function registerStepsFromDir(server: StepServer, dir: string | r
48
68
  export type StepsBarrel = BarrelTree;
49
69
  /** Register every `@Step`/`defineStep` reachable from a generated {@link StepsBarrel} (or a
50
70
  * multi-root {@link RootedBarrel} array) onto `server` — the build-time equivalent of
51
- * {@link registerStepsFromDir} with no runtime `readdir`, same cross-root duplicate rule. */
52
- export declare function registerStepsFromBarrel(server: StepServer, barrel: StepsBarrel | readonly RootedBarrel[]): Promise<DurableStepMeta[]>;
71
+ * {@link registerStepsFromDir} with no runtime `readdir`, same cross-root duplicate rule and the
72
+ * same optional {@link StepClassFactory}. */
73
+ export declare function registerStepsFromBarrel(server: StepServer, barrel: StepsBarrel | readonly RootedBarrel[], factory?: StepClassFactory): Promise<DurableStepMeta[]>;
53
74
  //# sourceMappingURL=step-discovery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"step-discovery.d.ts","sourceRoot":"","sources":["../../src/step-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EAIf,KAAK,YAAY,EAElB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,EAAE,KAAK,eAAe,EAAc,MAAM,eAAe,CAAC;AAEjE;uFACuF;AACvF,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7C;AAED,+FAA+F;AAC/F,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAoBD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,cAAc,EAAE,CA8BhE;AAED;iGACiG;AACjG,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,eAAe,EAAE,CAY/F;AAmED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAC9B,OAAO,CAAC,eAAe,EAAE,CAAC,CAE5B;AAED;;;0CAG0C;AAC1C,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC;AAErC;;8FAE8F;AAC9F,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,WAAW,GAAG,SAAS,YAAY,EAAE,GAC5C,OAAO,CAAC,eAAe,EAAE,CAAC,CAE5B"}
1
+ {"version":3,"file":"step-discovery.d.ts","sourceRoot":"","sources":["../../src/step-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EAIf,KAAK,YAAY,EAElB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,EAAE,KAAK,eAAe,EAAc,MAAM,eAAe,CAAC;AAEjE;uFACuF;AACvF,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7C;AAED,+FAA+F;AAC/F,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAoBD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI,CAE3E;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,UAAU,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAiCpF;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,cAAc,EAAE,CAMhE;AA6BD;iGACiG;AACjG,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,eAAe,EAAE,CAY/F;AAsFD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAC/B,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,EAAE,CAAC,CAM5B;AAED;;;0CAG0C;AAC1C,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC;AAErC;;;8CAG8C;AAC9C,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,WAAW,GAAG,SAAS,YAAY,EAAE,EAC7C,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,EAAE,CAAC,CAE5B"}
@@ -28,39 +28,81 @@ function validating(step) {
28
28
  export function registerStep(server, step) {
29
29
  server.handle(step.meta.name, validating(step));
30
30
  }
31
+ function defaultStepClassFactory(ctor) {
32
+ return new ctor();
33
+ }
34
+ /** The `@Step`-stamped method keys on a class's prototype; empty for anything that is not a class
35
+ * with stamped methods. */
36
+ function stampedStepKeys(exported) {
37
+ if (typeof exported !== 'function' || !exported.prototype)
38
+ return [];
39
+ const proto = exported.prototype;
40
+ return Object.getOwnPropertyNames(proto).filter((key) => {
41
+ const value = proto[key];
42
+ return (typeof value === 'function' &&
43
+ typeof value[DURABLE_STEP_NAME] === 'string');
44
+ });
45
+ }
46
+ /** Bind each stamped method of `exported` (a class) to `instance`. */
47
+ function bindStepMethods(exported, instance, keys) {
48
+ const proto = exported.prototype;
49
+ const target = instance;
50
+ const found = [];
51
+ for (const key of keys) {
52
+ const meta = stepMetaOf(proto[key]);
53
+ if (!meta)
54
+ continue;
55
+ found.push({ meta, handler: target[key].bind(instance) });
56
+ }
57
+ return found;
58
+ }
31
59
  /**
32
60
  * Collect every `@Step`/`defineStep` handler reachable from an exported value:
33
61
  * - a `defineStep(...)` function (stamped directly) → one handler, bound as-is.
34
- * - a class with `@Step`-decorated methods → instantiate once and bind each stamped method.
62
+ * - a class with `@Step`-decorated methods → instantiate once with `new Ctor()` and bind each stamped
63
+ * method.
35
64
  * Anything else is ignored. So a module can `export` either style (or both) and be discovered.
65
+ *
66
+ * Synchronous, so it can only build a class with `new Ctor()` (no constructor dependencies). The
67
+ * directory/barrel discovery ({@link registerStepsFromDir}, {@link registerStepsFromBarrel}) takes a
68
+ * {@link StepClassFactory} instead, which is how the AdonisJS provider injects dependencies.
36
69
  */
37
70
  export function collectSteps(exported) {
38
- const found = [];
39
- // A `defineStep(...)` handler: the function itself carries the stamp.
40
71
  const directMeta = stepMetaOf(exported);
41
- if (directMeta) {
42
- found.push({ meta: directMeta, handler: exported });
43
- return found;
44
- }
45
- // A class with `@Step` methods: scan its prototype for stamped methods and bind them to an instance.
46
- if (typeof exported === 'function' && exported.prototype) {
47
- const proto = exported.prototype;
48
- const stamped = Object.getOwnPropertyNames(proto).filter((key) => {
49
- const value = proto[key];
50
- return (typeof value === 'function' &&
51
- typeof value[DURABLE_STEP_NAME] === 'string');
72
+ if (directMeta)
73
+ return [{ meta: directMeta, handler: exported }];
74
+ const keys = stampedStepKeys(exported);
75
+ if (keys.length === 0)
76
+ return [];
77
+ return bindStepMethods(exported, defaultStepClassFactory(exported), keys);
78
+ }
79
+ /**
80
+ * {@link collectSteps}, but with `factory` each handler resolves its instance through it on every
81
+ * call (and calls the method on that instance). Without `factory` this IS {@link collectSteps}.
82
+ */
83
+ function collectStepsWith(exported, factory) {
84
+ if (!factory)
85
+ return collectSteps(exported);
86
+ const directMeta = stepMetaOf(exported);
87
+ if (directMeta)
88
+ return [{ meta: directMeta, handler: exported }];
89
+ const keys = stampedStepKeys(exported);
90
+ if (keys.length === 0)
91
+ return [];
92
+ const Ctor = exported;
93
+ const proto = Ctor.prototype;
94
+ const found = [];
95
+ for (const key of keys) {
96
+ const meta = stepMetaOf(proto[key]);
97
+ if (!meta)
98
+ continue;
99
+ found.push({
100
+ meta,
101
+ handler: async (input, log) => {
102
+ const instance = (await factory(Ctor));
103
+ return instance[key].call(instance, input, log);
104
+ },
52
105
  });
53
- if (stamped.length > 0) {
54
- const Ctor = exported;
55
- const instance = new Ctor();
56
- for (const key of stamped) {
57
- const method = proto[key];
58
- const meta = stepMetaOf(method);
59
- if (!meta)
60
- continue;
61
- found.push({ meta, handler: instance[key].bind(instance) });
62
- }
63
- }
64
106
  }
65
107
  return found;
66
108
  }
@@ -109,7 +151,7 @@ function stepNamesOf(exported) {
109
151
  * registered, so a clash never leaves a half-served transport. The same export reachable from two
110
152
  * roots (a re-export, or overlapping roots) is served once.
111
153
  */
112
- async function registerStepModules(server, modules) {
154
+ async function registerStepModules(server, modules, factory) {
113
155
  const owners = new Map();
114
156
  const plan = [];
115
157
  for (const { root, file, load } of modules) {
@@ -135,14 +177,33 @@ async function registerStepModules(server, modules) {
135
177
  }
136
178
  plan.push(exports);
137
179
  }
180
+ // Collect every module's handlers BEFORE serving any, so a class whose `new Ctor()` throws (no
181
+ // factory) fails discovery without leaving a half-served transport. With a factory nothing is
182
+ // built here: each handler resolves its instance when it runs.
183
+ const collected = [];
184
+ for (const exports of plan) {
185
+ // Per module, exactly `registerSteps`: de-duplicated by routing name, first export wins.
186
+ const steps = [];
187
+ const inModule = new Set();
188
+ for (const exported of exports) {
189
+ for (const step of collectStepsWith(exported, factory)) {
190
+ if (inModule.has(step.meta.name))
191
+ continue;
192
+ inModule.add(step.meta.name);
193
+ steps.push(step);
194
+ }
195
+ }
196
+ collected.push(steps);
197
+ }
138
198
  const registered = [];
139
199
  const seen = new Set();
140
- for (const exports of plan) {
141
- for (const meta of registerSteps(server, exports)) {
142
- if (seen.has(meta.name))
200
+ for (const steps of collected) {
201
+ for (const step of steps) {
202
+ registerStep(server, step);
203
+ if (seen.has(step.meta.name))
143
204
  continue;
144
- seen.add(meta.name);
145
- registered.push(meta);
205
+ seen.add(step.meta.name);
206
+ registered.push(step.meta);
146
207
  }
147
208
  }
148
209
  return registered;
@@ -158,14 +219,20 @@ async function registerStepModules(server, modules) {
158
219
  * `server` is anything with `handle(name, fn)`: a transport, the store-less `WorkerRuntime`, or the
159
220
  * `WorkflowEngine` itself (it forwards to its primary transport) — the latter is how app code
160
221
  * serves an extra directory from a preload: `await registerStepsFromDir(engine, dir)`.
222
+ *
223
+ * `factory` builds each class that carries `@Step` methods, once per handler call (see
224
+ * {@link StepClassFactory}); omitted, each class is built once with `new Ctor()` at registration.
225
+ * Pass `(Ctor) => app.container.make(Ctor)` for constructor injection — the provider does.
226
+ * `defineStep(...)` functions are served as-is either way.
161
227
  */
162
- export async function registerStepsFromDir(server, dir) {
163
- return registerStepModules(server, await scanDirsModules(typeof dir === 'string' ? [dir] : dir));
228
+ export async function registerStepsFromDir(server, dir, factory) {
229
+ return registerStepModules(server, await scanDirsModules(typeof dir === 'string' ? [dir] : dir), factory);
164
230
  }
165
231
  /** Register every `@Step`/`defineStep` reachable from a generated {@link StepsBarrel} (or a
166
232
  * multi-root {@link RootedBarrel} array) onto `server` — the build-time equivalent of
167
- * {@link registerStepsFromDir} with no runtime `readdir`, same cross-root duplicate rule. */
168
- export async function registerStepsFromBarrel(server, barrel) {
169
- return registerStepModules(server, barrelModules(barrel));
233
+ * {@link registerStepsFromDir} with no runtime `readdir`, same cross-root duplicate rule and the
234
+ * same optional {@link StepClassFactory}. */
235
+ export async function registerStepsFromBarrel(server, barrel, factory) {
236
+ return registerStepModules(server, barrelModules(barrel), factory);
170
237
  }
171
238
  //# sourceMappingURL=step-discovery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"step-discovery.js","sourceRoot":"","sources":["../../src/step-discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"step-discovery.js","sourceRoot":"","sources":["../../src/step-discovery.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,12 @@ export declare class LucidStateStore implements StateStore {
53
53
  /** Idempotently provision the durable tables (called on boot when `autoSchema` is on). */
54
54
  ensureSchema(): Promise<void>;
55
55
  createRun(run: WorkflowRun): Promise<void>;
56
+ /**
57
+ * Run `write` in a transaction only when `patch` needs one: a terminal settle reads the run's tags
58
+ * under a row lock to release its singleton slot, and new search attributes rewrite their rows
59
+ * with the run's. Any other patch is one UPDATE, which needs no transaction around it.
60
+ */
61
+ private writeRun;
56
62
  updateRun(runId: string, patch: Partial<WorkflowRun>): Promise<void>;
57
63
  updateRunIf(runId: string, expectedStatuses: RunStatus[], patch: Partial<WorkflowRun>): Promise<boolean>;
58
64
  /** Whether the runs table has `awaiting_decision_task_id`, probed once per store and cached. */
@@ -1 +1 @@
1
- {"version":3,"file":"lucid.d.ts","sourceRoot":"","sources":["../../../src/stores/lucid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lucid.d.ts","sourceRoot":"","sources":["../../../src/stores/lucid.ts"],"names":[],"mappings":"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"}
@@ -53,13 +53,31 @@ export class LucidStateStore {
53
53
  }
54
54
  // --- runs ---------------------------------------------------------------
55
55
  async createRun(run) {
56
+ if (normalizeAttributeRows(run.id, run.searchAttributes).length === 0) {
57
+ // Nothing to index: the insert, then clear any attribute rows a deleted run of this id left,
58
+ // as two statements. The insert goes first, so a run that already exists keeps its rows.
59
+ const client = this.client();
60
+ await client.table(DURABLE_TABLES.runs).insert(runToRow(run));
61
+ await client.from(DURABLE_TABLES.attributes).where('run_id', run.id).delete();
62
+ return;
63
+ }
56
64
  await this.client().transaction(async (trx) => {
57
65
  await trx.table(DURABLE_TABLES.runs).insert(runToRow(run));
58
66
  await this.reindexAttributes(trx, run.id, run.searchAttributes);
59
67
  });
60
68
  }
69
+ /**
70
+ * Run `write` in a transaction only when `patch` needs one: a terminal settle reads the run's tags
71
+ * under a row lock to release its singleton slot, and new search attributes rewrite their rows
72
+ * with the run's. Any other patch is one UPDATE, which needs no transaction around it.
73
+ */
74
+ writeRun(patch, write) {
75
+ if (!settlesTerminally(patch) && !('searchAttributes' in patch))
76
+ return write(this.client());
77
+ return this.client().transaction((trx) => write(trx));
78
+ }
61
79
  async updateRun(runId, patch) {
62
- await this.client().transaction(async (trx) => {
80
+ await this.writeRun(patch, async (trx) => {
63
81
  const row = await this.releaseSlot(trx, runId, patch);
64
82
  // Knex throws on an empty `.update({})`; skip the UPDATE when no mapped column changed.
65
83
  if (Object.keys(row).length) {
@@ -71,7 +89,7 @@ export class LucidStateStore {
71
89
  });
72
90
  }
73
91
  async updateRunIf(runId, expectedStatuses, patch) {
74
- return this.client().transaction(async (trx) => {
92
+ return this.writeRun(patch, async (trx) => {
75
93
  const row = await this.releaseSlot(trx, runId, patch);
76
94
  let applied;
77
95
  if (Object.keys(row).length) {
@@ -536,17 +554,17 @@ export class LucidStateStore {
536
554
  .merge();
537
555
  }
538
556
  async takeSignalWaiter(token) {
539
- // Atomically take-and-remove: delete by token, returning the row only if WE deleted it. Done in a
540
- // transaction so a concurrent take can't hand the same waiter to two callers.
541
- return this.client().transaction(async (trx) => {
542
- const row = await trx.from(DURABLE_TABLES.signalWaiters).where('token', token).first();
543
- if (!row)
544
- return null;
545
- const deleted = await trx.from(DURABLE_TABLES.signalWaiters).where('token', token).delete();
546
- if (rowsAffected(deleted) !== 1)
547
- return null;
548
- return rowToSignalWaiter(row);
549
- });
557
+ // Take-and-remove: the row is ours only if our DELETE removed it, so a concurrent take can't hand
558
+ // the same waiter to two callers. The DELETE arbitrates, so no transaction is needed around it,
559
+ // and a token with no waiter (the common case) costs one read.
560
+ const client = this.client();
561
+ const row = await client.from(DURABLE_TABLES.signalWaiters).where('token', token).first();
562
+ if (!row)
563
+ return null;
564
+ const deleted = await client.from(DURABLE_TABLES.signalWaiters).where('token', token).delete();
565
+ if (rowsAffected(deleted) !== 1)
566
+ return null;
567
+ return rowToSignalWaiter(row);
550
568
  }
551
569
  async listSignalWaiters(prefix) {
552
570
  // The prefix embeds caller-supplied names (event names via eventPrefix) — escape their LIKE
@@ -672,22 +690,23 @@ export class LucidStateStore {
672
690
  }
673
691
  }
674
692
  async takeBufferedSignal(token) {
675
- return this.client().transaction(async (trx) => {
676
- const row = await trx
677
- .from(DURABLE_TABLES.bufferedSignals)
678
- .where('token', token)
679
- .orderBy('id', 'asc')
680
- .first();
681
- if (!row)
682
- return null;
683
- const r = row;
684
- const deleted = await trx.from(DURABLE_TABLES.bufferedSignals).where('id', r.id).delete();
685
- if (rowsAffected(deleted) !== 1)
686
- return null;
687
- return {
688
- payload: parseJsonColumn(r.payload, `${DURABLE_TABLES.bufferedSignals}.payload`, String(r.id)),
689
- };
690
- });
693
+ // The oldest signal is ours only if our DELETE removed it, so two takers never get the same one;
694
+ // that needs no transaction, and a token with nothing buffered (the common case) costs one read.
695
+ const client = this.client();
696
+ const row = await client
697
+ .from(DURABLE_TABLES.bufferedSignals)
698
+ .where('token', token)
699
+ .orderBy('id', 'asc')
700
+ .first();
701
+ if (!row)
702
+ return null;
703
+ const r = row;
704
+ const deleted = await client.from(DURABLE_TABLES.bufferedSignals).where('id', r.id).delete();
705
+ if (rowsAffected(deleted) !== 1)
706
+ return null;
707
+ return {
708
+ payload: parseJsonColumn(r.payload, `${DURABLE_TABLES.bufferedSignals}.payload`, String(r.id)),
709
+ };
691
710
  }
692
711
  // --- buffered events (name-keyed, match-based consumption) ---------------
693
712
  async bufferEvent(input) {