solid-objects 0.13.0 → 0.13.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.
- package/CHANGELOG.md +19 -1
- package/README.md +67 -8
- package/dist/broadcast-worker.d.ts +2 -0
- package/dist/broadcast-worker.d.ts.map +1 -1
- package/dist/broadcast-worker.js +25 -5
- package/dist/broadcast-worker.js.map +1 -1
- package/dist/configuration.d.ts +2 -0
- package/dist/configuration.d.ts.map +1 -1
- package/dist/configuration.js +3 -0
- package/dist/configuration.js.map +1 -1
- package/dist/effect-worker.d.ts +2 -0
- package/dist/effect-worker.d.ts.map +1 -1
- package/dist/effect-worker.js +25 -5
- package/dist/effect-worker.js.map +1 -1
- package/dist/polling-backoff.d.ts +23 -0
- package/dist/polling-backoff.d.ts.map +1 -0
- package/dist/polling-backoff.js +33 -0
- package/dist/polling-backoff.js.map +1 -0
- package/dist/reminder-scheduler.d.ts +2 -0
- package/dist/reminder-scheduler.d.ts.map +1 -1
- package/dist/reminder-scheduler.js +25 -5
- package/dist/reminder-scheduler.js.map +1 -1
- package/dist/repository.d.ts +1 -0
- package/dist/repository.d.ts.map +1 -1
- package/dist/repository.js +10 -0
- package/dist/repository.js.map +1 -1
- package/dist/runtime.d.ts +4 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +34 -0
- package/dist/runtime.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/wake-up/postgresql.d.ts.map +1 -1
- package/dist/wake-up/postgresql.js +12 -11
- package/dist/wake-up/postgresql.js.map +1 -1
- package/dist/wake-up.d.ts +1 -1
- package/dist/wake-up.d.ts.map +1 -1
- package/dist/wake-up.js +11 -10
- package/dist/wake-up.js.map +1 -1
- package/dist/worker.d.ts +2 -0
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +25 -5
- package/dist/worker.js.map +1 -1
- package/docs/api.md +7 -4
- package/docs/architecture.md +5 -2
- package/docs/benchmarks.md +40 -0
- package/docs/configuration.md +11 -2
- package/docs/operations.md +25 -7
- package/docs/parity.md +2 -2
- package/docs/releasing.md +2 -2
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,24 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## 0.13.1 - 2026-08-16
|
|
4
|
+
|
|
5
|
+
- Back idle actor, effect, reminder, and broadcast polling off exponentially
|
|
6
|
+
from the configured fast interval to a new one-second idle ceiling. Any
|
|
7
|
+
processed work or wake-up resets the role immediately, and actor polling
|
|
8
|
+
remains capped by the lease-renewal interval.
|
|
9
|
+
- Expose each role's current polling interval and emit
|
|
10
|
+
`solid_objects.polling.interval_changed` instrumentation for every idle,
|
|
11
|
+
work, and wake-up transition.
|
|
12
|
+
- Warn once when live processes share the database without a configured
|
|
13
|
+
cross-process wake-up adapter.
|
|
14
|
+
- Preserve older custom wake-up adapters that return `void`; return `true` for
|
|
15
|
+
notifications and `false` for timeouts from the built-in PostgreSQL, Redis,
|
|
16
|
+
and in-process adapters so adaptive polling can distinguish them.
|
|
17
|
+
- Add a reproducible four-role SQLite idle benchmark.
|
|
18
|
+
- **Behavior change:** `pollingIntervalMilliseconds` is now the fast interval
|
|
19
|
+
after activity, not a constant idle cadence. Existing explicit values back
|
|
20
|
+
off to `idlePollingIntervalMilliseconds`, which defaults to `1_000`. Set
|
|
21
|
+
both options to the same value to preserve a fixed cadence.
|
|
4
22
|
|
|
5
23
|
## 0.13.0 - 2026-08-16
|
|
6
24
|
|
package/README.md
CHANGED
|
@@ -21,7 +21,8 @@ invalidations are stored in the database the application already operates.
|
|
|
21
21
|
## The programming model
|
|
22
22
|
|
|
23
23
|
```typescript
|
|
24
|
-
import { Actor } from "solid-objects"
|
|
24
|
+
import { Actor, createRuntime } from "solid-objects"
|
|
25
|
+
import { sqlite } from "solid-objects/database/sqlite"
|
|
25
26
|
|
|
26
27
|
class Cart extends Actor {
|
|
27
28
|
static override readonly actorType = "Cart"
|
|
@@ -34,8 +35,20 @@ class Cart extends Actor {
|
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
|
|
37
|
-
const
|
|
38
|
-
|
|
38
|
+
const runtime = createRuntime({
|
|
39
|
+
database: sqlite({ path: "cart.sqlite3" }),
|
|
40
|
+
authorizeMessage: () => true,
|
|
41
|
+
authorizeQuery: () => true,
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
await runtime.install()
|
|
45
|
+
|
|
46
|
+
try {
|
|
47
|
+
const cart = runtime.ref(Cart, "cart-123")
|
|
48
|
+
await Promise.all([cart.add({ sku: "blue-shirt" }), cart.add({ sku: "green-hat" })])
|
|
49
|
+
} finally {
|
|
50
|
+
await runtime.close()
|
|
51
|
+
}
|
|
39
52
|
```
|
|
40
53
|
|
|
41
54
|
Both calls enter the durable mailbox for `cart-123`. They execute in order and
|
|
@@ -44,11 +57,11 @@ processes submit them concurrently.
|
|
|
44
57
|
|
|
45
58
|
## Run it now with SQLite
|
|
46
59
|
|
|
47
|
-
Node.js 24.15 or newer is required. The `0.13.
|
|
60
|
+
Node.js 24.15 or newer is required. The `0.13.1` release includes a
|
|
48
61
|
packaged quickstart:
|
|
49
62
|
|
|
50
63
|
```bash
|
|
51
|
-
npm exec --yes --package=solid-objects@0.13.
|
|
64
|
+
npm exec --yes --package=solid-objects@0.13.1 -- solid-objects quickstart
|
|
52
65
|
```
|
|
53
66
|
|
|
54
67
|
The command needs no repository checkout, database server, Redis, container, or
|
|
@@ -63,6 +76,41 @@ local run, it verifies that:
|
|
|
63
76
|
- operations for two different identities overlap in time; and
|
|
64
77
|
- the runtime closes and temporary state is removed.
|
|
65
78
|
|
|
79
|
+
## Running in a deployed application
|
|
80
|
+
|
|
81
|
+
[Shuffle Up and Play](https://shuffleupandplay.com/) is a deployed reference
|
|
82
|
+
application where two players create a table, load decks, and move cards while
|
|
83
|
+
realtime updates reach both browsers. Its
|
|
84
|
+
[source](https://github.com/cardmagic/shuffleupandplay) uses Node 24,
|
|
85
|
+
TypeScript, SQLite, `node:http`, and `ws`. Each table code addresses one
|
|
86
|
+
`GameRoom` actor that owns both seats, so mutations share one durable mailbox
|
|
87
|
+
while each player receives a separately authorized projection.
|
|
88
|
+
|
|
89
|
+
The application and its tests exercise more than a counter-shaped happy path:
|
|
90
|
+
|
|
91
|
+
| Production concern | Verifiable application evidence |
|
|
92
|
+
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
93
|
+
| Concurrent mutations | One [`GameRoom`](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/src/actors/game-room.ts#L45-L125) owns a table. [Mailbox tests](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/test/durability.test.ts#L39-L94) submit concurrent life, draw, and shuffle operations and assert the final committed state. |
|
|
94
|
+
| Controlled restarts | [Restart tests](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/test/restart.test.ts#L38-L136) close and reopen the runtime against the same SQLite file, then assert recovery of committed state, an accepted asynchronous operation, an unfinished effect, and a scheduled reminder. |
|
|
95
|
+
| Persistent deployment | The [runtime uses SQLite](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/src/runtime.ts#L45-L63); the [container runs as an unprivileged user](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/Dockerfile#L20-L37), and [Kamal mounts a persistent volume](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/config/deploy.yml#L28-L43). |
|
|
96
|
+
| Private realtime state | [Subscription policy](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/src/runtime.ts#L65-L82) and [per-seat projection](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/src/game/room-snapshot.ts#L92-L130) run on the server. [HTTP](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/test/server.test.ts#L526-L567) and [WebSocket tests](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/test/realtime.test.ts#L184-L235) assert that opponent card identities are absent from player payloads and shared invalidation envelopes. |
|
|
97
|
+
| External work | Deck imports run as [durable effects with success and failure callbacks](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/src/actors/game-room.ts#L192-L253). [Tests](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/test/game-room.test.ts#L209-L331) cover both outcomes and prevent a superseded callback from replacing a newer deck result. |
|
|
98
|
+
| Transactional staged work | A room operation stages an [actor-to-actor log message](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/src/actors/game-room.ts#L339-L349) and a [database commit action](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/src/runtime.ts#L96-L113). Tests cover [rollback of staged messages](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/test/durability.test.ts#L160-L192) and the [metrics write](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/test/server.test.ts#L467-L499). |
|
|
99
|
+
| Time and schema changes | The actor defines [versioned state migrations](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/src/actors/game-room.ts#L47-L91) and a [durable reminder](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/src/actors/game-room.ts#L276-L310). Tests load [stored version-one state](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/test/operations.test.ts#L135-L201) and [run the reminder scheduler](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/test/durability.test.ts#L236-L257). |
|
|
100
|
+
| Operations and CI | The [operations tests](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/test/operations.test.ts#L39-L202) exercise doctor, process, retention, and reconciliation APIs; server suites cover the [dashboard](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/test/server.test.ts#L297-L326), [rate limits](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/test/rate-limit.test.ts), and [shutdown](https://github.com/cardmagic/shuffleupandplay/blob/519a343e8db0bb6eed961a2ffd374dba80d67cd6/test/shutdown.test.ts). The [current main CI run](https://github.com/cardmagic/shuffleupandplay/actions/runs/31963000789) passed typechecking, 171 tests, the build, the doctor, and a Docker image build. |
|
|
101
|
+
|
|
102
|
+
**Scope:** the checked-in deployment configuration runs one Node process using
|
|
103
|
+
SQLite on one Docker host. It demonstrates a real deployed workload, not a
|
|
104
|
+
measured traffic level or every supported topology. Its deck-import effect
|
|
105
|
+
reads an external API; effects that write to an external system still need a
|
|
106
|
+
stable idempotency key because delivery is at least once. The application
|
|
107
|
+
restart tests close the runtime cleanly; abrupt termination, PostgreSQL, MySQL,
|
|
108
|
+
and multi-process lease fencing are verified separately by the library's
|
|
109
|
+
[test matrix](docs/support.md),
|
|
110
|
+
[failure-recovery demonstration](examples/failure-recovery/demo.ts), and
|
|
111
|
+
[correctness contract](docs/correctness.md). Evaluate those guarantees and
|
|
112
|
+
limits against your own workload.
|
|
113
|
+
|
|
66
114
|
## What Solid Objects is for
|
|
67
115
|
|
|
68
116
|
Use Solid Objects when more than one request, job, or process can act on the
|
|
@@ -109,6 +157,12 @@ Redis is optional wake-up infrastructure. It can reduce notification latency
|
|
|
109
157
|
for a multi-process MySQL deployment, but the relational database remains the
|
|
110
158
|
durable source of truth and polling remains the recovery path.
|
|
111
159
|
|
|
160
|
+
Idle roles back off from the configured 100 ms fast polling interval to one
|
|
161
|
+
second. Processed work and wake-up notifications reset that interval
|
|
162
|
+
immediately. The default wake-up reaches only the current Node process; use the
|
|
163
|
+
PostgreSQL or optional Redis adapter when separate processes need low-latency
|
|
164
|
+
delivery. The runtime warns once when it sees that topology without an adapter.
|
|
165
|
+
|
|
112
166
|
## Good and poor fits
|
|
113
167
|
|
|
114
168
|
| Good fit | Poor fit |
|
|
@@ -245,8 +299,9 @@ runtime differences.
|
|
|
245
299
|
The Ruby project first appeared publicly on August 6, 2026, and this TypeScript
|
|
246
300
|
repository on August 13, 2026. Both remain early releases. The
|
|
247
301
|
[`mtg-playmat`](https://github.com/cardmagic/mtg-playmat) application uses the
|
|
248
|
-
Ruby actor and realtime design
|
|
249
|
-
|
|
302
|
+
Ruby actor and realtime design, while
|
|
303
|
+
[Shuffle Up and Play](https://github.com/cardmagic/shuffleupandplay) uses the
|
|
304
|
+
TypeScript package in the deployed Node and SQLite topology documented above.
|
|
250
305
|
|
|
251
306
|
## Documentation
|
|
252
307
|
|
|
@@ -255,15 +310,19 @@ TypeScript deployment.
|
|
|
255
310
|
- [Choosing Solid Objects](docs/fit.md)
|
|
256
311
|
- [Benchmarks and methodology](docs/benchmarks.md)
|
|
257
312
|
- [Supported versions and test matrix](docs/support.md)
|
|
313
|
+
- [Test suite](https://github.com/cardmagic/solid-objects-js/tree/main/test)
|
|
314
|
+
- [CI workflow](https://github.com/cardmagic/solid-objects-js/actions/workflows/ci.yml)
|
|
258
315
|
- [Public API](docs/api.md)
|
|
259
316
|
- [State and lifecycle](docs/state-and-lifecycle.md)
|
|
260
|
-
- [Operations](docs/operations.md)
|
|
317
|
+
- [Operations, retention, and reconciliation](docs/operations.md)
|
|
261
318
|
- [Configuration](docs/configuration.md)
|
|
262
319
|
- [Authorization](docs/authorization.md)
|
|
263
320
|
- [Browser protocol](docs/browser-protocol.md)
|
|
264
321
|
- [Operator dashboard](docs/dashboard.md)
|
|
265
322
|
- [Errors and recovery](docs/errors-and-recovery.md)
|
|
266
323
|
- [Design parity](docs/parity.md)
|
|
324
|
+
- [Changelog](CHANGELOG.md)
|
|
325
|
+
- [Releases](https://github.com/cardmagic/solid-objects-js/releases)
|
|
267
326
|
- [Contributing](CONTRIBUTING.md)
|
|
268
327
|
- [Security policy](SECURITY.md)
|
|
269
328
|
|
|
@@ -4,7 +4,9 @@ export declare class BroadcastWorker {
|
|
|
4
4
|
readonly processId: `${string}-${string}-${string}-${string}-${string}`;
|
|
5
5
|
private registered;
|
|
6
6
|
private stopping;
|
|
7
|
+
private readonly pollingBackoff;
|
|
7
8
|
constructor(runtime: SolidObjectsRuntime);
|
|
9
|
+
get currentPollingIntervalMilliseconds(): number;
|
|
8
10
|
runOnce(): Promise<number>;
|
|
9
11
|
runUntilIdle(options?: {
|
|
10
12
|
maxBroadcasts?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broadcast-worker.d.ts","sourceRoot":"","sources":["../src/broadcast-worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"broadcast-worker.d.ts","sourceRoot":"","sources":["../src/broadcast-worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAIvD,qBAAa,eAAe;IAMd,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,QAAQ,CAAC,SAAS,sDAAe;IACjC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;gBAElB,OAAO,EAAE,mBAAmB;IAYzD,IAAI,kCAAkC,IAAI,MAAM,CAE/C;IAEK,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAc1B,YAAY,CAAC,OAAO,GAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAWvE,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB7C,eAAe,IAAI,IAAI;IAIvB,OAAO,IAAI,OAAO;IAIZ,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YASb,gBAAgB;CAK/B"}
|
package/dist/broadcast-worker.js
CHANGED
|
@@ -1,12 +1,25 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import { withProcessHeartbeat } from "./worker.js";
|
|
3
|
+
import { PollingBackoff } from "./polling-backoff.js";
|
|
3
4
|
export class BroadcastWorker {
|
|
4
5
|
runtime;
|
|
5
6
|
processId = randomUUID();
|
|
6
7
|
registered = false;
|
|
7
8
|
stopping = false;
|
|
9
|
+
pollingBackoff;
|
|
8
10
|
constructor(runtime) {
|
|
9
11
|
this.runtime = runtime;
|
|
12
|
+
this.pollingBackoff = new PollingBackoff({
|
|
13
|
+
minimumIntervalMilliseconds: runtime.settings.pollingIntervalMilliseconds,
|
|
14
|
+
maximumIntervalMilliseconds: runtime.settings.idlePollingIntervalMilliseconds,
|
|
15
|
+
onChange: (transition) => runtime.emitInstrumentation("polling.interval_changed", {
|
|
16
|
+
role: "broadcasts",
|
|
17
|
+
...transition,
|
|
18
|
+
}),
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
get currentPollingIntervalMilliseconds() {
|
|
22
|
+
return this.pollingBackoff.currentIntervalMilliseconds;
|
|
10
23
|
}
|
|
11
24
|
async runOnce() {
|
|
12
25
|
if (this.stopping)
|
|
@@ -36,15 +49,22 @@ export class BroadcastWorker {
|
|
|
36
49
|
}
|
|
37
50
|
async run(signal) {
|
|
38
51
|
await this.ensureRegistered();
|
|
52
|
+
await this.runtime.warnIfPollingIsOnlyCrossProcessWakeUp();
|
|
39
53
|
while (!signal.aborted && !this.stopping) {
|
|
40
54
|
const wakeUp = await this.runtime.settings.wakeUp.watch("broadcasts");
|
|
41
55
|
const processed = await this.runOnce();
|
|
42
|
-
if (processed
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
signal,
|
|
46
|
-
});
|
|
56
|
+
if (processed > 0) {
|
|
57
|
+
this.pollingBackoff.reset("work");
|
|
58
|
+
continue;
|
|
47
59
|
}
|
|
60
|
+
const notified = await wakeUp.wait({
|
|
61
|
+
timeoutMilliseconds: this.pollingBackoff.currentIntervalMilliseconds,
|
|
62
|
+
signal,
|
|
63
|
+
});
|
|
64
|
+
if (notified === false)
|
|
65
|
+
this.pollingBackoff.recordIdle();
|
|
66
|
+
else
|
|
67
|
+
this.pollingBackoff.reset("wake_up");
|
|
48
68
|
}
|
|
49
69
|
await this.stop();
|
|
50
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broadcast-worker.js","sourceRoot":"","sources":["../src/broadcast-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"broadcast-worker.js","sourceRoot":"","sources":["../src/broadcast-worker.ts"],"names":[],"mappings":"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"}
|
package/dist/configuration.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ export interface SolidObjectsConfiguration {
|
|
|
33
33
|
database: Database;
|
|
34
34
|
tableNamePrefix?: string;
|
|
35
35
|
pollingIntervalMilliseconds?: number;
|
|
36
|
+
idlePollingIntervalMilliseconds?: number;
|
|
36
37
|
syncPollingIntervalMilliseconds?: number;
|
|
37
38
|
leaseDurationMilliseconds?: number;
|
|
38
39
|
leaseRenewalIntervalMilliseconds?: number;
|
|
@@ -85,6 +86,7 @@ export interface RuntimeSettings extends Required<Omit<SolidObjectsConfiguration
|
|
|
85
86
|
broadcast?: (event: BroadcastEvent) => Promise<void>;
|
|
86
87
|
instrumentation?: (event: InstrumentationEvent) => void;
|
|
87
88
|
wakeUp: WakeUpAdapter;
|
|
89
|
+
wakeUpConfigured: boolean;
|
|
88
90
|
authorizationPoliciesConfigured: Readonly<Record<string, boolean>>;
|
|
89
91
|
}
|
|
90
92
|
export declare function buildSettings(configuration: SolidObjectsConfiguration): RuntimeSettings;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"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"}
|
package/dist/configuration.js
CHANGED
|
@@ -11,6 +11,7 @@ export function buildSettings(configuration) {
|
|
|
11
11
|
database: configuration.database,
|
|
12
12
|
tableNamePrefix: configuration.tableNamePrefix ?? "solid_objects_",
|
|
13
13
|
pollingIntervalMilliseconds: configuration.pollingIntervalMilliseconds ?? 100,
|
|
14
|
+
idlePollingIntervalMilliseconds: configuration.idlePollingIntervalMilliseconds ?? 1_000,
|
|
14
15
|
syncPollingIntervalMilliseconds: configuration.syncPollingIntervalMilliseconds ?? 50,
|
|
15
16
|
leaseDurationMilliseconds: configuration.leaseDurationMilliseconds ?? 30_000,
|
|
16
17
|
leaseRenewalIntervalMilliseconds: configuration.leaseRenewalIntervalMilliseconds ?? 10_000,
|
|
@@ -47,6 +48,7 @@ export function buildSettings(configuration) {
|
|
|
47
48
|
pruneBatchSize: configuration.pruneBatchSize ?? 1_000,
|
|
48
49
|
logger: configuration.logger ?? consoleLogger,
|
|
49
50
|
wakeUp: configuration.wakeUp ?? new InProcessWakeUpAdapter(),
|
|
51
|
+
wakeUpConfigured: configuration.wakeUp !== undefined,
|
|
50
52
|
authorizeMessage: configuration.authorizeMessage ?? (() => false),
|
|
51
53
|
authorizeQuery: configuration.authorizeQuery ?? (() => false),
|
|
52
54
|
authorizeDestroy: configuration.authorizeDestroy ?? (() => false),
|
|
@@ -86,6 +88,7 @@ function validateSettings(settings) {
|
|
|
86
88
|
}
|
|
87
89
|
const positive = {
|
|
88
90
|
pollingIntervalMilliseconds: settings.pollingIntervalMilliseconds,
|
|
91
|
+
idlePollingIntervalMilliseconds: settings.idlePollingIntervalMilliseconds,
|
|
89
92
|
syncPollingIntervalMilliseconds: settings.syncPollingIntervalMilliseconds,
|
|
90
93
|
leaseDurationMilliseconds: settings.leaseDurationMilliseconds,
|
|
91
94
|
leaseRenewalIntervalMilliseconds: settings.leaseRenewalIntervalMilliseconds,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG1C,OAAO,EAAE,sBAAsB,EAAsB,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"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"}
|
package/dist/effect-worker.d.ts
CHANGED
|
@@ -4,7 +4,9 @@ export declare class EffectWorker {
|
|
|
4
4
|
readonly processId: `${string}-${string}-${string}-${string}-${string}`;
|
|
5
5
|
private registered;
|
|
6
6
|
private stopping;
|
|
7
|
+
private readonly pollingBackoff;
|
|
7
8
|
constructor(runtime: SolidObjectsRuntime);
|
|
9
|
+
get currentPollingIntervalMilliseconds(): number;
|
|
8
10
|
runOnce(): Promise<number>;
|
|
9
11
|
runUntilIdle(options?: {
|
|
10
12
|
maxEffects?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effect-worker.d.ts","sourceRoot":"","sources":["../src/effect-worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"effect-worker.d.ts","sourceRoot":"","sources":["../src/effect-worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAIvD,qBAAa,YAAY;IAMX,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,QAAQ,CAAC,SAAS,sDAAe;IACjC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;gBAElB,OAAO,EAAE,mBAAmB;IAYzD,IAAI,kCAAkC,IAAI,MAAM,CAE/C;IAEK,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAc1B,YAAY,CAAC,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAWpE,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB7C,eAAe,IAAI,IAAI;IAIvB,OAAO,IAAI,OAAO;IAIZ,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YASb,gBAAgB;CAK/B"}
|
package/dist/effect-worker.js
CHANGED
|
@@ -1,12 +1,25 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import { withProcessHeartbeat } from "./worker.js";
|
|
3
|
+
import { PollingBackoff } from "./polling-backoff.js";
|
|
3
4
|
export class EffectWorker {
|
|
4
5
|
runtime;
|
|
5
6
|
processId = randomUUID();
|
|
6
7
|
registered = false;
|
|
7
8
|
stopping = false;
|
|
9
|
+
pollingBackoff;
|
|
8
10
|
constructor(runtime) {
|
|
9
11
|
this.runtime = runtime;
|
|
12
|
+
this.pollingBackoff = new PollingBackoff({
|
|
13
|
+
minimumIntervalMilliseconds: runtime.settings.pollingIntervalMilliseconds,
|
|
14
|
+
maximumIntervalMilliseconds: runtime.settings.idlePollingIntervalMilliseconds,
|
|
15
|
+
onChange: (transition) => runtime.emitInstrumentation("polling.interval_changed", {
|
|
16
|
+
role: "effects",
|
|
17
|
+
...transition,
|
|
18
|
+
}),
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
get currentPollingIntervalMilliseconds() {
|
|
22
|
+
return this.pollingBackoff.currentIntervalMilliseconds;
|
|
10
23
|
}
|
|
11
24
|
async runOnce() {
|
|
12
25
|
if (this.stopping)
|
|
@@ -36,15 +49,22 @@ export class EffectWorker {
|
|
|
36
49
|
}
|
|
37
50
|
async run(signal) {
|
|
38
51
|
await this.ensureRegistered();
|
|
52
|
+
await this.runtime.warnIfPollingIsOnlyCrossProcessWakeUp();
|
|
39
53
|
while (!signal.aborted && !this.stopping) {
|
|
40
54
|
const wakeUp = await this.runtime.settings.wakeUp.watch("effects");
|
|
41
55
|
const processed = await this.runOnce();
|
|
42
|
-
if (processed
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
signal,
|
|
46
|
-
});
|
|
56
|
+
if (processed > 0) {
|
|
57
|
+
this.pollingBackoff.reset("work");
|
|
58
|
+
continue;
|
|
47
59
|
}
|
|
60
|
+
const notified = await wakeUp.wait({
|
|
61
|
+
timeoutMilliseconds: this.pollingBackoff.currentIntervalMilliseconds,
|
|
62
|
+
signal,
|
|
63
|
+
});
|
|
64
|
+
if (notified === false)
|
|
65
|
+
this.pollingBackoff.recordIdle();
|
|
66
|
+
else
|
|
67
|
+
this.pollingBackoff.reset("wake_up");
|
|
48
68
|
}
|
|
49
69
|
await this.stop();
|
|
50
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effect-worker.js","sourceRoot":"","sources":["../src/effect-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"effect-worker.js","sourceRoot":"","sources":["../src/effect-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type PollingBackoffReason = "idle" | "wake_up" | "work";
|
|
2
|
+
export interface PollingBackoffTransition {
|
|
3
|
+
previousIntervalMilliseconds: number;
|
|
4
|
+
currentIntervalMilliseconds: number;
|
|
5
|
+
reason: PollingBackoffReason;
|
|
6
|
+
}
|
|
7
|
+
export interface PollingBackoffOptions {
|
|
8
|
+
minimumIntervalMilliseconds: number;
|
|
9
|
+
maximumIntervalMilliseconds: number;
|
|
10
|
+
onChange?: (transition: PollingBackoffTransition) => void;
|
|
11
|
+
}
|
|
12
|
+
export declare class PollingBackoff {
|
|
13
|
+
private intervalMilliseconds;
|
|
14
|
+
private readonly minimumIntervalMilliseconds;
|
|
15
|
+
private readonly maximumIntervalMilliseconds;
|
|
16
|
+
private readonly onChange;
|
|
17
|
+
constructor(options: PollingBackoffOptions);
|
|
18
|
+
get currentIntervalMilliseconds(): number;
|
|
19
|
+
recordIdle(): void;
|
|
20
|
+
reset(reason: Exclude<PollingBackoffReason, "idle">): void;
|
|
21
|
+
private change;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=polling-backoff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polling-backoff.d.ts","sourceRoot":"","sources":["../src/polling-backoff.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAA;AAE9D,MAAM,WAAW,wBAAwB;IACvC,4BAA4B,EAAE,MAAM,CAAA;IACpC,2BAA2B,EAAE,MAAM,CAAA;IACnC,MAAM,EAAE,oBAAoB,CAAA;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,2BAA2B,EAAE,MAAM,CAAA;IACnC,2BAA2B,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,wBAAwB,KAAK,IAAI,CAAA;CAC1D;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,oBAAoB,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAQ;IACpD,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAQ;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8D;gBAE3E,OAAO,EAAE,qBAAqB;IAU1C,IAAI,2BAA2B,IAAI,MAAM,CAExC;IAED,UAAU,IAAI,IAAI;IAIlB,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,GAAG,IAAI;IAI1D,OAAO,CAAC,MAAM;CAUf"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export class PollingBackoff {
|
|
2
|
+
intervalMilliseconds;
|
|
3
|
+
minimumIntervalMilliseconds;
|
|
4
|
+
maximumIntervalMilliseconds;
|
|
5
|
+
onChange;
|
|
6
|
+
constructor(options) {
|
|
7
|
+
this.minimumIntervalMilliseconds = options.minimumIntervalMilliseconds;
|
|
8
|
+
this.intervalMilliseconds = options.minimumIntervalMilliseconds;
|
|
9
|
+
this.maximumIntervalMilliseconds = Math.max(options.minimumIntervalMilliseconds, options.maximumIntervalMilliseconds);
|
|
10
|
+
this.onChange = options.onChange;
|
|
11
|
+
}
|
|
12
|
+
get currentIntervalMilliseconds() {
|
|
13
|
+
return this.intervalMilliseconds;
|
|
14
|
+
}
|
|
15
|
+
recordIdle() {
|
|
16
|
+
this.change(Math.min(this.intervalMilliseconds * 2, this.maximumIntervalMilliseconds), "idle");
|
|
17
|
+
}
|
|
18
|
+
reset(reason) {
|
|
19
|
+
this.change(this.minimumIntervalMilliseconds, reason);
|
|
20
|
+
}
|
|
21
|
+
change(intervalMilliseconds, reason) {
|
|
22
|
+
if (intervalMilliseconds === this.intervalMilliseconds)
|
|
23
|
+
return;
|
|
24
|
+
const previousIntervalMilliseconds = this.intervalMilliseconds;
|
|
25
|
+
this.intervalMilliseconds = intervalMilliseconds;
|
|
26
|
+
this.onChange?.({
|
|
27
|
+
previousIntervalMilliseconds,
|
|
28
|
+
currentIntervalMilliseconds: intervalMilliseconds,
|
|
29
|
+
reason,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=polling-backoff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polling-backoff.js","sourceRoot":"","sources":["../src/polling-backoff.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,cAAc;IACjB,oBAAoB,CAAQ;IACnB,2BAA2B,CAAQ;IACnC,2BAA2B,CAAQ;IACnC,QAAQ,CAA8D;IAEvF,YAAY,OAA8B;QACxC,IAAI,CAAC,2BAA2B,GAAG,OAAO,CAAC,2BAA2B,CAAA;QACtE,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,2BAA2B,CAAA;QAC/D,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,GAAG,CACzC,OAAO,CAAC,2BAA2B,EACnC,OAAO,CAAC,2BAA2B,CACpC,CAAA;QACD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;IAClC,CAAC;IAED,IAAI,2BAA2B;QAC7B,OAAO,IAAI,CAAC,oBAAoB,CAAA;IAClC,CAAC;IAED,UAAU;QACR,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,EAAE,IAAI,CAAC,2BAA2B,CAAC,EAAE,MAAM,CAAC,CAAA;IAChG,CAAC;IAED,KAAK,CAAC,MAA6C;QACjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAA;IACvD,CAAC;IAEO,MAAM,CAAC,oBAA4B,EAAE,MAA4B;QACvE,IAAI,oBAAoB,KAAK,IAAI,CAAC,oBAAoB;YAAE,OAAM;QAC9D,MAAM,4BAA4B,GAAG,IAAI,CAAC,oBAAoB,CAAA;QAC9D,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAA;QAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,4BAA4B;YAC5B,2BAA2B,EAAE,oBAAoB;YACjD,MAAM;SACP,CAAC,CAAA;IACJ,CAAC;CACF"}
|
|
@@ -4,7 +4,9 @@ export declare class ReminderScheduler {
|
|
|
4
4
|
readonly processId: `${string}-${string}-${string}-${string}-${string}`;
|
|
5
5
|
private registered;
|
|
6
6
|
private stopping;
|
|
7
|
+
private readonly pollingBackoff;
|
|
7
8
|
constructor(runtime: SolidObjectsRuntime);
|
|
9
|
+
get currentPollingIntervalMilliseconds(): number;
|
|
8
10
|
runOnce(options?: {
|
|
9
11
|
now?: Date;
|
|
10
12
|
}): Promise<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reminder-scheduler.d.ts","sourceRoot":"","sources":["../src/reminder-scheduler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"reminder-scheduler.d.ts","sourceRoot":"","sources":["../src/reminder-scheduler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAGvD,qBAAa,iBAAiB;IAMhB,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,QAAQ,CAAC,SAAS,sDAAe;IACjC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;gBAElB,OAAO,EAAE,mBAAmB;IAYzD,IAAI,kCAAkC,IAAI,MAAM,CAE/C;IAEK,OAAO,CAAC,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,IAAI,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAmCtD,YAAY,CAAC,OAAO,GAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAWtE,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB7C,eAAe,IAAI,IAAI;IAIvB,OAAO,IAAI,OAAO;IAIZ,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YASb,gBAAgB;CAK/B"}
|
|
@@ -1,12 +1,25 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import { UnknownOperation } from "./errors.js";
|
|
3
|
+
import { PollingBackoff } from "./polling-backoff.js";
|
|
3
4
|
export class ReminderScheduler {
|
|
4
5
|
runtime;
|
|
5
6
|
processId = randomUUID();
|
|
6
7
|
registered = false;
|
|
7
8
|
stopping = false;
|
|
9
|
+
pollingBackoff;
|
|
8
10
|
constructor(runtime) {
|
|
9
11
|
this.runtime = runtime;
|
|
12
|
+
this.pollingBackoff = new PollingBackoff({
|
|
13
|
+
minimumIntervalMilliseconds: runtime.settings.pollingIntervalMilliseconds,
|
|
14
|
+
maximumIntervalMilliseconds: runtime.settings.idlePollingIntervalMilliseconds,
|
|
15
|
+
onChange: (transition) => runtime.emitInstrumentation("polling.interval_changed", {
|
|
16
|
+
role: "reminders",
|
|
17
|
+
...transition,
|
|
18
|
+
}),
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
get currentPollingIntervalMilliseconds() {
|
|
22
|
+
return this.pollingBackoff.currentIntervalMilliseconds;
|
|
10
23
|
}
|
|
11
24
|
async runOnce(options = {}) {
|
|
12
25
|
if (this.stopping)
|
|
@@ -58,15 +71,22 @@ export class ReminderScheduler {
|
|
|
58
71
|
}
|
|
59
72
|
async run(signal) {
|
|
60
73
|
await this.ensureRegistered();
|
|
74
|
+
await this.runtime.warnIfPollingIsOnlyCrossProcessWakeUp();
|
|
61
75
|
while (!signal.aborted && !this.stopping) {
|
|
62
76
|
const wakeUp = await this.runtime.settings.wakeUp.watch("reminders");
|
|
63
77
|
const processed = await this.runOnce();
|
|
64
|
-
if (processed
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
signal,
|
|
68
|
-
});
|
|
78
|
+
if (processed > 0) {
|
|
79
|
+
this.pollingBackoff.reset("work");
|
|
80
|
+
continue;
|
|
69
81
|
}
|
|
82
|
+
const notified = await wakeUp.wait({
|
|
83
|
+
timeoutMilliseconds: this.pollingBackoff.currentIntervalMilliseconds,
|
|
84
|
+
signal,
|
|
85
|
+
});
|
|
86
|
+
if (notified === false)
|
|
87
|
+
this.pollingBackoff.recordIdle();
|
|
88
|
+
else
|
|
89
|
+
this.pollingBackoff.reset("wake_up");
|
|
70
90
|
}
|
|
71
91
|
await this.stop();
|
|
72
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reminder-scheduler.js","sourceRoot":"","sources":["../src/reminder-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"reminder-scheduler.js","sourceRoot":"","sources":["../src/reminder-scheduler.ts"],"names":[],"mappings":"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"}
|
package/dist/repository.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ export declare class Repository {
|
|
|
27
27
|
rows: ProcessRow[];
|
|
28
28
|
staleAtMilliseconds: number;
|
|
29
29
|
}>;
|
|
30
|
+
hasLiveProcessOutsideCurrentHostProcess(): Promise<boolean>;
|
|
30
31
|
cleanupStaleProcesses(): Promise<number>;
|
|
31
32
|
private releaseProcessOwnership;
|
|
32
33
|
enqueue(input: EnqueueInput): Promise<MessageRow>;
|