solid-objects 0.14.5 → 0.14.7
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 +38 -0
- package/README.md +4 -0
- package/dist/actor-runtime.d.ts +36 -0
- package/dist/actor-runtime.d.ts.map +1 -0
- package/dist/actor-runtime.js +2 -0
- package/dist/actor-runtime.js.map +1 -0
- package/dist/application-database.d.ts.map +1 -1
- package/dist/application-database.js +2 -2
- package/dist/application-database.js.map +1 -1
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/cloudflare/configuration.d.ts +32 -0
- package/dist/cloudflare/configuration.d.ts.map +1 -0
- package/dist/cloudflare/configuration.js +46 -0
- package/dist/cloudflare/configuration.js.map +1 -0
- package/dist/cloudflare/engine.d.ts +43 -0
- package/dist/cloudflare/engine.d.ts.map +1 -0
- package/dist/cloudflare/engine.js +921 -0
- package/dist/cloudflare/engine.js.map +1 -0
- package/dist/cloudflare/host.d.ts +10 -0
- package/dist/cloudflare/host.d.ts.map +1 -0
- package/dist/cloudflare/host.js +44 -0
- package/dist/cloudflare/host.js.map +1 -0
- package/dist/cloudflare/index.d.ts +9 -0
- package/dist/cloudflare/index.d.ts.map +1 -0
- package/dist/cloudflare/index.js +8 -0
- package/dist/cloudflare/index.js.map +1 -0
- package/dist/cloudflare/platform.d.ts +2 -0
- package/dist/cloudflare/platform.d.ts.map +1 -0
- package/dist/cloudflare/platform.js +4 -0
- package/dist/cloudflare/platform.js.map +1 -0
- package/dist/cloudflare/protocol.d.ts +58 -0
- package/dist/cloudflare/protocol.d.ts.map +1 -0
- package/dist/cloudflare/protocol.js +77 -0
- package/dist/cloudflare/protocol.js.map +1 -0
- package/dist/cloudflare/records.d.ts +71 -0
- package/dist/cloudflare/records.d.ts.map +1 -0
- package/dist/cloudflare/records.js +2 -0
- package/dist/cloudflare/records.js.map +1 -0
- package/dist/cloudflare/runtime.d.ts +83 -0
- package/dist/cloudflare/runtime.d.ts.map +1 -0
- package/dist/cloudflare/runtime.js +321 -0
- package/dist/cloudflare/runtime.js.map +1 -0
- package/dist/cloudflare/session.d.ts +12 -0
- package/dist/cloudflare/session.d.ts.map +1 -0
- package/dist/cloudflare/session.js +332 -0
- package/dist/cloudflare/session.js.map +1 -0
- package/dist/cloudflare/storage.d.ts +25 -0
- package/dist/cloudflare/storage.d.ts.map +1 -0
- package/dist/cloudflare/storage.js +195 -0
- package/dist/cloudflare/storage.js.map +1 -0
- package/dist/context.d.ts +5 -4
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +3 -0
- package/dist/context.js.map +1 -1
- package/dist/core.d.ts +8 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +4 -0
- package/dist/core.js.map +1 -0
- package/dist/database/mysql.d.ts +2 -2
- package/dist/database/mysql.d.ts.map +1 -1
- package/dist/database/mysql.js +4 -1
- package/dist/database/mysql.js.map +1 -1
- package/dist/database/postgresql.d.ts +2 -2
- package/dist/database/postgresql.d.ts.map +1 -1
- package/dist/database/postgresql.js +4 -2
- package/dist/database/postgresql.js.map +1 -1
- package/dist/database/types.d.ts +4 -1
- package/dist/database/types.d.ts.map +1 -1
- package/dist/default-runtime.d.ts +4 -4
- package/dist/default-runtime.d.ts.map +1 -1
- package/dist/default-runtime.js.map +1 -1
- package/dist/doctor.js +2 -2
- package/dist/doctor.js.map +1 -1
- package/dist/errors.d.ts +14 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +9 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/realtime.d.ts +18 -2
- package/dist/realtime.d.ts.map +1 -1
- package/dist/realtime.js.map +1 -1
- package/dist/reference.d.ts +5 -5
- package/dist/reference.d.ts.map +1 -1
- package/dist/reference.js.map +1 -1
- package/dist/repository.d.ts +15 -1
- package/dist/repository.d.ts.map +1 -1
- package/dist/repository.js +303 -65
- package/dist/repository.js.map +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +18 -53
- package/dist/runtime.js.map +1 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +29 -5
- package/dist/schema.js.map +1 -1
- package/dist/turn.d.ts +34 -0
- package/dist/turn.d.ts.map +1 -0
- package/dist/turn.js +57 -0
- package/dist/turn.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/api.md +28 -2
- package/docs/architecture.md +5 -3
- package/docs/cloudflare.md +155 -0
- package/docs/parity.md +28 -9
- package/docs/support.md +12 -11
- package/examples/cloudflare/README.md +49 -0
- package/examples/cloudflare/environment.d.ts +14 -0
- package/examples/cloudflare/shopping-cart.ts +65 -0
- package/examples/cloudflare/worker.ts +87 -0
- package/examples/cloudflare/wrangler.jsonc +15 -0
- package/package.json +20 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.14.7 - 2026-09-05
|
|
4
|
+
|
|
5
|
+
- Read SQL message results and completion status in one statement so concurrent
|
|
6
|
+
completion cannot return a stale `null` result.
|
|
7
|
+
- Add `solid-objects/core` and the Cloudflare Durable Objects runtime backend.
|
|
8
|
+
Each actor identity owns SQLite state, a durable mailbox, retry state,
|
|
9
|
+
reminders, and effect/message outboxes. Request IDs recover ambiguous RPC
|
|
10
|
+
acceptance; incarnation and execution generations fence stale commits.
|
|
11
|
+
- Add hibernating session Durable Objects for existing browser subscriptions,
|
|
12
|
+
including multi-actor connections, fresh authorization, personalized payloads,
|
|
13
|
+
revision fencing, and durable subscription cleanup.
|
|
14
|
+
- Share actor turn evaluation across SQL and Cloudflare. Keep Workers types and
|
|
15
|
+
imports separate from the Node target. Add Workers integration tests, a
|
|
16
|
+
runnable example, bundle checks, and an explicit backend capability matrix.
|
|
17
|
+
The Cloudflare backend is experimental pending deployed failover/soak testing.
|
|
18
|
+
|
|
19
|
+
## 0.14.6 - 2026-09-03
|
|
20
|
+
|
|
21
|
+
- Poll effects, reminders, and broadcasts through ordered indexes installed by
|
|
22
|
+
schema migration 8. PostgreSQL and MySQL claim one row with
|
|
23
|
+
`FOR UPDATE SKIP LOCKED`; candidate probes avoid joins and load actor identity
|
|
24
|
+
by primary key after the claim. SQLite keeps its serialized transaction path.
|
|
25
|
+
The broadcast revision guard has its own
|
|
26
|
+
`(instance_id, state_revision, status)` index instead of rescanning the outbox
|
|
27
|
+
for every candidate. Claim transactions use read committed isolation on
|
|
28
|
+
PostgreSQL and MySQL so preceding recovery work cannot turn row skipping into
|
|
29
|
+
InnoDB gap-lock contention.
|
|
30
|
+
- Replace bulk broadcast and reminder recovery updates with separate available
|
|
31
|
+
and stale probes. Compare category heads without locking them, lock only the
|
|
32
|
+
oldest candidate by primary key, and retry past work already locked by another
|
|
33
|
+
claimant. This preserves global delivery order, concurrent progress,
|
|
34
|
+
per-instance broadcast revision order, stale-process recovery, and
|
|
35
|
+
at-least-once delivery.
|
|
36
|
+
- On 50,000 production-shaped rows, SQLite, PostgreSQL 18, and MySQL 8.4 all
|
|
37
|
+
move from scans and explicit sorts to ordered index probes. The worst SQLite
|
|
38
|
+
broadcast probe fell from 944 ms to 0.018 ms; PostgreSQL's probes finish in
|
|
39
|
+
0.02-0.09 ms and MySQL's in 0.10-1.2 ms.
|
|
40
|
+
|
|
3
41
|
## 0.14.5 - 2026-08-29
|
|
4
42
|
|
|
5
43
|
- Record the Ruby state warning in the parity ledger. The row said the Ruby gem
|
package/README.md
CHANGED
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
|
|
6
6
|
**Open Source Durable Objects in your Node app.**
|
|
7
7
|
|
|
8
|
+
Deploying on Cloudflare? The [Durable Objects backend](docs/cloudflare.md) runs
|
|
9
|
+
the same actor API on Workers, with durable mailboxes, alarms, and browser
|
|
10
|
+
subscriptions. Start with the [Cloudflare example](examples/cloudflare/README.md).
|
|
11
|
+
|
|
8
12
|
In a shopping cart, paying twice at the same time is a big problem. The payment provider might time out, and your Node site could be restarting before recovery finishes.
|
|
9
13
|
|
|
10
14
|
To deal with this safely, you often need logic scattered between 7-10 files like database row locks, Redis locks, delayed jobs, retries, and cleanup code to keep that process straight. They are not all large, but they must agree about the same payment state and failure rules. That coordination is the difficult part.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { RealtimeManager } from "./realtime.js";
|
|
2
|
+
import type { Actor, ActorClass } from "./actor.js";
|
|
3
|
+
import type { ActorReference, ActorReferenceCore, ActorSnapshot, MessageReference } from "./reference.js";
|
|
4
|
+
import type { ActorIdentifier, AsyncInvocationOptions, DeepReadonly, DestroyOptions, InvocationOptions, JsonObject, JsonValue, Logger, MessageStatus, SnapshotOptions } from "./types.js";
|
|
5
|
+
export interface SnapshotWithIncarnation<ActorType extends Actor> {
|
|
6
|
+
snapshot: ActorSnapshot<ActorType>;
|
|
7
|
+
instanceId: string;
|
|
8
|
+
revision: string;
|
|
9
|
+
createdAtMs: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ActorRuntime {
|
|
12
|
+
ref<ActorType extends Actor>(actorClass: ActorClass<ActorType>, actorId: ActorIdentifier): ActorReference<ActorType>;
|
|
13
|
+
invoke<Result = JsonValue>(options: {
|
|
14
|
+
reference: ActorReferenceCore<Actor>;
|
|
15
|
+
operation: string;
|
|
16
|
+
argumentsValue?: JsonObject;
|
|
17
|
+
options?: InvocationOptions;
|
|
18
|
+
}): Promise<DeepReadonly<Result>>;
|
|
19
|
+
sendMessage<Result = JsonValue>(options: {
|
|
20
|
+
reference: ActorReferenceCore<Actor>;
|
|
21
|
+
operation: string;
|
|
22
|
+
argumentsValue?: JsonObject;
|
|
23
|
+
options?: AsyncInvocationOptions;
|
|
24
|
+
}): Promise<MessageReference<Result>>;
|
|
25
|
+
wait<Result>(reference: MessageReference<Result>, options?: InvocationOptions): Promise<DeepReadonly<Result>>;
|
|
26
|
+
messageStatus(reference: MessageReference, options?: SnapshotOptions): Promise<MessageStatus>;
|
|
27
|
+
messageResult<Result>(reference: MessageReference<Result>, options?: SnapshotOptions): Promise<DeepReadonly<Result> | undefined>;
|
|
28
|
+
snapshot<ActorType extends Actor>(reference: ActorReferenceCore<ActorType>, options?: SnapshotOptions): Promise<ActorSnapshot<ActorType>>;
|
|
29
|
+
snapshotWithIncarnation<ActorType extends Actor>(reference: ActorReferenceCore<ActorType>, options?: SnapshotOptions): Promise<SnapshotWithIncarnation<ActorType>>;
|
|
30
|
+
destroy(reference: ActorReferenceCore<Actor>, options?: DestroyOptions): Promise<boolean>;
|
|
31
|
+
readonly settings: {
|
|
32
|
+
readonly logger: Logger;
|
|
33
|
+
};
|
|
34
|
+
readonly realtime: Pick<RealtimeManager, "connect">;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=actor-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actor-runtime.d.ts","sourceRoot":"","sources":["../src/actor-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EACjB,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,MAAM,EACN,aAAa,EACb,eAAe,EAChB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,uBAAuB,CAAC,SAAS,SAAS,KAAK;IAC9D,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,SAAS,SAAS,KAAK,EACzB,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,EACjC,OAAO,EAAE,eAAe,GACvB,cAAc,CAAC,SAAS,CAAC,CAAA;IAC5B,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE;QAClC,SAAS,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACpC,SAAS,EAAE,MAAM,CAAA;QACjB,cAAc,CAAC,EAAE,UAAU,CAAA;QAC3B,OAAO,CAAC,EAAE,iBAAiB,CAAA;KAC5B,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;IACjC,WAAW,CAAC,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE;QACvC,SAAS,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACpC,SAAS,EAAE,MAAM,CAAA;QACjB,cAAc,CAAC,EAAE,UAAU,CAAA;QAC3B,OAAO,CAAC,EAAE,sBAAsB,CAAA;KACjC,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAA;IACrC,IAAI,CAAC,MAAM,EACT,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,EACnC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;IAChC,aAAa,CAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IAC7F,aAAa,CAAC,MAAM,EAClB,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,EACnC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAA;IAC5C,QAAQ,CAAC,SAAS,SAAS,KAAK,EAC9B,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC,EACxC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;IACpC,uBAAuB,CAAC,SAAS,SAAS,KAAK,EAC7C,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC,EACxC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAA;IAC9C,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACzF,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAA;CACpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actor-runtime.js","sourceRoot":"","sources":["../src/actor-runtime.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application-database.d.ts","sourceRoot":"","sources":["../src/application-database.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"application-database.d.ts","sourceRoot":"","sources":["../src/application-database.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAkD,MAAM,qBAAqB,CAAA;AAGnG,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAErE"}
|
|
@@ -18,8 +18,8 @@ class GuardedApplicationDatabase {
|
|
|
18
18
|
connection(callback) {
|
|
19
19
|
return this.database.connection((connection) => callback(guardConnection(connection)));
|
|
20
20
|
}
|
|
21
|
-
transaction(callback) {
|
|
22
|
-
return this.database.transaction((connection) => callback(guardConnection(connection)));
|
|
21
|
+
transaction(callback, options = {}) {
|
|
22
|
+
return this.database.transaction((connection) => callback(guardConnection(connection)), options);
|
|
23
23
|
}
|
|
24
24
|
close() {
|
|
25
25
|
return this.database.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application-database.js","sourceRoot":"","sources":["../src/application-database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAEzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAEvD,MAAM,UAAU,wBAAwB,CAAC,QAAkB;IACzD,OAAO,IAAI,0BAA0B,CAAC,QAAQ,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,0BAA0B;IAID;IAHpB,MAAM,CAAA;IACN,cAAc,CAAA;IAEvB,YAA6B,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QAC7C,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;QAC7B,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAA;IAC/C,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EAAE,IAAI,KAAK,CAAA;IACrD,CAAC;IAED,UAAU,CACR,QAA6D;QAE7D,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IACxF,CAAC;IAED,WAAW,CACT,QAA6D;
|
|
1
|
+
{"version":3,"file":"application-database.js","sourceRoot":"","sources":["../src/application-database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAEzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAEvD,MAAM,UAAU,wBAAwB,CAAC,QAAkB;IACzD,OAAO,IAAI,0BAA0B,CAAC,QAAQ,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,0BAA0B;IAID;IAHpB,MAAM,CAAA;IACN,cAAc,CAAA;IAEvB,YAA6B,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QAC7C,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;QAC7B,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAA;IAC/C,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EAAE,IAAI,KAAK,CAAA;IACrD,CAAC;IAED,UAAU,CACR,QAA6D;QAE7D,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IACxF,CAAC;IAED,WAAW,CACT,QAA6D,EAC7D,UAAsC,EAAE;QAExC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IAClG,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IAC9B,CAAC;CACF;AAED,SAAS,eAAe,CAAC,UAA8B;IACrD,OAAO;QACL,GAAG,CAAC,GAAG,EAAE,UAAU;YACjB,kBAAkB,EAAE,CAAA;YACpB,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;QACxC,CAAC;QACD,GAAG,CAAqB,GAAW,EAAE,UAA+B;YAClE,iBAAiB,CAAC,GAAG,CAAC,CAAA;YACtB,OAAO,UAAU,CAAC,GAAG,CAAM,GAAG,EAAE,UAAU,CAAC,CAAA;QAC7C,CAAC;QACD,GAAG,CAAqB,GAAW,EAAE,UAA+B;YAClE,iBAAiB,CAAC,GAAG,CAAC,CAAA;YACtB,OAAO,UAAU,CAAC,GAAG,CAAM,GAAG,EAAE,UAAU,CAAC,CAAA;QAC7C,CAAC;QACD,eAAe;YACb,OAAO,UAAU,CAAC,eAAe,EAAE,CAAA;QACrC,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB;IACzB,IAAI,CAAC,0BAA0B,EAAE;QAAE,OAAM;IAEzC,MAAM,IAAI,yBAAyB,CACjC,kEAAkE,CACnE,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,IAAI,CAAC,0BAA0B,EAAE;QAAE,OAAM;IACzC,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAM;IAE3C,MAAM,IAAI,yBAAyB,CACjC,0EAA0E,CAC3E,CAAA;AACH,CAAC"}
|
package/dist/browser/index.js
CHANGED
|
@@ -11,7 +11,7 @@ export class SolidObjectsBrowserClient {
|
|
|
11
11
|
connect() {
|
|
12
12
|
if (this.#socket && this.#socket.readyState < WebSocket.CLOSING)
|
|
13
13
|
return;
|
|
14
|
-
const socket = this.#options.createWebSocket?.(this.#options.url) ?? new WebSocket(this.#options.url);
|
|
14
|
+
const socket = this.#options.createWebSocket?.(this.#options.url) ?? new WebSocket(String(this.#options.url));
|
|
15
15
|
socket.addEventListener("open", () => {
|
|
16
16
|
for (const subscription of this.#subscriptions.values())
|
|
17
17
|
this.sendSubscription(subscription);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,6BAA6B,GAS9B,MAAM,iBAAiB,CAAA;AAExB,MAAM,iCAAiC,GAAG,EAAE,CAAA;AAuC5C,MAAM,OAAO,yBAAyB;IAC3B,QAAQ,CAAsB;IAC9B,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAA;IACrD,UAAU,GAAG,IAAI,GAAG,EAAiE,CAAA;IAC9F,OAAO,CAAuB;IAE9B,YAAY,OAA6B;QACvC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;IACzB,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,OAAO;YAAE,OAAM;QACvE,MAAM,MAAM,GACV,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { SolidObjectsConfiguration } from "../configuration.js";
|
|
2
|
+
import type { EffectContext, JsonObject, JsonValue, Logger } from "../types.js";
|
|
3
|
+
import type { DurableObjectsBackend } from "./protocol.js";
|
|
4
|
+
export type EffectHandler = (argumentsValue: JsonObject, context: EffectContext) => JsonValue | void | Promise<JsonValue | void>;
|
|
5
|
+
export type CloudflareConfiguration = Pick<SolidObjectsConfiguration, "authorizeMessage" | "authorizeQuery" | "authorizeDestroy" | "authorizeSubscription" | "authorizeAdministration" | "instrumentation" | "logger" | "maxAttempts" | "maxMailboxLength" | "maxPayloadBytes" | "maxStateBytes" | "maxResultBytes" | "maxMessagesPerActivationPass" | "maxActivationDurationMilliseconds" | "retryDelayMilliseconds" | "messageRetentionMilliseconds" | "pruneBatchSize"> & {
|
|
6
|
+
backend: DurableObjectsBackend;
|
|
7
|
+
effects?: Readonly<Record<string, EffectHandler>>;
|
|
8
|
+
};
|
|
9
|
+
export declare function buildCloudflareSettings(configuration: CloudflareConfiguration): {
|
|
10
|
+
authorizeMessage: (input: import("../configuration.js").AuthorizationInput) => boolean | Promise<boolean>;
|
|
11
|
+
authorizeQuery: (input: import("../configuration.js").AuthorizationInput) => boolean | Promise<boolean>;
|
|
12
|
+
authorizeDestroy: (input: import("../configuration.js").DestroyAuthorizationInput) => boolean | Promise<boolean>;
|
|
13
|
+
authorizeSubscription: (input: import("../configuration.js").SubscriptionAuthorizationInput) => boolean | Promise<boolean>;
|
|
14
|
+
authorizeAdministration: (input: import("../configuration.js").AdministrationAuthorizationInput) => boolean | Promise<boolean>;
|
|
15
|
+
effects: Readonly<Record<string, EffectHandler>>;
|
|
16
|
+
logger: Logger;
|
|
17
|
+
maxAttempts: number;
|
|
18
|
+
maxMailboxLength: number;
|
|
19
|
+
maxPayloadBytes: number;
|
|
20
|
+
maxStateBytes: number;
|
|
21
|
+
maxResultBytes: number;
|
|
22
|
+
maxMessagesPerActivationPass: number;
|
|
23
|
+
maxActivationDurationMilliseconds: number;
|
|
24
|
+
retryDelayMilliseconds: (attempt: number) => number;
|
|
25
|
+
messageRetentionMilliseconds: number;
|
|
26
|
+
pruneBatchSize: number;
|
|
27
|
+
instrumentation?: (event: import("../configuration.js").InstrumentationEvent) => void;
|
|
28
|
+
backend: DurableObjectsBackend;
|
|
29
|
+
};
|
|
30
|
+
export type CloudflareSettings = ReturnType<typeof buildCloudflareSettings>;
|
|
31
|
+
export declare const consoleLogger: Logger;
|
|
32
|
+
//# sourceMappingURL=configuration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../../src/cloudflare/configuration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAE1D,MAAM,MAAM,aAAa,GAAG,CAC1B,cAAc,EAAE,UAAU,EAC1B,OAAO,EAAE,aAAa,KACnB,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;AAEjD,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,yBAAyB,EACvB,kBAAkB,GAClB,gBAAgB,GAChB,kBAAkB,GAClB,uBAAuB,GACvB,yBAAyB,GACzB,iBAAiB,GACjB,QAAQ,GACR,aAAa,GACb,kBAAkB,GAClB,iBAAiB,GACjB,eAAe,GACf,gBAAgB,GAChB,8BAA8B,GAC9B,mCAAmC,GACnC,wBAAwB,GACxB,8BAA8B,GAC9B,gBAAgB,CACnB,GAAG;IACF,OAAO,EAAE,qBAAqB,CAAA;IAC9B,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;CAClD,CAAA;AAED,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,uBAAuB;;;;;;;;;;;;;;;;;;;aAJnE,qBAAqB;EA2C/B;AAED,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE3E,eAAO,MAAM,aAAa,EAAE,MAK3B,CAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export function buildCloudflareSettings(configuration) {
|
|
2
|
+
const settings = {
|
|
3
|
+
...configuration,
|
|
4
|
+
authorizeMessage: configuration.authorizeMessage ?? (() => false),
|
|
5
|
+
authorizeQuery: configuration.authorizeQuery ?? (() => false),
|
|
6
|
+
authorizeDestroy: configuration.authorizeDestroy ?? (() => false),
|
|
7
|
+
authorizeSubscription: configuration.authorizeSubscription ?? (() => false),
|
|
8
|
+
authorizeAdministration: configuration.authorizeAdministration ?? (() => false),
|
|
9
|
+
effects: configuration.effects ?? {},
|
|
10
|
+
logger: configuration.logger ?? consoleLogger,
|
|
11
|
+
maxAttempts: configuration.maxAttempts ?? 5,
|
|
12
|
+
maxMailboxLength: configuration.maxMailboxLength ?? 10_000,
|
|
13
|
+
maxPayloadBytes: configuration.maxPayloadBytes ?? 1_048_576,
|
|
14
|
+
maxStateBytes: configuration.maxStateBytes ?? 1_048_576,
|
|
15
|
+
maxResultBytes: configuration.maxResultBytes ?? 1_048_576,
|
|
16
|
+
maxMessagesPerActivationPass: configuration.maxMessagesPerActivationPass ?? 50,
|
|
17
|
+
maxActivationDurationMilliseconds: configuration.maxActivationDurationMilliseconds ?? 5_000,
|
|
18
|
+
retryDelayMilliseconds: configuration.retryDelayMilliseconds ??
|
|
19
|
+
((attempt) => Math.min(2 ** (attempt - 1), 60) * 1_000),
|
|
20
|
+
messageRetentionMilliseconds: configuration.messageRetentionMilliseconds ?? 30 * 86_400_000,
|
|
21
|
+
pruneBatchSize: configuration.pruneBatchSize ?? 1_000,
|
|
22
|
+
};
|
|
23
|
+
for (const name of [
|
|
24
|
+
"maxAttempts",
|
|
25
|
+
"maxMailboxLength",
|
|
26
|
+
"maxPayloadBytes",
|
|
27
|
+
"maxStateBytes",
|
|
28
|
+
"maxResultBytes",
|
|
29
|
+
"maxMessagesPerActivationPass",
|
|
30
|
+
"maxActivationDurationMilliseconds",
|
|
31
|
+
"messageRetentionMilliseconds",
|
|
32
|
+
"pruneBatchSize",
|
|
33
|
+
]) {
|
|
34
|
+
if (!Number.isSafeInteger(settings[name]) || settings[name] <= 0) {
|
|
35
|
+
throw new TypeError(`${name} must be a positive safe integer`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return settings;
|
|
39
|
+
}
|
|
40
|
+
export const consoleLogger = {
|
|
41
|
+
debug: (entry) => console.debug(entry),
|
|
42
|
+
info: (entry) => console.info(entry),
|
|
43
|
+
warn: (entry) => console.warn(entry),
|
|
44
|
+
error: (entry) => console.error(entry),
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=configuration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../src/cloudflare/configuration.ts"],"names":[],"mappings":"AAiCA,MAAM,UAAU,uBAAuB,CAAC,aAAsC;IAC5E,MAAM,QAAQ,GAAG;QACf,GAAG,aAAa;QAChB,gBAAgB,EAAE,aAAa,CAAC,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;QACjE,cAAc,EAAE,aAAa,CAAC,cAAc,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;QAC7D,gBAAgB,EAAE,aAAa,CAAC,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;QACjE,qBAAqB,EAAE,aAAa,CAAC,qBAAqB,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;QAC3E,uBAAuB,EAAE,aAAa,CAAC,uBAAuB,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;QAC/E,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,EAAE;QACpC,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,aAAa;QAC7C,WAAW,EAAE,aAAa,CAAC,WAAW,IAAI,CAAC;QAC3C,gBAAgB,EAAE,aAAa,CAAC,gBAAgB,IAAI,MAAM;QAC1D,eAAe,EAAE,aAAa,CAAC,eAAe,IAAI,SAAS;QAC3D,aAAa,EAAE,aAAa,CAAC,aAAa,IAAI,SAAS;QACvD,cAAc,EAAE,aAAa,CAAC,cAAc,IAAI,SAAS;QACzD,4BAA4B,EAAE,aAAa,CAAC,4BAA4B,IAAI,EAAE;QAC9E,iCAAiC,EAAE,aAAa,CAAC,iCAAiC,IAAI,KAAK;QAC3F,sBAAsB,EACpB,aAAa,CAAC,sBAAsB;YACpC,CAAC,CAAC,OAAe,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;QACjE,4BAA4B,EAAE,aAAa,CAAC,4BAA4B,IAAI,EAAE,GAAG,UAAU;QAC3F,cAAc,EAAE,aAAa,CAAC,cAAc,IAAI,KAAK;KACtD,CAAA;IACD,KAAK,MAAM,IAAI,IAAI;QACjB,aAAa;QACb,kBAAkB;QAClB,iBAAiB;QACjB,eAAe;QACf,gBAAgB;QAChB,8BAA8B;QAC9B,mCAAmC;QACnC,8BAA8B;QAC9B,gBAAgB;KACR,EAAE,CAAC;QACX,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,kCAAkC,CAAC,CAAA;QAChE,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAID,MAAM,CAAC,MAAM,aAAa,GAAW;IACnC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;IACtC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACpC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACpC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;CACvC,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { ActorClass } from "../actor.js";
|
|
2
|
+
import type { JsonValue } from "../types.js";
|
|
3
|
+
import type { CloudflareSettings } from "./configuration.js";
|
|
4
|
+
import { type HostRequest } from "./protocol.js";
|
|
5
|
+
import { CloudflareRuntime } from "./runtime.js";
|
|
6
|
+
import { ActorStorage } from "./storage.js";
|
|
7
|
+
export declare class ActorEngine {
|
|
8
|
+
readonly store: ActorStorage;
|
|
9
|
+
readonly runtime: CloudflareRuntime;
|
|
10
|
+
private readonly definitions;
|
|
11
|
+
private actorRunning;
|
|
12
|
+
private readonly delivering;
|
|
13
|
+
private cached;
|
|
14
|
+
constructor(store: ActorStorage, actors: readonly ActorClass[]);
|
|
15
|
+
get settings(): CloudflareSettings;
|
|
16
|
+
request(input: HostRequest): Promise<JsonValue>;
|
|
17
|
+
pump(): Promise<void>;
|
|
18
|
+
private bind;
|
|
19
|
+
private definition;
|
|
20
|
+
private ensureInstance;
|
|
21
|
+
private enqueue;
|
|
22
|
+
private authorizeOperation;
|
|
23
|
+
private readMessage;
|
|
24
|
+
private committed;
|
|
25
|
+
private snapshot;
|
|
26
|
+
private projection;
|
|
27
|
+
private destroy;
|
|
28
|
+
private drainActors;
|
|
29
|
+
private execute;
|
|
30
|
+
private assertCurrent;
|
|
31
|
+
private stage;
|
|
32
|
+
private addOutbox;
|
|
33
|
+
private deliver;
|
|
34
|
+
private outboxCurrent;
|
|
35
|
+
private stageEffectCallback;
|
|
36
|
+
private scheduleReminders;
|
|
37
|
+
private completeReminder;
|
|
38
|
+
private pauseReminder;
|
|
39
|
+
private administer;
|
|
40
|
+
private retryDelay;
|
|
41
|
+
private emit;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/cloudflare/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,UAAU,EAAgB,MAAM,aAAa,CAAA;AA8BlE,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAA2C,KAAK,WAAW,EAAE,MAAM,eAAe,CAAA;AAEzF,OAAO,EAAkB,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAI3C,qBAAa,WAAW;IAQpB,QAAQ,CAAC,KAAK,EAAE,YAAY;IAP9B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8C;IAC1E,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,MAAM,CAAmD;gBAGtD,KAAK,EAAE,YAAY,EAC5B,MAAM,EAAE,SAAS,UAAU,EAAE;IAW/B,IAAI,QAAQ,IAAI,kBAAkB,CAEjC;IAEK,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IAqE/C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B3B,OAAO,CAAC,IAAI;IASZ,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,OAAO;YA+FD,kBAAkB;YAWlB,WAAW;IAmCzB,OAAO,CAAC,SAAS;YAaH,QAAQ;YAwBR,UAAU;IAuDxB,OAAO,CAAC,OAAO;YAmBD,WAAW;YAeX,OAAO;IAsJrB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,KAAK;IAmEb,OAAO,CAAC,SAAS;YAwBH,OAAO;IA2HrB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,iBAAiB;IA+BzB,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,aAAa;YAUP,UAAU;IA2ExB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,IAAI;CAWb"}
|