@methodacting/actor-kit 0.47.0 → 0.47.2
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/dist/browser.d.ts +15 -284
- package/dist/index.d.ts +57 -263
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react.d.ts +18 -286
- package/dist/react.js.map +1 -1
- package/dist/src/createActorFetch.d.ts +3 -3
- package/dist/src/createActorFetch.d.ts.map +1 -1
- package/dist/src/createActorKitContext.d.ts +3 -3
- package/dist/src/createActorKitContext.d.ts.map +1 -1
- package/dist/src/createActorKitRouter.d.ts.map +1 -1
- package/dist/src/createMachineServer.d.ts +21 -14
- package/dist/src/createMachineServer.d.ts.map +1 -1
- package/dist/src/react.d.ts +1 -0
- package/dist/src/react.d.ts.map +1 -1
- package/dist/src/schemas.d.ts +44 -250
- package/dist/src/schemas.d.ts.map +1 -1
- package/dist/src/storage.d.ts +1 -1
- package/dist/src/storage.d.ts.map +1 -1
- package/dist/src/types.d.ts +12 -12
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/worker.d.ts +1 -0
- package/dist/src/worker.d.ts.map +1 -1
- package/package.json +18 -15
- package/src/createActorFetch.ts +4 -4
- package/src/createActorKitContext.tsx +2 -3
- package/src/createActorKitRouter.ts +7 -4
- package/src/createMachineServer.ts +20 -30
- package/src/react.ts +8 -0
- package/src/schemas.ts +5 -2
- package/src/storage.ts +45 -31
- package/src/types.ts +35 -44
- package/src/worker.ts +11 -1
package/dist/src/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DurableObject } from "cloudflare:workers";
|
|
2
2
|
import { Operation } from "fast-json-patch";
|
|
3
|
-
import type { AnyEventObject, AnyStateMachine, SnapshotFrom, StateMachine, StateValueFrom } from "xstate";
|
|
3
|
+
import type { AnyEventObject, AnyStateMachine, EventFromLogic, SnapshotFrom, StateMachine, StateValueFrom } from "xstate";
|
|
4
4
|
import type { z } from "zod";
|
|
5
5
|
import type { AnyEventSchema, CallerSchema, RequestInfoSchema, SystemEventSchema } from "./schemas";
|
|
6
6
|
import type { AlarmManager } from "./alarms";
|
|
@@ -10,7 +10,7 @@ export type EnvWithDurableObjects = {
|
|
|
10
10
|
[key: string]: DurableObjectNamespace<ActorServer<any>> | unknown;
|
|
11
11
|
};
|
|
12
12
|
export type AnyEvent = z.infer<typeof AnyEventSchema>;
|
|
13
|
-
export interface ActorServerMethods<TMachine extends
|
|
13
|
+
export interface ActorServerMethods<TMachine extends AnyStateMachine> {
|
|
14
14
|
fetch(request: Request): Promise<Response>;
|
|
15
15
|
spawn(props: {
|
|
16
16
|
actorType: string;
|
|
@@ -29,7 +29,7 @@ export interface ActorServerMethods<TMachine extends BaseActorKitStateMachine> {
|
|
|
29
29
|
snapshot: CallerSnapshotFrom<TMachine>;
|
|
30
30
|
}>;
|
|
31
31
|
}
|
|
32
|
-
export type ActorServer<TMachine extends
|
|
32
|
+
export type ActorServer<TMachine extends AnyStateMachine> = DurableObject & ActorServerMethods<TMachine>;
|
|
33
33
|
export type AnyActorServer = ActorServer<any>;
|
|
34
34
|
export type Caller = z.infer<typeof CallerSchema>;
|
|
35
35
|
export type RequestInfo = z.infer<typeof RequestInfoSchema>;
|
|
@@ -43,14 +43,14 @@ export type CallerType = "client" | "system" | "service";
|
|
|
43
43
|
type EventObject = {
|
|
44
44
|
type: string;
|
|
45
45
|
};
|
|
46
|
-
type EventSchemaUnion = z.ZodDiscriminatedUnion<
|
|
46
|
+
type EventSchemaUnion = z.ZodDiscriminatedUnion<[
|
|
47
47
|
z.ZodObject<z.ZodRawShape & {
|
|
48
48
|
type: z.ZodString;
|
|
49
49
|
}>,
|
|
50
50
|
...z.ZodObject<z.ZodRawShape & {
|
|
51
51
|
type: z.ZodString;
|
|
52
52
|
}>[]
|
|
53
|
-
]>;
|
|
53
|
+
], "type">;
|
|
54
54
|
export type EventSchemas = {
|
|
55
55
|
client: EventSchemaUnion;
|
|
56
56
|
service: EventSchemaUnion;
|
|
@@ -79,7 +79,7 @@ export type BaseActorKitInput<TEnv = EnvWithDurableObjects> = {
|
|
|
79
79
|
export type WithActorKitInput<TInputProps extends {
|
|
80
80
|
[key: string]: unknown;
|
|
81
81
|
}, TEnv extends EnvWithDurableObjects> = TInputProps & BaseActorKitInput<TEnv>;
|
|
82
|
-
export type AnyActorKitStateMachine =
|
|
82
|
+
export type AnyActorKitStateMachine = AnyStateMachine;
|
|
83
83
|
type AnyActorKitEvent = (WithActorKitEvent<AnyEventObject, "client"> | WithActorKitEvent<AnyEventObject, "service"> | ActorKitSystemEvent) & BaseActorKitEvent<EnvWithDurableObjects>;
|
|
84
84
|
type AnyActorKitInput = WithActorKitInput<{
|
|
85
85
|
[key: string]: unknown;
|
|
@@ -137,14 +137,14 @@ export type CallerSnapshotFrom<TMachine extends AnyStateMachine> = {
|
|
|
137
137
|
value: infer V;
|
|
138
138
|
} ? V : unknown;
|
|
139
139
|
};
|
|
140
|
-
export type ClientEventFrom<T extends
|
|
141
|
-
export type ServiceEventFrom<T extends
|
|
140
|
+
export type ClientEventFrom<T extends AnyStateMachine> = EventFromLogic<T> extends infer TEvent ? TEvent extends WithActorKitEvent<infer E, "client"> ? Omit<E, keyof BaseActorKitEvent<EnvWithDurableObjects>> : Omit<TEvent, keyof BaseActorKitEvent<EnvWithDurableObjects>> : never;
|
|
141
|
+
export type ServiceEventFrom<T extends AnyStateMachine> = EventFromLogic<T> extends infer TEvent ? TEvent extends WithActorKitEvent<infer E, "service"> ? Omit<E, keyof BaseActorKitEvent<EnvWithDurableObjects>> : never : never;
|
|
142
142
|
export type ScreamingSnakeToKebab<S extends string> = S extends `${infer T}_${infer U}` ? `${Lowercase<T>}-${ScreamingSnakeToKebab<U>}` : Lowercase<S>;
|
|
143
|
-
export type DurableObjectActor<TMachine extends
|
|
143
|
+
export type DurableObjectActor<TMachine extends AnyStateMachine> = ActorServer<TMachine>;
|
|
144
144
|
type CamelToSnakeCase<S extends string> = S extends `${infer T}${infer U}` ? U extends Uncapitalize<U> ? `${Lowercase<T>}${CamelToSnakeCase<U>}` : `${Lowercase<T>}_${CamelToSnakeCase<U>}` : S;
|
|
145
145
|
type KebabToCamelCase<S extends string> = S extends `${infer T}-${infer U}` ? `${T}${Capitalize<KebabToCamelCase<U>>}` : S;
|
|
146
146
|
export type KebabToScreamingSnake<S extends string> = Uppercase<CamelToSnakeCase<KebabToCamelCase<S>>>;
|
|
147
|
-
export interface MatchesProps<TMachine extends
|
|
147
|
+
export interface MatchesProps<TMachine extends AnyStateMachine> {
|
|
148
148
|
state: StateValueFrom<TMachine>;
|
|
149
149
|
and?: StateValueFrom<TMachine>;
|
|
150
150
|
or?: StateValueFrom<TMachine>;
|
|
@@ -156,7 +156,7 @@ export type ActorKitEmittedEvent = {
|
|
|
156
156
|
operations: Operation[];
|
|
157
157
|
checksum: string;
|
|
158
158
|
};
|
|
159
|
-
export type ActorKitClient<TMachine extends
|
|
159
|
+
export type ActorKitClient<TMachine extends AnyStateMachine> = {
|
|
160
160
|
connect: () => Promise<void>;
|
|
161
161
|
disconnect: () => void;
|
|
162
162
|
send: (event: ClientEventFrom<TMachine>) => void;
|
|
@@ -168,7 +168,7 @@ type ExtractEventType<TMachine> = TMachine extends ActorKitStateMachine<infer TE
|
|
|
168
168
|
type ExtractEnvType<TEvent> = TEvent extends {
|
|
169
169
|
env: infer TEnv;
|
|
170
170
|
} ? TEnv : never;
|
|
171
|
-
export type EnvFromMachine<TMachine extends
|
|
171
|
+
export type EnvFromMachine<TMachine extends AnyStateMachine> = ExtractEnvType<ExtractEventType<TMachine>> extends never ? EnvWithDurableObjects : ExtractEnvType<ExtractEventType<TMachine>> & EnvWithDurableObjects;
|
|
172
172
|
export interface MachineServerOptions {
|
|
173
173
|
persisted?: boolean;
|
|
174
174
|
enableAlarms?: boolean;
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,cAAc,EACf,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,MAAM,qBAAqB,GAAG;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;CACnE,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,MAAM,WAAW,kBAAkB,CAAC,QAAQ,SAAS,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/src/worker.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { createActorKitRouter } from "./createActorKitRouter";
|
|
2
2
|
export { createMachineServer } from "./createMachineServer";
|
|
3
|
+
export type { ActorServer, ActorServerMethods, BaseActorKitEvent, CallerSnapshotFrom, ClientEventFrom, EnvFromMachine, MachineServerOptions, ServiceEventFrom, } from "./types";
|
|
3
4
|
//# sourceMappingURL=worker.d.ts.map
|
package/dist/src/worker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,SAAS,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@methodacting/actor-kit",
|
|
3
|
-
"version": "0.47.
|
|
4
|
-
"main": "./
|
|
5
|
-
"module": "./
|
|
6
|
-
"types": "./
|
|
3
|
+
"version": "0.47.2",
|
|
4
|
+
"main": "./dist/index.js",
|
|
5
|
+
"module": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": {
|
|
9
9
|
"types": "./dist/index.d.ts",
|
|
@@ -14,24 +14,24 @@
|
|
|
14
14
|
"import": "./dist/browser.js"
|
|
15
15
|
},
|
|
16
16
|
"./server": {
|
|
17
|
-
"types": "./src/server.ts",
|
|
18
|
-
"import": "./src/server.
|
|
17
|
+
"types": "./dist/src/server.d.ts",
|
|
18
|
+
"import": "./dist/src/server.js"
|
|
19
19
|
},
|
|
20
20
|
"./react": {
|
|
21
21
|
"types": "./dist/react.d.ts",
|
|
22
22
|
"import": "./dist/react.js"
|
|
23
23
|
},
|
|
24
24
|
"./storybook": {
|
|
25
|
-
"types": "./src/storybook.ts",
|
|
26
|
-
"import": "./src/storybook.
|
|
25
|
+
"types": "./dist/src/storybook.d.ts",
|
|
26
|
+
"import": "./dist/src/storybook.js"
|
|
27
27
|
},
|
|
28
28
|
"./test": {
|
|
29
|
-
"types": "./src/test.ts",
|
|
30
|
-
"import": "./src/test.
|
|
29
|
+
"types": "./dist/src/test.d.ts",
|
|
30
|
+
"import": "./dist/src/test.js"
|
|
31
31
|
},
|
|
32
32
|
"./worker": {
|
|
33
|
-
"types": "./src/worker.ts",
|
|
34
|
-
"import": "./src/worker.
|
|
33
|
+
"types": "./dist/src/worker.d.ts",
|
|
34
|
+
"import": "./dist/src/worker.js"
|
|
35
35
|
}
|
|
36
36
|
},
|
|
37
37
|
"files": [
|
|
@@ -40,6 +40,8 @@
|
|
|
40
40
|
],
|
|
41
41
|
"scripts": {
|
|
42
42
|
"build": "rollup -c --bundleConfigAsCjs",
|
|
43
|
+
"test": "vitest run",
|
|
44
|
+
"test:watch": "vitest",
|
|
43
45
|
"prepublishOnly": "npm run build"
|
|
44
46
|
},
|
|
45
47
|
"keywords": [
|
|
@@ -52,9 +54,9 @@
|
|
|
52
54
|
"license": "ISC",
|
|
53
55
|
"peerDependencies": {
|
|
54
56
|
"@cloudflare/workers-types": "^4.20240925.0",
|
|
55
|
-
"react": "^17.0.0 || ^18.0.0",
|
|
57
|
+
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
|
|
56
58
|
"xstate": "^5.18.0",
|
|
57
|
-
"zod": "^3.
|
|
59
|
+
"zod": "^3.25.0 || ^4.0.0"
|
|
58
60
|
},
|
|
59
61
|
"dependencies": {
|
|
60
62
|
"cloudflare": "^3.5.0",
|
|
@@ -77,8 +79,9 @@
|
|
|
77
79
|
"rollup-plugin-preserve-directives": "^0.4.0",
|
|
78
80
|
"rollup-plugin-typescript2": "^0.36.0",
|
|
79
81
|
"typescript": "^5.6.2",
|
|
82
|
+
"vitest": "^3.2.4",
|
|
80
83
|
"xstate": "^5.18.2",
|
|
81
|
-
"zod": "^3.
|
|
84
|
+
"zod": "^4.3.5"
|
|
82
85
|
},
|
|
83
86
|
"type": "module",
|
|
84
87
|
"imports": {
|
package/src/createActorFetch.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { StateValueFrom } from "xstate";
|
|
1
|
+
import { AnyStateMachine, StateValueFrom } from "xstate";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import {
|
|
3
|
+
import { CallerSnapshotFrom, ClientEventFrom } from "./types";
|
|
4
4
|
|
|
5
5
|
const ResponseSchema = z.object({
|
|
6
|
-
snapshot: z.record(z.any()),
|
|
6
|
+
snapshot: z.record(z.string(), z.any()),
|
|
7
7
|
checksum: z.string(),
|
|
8
8
|
});
|
|
9
9
|
|
|
10
|
-
export function createActorFetch<TMachine extends
|
|
10
|
+
export function createActorFetch<TMachine extends AnyStateMachine>({
|
|
11
11
|
actorType,
|
|
12
12
|
host,
|
|
13
13
|
}: {
|
|
@@ -11,18 +11,17 @@ import React, {
|
|
|
11
11
|
useRef,
|
|
12
12
|
useSyncExternalStore,
|
|
13
13
|
} from "react";
|
|
14
|
-
import { matchesState, StateValueFrom } from "xstate";
|
|
14
|
+
import { AnyStateMachine, matchesState, StateValueFrom } from "xstate";
|
|
15
15
|
import type { ActorKitClientProps } from "./createActorKitClient";
|
|
16
16
|
import { createActorKitClient } from "./createActorKitClient";
|
|
17
17
|
import type {
|
|
18
18
|
ActorKitClient,
|
|
19
|
-
AnyActorKitStateMachine,
|
|
20
19
|
CallerSnapshotFrom,
|
|
21
20
|
ClientEventFrom,
|
|
22
21
|
MatchesProps,
|
|
23
22
|
} from "./types";
|
|
24
23
|
|
|
25
|
-
export function createActorKitContext<TMachine extends
|
|
24
|
+
export function createActorKitContext<TMachine extends AnyStateMachine>(
|
|
26
25
|
actorType: string
|
|
27
26
|
) {
|
|
28
27
|
const ActorKitContext = createContext<ActorKitClient<TMachine> | null>(null);
|
|
@@ -112,14 +112,17 @@ export const createActorKitRouter = <Env extends EnvWithDurableObjects>(
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
if (request.method === "GET") {
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
const searchParams = new URL(request.url).searchParams;
|
|
116
|
+
const waitForEvent = searchParams.get("waitForEvent");
|
|
117
|
+
const waitForState = searchParams.get("waitForState");
|
|
118
|
+
const timeout = searchParams.get("timeout");
|
|
119
|
+
const errorOnWaitTimeout = searchParams.get("errorOnWaitTimeout");
|
|
120
|
+
|
|
118
121
|
const result = await durableObjectStub.getSnapshot(caller, {
|
|
119
122
|
waitForEvent: waitForEvent ? JSON.parse(waitForEvent) : undefined,
|
|
120
123
|
waitForState: waitForState ? JSON.parse(waitForState) : undefined,
|
|
121
124
|
timeout: timeout ? parseInt(timeout, 10) : undefined,
|
|
122
|
-
errorOnWaitTimeout: errorOnWaitTimeout ? errorOnWaitTimeout ===
|
|
125
|
+
errorOnWaitTimeout: errorOnWaitTimeout ? errorOnWaitTimeout === "true" : undefined,
|
|
123
126
|
});
|
|
124
127
|
return new Response(JSON.stringify(result), {
|
|
125
128
|
headers: { "Content-Type": "application/json" },
|
|
@@ -4,6 +4,7 @@ import { compare } from "fast-json-patch";
|
|
|
4
4
|
import {
|
|
5
5
|
Actor,
|
|
6
6
|
AnyEventObject,
|
|
7
|
+
AnyStateMachine,
|
|
7
8
|
createActor,
|
|
8
9
|
InputFrom,
|
|
9
10
|
matchesState,
|
|
@@ -17,8 +18,6 @@ import { AlarmTypes, PERSISTED_SNAPSHOT_KEY } from "./constants";
|
|
|
17
18
|
import { CallerSchema } from "./schemas";
|
|
18
19
|
import {
|
|
19
20
|
ActorKitInputProps,
|
|
20
|
-
ActorKitStateMachine,
|
|
21
|
-
ActorKitSystemEvent,
|
|
22
21
|
ActorServer,
|
|
23
22
|
Caller,
|
|
24
23
|
CallerSnapshotFrom,
|
|
@@ -26,8 +25,6 @@ import {
|
|
|
26
25
|
EnvFromMachine,
|
|
27
26
|
MachineServerOptions,
|
|
28
27
|
ServiceEventFrom,
|
|
29
|
-
WithActorKitContext,
|
|
30
|
-
WithActorKitEvent,
|
|
31
28
|
} from "./types";
|
|
32
29
|
import { ActorKitStorage } from "./storage";
|
|
33
30
|
import { AlarmManager, generateAlarmId } from "./alarms";
|
|
@@ -43,7 +40,7 @@ const StorageSchema = z.object({
|
|
|
43
40
|
actorType: z.string(),
|
|
44
41
|
actorId: z.string(),
|
|
45
42
|
initialCaller: CallerSchema,
|
|
46
|
-
input: z.record(z.unknown()),
|
|
43
|
+
input: z.record(z.string(), z.unknown()),
|
|
47
44
|
});
|
|
48
45
|
|
|
49
46
|
const WebSocketAttachmentSchema = z.object({
|
|
@@ -56,26 +53,19 @@ type WebSocketAttachment = z.infer<typeof WebSocketAttachmentSchema>;
|
|
|
56
53
|
* Creates a MachineServer class that extends DurableObject and implements ActorServer.
|
|
57
54
|
* This function is the main entry point for creating a machine server.
|
|
58
55
|
*/
|
|
56
|
+
/** Structural type for a Zod-like schema — avoids nominal Zod class types that break across pnpm boundaries */
|
|
57
|
+
type EventSchema<T extends { type: string } = { type: string }> = {
|
|
58
|
+
parse(data: unknown): T;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
type InputSchema<T extends Record<string, unknown> = Record<string, unknown>> = {
|
|
62
|
+
parse(data: unknown): T;
|
|
63
|
+
};
|
|
64
|
+
|
|
59
65
|
export const createMachineServer = <
|
|
60
|
-
TClientEvent extends
|
|
61
|
-
TServiceEvent extends
|
|
62
|
-
|
|
63
|
-
TMachine extends ActorKitStateMachine<
|
|
64
|
-
(
|
|
65
|
-
| WithActorKitEvent<TClientEvent, "client">
|
|
66
|
-
| WithActorKitEvent<TServiceEvent, "service">
|
|
67
|
-
| ActorKitSystemEvent
|
|
68
|
-
) & {
|
|
69
|
-
storage: DurableObjectStorage;
|
|
70
|
-
env: EnvFromMachine<TMachine>;
|
|
71
|
-
},
|
|
72
|
-
z.infer<TInputSchema> & {
|
|
73
|
-
id: string;
|
|
74
|
-
caller: Caller;
|
|
75
|
-
storage: DurableObjectStorage;
|
|
76
|
-
},
|
|
77
|
-
WithActorKitContext<any, any, any>
|
|
78
|
-
>
|
|
66
|
+
TClientEvent extends { type: string },
|
|
67
|
+
TServiceEvent extends { type: string },
|
|
68
|
+
TMachine extends AnyStateMachine
|
|
79
69
|
>({
|
|
80
70
|
machine,
|
|
81
71
|
schemas,
|
|
@@ -83,9 +73,9 @@ export const createMachineServer = <
|
|
|
83
73
|
}: {
|
|
84
74
|
machine: TMachine;
|
|
85
75
|
schemas: {
|
|
86
|
-
clientEvent:
|
|
87
|
-
serviceEvent:
|
|
88
|
-
inputProps:
|
|
76
|
+
clientEvent: EventSchema<TClientEvent>;
|
|
77
|
+
serviceEvent: EventSchema<TServiceEvent>;
|
|
78
|
+
inputProps: InputSchema;
|
|
89
79
|
};
|
|
90
80
|
options?: MachineServerOptions;
|
|
91
81
|
}): new (
|
|
@@ -455,7 +445,7 @@ export const createMachineServer = <
|
|
|
455
445
|
event = {
|
|
456
446
|
...clientEvent,
|
|
457
447
|
caller,
|
|
458
|
-
} as ClientEventFrom<TMachine>;
|
|
448
|
+
} as unknown as ClientEventFrom<TMachine>;
|
|
459
449
|
} else if (caller.type === "service") {
|
|
460
450
|
const serviceEvent = schemas.serviceEvent.parse(
|
|
461
451
|
JSON.parse(message as string)
|
|
@@ -463,7 +453,7 @@ export const createMachineServer = <
|
|
|
463
453
|
event = {
|
|
464
454
|
...serviceEvent,
|
|
465
455
|
caller,
|
|
466
|
-
} as ServiceEventFrom<TMachine>;
|
|
456
|
+
} as unknown as ServiceEventFrom<TMachine>;
|
|
467
457
|
} else {
|
|
468
458
|
throw new Error(`Unknown caller type: ${caller.type}`);
|
|
469
459
|
}
|
|
@@ -511,7 +501,7 @@ export const createMachineServer = <
|
|
|
511
501
|
...event,
|
|
512
502
|
env: this.env,
|
|
513
503
|
storage: this.storage,
|
|
514
|
-
});
|
|
504
|
+
} as Parameters<typeof this.actor.send>[0]);
|
|
515
505
|
}
|
|
516
506
|
|
|
517
507
|
/**
|
package/src/react.ts
CHANGED
package/src/schemas.ts
CHANGED
|
@@ -7,7 +7,7 @@ export const BotManagementSchema = z.object({
|
|
|
7
7
|
passed: z.boolean(),
|
|
8
8
|
}),
|
|
9
9
|
staticResource: z.boolean(),
|
|
10
|
-
detectionIds: z.record(z.any()),
|
|
10
|
+
detectionIds: z.record(z.string(), z.any()),
|
|
11
11
|
score: z.number(),
|
|
12
12
|
});
|
|
13
13
|
|
|
@@ -75,7 +75,10 @@ export const CallerStringSchema = z.string().transform((val, ctx) => {
|
|
|
75
75
|
// Regular expression to validate the UUID format
|
|
76
76
|
const callerTypeParseResult = CallerIdTypeSchema.safeParse(val.split("-")[0]);
|
|
77
77
|
if (!callerTypeParseResult.success) {
|
|
78
|
-
|
|
78
|
+
ctx.addIssue({
|
|
79
|
+
code: z.ZodIssueCode.custom,
|
|
80
|
+
message: `Invalid caller type: ${val.split("-")[0]}`,
|
|
81
|
+
});
|
|
79
82
|
return z.NEVER;
|
|
80
83
|
}
|
|
81
84
|
const type = callerTypeParseResult.data;
|
package/src/storage.ts
CHANGED
|
@@ -109,7 +109,7 @@ export class ActorKitStorage {
|
|
|
109
109
|
private initialized = false;
|
|
110
110
|
private sql: DurableObjectStorage["sql"];
|
|
111
111
|
|
|
112
|
-
constructor(private storage: DurableObjectStorage) {
|
|
112
|
+
constructor(private readonly storage: DurableObjectStorage) {
|
|
113
113
|
this.sql = storage.sql;
|
|
114
114
|
}
|
|
115
115
|
|
|
@@ -149,7 +149,7 @@ export class ActorKitStorage {
|
|
|
149
149
|
await this.ensureInitialized();
|
|
150
150
|
const result = await this.sql.exec(
|
|
151
151
|
"SELECT id, type, scheduled_at, repeat_interval, payload, created_at FROM alarms WHERE scheduled_at <= ? ORDER BY scheduled_at ASC",
|
|
152
|
-
|
|
152
|
+
before
|
|
153
153
|
);
|
|
154
154
|
return (await this.parseRows(result)) as AlarmRecord[];
|
|
155
155
|
}
|
|
@@ -173,14 +173,12 @@ export class ActorKitStorage {
|
|
|
173
173
|
await this.ensureInitialized();
|
|
174
174
|
await this.sql.exec(
|
|
175
175
|
"INSERT INTO alarms (id, type, scheduled_at, repeat_interval, payload, created_at) VALUES (?, ?, ?, ?, ?, ?)",
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
Date.now(),
|
|
183
|
-
]
|
|
176
|
+
options.id,
|
|
177
|
+
options.type,
|
|
178
|
+
options.scheduledAt,
|
|
179
|
+
options.repeatInterval ?? null,
|
|
180
|
+
JSON.stringify(options.payload),
|
|
181
|
+
Date.now()
|
|
184
182
|
);
|
|
185
183
|
}
|
|
186
184
|
|
|
@@ -191,7 +189,10 @@ export class ActorKitStorage {
|
|
|
191
189
|
await this.ensureInitialized();
|
|
192
190
|
await this.sql.exec(
|
|
193
191
|
"UPDATE alarms SET scheduled_at = ?, repeat_interval = ?, payload = ? WHERE id = ?",
|
|
194
|
-
|
|
192
|
+
options.scheduledAt,
|
|
193
|
+
options.repeatInterval ?? null,
|
|
194
|
+
JSON.stringify(options.payload),
|
|
195
|
+
options.id
|
|
195
196
|
);
|
|
196
197
|
}
|
|
197
198
|
|
|
@@ -200,7 +201,7 @@ export class ActorKitStorage {
|
|
|
200
201
|
*/
|
|
201
202
|
async deleteAlarm(id: string): Promise<void> {
|
|
202
203
|
await this.ensureInitialized();
|
|
203
|
-
await this.sql.exec("DELETE FROM alarms WHERE id = ?",
|
|
204
|
+
await this.sql.exec("DELETE FROM alarms WHERE id = ?", id);
|
|
204
205
|
}
|
|
205
206
|
|
|
206
207
|
/**
|
|
@@ -208,7 +209,7 @@ export class ActorKitStorage {
|
|
|
208
209
|
*/
|
|
209
210
|
async deleteAlarmsByType(type: string): Promise<void> {
|
|
210
211
|
await this.ensureInitialized();
|
|
211
|
-
await this.sql.exec("DELETE FROM alarms WHERE type = ?",
|
|
212
|
+
await this.sql.exec("DELETE FROM alarms WHERE type = ?", type);
|
|
212
213
|
}
|
|
213
214
|
|
|
214
215
|
// ==================== Actor Metadata ====================
|
|
@@ -238,7 +239,7 @@ export class ActorKitStorage {
|
|
|
238
239
|
|
|
239
240
|
const result = await this.sql.exec(
|
|
240
241
|
"SELECT actor_id, actor_type, initial_caller, input, created_at, updated_at FROM actor_meta WHERE actor_id = ?",
|
|
241
|
-
|
|
242
|
+
actorId
|
|
242
243
|
);
|
|
243
244
|
const rows = (await this.parseRows(result)) as ActorMetaRecord[];
|
|
244
245
|
if (rows.length === 0) return null;
|
|
@@ -266,14 +267,12 @@ export class ActorKitStorage {
|
|
|
266
267
|
initial_caller = excluded.initial_caller,
|
|
267
268
|
input = excluded.input,
|
|
268
269
|
updated_at = excluded.updated_at`,
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
now,
|
|
276
|
-
]
|
|
270
|
+
meta.actorId,
|
|
271
|
+
meta.actorType,
|
|
272
|
+
JSON.stringify(meta.initialCaller),
|
|
273
|
+
JSON.stringify(meta.input),
|
|
274
|
+
now,
|
|
275
|
+
now
|
|
277
276
|
);
|
|
278
277
|
}
|
|
279
278
|
|
|
@@ -282,7 +281,7 @@ export class ActorKitStorage {
|
|
|
282
281
|
*/
|
|
283
282
|
async deleteActorMeta(actorId: string): Promise<void> {
|
|
284
283
|
await this.ensureInitialized();
|
|
285
|
-
await this.sql.exec("DELETE FROM actor_meta WHERE actor_id = ?",
|
|
284
|
+
await this.sql.exec("DELETE FROM actor_meta WHERE actor_id = ?", actorId);
|
|
286
285
|
}
|
|
287
286
|
|
|
288
287
|
// ==================== Snapshots ====================
|
|
@@ -294,7 +293,7 @@ export class ActorKitStorage {
|
|
|
294
293
|
await this.ensureInitialized();
|
|
295
294
|
const result = await this.sql.exec(
|
|
296
295
|
"SELECT actor_id, snapshot, checksum, updated_at FROM snapshots WHERE actor_id = ?",
|
|
297
|
-
|
|
296
|
+
actorId
|
|
298
297
|
);
|
|
299
298
|
const rows = (await this.parseRows(result)) as SnapshotRecord[];
|
|
300
299
|
if (rows.length === 0) return null;
|
|
@@ -319,7 +318,10 @@ export class ActorKitStorage {
|
|
|
319
318
|
snapshot = excluded.snapshot,
|
|
320
319
|
checksum = excluded.checksum,
|
|
321
320
|
updated_at = excluded.updated_at`,
|
|
322
|
-
|
|
321
|
+
actorId,
|
|
322
|
+
JSON.stringify(snapshot),
|
|
323
|
+
checksum ?? null,
|
|
324
|
+
Date.now()
|
|
323
325
|
);
|
|
324
326
|
}
|
|
325
327
|
|
|
@@ -328,7 +330,7 @@ export class ActorKitStorage {
|
|
|
328
330
|
*/
|
|
329
331
|
async deleteSnapshot(actorId: string): Promise<void> {
|
|
330
332
|
await this.ensureInitialized();
|
|
331
|
-
await this.sql.exec("DELETE FROM snapshots WHERE actor_id = ?",
|
|
333
|
+
await this.sql.exec("DELETE FROM snapshots WHERE actor_id = ?", actorId);
|
|
332
334
|
}
|
|
333
335
|
|
|
334
336
|
// ==================== Migration Helpers ====================
|
|
@@ -375,13 +377,13 @@ export class ActorKitStorage {
|
|
|
375
377
|
if (result && typeof result[Symbol.asyncIterator] === "function") {
|
|
376
378
|
const cursor = result as AsyncIterable<{ columns: string[]; results: (string | number | null)[][] }>;
|
|
377
379
|
const rows: unknown[] = [];
|
|
378
|
-
let columns: string[] =
|
|
380
|
+
let columns: string[] | null = null;
|
|
379
381
|
|
|
380
382
|
for await (const batch of cursor) {
|
|
381
383
|
if (!columns) columns = batch.columns;
|
|
382
384
|
for (const row of batch.results) {
|
|
383
385
|
const obj: Record<string, unknown> = {};
|
|
384
|
-
columns.forEach((col, i) => {
|
|
386
|
+
(columns ?? []).forEach((col, i) => {
|
|
385
387
|
obj[col] = row[i];
|
|
386
388
|
});
|
|
387
389
|
rows.push(obj);
|
|
@@ -390,9 +392,21 @@ export class ActorKitStorage {
|
|
|
390
392
|
return rows;
|
|
391
393
|
}
|
|
392
394
|
|
|
393
|
-
// Handle
|
|
394
|
-
|
|
395
|
-
|
|
395
|
+
// Handle row batches returned by sql.exec()
|
|
396
|
+
const batches = Array.isArray(result) ? result : result ? [result] : [];
|
|
397
|
+
if (batches.length === 0) return [];
|
|
398
|
+
|
|
399
|
+
const first = batches[0] as {
|
|
400
|
+
columns?: string[];
|
|
401
|
+
columnNames?: string[];
|
|
402
|
+
rows?: unknown[][];
|
|
403
|
+
results?: unknown[][];
|
|
404
|
+
};
|
|
405
|
+
|
|
406
|
+
const columns = first?.columns ?? first?.columnNames ?? [];
|
|
407
|
+
const rows = first?.rows ?? first?.results ?? [];
|
|
408
|
+
if (!columns.length || !rows.length) return [];
|
|
409
|
+
|
|
396
410
|
return rows.map((row: unknown[]) => {
|
|
397
411
|
const obj: Record<string, unknown> = {};
|
|
398
412
|
columns.forEach((col: string, i: number) => {
|