UNPKG

actor-kit

Version:

Actor Kit is a library for running state machines in Cloudflare Workers, leveraging XState for robust state management. It provides a framework for managing the logic, lifecycle, persistence, synchronization, and access control of actors in a distributed

1 lines 6.64 kB
{"version":3,"file":"schemas-DTUwr6Qg.mjs","names":[],"sources":["../src/schemas.ts"],"sourcesContent":["import type { Operation } from \"fast-json-patch\";\nimport { z } from \"zod\";\n\nexport const BotManagementSchema = z.object({\n corporateProxy: z.boolean(),\n verifiedBot: z.boolean(),\n jsDetection: z.object({\n passed: z.boolean(),\n }),\n staticResource: z.boolean(),\n detectionIds: z.record(z.any()),\n score: z.number(),\n});\n\nexport const EnvironmentSchema = z.object({\n ACTOR_KIT_SECRET: z.string(),\n ACTOR_KIT_HOST: z.string(),\n});\n\nexport const RequestInfoSchema = z.object({\n longitude: z.string(),\n latitude: z.string(),\n continent: z.string(),\n country: z.string(),\n city: z.string(),\n timezone: z.string(),\n postalCode: z.string(),\n region: z.string(),\n regionCode: z.string(),\n metroCode: z.string(),\n botManagement: BotManagementSchema,\n});\n\nexport const CallerSchema = z.object({\n id: z.string(),\n type: z.enum([\"client\", \"system\", \"service\"]),\n});\n\nexport const AnyEventSchema = z\n .object({\n type: z.string(),\n })\n .passthrough();\n\nexport const SystemEventSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"INITIALIZE\"),\n caller: z.object({ type: z.literal(\"system\"), id: z.string() }),\n }),\n z.object({\n type: z.literal(\"CONNECT\"),\n caller: z.object({ type: z.literal(\"system\"), id: z.string() }),\n connectingCaller: CallerSchema,\n }),\n z.object({\n type: z.literal(\"DISCONNECT\"),\n caller: z.object({ type: z.literal(\"system\"), id: z.string() }),\n disconnectingCaller: CallerSchema,\n }),\n z.object({\n type: z.literal(\"RESUME\"),\n caller: z.object({ type: z.literal(\"system\"), id: z.string() }),\n }),\n z.object({\n type: z.literal(\"MIGRATE\"),\n caller: z.object({ type: z.literal(\"system\"), id: z.string() }),\n operations: z.array(z.any()),\n }),\n]);\n\n/**\n * Validates an emitted event from the actor-kit WebSocket protocol.\n *\n * The Zod schema validates `op` is a valid JSON Patch operation string,\n * then transforms the output to `Operation[]` from fast-json-patch.\n * This is safe because Zod has validated the `op` values match the\n * discriminated union variants — the transform bridges Zod's flat\n * object output to fast-json-patch's discriminated union type.\n */\nexport const EmittedEventSchema = z.object({\n operations: z\n .array(\n z.object({\n op: z.enum([\n \"add\",\n \"remove\",\n \"replace\",\n \"move\",\n \"copy\",\n \"test\",\n \"_get\",\n ]),\n path: z.string(),\n value: z.unknown().optional(),\n from: z.string().optional(),\n })\n )\n .transform((ops): Operation[] => ops as unknown as Operation[]),\n checksum: z.string(),\n});\n\nexport const CallerIdTypeSchema = z.enum([\"client\", \"service\", \"system\"]);\n\nexport const CallerStringSchema = z.string().transform((val, ctx) => {\n if (val === \"anonymous\") {\n return { type: \"client\" as const, id: \"anonymous\" };\n }\n\n const parts = val.split(\"-\");\n if (parts.length < 2) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Caller string must be in the format 'type-id' or 'anonymous'. Received '${val}'.`,\n });\n return z.NEVER;\n }\n\n const typeStr = parts[0];\n const id = parts.slice(1).join(\"-\"); // Rejoin in case id contains hyphens\n\n const callerTypeParseResult = CallerIdTypeSchema.safeParse(typeStr);\n if (!callerTypeParseResult.success) {\n callerTypeParseResult.error.issues.forEach(ctx.addIssue);\n return z.NEVER;\n }\n const type = callerTypeParseResult.data;\n\n // Basic validation: Ensure the ID part is not empty\n if (id.length > 0) {\n return { type, id };\n } else {\n // If the ID part is empty, add a custom issue\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `The ID part cannot be empty after the type prefix. Received '${id}' for value '${val}'.`,\n });\n // Return the special NEVER symbol to indicate a validation failure\n return z.NEVER;\n }\n});\n"],"mappings":"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"}