rivetkit 2.0.3 → 2.0.4
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/README.md +11 -0
- package/dist/schemas/actor-persist/v1.ts +21 -24
- package/dist/schemas/client-protocol/v1.ts +6 -0
- package/dist/tsup/actor/errors.cjs +10 -2
- package/dist/tsup/actor/errors.cjs.map +1 -1
- package/dist/tsup/actor/errors.d.cts +17 -4
- package/dist/tsup/actor/errors.d.ts +17 -4
- package/dist/tsup/actor/errors.js +11 -3
- package/dist/tsup/{chunk-6PDXBYI5.js → chunk-3F2YSRJL.js} +8 -23
- package/dist/tsup/chunk-3F2YSRJL.js.map +1 -0
- package/dist/tsup/chunk-4CXBCT26.cjs +250 -0
- package/dist/tsup/chunk-4CXBCT26.cjs.map +1 -0
- package/dist/tsup/chunk-4R73YDN3.cjs +20 -0
- package/dist/tsup/chunk-4R73YDN3.cjs.map +1 -0
- package/dist/tsup/{chunk-OGAPU3UG.cjs → chunk-6LJT3QRL.cjs} +39 -25
- package/dist/tsup/chunk-6LJT3QRL.cjs.map +1 -0
- package/dist/tsup/{chunk-6WKQDDUD.cjs → chunk-GICQ3YCU.cjs} +143 -141
- package/dist/tsup/chunk-GICQ3YCU.cjs.map +1 -0
- package/dist/tsup/{chunk-FLMTTN27.js → chunk-H26RP6GD.js} +15 -8
- package/dist/tsup/chunk-H26RP6GD.js.map +1 -0
- package/dist/tsup/chunk-HI3HWJRC.js +20 -0
- package/dist/tsup/chunk-HI3HWJRC.js.map +1 -0
- package/dist/tsup/{chunk-4NSUQZ2H.js → chunk-HLLF4B4Q.js} +116 -114
- package/dist/tsup/chunk-HLLF4B4Q.js.map +1 -0
- package/dist/tsup/{chunk-FCCPJNMA.cjs → chunk-IH6CKNDW.cjs} +12 -27
- package/dist/tsup/chunk-IH6CKNDW.cjs.map +1 -0
- package/dist/tsup/chunk-LV2S3OU3.js +250 -0
- package/dist/tsup/chunk-LV2S3OU3.js.map +1 -0
- package/dist/tsup/{chunk-R2OPSKIV.cjs → chunk-LWNKVZG5.cjs} +20 -13
- package/dist/tsup/chunk-LWNKVZG5.cjs.map +1 -0
- package/dist/tsup/{chunk-INGJP237.js → chunk-NFU2BBT5.js} +102 -43
- package/dist/tsup/chunk-NFU2BBT5.js.map +1 -0
- package/dist/tsup/{chunk-3H7O2A7I.js → chunk-PQY7KKTL.js} +33 -19
- package/dist/tsup/chunk-PQY7KKTL.js.map +1 -0
- package/dist/tsup/{chunk-PO4VLDWA.js → chunk-QK72M5JB.js} +3 -5
- package/dist/tsup/chunk-QK72M5JB.js.map +1 -0
- package/dist/tsup/{chunk-TZJKSBUQ.cjs → chunk-QNNXFOQV.cjs} +3 -5
- package/dist/tsup/chunk-QNNXFOQV.cjs.map +1 -0
- package/dist/tsup/{chunk-GIR3AFFI.cjs → chunk-SBHHJ6QS.cjs} +102 -43
- package/dist/tsup/chunk-SBHHJ6QS.cjs.map +1 -0
- package/dist/tsup/chunk-TQ62L3X7.js +325 -0
- package/dist/tsup/chunk-TQ62L3X7.js.map +1 -0
- package/dist/tsup/chunk-VO7ZRVVD.cjs +6293 -0
- package/dist/tsup/chunk-VO7ZRVVD.cjs.map +1 -0
- package/dist/tsup/chunk-WHBPJNGW.cjs +325 -0
- package/dist/tsup/chunk-WHBPJNGW.cjs.map +1 -0
- package/dist/tsup/chunk-XJQHKJ4P.js +6293 -0
- package/dist/tsup/chunk-XJQHKJ4P.js.map +1 -0
- package/dist/tsup/client/mod.cjs +10 -10
- package/dist/tsup/client/mod.d.cts +7 -13
- package/dist/tsup/client/mod.d.ts +7 -13
- package/dist/tsup/client/mod.js +9 -9
- package/dist/tsup/common/log.cjs +12 -4
- package/dist/tsup/common/log.cjs.map +1 -1
- package/dist/tsup/common/log.d.cts +23 -17
- package/dist/tsup/common/log.d.ts +23 -17
- package/dist/tsup/common/log.js +15 -7
- package/dist/tsup/common/websocket.cjs +5 -5
- package/dist/tsup/common/websocket.js +4 -4
- package/dist/tsup/{common-CpqORuCq.d.cts → common-CXCe7s6i.d.cts} +2 -2
- package/dist/tsup/{common-CpqORuCq.d.ts → common-CXCe7s6i.d.ts} +2 -2
- package/dist/tsup/{connection-BwUMoe6n.d.ts → connection-BI-6UIBJ.d.ts} +196 -226
- package/dist/tsup/{connection-BR_Ve4ku.d.cts → connection-Dyd4NLGW.d.cts} +196 -226
- package/dist/tsup/driver-helpers/mod.cjs +6 -9
- package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
- package/dist/tsup/driver-helpers/mod.d.cts +5 -6
- package/dist/tsup/driver-helpers/mod.d.ts +5 -6
- package/dist/tsup/driver-helpers/mod.js +6 -9
- package/dist/tsup/driver-test-suite/mod.cjs +155 -1363
- package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
- package/dist/tsup/driver-test-suite/mod.d.cts +11 -5
- package/dist/tsup/driver-test-suite/mod.d.ts +11 -5
- package/dist/tsup/driver-test-suite/mod.js +876 -2084
- package/dist/tsup/driver-test-suite/mod.js.map +1 -1
- package/dist/tsup/inspector/mod.cjs +6 -8
- package/dist/tsup/inspector/mod.cjs.map +1 -1
- package/dist/tsup/inspector/mod.d.cts +3 -3
- package/dist/tsup/inspector/mod.d.ts +3 -3
- package/dist/tsup/inspector/mod.js +8 -10
- package/dist/tsup/mod.cjs +9 -15
- package/dist/tsup/mod.cjs.map +1 -1
- package/dist/tsup/mod.d.cts +47 -42
- package/dist/tsup/mod.d.ts +47 -42
- package/dist/tsup/mod.js +10 -16
- package/dist/tsup/{router-endpoints-DAbqVFx2.d.ts → router-endpoints-BTe_Rsdn.d.cts} +2 -3
- package/dist/tsup/{router-endpoints-AYkXG8Tl.d.cts → router-endpoints-CBSrKHmo.d.ts} +2 -3
- package/dist/tsup/test/mod.cjs +10 -14
- package/dist/tsup/test/mod.cjs.map +1 -1
- package/dist/tsup/test/mod.d.cts +4 -5
- package/dist/tsup/test/mod.d.ts +4 -5
- package/dist/tsup/test/mod.js +9 -13
- package/dist/tsup/{utils-CT0cv4jd.d.ts → utils-fwx3o3K9.d.cts} +1 -0
- package/dist/tsup/{utils-CT0cv4jd.d.cts → utils-fwx3o3K9.d.ts} +1 -0
- package/dist/tsup/utils.cjs +3 -3
- package/dist/tsup/utils.d.cts +1 -1
- package/dist/tsup/utils.d.ts +1 -1
- package/dist/tsup/utils.js +2 -2
- package/package.json +4 -4
- package/src/actor/action.ts +1 -5
- package/src/actor/config.ts +27 -295
- package/src/actor/connection.ts +9 -12
- package/src/actor/context.ts +1 -4
- package/src/actor/definition.ts +7 -11
- package/src/actor/errors.ts +97 -35
- package/src/actor/generic-conn-driver.ts +28 -16
- package/src/actor/instance.ts +177 -133
- package/src/actor/log.ts +4 -13
- package/src/actor/mod.ts +0 -5
- package/src/actor/protocol/old.ts +42 -26
- package/src/actor/protocol/serde.ts +1 -1
- package/src/actor/router-endpoints.ts +41 -38
- package/src/actor/router.ts +20 -18
- package/src/actor/unstable-react.ts +1 -1
- package/src/actor/utils.ts +6 -2
- package/src/client/actor-common.ts +1 -1
- package/src/client/actor-conn.ts +152 -91
- package/src/client/actor-handle.ts +85 -25
- package/src/client/actor-query.ts +65 -0
- package/src/client/client.ts +29 -98
- package/src/client/config.ts +44 -0
- package/src/client/errors.ts +1 -0
- package/src/client/log.ts +2 -4
- package/src/client/mod.ts +16 -12
- package/src/client/raw-utils.ts +82 -25
- package/src/client/utils.ts +5 -3
- package/src/common/fake-event-source.ts +10 -9
- package/src/common/inline-websocket-adapter2.ts +39 -30
- package/src/common/log.ts +176 -101
- package/src/common/logfmt.ts +21 -30
- package/src/common/router.ts +12 -19
- package/src/common/utils.ts +27 -13
- package/src/common/websocket.ts +0 -1
- package/src/driver-helpers/mod.ts +1 -1
- package/src/driver-test-suite/log.ts +1 -3
- package/src/driver-test-suite/mod.ts +86 -60
- package/src/driver-test-suite/tests/actor-handle.ts +33 -0
- package/src/driver-test-suite/tests/manager-driver.ts +5 -3
- package/src/driver-test-suite/tests/raw-http-direct-registry.ts +227 -226
- package/src/driver-test-suite/tests/raw-websocket-direct-registry.ts +393 -392
- package/src/driver-test-suite/tests/request-access.ts +112 -126
- package/src/driver-test-suite/utils.ts +13 -10
- package/src/drivers/default.ts +7 -4
- package/src/drivers/engine/actor-driver.ts +22 -13
- package/src/drivers/engine/config.ts +2 -10
- package/src/drivers/engine/kv.ts +1 -1
- package/src/drivers/engine/log.ts +1 -3
- package/src/drivers/engine/mod.ts +2 -3
- package/src/drivers/file-system/actor.ts +1 -1
- package/src/drivers/file-system/global-state.ts +33 -20
- package/src/drivers/file-system/log.ts +1 -3
- package/src/drivers/file-system/manager.ts +31 -8
- package/src/inspector/config.ts +9 -4
- package/src/inspector/log.ts +1 -1
- package/src/inspector/manager.ts +2 -2
- package/src/inspector/utils.ts +1 -1
- package/src/manager/driver.ts +10 -2
- package/src/manager/hono-websocket-adapter.ts +21 -12
- package/src/manager/log.ts +2 -4
- package/src/manager/mod.ts +1 -1
- package/src/manager/router.ts +277 -1657
- package/src/manager-api/routes/actors-create.ts +16 -0
- package/src/manager-api/routes/actors-delete.ts +4 -0
- package/src/manager-api/routes/actors-get-by-id.ts +7 -0
- package/src/manager-api/routes/actors-get-or-create-by-id.ts +29 -0
- package/src/manager-api/routes/actors-get.ts +7 -0
- package/src/manager-api/routes/common.ts +18 -0
- package/src/mod.ts +0 -2
- package/src/registry/config.ts +1 -1
- package/src/registry/log.ts +2 -4
- package/src/registry/mod.ts +57 -24
- package/src/registry/run-config.ts +31 -33
- package/src/registry/serve.ts +4 -5
- package/src/remote-manager-driver/actor-http-client.ts +72 -0
- package/src/remote-manager-driver/actor-websocket-client.ts +63 -0
- package/src/remote-manager-driver/api-endpoints.ts +79 -0
- package/src/remote-manager-driver/api-utils.ts +43 -0
- package/src/remote-manager-driver/log.ts +5 -0
- package/src/remote-manager-driver/mod.ts +274 -0
- package/src/{drivers/engine → remote-manager-driver}/ws-proxy.ts +24 -14
- package/src/serde.ts +8 -2
- package/src/test/log.ts +1 -3
- package/src/test/mod.ts +17 -16
- package/dist/tsup/chunk-2CRLFV6Z.cjs +0 -202
- package/dist/tsup/chunk-2CRLFV6Z.cjs.map +0 -1
- package/dist/tsup/chunk-3H7O2A7I.js.map +0 -1
- package/dist/tsup/chunk-42I3OZ3Q.js +0 -15
- package/dist/tsup/chunk-42I3OZ3Q.js.map +0 -1
- package/dist/tsup/chunk-4NSUQZ2H.js.map +0 -1
- package/dist/tsup/chunk-6PDXBYI5.js.map +0 -1
- package/dist/tsup/chunk-6WKQDDUD.cjs.map +0 -1
- package/dist/tsup/chunk-CTBOSFUH.cjs +0 -116
- package/dist/tsup/chunk-CTBOSFUH.cjs.map +0 -1
- package/dist/tsup/chunk-EGVZZFE2.js +0 -2857
- package/dist/tsup/chunk-EGVZZFE2.js.map +0 -1
- package/dist/tsup/chunk-FCCPJNMA.cjs.map +0 -1
- package/dist/tsup/chunk-FLMTTN27.js.map +0 -1
- package/dist/tsup/chunk-GIR3AFFI.cjs.map +0 -1
- package/dist/tsup/chunk-INGJP237.js.map +0 -1
- package/dist/tsup/chunk-KJCJLKRM.js +0 -116
- package/dist/tsup/chunk-KJCJLKRM.js.map +0 -1
- package/dist/tsup/chunk-KUPQZYUQ.cjs +0 -15
- package/dist/tsup/chunk-KUPQZYUQ.cjs.map +0 -1
- package/dist/tsup/chunk-O2MBYIXO.cjs +0 -2857
- package/dist/tsup/chunk-O2MBYIXO.cjs.map +0 -1
- package/dist/tsup/chunk-OGAPU3UG.cjs.map +0 -1
- package/dist/tsup/chunk-OV6AYD4S.js +0 -4406
- package/dist/tsup/chunk-OV6AYD4S.js.map +0 -1
- package/dist/tsup/chunk-PO4VLDWA.js.map +0 -1
- package/dist/tsup/chunk-R2OPSKIV.cjs.map +0 -1
- package/dist/tsup/chunk-TZJKSBUQ.cjs.map +0 -1
- package/dist/tsup/chunk-UBUC5C3G.cjs +0 -189
- package/dist/tsup/chunk-UBUC5C3G.cjs.map +0 -1
- package/dist/tsup/chunk-UIM22YJL.cjs +0 -4406
- package/dist/tsup/chunk-UIM22YJL.cjs.map +0 -1
- package/dist/tsup/chunk-URVFQMYI.cjs +0 -230
- package/dist/tsup/chunk-URVFQMYI.cjs.map +0 -1
- package/dist/tsup/chunk-UVUPOS46.js +0 -230
- package/dist/tsup/chunk-UVUPOS46.js.map +0 -1
- package/dist/tsup/chunk-VRRHBNJC.js +0 -189
- package/dist/tsup/chunk-VRRHBNJC.js.map +0 -1
- package/dist/tsup/chunk-XFSS33EQ.js +0 -202
- package/dist/tsup/chunk-XFSS33EQ.js.map +0 -1
- package/src/client/http-client-driver.ts +0 -326
- package/src/driver-test-suite/test-inline-client-driver.ts +0 -402
- package/src/driver-test-suite/tests/actor-auth.ts +0 -591
- package/src/drivers/engine/api-endpoints.ts +0 -128
- package/src/drivers/engine/api-utils.ts +0 -70
- package/src/drivers/engine/manager-driver.ts +0 -391
- package/src/inline-client-driver/log.ts +0 -7
- package/src/inline-client-driver/mod.ts +0 -385
- package/src/manager/auth.ts +0 -121
- /package/src/{drivers/engine → actor}/keys.test.ts +0 -0
- /package/src/{drivers/engine → actor}/keys.ts +0 -0
package/src/actor/config.ts
CHANGED
|
@@ -11,7 +11,6 @@ export type InitContext = ActorContext<
|
|
|
11
11
|
undefined,
|
|
12
12
|
undefined,
|
|
13
13
|
undefined,
|
|
14
|
-
undefined,
|
|
15
14
|
undefined
|
|
16
15
|
>;
|
|
17
16
|
|
|
@@ -21,7 +20,6 @@ export interface ActorTypes<
|
|
|
21
20
|
TConnState,
|
|
22
21
|
TVars,
|
|
23
22
|
TInput,
|
|
24
|
-
TAuthData,
|
|
25
23
|
TDatabase extends AnyDatabaseProvider,
|
|
26
24
|
> {
|
|
27
25
|
state?: TState;
|
|
@@ -29,7 +27,6 @@ export interface ActorTypes<
|
|
|
29
27
|
connState?: TConnState;
|
|
30
28
|
vars?: TVars;
|
|
31
29
|
input?: TInput;
|
|
32
|
-
authData?: TAuthData;
|
|
33
30
|
database?: TDatabase;
|
|
34
31
|
}
|
|
35
32
|
|
|
@@ -40,7 +37,6 @@ export interface ActorTypes<
|
|
|
40
37
|
// (b) it makes the type definitions incredibly difficult to read as opposed to vanilla TypeScript.
|
|
41
38
|
export const ActorConfigSchema = z
|
|
42
39
|
.object({
|
|
43
|
-
onAuth: z.function().optional(),
|
|
44
40
|
onCreate: z.function().optional(),
|
|
45
41
|
onStart: z.function().optional(),
|
|
46
42
|
onStop: z.function().optional(),
|
|
@@ -116,15 +112,7 @@ export interface OnConnectOptions {
|
|
|
116
112
|
// This must have only one or the other or else TState will not be able to be inferred
|
|
117
113
|
//
|
|
118
114
|
// Data returned from this handler will be available on `c.state`.
|
|
119
|
-
type CreateState<
|
|
120
|
-
TState,
|
|
121
|
-
TConnParams,
|
|
122
|
-
TConnState,
|
|
123
|
-
TVars,
|
|
124
|
-
TInput,
|
|
125
|
-
TAuthData,
|
|
126
|
-
TDatabase,
|
|
127
|
-
> =
|
|
115
|
+
type CreateState<TState, TConnParams, TConnState, TVars, TInput, TDatabase> =
|
|
128
116
|
| { state: TState }
|
|
129
117
|
| {
|
|
130
118
|
createState: (c: InitContext, input: TInput) => TState | Promise<TState>;
|
|
@@ -142,7 +130,6 @@ type CreateConnState<
|
|
|
142
130
|
TConnState,
|
|
143
131
|
TVars,
|
|
144
132
|
TInput,
|
|
145
|
-
TAuthData,
|
|
146
133
|
TDatabase,
|
|
147
134
|
> =
|
|
148
135
|
| { connState: TConnState }
|
|
@@ -161,15 +148,7 @@ type CreateConnState<
|
|
|
161
148
|
/**
|
|
162
149
|
* @experimental
|
|
163
150
|
*/
|
|
164
|
-
type CreateVars<
|
|
165
|
-
TState,
|
|
166
|
-
TConnParams,
|
|
167
|
-
TConnState,
|
|
168
|
-
TVars,
|
|
169
|
-
TInput,
|
|
170
|
-
TAuthData,
|
|
171
|
-
TDatabase,
|
|
172
|
-
> =
|
|
151
|
+
type CreateVars<TState, TConnParams, TConnState, TVars, TInput, TDatabase> =
|
|
173
152
|
| {
|
|
174
153
|
/**
|
|
175
154
|
* @experimental
|
|
@@ -184,62 +163,16 @@ type CreateVars<
|
|
|
184
163
|
}
|
|
185
164
|
| Record<never, never>;
|
|
186
165
|
|
|
187
|
-
// Creates auth config
|
|
188
|
-
//
|
|
189
|
-
// This must have only one or the other or else TAuthData will not be able to be inferred
|
|
190
|
-
type OnAuth<TConnParams, TAuthData> =
|
|
191
|
-
| {
|
|
192
|
-
/**
|
|
193
|
-
* Called on the HTTP server before clients can interact with the actor.
|
|
194
|
-
*
|
|
195
|
-
* Only called for public endpoints. Calls to actors from within the backend
|
|
196
|
-
* do not trigger this handler.
|
|
197
|
-
*
|
|
198
|
-
* Data returned from this handler will be available on `c.conn.auth`.
|
|
199
|
-
*
|
|
200
|
-
* This function is required for any public HTTP endpoint access. Use this hook
|
|
201
|
-
* to validate client credentials and return authentication data that will be
|
|
202
|
-
* available on connections. This runs on the HTTP server (not the actor)
|
|
203
|
-
* in order to reduce load on the actor & prevent denial of server attacks
|
|
204
|
-
* against individual actors.
|
|
205
|
-
*
|
|
206
|
-
* If you need access to actor state for authentication, use onBeforeConnect
|
|
207
|
-
* with an empty onAuth function instead.
|
|
208
|
-
*
|
|
209
|
-
* You can also provide your own authentication middleware on your router if you
|
|
210
|
-
* choose, then use onAuth to pass the authentication data (e.g. user ID) to the
|
|
211
|
-
* actor itself.
|
|
212
|
-
*
|
|
213
|
-
* @param opts Authentication options including request and intent
|
|
214
|
-
* @returns Authentication data to attach to connections (must be serializable)
|
|
215
|
-
* @throws Throw an error to deny access to the actor
|
|
216
|
-
*/
|
|
217
|
-
onAuth: (
|
|
218
|
-
opts: OnAuthOptions,
|
|
219
|
-
params: TConnParams,
|
|
220
|
-
) => TAuthData | Promise<TAuthData>;
|
|
221
|
-
}
|
|
222
|
-
| Record<never, never>;
|
|
223
|
-
|
|
224
166
|
export interface Actions<
|
|
225
167
|
TState,
|
|
226
168
|
TConnParams,
|
|
227
169
|
TConnState,
|
|
228
170
|
TVars,
|
|
229
171
|
TInput,
|
|
230
|
-
TAuthData,
|
|
231
172
|
TDatabase extends AnyDatabaseProvider,
|
|
232
173
|
> {
|
|
233
174
|
[Action: string]: (
|
|
234
|
-
c: ActionContext<
|
|
235
|
-
TState,
|
|
236
|
-
TConnParams,
|
|
237
|
-
TConnState,
|
|
238
|
-
TVars,
|
|
239
|
-
TInput,
|
|
240
|
-
TAuthData,
|
|
241
|
-
TDatabase
|
|
242
|
-
>,
|
|
175
|
+
c: ActionContext<TState, TConnParams, TConnState, TVars, TInput, TDatabase>,
|
|
243
176
|
...args: any[]
|
|
244
177
|
) => any;
|
|
245
178
|
}
|
|
@@ -254,21 +187,12 @@ export interface Actions<
|
|
|
254
187
|
*/
|
|
255
188
|
export type AuthIntent = "get" | "create" | "connect" | "action" | "message";
|
|
256
189
|
|
|
257
|
-
export interface OnAuthOptions {
|
|
258
|
-
request: Request;
|
|
259
|
-
/**
|
|
260
|
-
* @experimental
|
|
261
|
-
*/
|
|
262
|
-
intents: Set<AuthIntent>;
|
|
263
|
-
}
|
|
264
|
-
|
|
265
190
|
interface BaseActorConfig<
|
|
266
191
|
TState,
|
|
267
192
|
TConnParams,
|
|
268
193
|
TConnState,
|
|
269
194
|
TVars,
|
|
270
195
|
TInput,
|
|
271
|
-
TAuthData,
|
|
272
196
|
TDatabase extends AnyDatabaseProvider,
|
|
273
197
|
TActions extends Actions<
|
|
274
198
|
TState,
|
|
@@ -276,7 +200,6 @@ interface BaseActorConfig<
|
|
|
276
200
|
TConnState,
|
|
277
201
|
TVars,
|
|
278
202
|
TInput,
|
|
279
|
-
TAuthData,
|
|
280
203
|
TDatabase
|
|
281
204
|
>,
|
|
282
205
|
> {
|
|
@@ -287,15 +210,7 @@ interface BaseActorConfig<
|
|
|
287
210
|
* This is called before any other lifecycle hooks.
|
|
288
211
|
*/
|
|
289
212
|
onCreate?: (
|
|
290
|
-
c: ActorContext<
|
|
291
|
-
TState,
|
|
292
|
-
TConnParams,
|
|
293
|
-
TConnState,
|
|
294
|
-
TVars,
|
|
295
|
-
TInput,
|
|
296
|
-
TAuthData,
|
|
297
|
-
TDatabase
|
|
298
|
-
>,
|
|
213
|
+
c: ActorContext<TState, TConnParams, TConnState, TVars, TInput, TDatabase>,
|
|
299
214
|
input: TInput,
|
|
300
215
|
) => void | Promise<void>;
|
|
301
216
|
|
|
@@ -308,15 +223,7 @@ interface BaseActorConfig<
|
|
|
308
223
|
* @returns Void or a Promise that resolves when startup is complete
|
|
309
224
|
*/
|
|
310
225
|
onStart?: (
|
|
311
|
-
c: ActorContext<
|
|
312
|
-
TState,
|
|
313
|
-
TConnParams,
|
|
314
|
-
TConnState,
|
|
315
|
-
TVars,
|
|
316
|
-
TInput,
|
|
317
|
-
TAuthData,
|
|
318
|
-
TDatabase
|
|
319
|
-
>,
|
|
226
|
+
c: ActorContext<TState, TConnParams, TConnState, TVars, TInput, TDatabase>,
|
|
320
227
|
) => void | Promise<void>;
|
|
321
228
|
|
|
322
229
|
/**
|
|
@@ -330,15 +237,7 @@ interface BaseActorConfig<
|
|
|
330
237
|
* @returns Void or a Promise that resolves when shutdown is complete
|
|
331
238
|
*/
|
|
332
239
|
onStop?: (
|
|
333
|
-
c: ActorContext<
|
|
334
|
-
TState,
|
|
335
|
-
TConnParams,
|
|
336
|
-
TConnState,
|
|
337
|
-
TVars,
|
|
338
|
-
TInput,
|
|
339
|
-
TAuthData,
|
|
340
|
-
TDatabase
|
|
341
|
-
>,
|
|
240
|
+
c: ActorContext<TState, TConnParams, TConnState, TVars, TInput, TDatabase>,
|
|
342
241
|
) => void | Promise<void>;
|
|
343
242
|
|
|
344
243
|
/**
|
|
@@ -353,48 +252,22 @@ interface BaseActorConfig<
|
|
|
353
252
|
* @param newState The updated state
|
|
354
253
|
*/
|
|
355
254
|
onStateChange?: (
|
|
356
|
-
c: ActorContext<
|
|
357
|
-
TState,
|
|
358
|
-
TConnParams,
|
|
359
|
-
TConnState,
|
|
360
|
-
TVars,
|
|
361
|
-
TInput,
|
|
362
|
-
TAuthData,
|
|
363
|
-
TDatabase
|
|
364
|
-
>,
|
|
255
|
+
c: ActorContext<TState, TConnParams, TConnState, TVars, TInput, TDatabase>,
|
|
365
256
|
newState: TState,
|
|
366
257
|
) => void;
|
|
367
258
|
|
|
368
259
|
/**
|
|
369
260
|
* Called before a client connects to the actor.
|
|
370
261
|
*
|
|
371
|
-
* Unlike onAuth, this handler is still called for both internal and
|
|
372
|
-
* public clients.
|
|
373
|
-
*
|
|
374
262
|
* Use this hook to determine if a connection should be accepted
|
|
375
|
-
* and to initialize connection-specific state.
|
|
376
|
-
* on the actor and has access to actor state, but uses slightly
|
|
377
|
-
* more resources on the actor rather than authenticating with onAuth.
|
|
378
|
-
*
|
|
379
|
-
* For authentication without actor state access, prefer onAuth.
|
|
380
|
-
*
|
|
381
|
-
* For authentication with actor state, use onBeforeConnect with an empty
|
|
382
|
-
* onAuth handler.
|
|
263
|
+
* and to initialize connection-specific state.
|
|
383
264
|
*
|
|
384
265
|
* @param opts Connection parameters including client-provided data
|
|
385
266
|
* @returns The initial connection state or a Promise that resolves to it
|
|
386
267
|
* @throws Throw an error to reject the connection
|
|
387
268
|
*/
|
|
388
269
|
onBeforeConnect?: (
|
|
389
|
-
c: ActorContext<
|
|
390
|
-
TState,
|
|
391
|
-
TConnParams,
|
|
392
|
-
TConnState,
|
|
393
|
-
TVars,
|
|
394
|
-
TInput,
|
|
395
|
-
TAuthData,
|
|
396
|
-
TDatabase
|
|
397
|
-
>,
|
|
270
|
+
c: ActorContext<TState, TConnParams, TConnState, TVars, TInput, TDatabase>,
|
|
398
271
|
opts: OnConnectOptions,
|
|
399
272
|
params: TConnParams,
|
|
400
273
|
) => void | Promise<void>;
|
|
@@ -409,24 +282,8 @@ interface BaseActorConfig<
|
|
|
409
282
|
* @returns Void or a Promise that resolves when connection handling is complete
|
|
410
283
|
*/
|
|
411
284
|
onConnect?: (
|
|
412
|
-
c: ActorContext<
|
|
413
|
-
|
|
414
|
-
TConnParams,
|
|
415
|
-
TConnState,
|
|
416
|
-
TVars,
|
|
417
|
-
TInput,
|
|
418
|
-
TAuthData,
|
|
419
|
-
TDatabase
|
|
420
|
-
>,
|
|
421
|
-
conn: Conn<
|
|
422
|
-
TState,
|
|
423
|
-
TConnParams,
|
|
424
|
-
TConnState,
|
|
425
|
-
TVars,
|
|
426
|
-
TInput,
|
|
427
|
-
TAuthData,
|
|
428
|
-
TDatabase
|
|
429
|
-
>,
|
|
285
|
+
c: ActorContext<TState, TConnParams, TConnState, TVars, TInput, TDatabase>,
|
|
286
|
+
conn: Conn<TState, TConnParams, TConnState, TVars, TInput, TDatabase>,
|
|
430
287
|
) => void | Promise<void>;
|
|
431
288
|
|
|
432
289
|
/**
|
|
@@ -439,24 +296,8 @@ interface BaseActorConfig<
|
|
|
439
296
|
* @returns Void or a Promise that resolves when disconnect handling is complete
|
|
440
297
|
*/
|
|
441
298
|
onDisconnect?: (
|
|
442
|
-
c: ActorContext<
|
|
443
|
-
|
|
444
|
-
TConnParams,
|
|
445
|
-
TConnState,
|
|
446
|
-
TVars,
|
|
447
|
-
TInput,
|
|
448
|
-
TAuthData,
|
|
449
|
-
TDatabase
|
|
450
|
-
>,
|
|
451
|
-
conn: Conn<
|
|
452
|
-
TState,
|
|
453
|
-
TConnParams,
|
|
454
|
-
TConnState,
|
|
455
|
-
TVars,
|
|
456
|
-
TInput,
|
|
457
|
-
TAuthData,
|
|
458
|
-
TDatabase
|
|
459
|
-
>,
|
|
299
|
+
c: ActorContext<TState, TConnParams, TConnState, TVars, TInput, TDatabase>,
|
|
300
|
+
conn: Conn<TState, TConnParams, TConnState, TVars, TInput, TDatabase>,
|
|
460
301
|
) => void | Promise<void>;
|
|
461
302
|
|
|
462
303
|
/**
|
|
@@ -472,15 +313,7 @@ interface BaseActorConfig<
|
|
|
472
313
|
* @returns The modified output to send to the client
|
|
473
314
|
*/
|
|
474
315
|
onBeforeActionResponse?: <Out>(
|
|
475
|
-
c: ActorContext<
|
|
476
|
-
TState,
|
|
477
|
-
TConnParams,
|
|
478
|
-
TConnState,
|
|
479
|
-
TVars,
|
|
480
|
-
TInput,
|
|
481
|
-
TAuthData,
|
|
482
|
-
TDatabase
|
|
483
|
-
>,
|
|
316
|
+
c: ActorContext<TState, TConnParams, TConnState, TVars, TInput, TDatabase>,
|
|
484
317
|
name: string,
|
|
485
318
|
args: unknown[],
|
|
486
319
|
output: Out,
|
|
@@ -496,17 +329,9 @@ interface BaseActorConfig<
|
|
|
496
329
|
* @returns A Response object to send back, or void to continue with default routing
|
|
497
330
|
*/
|
|
498
331
|
onFetch?: (
|
|
499
|
-
c: ActorContext<
|
|
500
|
-
TState,
|
|
501
|
-
TConnParams,
|
|
502
|
-
TConnState,
|
|
503
|
-
TVars,
|
|
504
|
-
TInput,
|
|
505
|
-
TAuthData,
|
|
506
|
-
TDatabase
|
|
507
|
-
>,
|
|
332
|
+
c: ActorContext<TState, TConnParams, TConnState, TVars, TInput, TDatabase>,
|
|
508
333
|
request: Request,
|
|
509
|
-
opts: {
|
|
334
|
+
opts: {},
|
|
510
335
|
) => Response | Promise<Response>;
|
|
511
336
|
|
|
512
337
|
/**
|
|
@@ -519,17 +344,9 @@ interface BaseActorConfig<
|
|
|
519
344
|
* @param request The original HTTP upgrade request
|
|
520
345
|
*/
|
|
521
346
|
onWebSocket?: (
|
|
522
|
-
c: ActorContext<
|
|
523
|
-
TState,
|
|
524
|
-
TConnParams,
|
|
525
|
-
TConnState,
|
|
526
|
-
TVars,
|
|
527
|
-
TInput,
|
|
528
|
-
TAuthData,
|
|
529
|
-
TDatabase
|
|
530
|
-
>,
|
|
347
|
+
c: ActorContext<TState, TConnParams, TConnState, TVars, TInput, TDatabase>,
|
|
531
348
|
websocket: UniversalWebSocket,
|
|
532
|
-
opts: { request: Request
|
|
349
|
+
opts: { request: Request },
|
|
533
350
|
) => void | Promise<void>;
|
|
534
351
|
|
|
535
352
|
actions: TActions;
|
|
@@ -553,12 +370,10 @@ export type ActorConfig<
|
|
|
553
370
|
TConnState,
|
|
554
371
|
TVars,
|
|
555
372
|
TInput,
|
|
556
|
-
TAuthData,
|
|
557
373
|
TDatabase extends AnyDatabaseProvider,
|
|
558
374
|
> = Omit<
|
|
559
375
|
z.infer<typeof ActorConfigSchema>,
|
|
560
376
|
| "actions"
|
|
561
|
-
| "onAuth"
|
|
562
377
|
| "onCreate"
|
|
563
378
|
| "onStart"
|
|
564
379
|
| "onStateChange"
|
|
@@ -582,46 +397,12 @@ export type ActorConfig<
|
|
|
582
397
|
TConnState,
|
|
583
398
|
TVars,
|
|
584
399
|
TInput,
|
|
585
|
-
TAuthData,
|
|
586
400
|
TDatabase,
|
|
587
|
-
Actions<
|
|
588
|
-
TState,
|
|
589
|
-
TConnParams,
|
|
590
|
-
TConnState,
|
|
591
|
-
TVars,
|
|
592
|
-
TInput,
|
|
593
|
-
TAuthData,
|
|
594
|
-
TDatabase
|
|
595
|
-
>
|
|
596
|
-
> &
|
|
597
|
-
OnAuth<TConnParams, TAuthData> &
|
|
598
|
-
CreateState<
|
|
599
|
-
TState,
|
|
600
|
-
TConnParams,
|
|
601
|
-
TConnState,
|
|
602
|
-
TVars,
|
|
603
|
-
TInput,
|
|
604
|
-
TAuthData,
|
|
605
|
-
TDatabase
|
|
606
|
-
> &
|
|
607
|
-
CreateConnState<
|
|
608
|
-
TState,
|
|
609
|
-
TConnParams,
|
|
610
|
-
TConnState,
|
|
611
|
-
TVars,
|
|
612
|
-
TInput,
|
|
613
|
-
TAuthData,
|
|
614
|
-
TDatabase
|
|
615
|
-
> &
|
|
616
|
-
CreateVars<
|
|
617
|
-
TState,
|
|
618
|
-
TConnParams,
|
|
619
|
-
TConnState,
|
|
620
|
-
TVars,
|
|
621
|
-
TInput,
|
|
622
|
-
TAuthData,
|
|
623
|
-
TDatabase
|
|
401
|
+
Actions<TState, TConnParams, TConnState, TVars, TInput, TDatabase>
|
|
624
402
|
> &
|
|
403
|
+
CreateState<TState, TConnParams, TConnState, TVars, TInput, TDatabase> &
|
|
404
|
+
CreateConnState<TState, TConnParams, TConnState, TVars, TInput, TDatabase> &
|
|
405
|
+
CreateVars<TState, TConnParams, TConnState, TVars, TInput, TDatabase> &
|
|
625
406
|
ActorDatabaseConfig<TDatabase>;
|
|
626
407
|
|
|
627
408
|
// See description on `ActorConfig`
|
|
@@ -631,7 +412,6 @@ export type ActorConfigInput<
|
|
|
631
412
|
TConnState = undefined,
|
|
632
413
|
TVars = undefined,
|
|
633
414
|
TInput = undefined,
|
|
634
|
-
TAuthData = undefined,
|
|
635
415
|
TDatabase extends AnyDatabaseProvider = undefined,
|
|
636
416
|
TActions extends Actions<
|
|
637
417
|
TState,
|
|
@@ -639,23 +419,13 @@ export type ActorConfigInput<
|
|
|
639
419
|
TConnState,
|
|
640
420
|
TVars,
|
|
641
421
|
TInput,
|
|
642
|
-
TAuthData,
|
|
643
422
|
TDatabase
|
|
644
423
|
> = Record<never, never>,
|
|
645
424
|
> = {
|
|
646
|
-
types?: ActorTypes<
|
|
647
|
-
TState,
|
|
648
|
-
TConnParams,
|
|
649
|
-
TConnState,
|
|
650
|
-
TVars,
|
|
651
|
-
TInput,
|
|
652
|
-
TAuthData,
|
|
653
|
-
TDatabase
|
|
654
|
-
>;
|
|
425
|
+
types?: ActorTypes<TState, TConnParams, TConnState, TVars, TInput, TDatabase>;
|
|
655
426
|
} & Omit<
|
|
656
427
|
z.input<typeof ActorConfigSchema>,
|
|
657
428
|
| "actions"
|
|
658
|
-
| "onAuth"
|
|
659
429
|
| "onCreate"
|
|
660
430
|
| "onStart"
|
|
661
431
|
| "onStop"
|
|
@@ -680,38 +450,12 @@ export type ActorConfigInput<
|
|
|
680
450
|
TConnState,
|
|
681
451
|
TVars,
|
|
682
452
|
TInput,
|
|
683
|
-
TAuthData,
|
|
684
453
|
TDatabase,
|
|
685
454
|
TActions
|
|
686
455
|
> &
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
TConnParams,
|
|
691
|
-
TConnState,
|
|
692
|
-
TVars,
|
|
693
|
-
TInput,
|
|
694
|
-
TAuthData,
|
|
695
|
-
TDatabase
|
|
696
|
-
> &
|
|
697
|
-
CreateConnState<
|
|
698
|
-
TState,
|
|
699
|
-
TConnParams,
|
|
700
|
-
TConnState,
|
|
701
|
-
TVars,
|
|
702
|
-
TInput,
|
|
703
|
-
TAuthData,
|
|
704
|
-
TDatabase
|
|
705
|
-
> &
|
|
706
|
-
CreateVars<
|
|
707
|
-
TState,
|
|
708
|
-
TConnParams,
|
|
709
|
-
TConnState,
|
|
710
|
-
TVars,
|
|
711
|
-
TInput,
|
|
712
|
-
TAuthData,
|
|
713
|
-
TDatabase
|
|
714
|
-
> &
|
|
456
|
+
CreateState<TState, TConnParams, TConnState, TVars, TInput, TDatabase> &
|
|
457
|
+
CreateConnState<TState, TConnParams, TConnState, TVars, TInput, TDatabase> &
|
|
458
|
+
CreateVars<TState, TConnParams, TConnState, TVars, TInput, TDatabase> &
|
|
715
459
|
ActorDatabaseConfig<TDatabase>;
|
|
716
460
|
|
|
717
461
|
// For testing type definitions:
|
|
@@ -721,7 +465,6 @@ export function test<
|
|
|
721
465
|
TConnState,
|
|
722
466
|
TVars,
|
|
723
467
|
TInput,
|
|
724
|
-
TAuthData,
|
|
725
468
|
TDatabase extends AnyDatabaseProvider,
|
|
726
469
|
TActions extends Actions<
|
|
727
470
|
TState,
|
|
@@ -729,7 +472,6 @@ export function test<
|
|
|
729
472
|
TConnState,
|
|
730
473
|
TVars,
|
|
731
474
|
TInput,
|
|
732
|
-
TAuthData,
|
|
733
475
|
TDatabase
|
|
734
476
|
>,
|
|
735
477
|
>(
|
|
@@ -739,26 +481,16 @@ export function test<
|
|
|
739
481
|
TConnState,
|
|
740
482
|
TVars,
|
|
741
483
|
TInput,
|
|
742
|
-
TAuthData,
|
|
743
484
|
TDatabase,
|
|
744
485
|
TActions
|
|
745
486
|
>,
|
|
746
|
-
): ActorConfig<
|
|
747
|
-
TState,
|
|
748
|
-
TConnParams,
|
|
749
|
-
TConnState,
|
|
750
|
-
TVars,
|
|
751
|
-
TInput,
|
|
752
|
-
TAuthData,
|
|
753
|
-
TDatabase
|
|
754
|
-
> {
|
|
487
|
+
): ActorConfig<TState, TConnParams, TConnState, TVars, TInput, TDatabase> {
|
|
755
488
|
const config = ActorConfigSchema.parse(input) as ActorConfig<
|
|
756
489
|
TState,
|
|
757
490
|
TConnParams,
|
|
758
491
|
TConnState,
|
|
759
492
|
TVars,
|
|
760
493
|
TInput,
|
|
761
|
-
TAuthData,
|
|
762
494
|
TDatabase
|
|
763
495
|
>;
|
|
764
496
|
return config;
|
package/src/actor/connection.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { AnyDatabaseProvider } from "./database";
|
|
|
6
6
|
import { type ConnDriver, ConnectionReadyState } from "./driver";
|
|
7
7
|
import * as errors from "./errors";
|
|
8
8
|
import type { ActorInstance } from "./instance";
|
|
9
|
-
import {
|
|
9
|
+
import { loggerWithoutContext } from "./log";
|
|
10
10
|
import type { PersistedConn } from "./persisted";
|
|
11
11
|
import { CachedSerializer } from "./protocol/serde";
|
|
12
12
|
import { generateSecureToken } from "./utils";
|
|
@@ -21,7 +21,7 @@ export function generateConnToken(): string {
|
|
|
21
21
|
|
|
22
22
|
export type ConnId = string;
|
|
23
23
|
|
|
24
|
-
export type AnyConn = Conn<any, any, any, any, any, any
|
|
24
|
+
export type AnyConn = Conn<any, any, any, any, any, any>;
|
|
25
25
|
|
|
26
26
|
export const CONNECTION_DRIVER_WEBSOCKET = "webSocket";
|
|
27
27
|
export const CONNECTION_DRIVER_SSE = "sse";
|
|
@@ -41,15 +41,15 @@ export const CONNECTION_CHECK_LIVENESS_SYMBOL = Symbol("checkLiveness");
|
|
|
41
41
|
*
|
|
42
42
|
* Manages connection-specific data and controls the connection lifecycle.
|
|
43
43
|
*
|
|
44
|
-
* @see {@link https://rivet.
|
|
44
|
+
* @see {@link https://rivet.dev/docs/connections|Connection Documentation}
|
|
45
45
|
*/
|
|
46
|
-
export class Conn<S, CP, CS, V, I,
|
|
46
|
+
export class Conn<S, CP, CS, V, I, DB extends AnyDatabaseProvider> {
|
|
47
47
|
subscriptions: Set<string> = new Set<string>();
|
|
48
48
|
|
|
49
49
|
#stateEnabled: boolean;
|
|
50
50
|
|
|
51
51
|
// TODO: Remove this cyclical reference
|
|
52
|
-
#actor: ActorInstance<S, CP, CS, V, I,
|
|
52
|
+
#actor: ActorInstance<S, CP, CS, V, I, DB>;
|
|
53
53
|
|
|
54
54
|
#status: ConnectionStatus = "connected";
|
|
55
55
|
|
|
@@ -71,10 +71,6 @@ export class Conn<S, CP, CS, V, I, AD, DB extends AnyDatabaseProvider> {
|
|
|
71
71
|
return this.__persist.params;
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
public get auth(): AD {
|
|
75
|
-
return this.__persist.authData as AD;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
74
|
public get driver(): ConnectionDriver {
|
|
79
75
|
return this.__persist.connDriver as ConnectionDriver;
|
|
80
76
|
}
|
|
@@ -140,7 +136,7 @@ export class Conn<S, CP, CS, V, I, AD, DB extends AnyDatabaseProvider> {
|
|
|
140
136
|
* @protected
|
|
141
137
|
*/
|
|
142
138
|
public constructor(
|
|
143
|
-
actor: ActorInstance<S, CP, CS, V, I,
|
|
139
|
+
actor: ActorInstance<S, CP, CS, V, I, DB>,
|
|
144
140
|
persist: PersistedConn<CP, CS>,
|
|
145
141
|
driver: ConnDriver,
|
|
146
142
|
stateEnabled: boolean,
|
|
@@ -178,7 +174,7 @@ export class Conn<S, CP, CS, V, I, AD, DB extends AnyDatabaseProvider> {
|
|
|
178
174
|
*
|
|
179
175
|
* @param eventName - The name of the event.
|
|
180
176
|
* @param args - The arguments for the event.
|
|
181
|
-
* @see {@link https://rivet.
|
|
177
|
+
* @see {@link https://rivet.dev/docs/events|Events Documentation}
|
|
182
178
|
*/
|
|
183
179
|
public send(eventName: string, ...args: unknown[]) {
|
|
184
180
|
this.#actor.inspector.emitter.emit("eventFired", {
|
|
@@ -235,7 +231,8 @@ export class Conn<S, CP, CS, V, I, AD, DB extends AnyDatabaseProvider> {
|
|
|
235
231
|
const newLastSeen = Date.now();
|
|
236
232
|
const newStatus = isConnectionClosed ? "reconnecting" : "connected";
|
|
237
233
|
|
|
238
|
-
|
|
234
|
+
this.#actor.rLog.debug({
|
|
235
|
+
msg: "liveness probe for connection",
|
|
239
236
|
connId: this.id,
|
|
240
237
|
actorId: this.#actor.id,
|
|
241
238
|
readyState,
|
package/src/actor/context.ts
CHANGED
|
@@ -16,7 +16,6 @@ export class ActorContext<
|
|
|
16
16
|
TConnState,
|
|
17
17
|
TVars,
|
|
18
18
|
TInput,
|
|
19
|
-
TAuthData,
|
|
20
19
|
TDatabase extends AnyDatabaseProvider,
|
|
21
20
|
> {
|
|
22
21
|
#actor: ActorInstance<
|
|
@@ -25,7 +24,6 @@ export class ActorContext<
|
|
|
25
24
|
TConnState,
|
|
26
25
|
TVars,
|
|
27
26
|
TInput,
|
|
28
|
-
TAuthData,
|
|
29
27
|
TDatabase
|
|
30
28
|
>;
|
|
31
29
|
|
|
@@ -36,7 +34,6 @@ export class ActorContext<
|
|
|
36
34
|
TConnState,
|
|
37
35
|
TVars,
|
|
38
36
|
TInput,
|
|
39
|
-
TAuthData,
|
|
40
37
|
TDatabase
|
|
41
38
|
>,
|
|
42
39
|
) {
|
|
@@ -114,7 +111,7 @@ export class ActorContext<
|
|
|
114
111
|
*/
|
|
115
112
|
get conns(): Map<
|
|
116
113
|
ConnId,
|
|
117
|
-
Conn<TState, TConnParams, TConnState, TVars, TInput,
|
|
114
|
+
Conn<TState, TConnParams, TConnState, TVars, TInput, TDatabase>
|
|
118
115
|
> {
|
|
119
116
|
return this.#actor.conns;
|
|
120
117
|
}
|
package/src/actor/definition.ts
CHANGED
|
@@ -12,7 +12,6 @@ export type AnyActorDefinition = ActorDefinition<
|
|
|
12
12
|
any,
|
|
13
13
|
any,
|
|
14
14
|
any,
|
|
15
|
-
any,
|
|
16
15
|
any
|
|
17
16
|
>;
|
|
18
17
|
|
|
@@ -26,11 +25,10 @@ export type ActorContextOf<AD extends AnyActorDefinition> =
|
|
|
26
25
|
infer CS,
|
|
27
26
|
infer V,
|
|
28
27
|
infer I,
|
|
29
|
-
infer AD,
|
|
30
28
|
infer DB,
|
|
31
29
|
any
|
|
32
30
|
>
|
|
33
|
-
? ActorContext<S, CP, CS, V, I,
|
|
31
|
+
? ActorContext<S, CP, CS, V, I, DB>
|
|
34
32
|
: never;
|
|
35
33
|
|
|
36
34
|
/**
|
|
@@ -43,11 +41,10 @@ export type ActionContextOf<AD extends AnyActorDefinition> =
|
|
|
43
41
|
infer CS,
|
|
44
42
|
infer V,
|
|
45
43
|
infer I,
|
|
46
|
-
infer AD,
|
|
47
44
|
infer DB,
|
|
48
45
|
any
|
|
49
46
|
>
|
|
50
|
-
? ActionContext<S, CP, CS, V, I,
|
|
47
|
+
? ActionContext<S, CP, CS, V, I, DB>
|
|
51
48
|
: never;
|
|
52
49
|
|
|
53
50
|
export class ActorDefinition<
|
|
@@ -56,21 +53,20 @@ export class ActorDefinition<
|
|
|
56
53
|
CS,
|
|
57
54
|
V,
|
|
58
55
|
I,
|
|
59
|
-
AD,
|
|
60
56
|
DB extends AnyDatabaseProvider,
|
|
61
|
-
R extends Actions<S, CP, CS, V, I,
|
|
57
|
+
R extends Actions<S, CP, CS, V, I, DB>,
|
|
62
58
|
> {
|
|
63
|
-
#config: ActorConfig<S, CP, CS, V, I,
|
|
59
|
+
#config: ActorConfig<S, CP, CS, V, I, DB>;
|
|
64
60
|
|
|
65
|
-
constructor(config: ActorConfig<S, CP, CS, V, I,
|
|
61
|
+
constructor(config: ActorConfig<S, CP, CS, V, I, DB>) {
|
|
66
62
|
this.#config = config;
|
|
67
63
|
}
|
|
68
64
|
|
|
69
|
-
get config(): ActorConfig<S, CP, CS, V, I,
|
|
65
|
+
get config(): ActorConfig<S, CP, CS, V, I, DB> {
|
|
70
66
|
return this.#config;
|
|
71
67
|
}
|
|
72
68
|
|
|
73
|
-
instantiate(): ActorInstance<S, CP, CS, V, I,
|
|
69
|
+
instantiate(): ActorInstance<S, CP, CS, V, I, DB> {
|
|
74
70
|
return new ActorInstance(this.#config);
|
|
75
71
|
}
|
|
76
72
|
}
|