diff --git a/packages/misc/driver-test-suite/fixtures/apps/counter.ts b/packages/actor-core/fixtures/driver-test-suite/counter.ts similarity index 100% rename from packages/misc/driver-test-suite/fixtures/apps/counter.ts rename to packages/actor-core/fixtures/driver-test-suite/counter.ts diff --git a/packages/misc/driver-test-suite/fixtures/apps/scheduled.ts b/packages/actor-core/fixtures/driver-test-suite/scheduled.ts similarity index 100% rename from packages/misc/driver-test-suite/fixtures/apps/scheduled.ts rename to packages/actor-core/fixtures/driver-test-suite/scheduled.ts diff --git a/packages/actor-core/package.json b/packages/actor-core/package.json index e23f6ac3e..73434bfa7 100644 --- a/packages/actor-core/package.json +++ b/packages/actor-core/package.json @@ -2,13 +2,7 @@ "name": "actor-core", "version": "0.8.0", "license": "Apache-2.0", - "files": [ - "dist", - "src", - "deno.json", - "bun.json", - "package.json" - ], + "files": ["dist", "src", "deno.json", "bun.json", "package.json"], "type": "module", "bin": "./dist/cli/mod.cjs", "exports": { @@ -72,6 +66,16 @@ "default": "./dist/driver-helpers/mod.cjs" } }, + "./driver-test-suite": { + "import": { + "types": "./dist/driver-test-suite/mod.d.ts", + "default": "./dist/driver-test-suite/mod.js" + }, + "require": { + "types": "./dist/driver-test-suite/mod.d.cts", + "default": "./dist/driver-test-suite/mod.cjs" + } + }, "./topologies/coordinate": { "import": { "types": "./dist/topologies/coordinate/mod.d.ts", @@ -159,7 +163,7 @@ "sideEffects": false, "scripts": { "dev": "yarn build --watch", - "build": "tsup src/mod.ts src/client/mod.ts src/common/log.ts src/actor/errors.ts src/topologies/coordinate/mod.ts src/topologies/partition/mod.ts src/utils.ts src/driver-helpers/mod.ts src/cli/mod.ts src/actor/protocol/inspector/mod.ts src/actor/protocol/http/rpc.ts src/test/mod.ts src/inspector/protocol/actor/mod.ts src/inspector/protocol/manager/mod.ts src/inspector/mod.ts", + "build": "tsup src/mod.ts src/client/mod.ts src/common/log.ts src/actor/errors.ts src/topologies/coordinate/mod.ts src/topologies/partition/mod.ts src/utils.ts src/driver-helpers/mod.ts src/driver-test-suite/mod.ts src/cli/mod.ts src/actor/protocol/inspector/mod.ts src/actor/protocol/http/rpc.ts src/test/mod.ts src/inspector/protocol/actor/mod.ts src/inspector/protocol/manager/mod.ts src/inspector/mod.ts", "check-types": "tsc --noEmit", "boop": "tsc --outDir dist/test -d", "test": "vitest run", @@ -181,7 +185,10 @@ "tsup": "^8.4.0", "typescript": "^5.7.3", "vitest": "^3.1.1", - "ws": "^8.18.1" + "ws": "^8.18.1", + "@hono/node-server": "^1.14.0", + "@hono/node-ws": "^1.1.1", + "bundle-require": "^5.1.0" }, "peerDependencies": { "eventsource": "^3.0.5", diff --git a/packages/actor-core/src/driver-test-suite/log.ts b/packages/actor-core/src/driver-test-suite/log.ts new file mode 100644 index 000000000..62d1e56ea --- /dev/null +++ b/packages/actor-core/src/driver-test-suite/log.ts @@ -0,0 +1,7 @@ +import { getLogger } from "@/common/log"; + +export const LOGGER_NAME = "test-suite"; + +export function logger() { + return getLogger(LOGGER_NAME); +} diff --git a/packages/misc/driver-test-suite/src/mod.ts b/packages/actor-core/src/driver-test-suite/mod.ts similarity index 96% rename from packages/misc/driver-test-suite/src/mod.ts rename to packages/actor-core/src/driver-test-suite/mod.ts index c070fd993..4c5469475 100644 --- a/packages/misc/driver-test-suite/src/mod.ts +++ b/packages/actor-core/src/driver-test-suite/mod.ts @@ -4,7 +4,7 @@ import { CoordinateDriver, DriverConfig, ManagerDriver, -} from "actor-core/driver-helpers"; +} from "@/driver-helpers/mod"; import { runActorDriverTests, waitFor } from "./tests/actor-driver"; import { runManagerDriverTests } from "./tests/manager-driver"; import { describe } from "vitest"; @@ -12,12 +12,12 @@ import { type ActorCoreApp, CoordinateTopology, StandaloneTopology, -} from "actor-core"; +} from "@/mod"; import { createNodeWebSocket, type NodeWebSocket } from "@hono/node-ws"; import invariant from "invariant"; import { bundleRequire } from "bundle-require"; -import { getPort } from "actor-core/test"; -import { Transport } from "actor-core/client"; +import { getPort } from "@/test/mod"; +import { Transport } from "@/client/mod"; export interface DriverTestConfig { /** Deploys an app and returns the connection endpoint. */ diff --git a/packages/actor-core/src/driver-test-suite/test-apps.ts b/packages/actor-core/src/driver-test-suite/test-apps.ts new file mode 100644 index 000000000..59308db71 --- /dev/null +++ b/packages/actor-core/src/driver-test-suite/test-apps.ts @@ -0,0 +1,13 @@ +import { resolve } from "node:path"; + +export type { App as CounterApp } from "../../fixtures/driver-test-suite/counter"; +export type { App as ScheduledApp } from "../../fixtures/driver-test-suite/scheduled"; + +export const COUNTER_APP_PATH = resolve( + __dirname, + "../../fixtures/driver-test-suite/counter.ts", +); +export const SCHEDULED_APP_PATH = resolve( + __dirname, + "../../fixtures/driver-test-suite/scheduled.ts", +); diff --git a/packages/misc/driver-test-suite/src/tests/actor-driver.ts b/packages/actor-core/src/driver-test-suite/tests/actor-driver.ts similarity index 76% rename from packages/misc/driver-test-suite/src/tests/actor-driver.ts rename to packages/actor-core/src/driver-test-suite/tests/actor-driver.ts index 77866b566..b3f982cf8 100644 --- a/packages/misc/driver-test-suite/src/tests/actor-driver.ts +++ b/packages/actor-core/src/driver-test-suite/tests/actor-driver.ts @@ -1,9 +1,12 @@ import { describe, test, expect, vi } from "vitest"; -import type { DriverTestConfig, DriverTestConfigWithTransport } from "@/mod"; -import { setupDriverTest } from "@/utils"; -import { resolve } from "node:path"; -import type { App as CounterApp } from "../../fixtures/apps/counter"; -import type { App as ScheduledApp } from "../../fixtures/apps/scheduled"; +import type { DriverTestConfig, DriverTestConfigWithTransport } from "../mod"; +import { setupDriverTest } from "../utils"; +import { + COUNTER_APP_PATH, + SCHEDULED_APP_PATH, + type CounterApp, + type ScheduledApp, +} from "../test-apps"; /** * Waits for the specified time, using either real setTimeout or vi.advanceTimersByTime @@ -20,14 +23,16 @@ export async function waitFor( return Promise.resolve(); } } -export function runActorDriverTests(driverTestConfig: DriverTestConfigWithTransport) { +export function runActorDriverTests( + driverTestConfig: DriverTestConfigWithTransport, +) { describe("Actor Driver Tests", () => { describe("State Persistence", () => { test("persists state between actor instances", async (c) => { const { client } = await setupDriverTest( c, driverTestConfig, - resolve(__dirname, "../fixtures/apps/counter.ts"), + COUNTER_APP_PATH, ); // Create instance and increment @@ -45,13 +50,13 @@ export function runActorDriverTests(driverTestConfig: DriverTestConfigWithTransp const { client } = await setupDriverTest( c, driverTestConfig, - resolve(__dirname, "../fixtures/apps/counter.ts"), + COUNTER_APP_PATH, ); // Create actor and set initial state const counterInstance = client.counter.getOrCreate(); await counterInstance.increment(5); - + // Reconnect to the same actor const reconnectedInstance = client.counter.getOrCreate(); const persistedCount = await reconnectedInstance.increment(0); @@ -62,17 +67,17 @@ export function runActorDriverTests(driverTestConfig: DriverTestConfigWithTransp const { client } = await setupDriverTest( c, driverTestConfig, - resolve(__dirname, "../fixtures/apps/counter.ts"), + COUNTER_APP_PATH, ); // Create first counter with specific key const counterA = client.counter.getOrCreate(["counter-a"]); await counterA.increment(5); - + // Create second counter with different key const counterB = client.counter.getOrCreate(["counter-b"]); await counterB.increment(10); - + // Verify state is separate const countA = await counterA.increment(0); const countB = await counterB.increment(0); @@ -86,35 +91,35 @@ export function runActorDriverTests(driverTestConfig: DriverTestConfigWithTransp const { client } = await setupDriverTest( c, driverTestConfig, - resolve(__dirname, "../fixtures/apps/scheduled.ts"), + SCHEDULED_APP_PATH, ); // Create instance const alarmInstance = client.scheduled.getOrCreate(); - + // Schedule a task to run in 100ms await alarmInstance.scheduleTask(100); - + // Wait for longer than the scheduled time await waitFor(driverTestConfig, 150); - + // Verify the scheduled task ran const lastRun = await alarmInstance.getLastRun(); const scheduledCount = await alarmInstance.getScheduledCount(); - + expect(lastRun).toBeGreaterThan(0); expect(scheduledCount).toBe(1); }); }); - + describe("Actor Handle", () => { test("stateless handle can perform RPC calls", async (c) => { const { client } = await setupDriverTest( c, driverTestConfig, - resolve(__dirname, "../fixtures/apps/counter.ts"), + COUNTER_APP_PATH, ); - + // Get a handle to an actor const counterHandle = client.counter.getOrCreate("test-handle"); await counterHandle.increment(1); @@ -122,38 +127,23 @@ export function runActorDriverTests(driverTestConfig: DriverTestConfigWithTransp const count = await counterHandle.getCount(); expect(count).toBe(3); }); - + test("stateless handles to same actor share state", async (c) => { const { client } = await setupDriverTest( c, driverTestConfig, - resolve(__dirname, "../fixtures/apps/counter.ts"), + COUNTER_APP_PATH, ); - + // Get a handle to an actor const handle1 = client.counter.getOrCreate("test-handle-shared"); await handle1.increment(5); - + // Get another handle to same actor const handle2 = client.counter.getOrCreate("test-handle-shared"); const count = await handle2.getCount(); expect(count).toBe(5); }); - - // TODO: Fix this - //test("create new actor with handle", async (c) => { - // const { client } = await setupDriverTest( - // c, - // driverTestConfig, - // resolve(__dirname, "../fixtures/apps/counter.ts"), - // ); - // - // // Create a new actor with handle - // const createdHandle = client.counter.create("test-handle-create"); - // await createdHandle.increment(5); - // const count = await createdHandle.getCount(); - // expect(count).toBe(5); - //}); }); }); } diff --git a/packages/misc/driver-test-suite/src/tests/manager-driver.ts b/packages/actor-core/src/driver-test-suite/tests/manager-driver.ts similarity index 71% rename from packages/misc/driver-test-suite/src/tests/manager-driver.ts rename to packages/actor-core/src/driver-test-suite/tests/manager-driver.ts index db74738ec..c559d75bb 100644 --- a/packages/misc/driver-test-suite/src/tests/manager-driver.ts +++ b/packages/actor-core/src/driver-test-suite/tests/manager-driver.ts @@ -1,13 +1,8 @@ import { describe, test, expect, vi } from "vitest"; -import { - DriverTestConfigWithTransport, - waitFor, - type DriverTestConfig, -} from "@/mod"; -import { setupDriverTest } from "@/utils"; -import { resolve } from "node:path"; -import type { App as CounterApp } from "../../fixtures/apps/counter"; -import { ActorError } from "actor-core/client"; +import type { DriverTestConfigWithTransport } from "../mod"; +import { setupDriverTest } from "../utils"; +import { ActorError } from "@/client/mod"; +import { COUNTER_APP_PATH, type CounterApp } from "../test-apps"; export function runManagerDriverTests( driverTestConfig: DriverTestConfigWithTransport, @@ -18,7 +13,7 @@ export function runManagerDriverTests( const { client } = await setupDriverTest( c, driverTestConfig, - resolve(__dirname, "../fixtures/apps/counter.ts"), + COUNTER_APP_PATH, ); // Basic connect() with no parameters creates a default actor @@ -38,49 +33,31 @@ export function runManagerDriverTests( expect(countB).toBe(10); }); - // TODO: Add back, createAndConnect is not valid logic - //test("create() - always creates a new actor", async (c) => { - // const { client } = await setupDriverTest( - // c, - // driverTestConfig, - // resolve(__dirname, "../fixtures/apps/counter.ts"), - // ); - // - // // Create with basic options - // const counterA = await client.counter.createAndConnect([ - // "explicit-create", - // ]); - // await counterA.increment(7); - // - // // Create with the same ID should overwrite or return a conflict - // try { - // // Should either create a new actor with the same ID (overwriting) - // // or throw an error (if the driver prevents ID conflicts) - // const counterADuplicate = client.counter.createAndConnect([ - // "explicit-create", - // ]); - // await counterADuplicate.increment(1); - // - // // If we get here, the driver allows ID overwrites - // // Verify that state was reset or overwritten - // const newCount = await counterADuplicate.increment(0); - // expect(newCount).toBe(1); // Not 8 (7+1) if it's a new instance - // } catch (error) { - // // This is also valid behavior if the driver prevents ID conflicts - // // No assertion needed - // } - // - // // Create with full options - // const counterB = await client.counter.createAndConnect([ - // "full-options", - // "testing", - // "counter", - // ]); - // - // await counterB.increment(3); - // const countB = await counterB.increment(0); - // expect(countB).toBe(3); - //}); + test("throws ActorAlreadyExists when creating duplicate actors", async (c) => { + const { client } = await setupDriverTest( + c, + driverTestConfig, + COUNTER_APP_PATH, + ); + + // Create a unique actor with specific key + const uniqueKey = ["duplicate-actor-test", crypto.randomUUID()]; + const counter = client.counter.getOrCreate(uniqueKey); + await counter.increment(5); + + // Expect duplicate actor + try { + await client.counter.create(uniqueKey); + expect.fail("did not error on duplicate create"); + } catch (err) { + expect(err).toBeInstanceOf(ActorError); + expect((err as ActorError).code).toBe("actor_already_exists"); + } + + // Verify the original actor still works and has its state + const count = await counter.increment(0); + expect(count).toBe(5); + }); }); describe("Connection Options", () => { @@ -88,7 +65,7 @@ export function runManagerDriverTests( const { client } = await setupDriverTest( c, driverTestConfig, - resolve(__dirname, "../fixtures/apps/counter.ts"), + COUNTER_APP_PATH, ); // Try to get a nonexistent actor with no create @@ -121,7 +98,7 @@ export function runManagerDriverTests( const { client } = await setupDriverTest( c, driverTestConfig, - resolve(__dirname, "../fixtures/apps/counter.ts"), + COUNTER_APP_PATH, ); // Create an actor with connection params @@ -147,7 +124,7 @@ export function runManagerDriverTests( const { client } = await setupDriverTest( c, driverTestConfig, - resolve(__dirname, "../fixtures/apps/counter.ts"), + COUNTER_APP_PATH, ); // Create a unique ID for this test @@ -167,7 +144,7 @@ export function runManagerDriverTests( //test("creates and retrieves actors with region", async (c) => { // const { client } = await setupDriverTest(c, // driverTestConfig, - // resolve(__dirname, "../fixtures/apps/counter.ts"), + // COUNTER_APP_PATH // ); // // // Create actor with a specific region @@ -195,7 +172,7 @@ export function runManagerDriverTests( const { client } = await setupDriverTest( c, driverTestConfig, - resolve(__dirname, "../fixtures/apps/counter.ts"), + COUNTER_APP_PATH, ); // Create actor with multiple keys @@ -233,7 +210,7 @@ export function runManagerDriverTests( const { client } = await setupDriverTest( c, driverTestConfig, - resolve(__dirname, "../fixtures/apps/counter.ts"), + COUNTER_APP_PATH, ); // Create actor with string key @@ -250,7 +227,7 @@ export function runManagerDriverTests( const { client } = await setupDriverTest( c, driverTestConfig, - resolve(__dirname, "../fixtures/apps/counter.ts"), + COUNTER_APP_PATH, ); // Create actor with undefined key @@ -272,7 +249,7 @@ export function runManagerDriverTests( const { client } = await setupDriverTest( c, driverTestConfig, - resolve(__dirname, "../fixtures/apps/counter.ts"), + COUNTER_APP_PATH, ); // Create counter with keys @@ -292,7 +269,7 @@ export function runManagerDriverTests( const { client } = await setupDriverTest( c, driverTestConfig, - resolve(__dirname, "../fixtures/apps/counter.ts"), + COUNTER_APP_PATH, ); // Create a counter with no keys @@ -313,38 +290,39 @@ export function runManagerDriverTests( describe("Multiple Actor Instances", () => { // TODO: This test is flakey https://github.com/rivet-gg/actor-core/issues/873 - //test("creates multiple actor instances of the same type", async (c) => { - // const { client } = await setupDriverTest(c, - // driverTestConfig, - // resolve(__dirname, "../fixtures/apps/counter.ts"), - // ); - // - // // Create multiple instances with different IDs - // const instance1 = client.counter.getOrCreate(["multi-1"]); - // const instance2 = client.counter.getOrCreate(["multi-2"]); - // const instance3 = client.counter.getOrCreate(["multi-3"]); - // - // // Set different states - // await instance1.increment(1); - // await instance2.increment(2); - // await instance3.increment(3); - // - // // Retrieve all instances again - // const retrieved1 = client.counter.getOrCreate(["multi-1"]); - // const retrieved2 = client.counter.getOrCreate(["multi-2"]); - // const retrieved3 = client.counter.getOrCreate(["multi-3"]); - // - // // Verify separate state - // expect(await retrieved1.increment(0)).toBe(1); - // expect(await retrieved2.increment(0)).toBe(2); - // expect(await retrieved3.increment(0)).toBe(3); - //}); + test("creates multiple actor instances of the same type", async (c) => { + const { client } = await setupDriverTest( + c, + driverTestConfig, + COUNTER_APP_PATH, + ); + + // Create multiple instances with different IDs + const instance1 = client.counter.getOrCreate(["multi-1"]); + const instance2 = client.counter.getOrCreate(["multi-2"]); + const instance3 = client.counter.getOrCreate(["multi-3"]); + + // Set different states + await instance1.increment(1); + await instance2.increment(2); + await instance3.increment(3); + + // Retrieve all instances again + const retrieved1 = client.counter.getOrCreate(["multi-1"]); + const retrieved2 = client.counter.getOrCreate(["multi-2"]); + const retrieved3 = client.counter.getOrCreate(["multi-3"]); + + // Verify separate state + expect(await retrieved1.increment(0)).toBe(1); + expect(await retrieved2.increment(0)).toBe(2); + expect(await retrieved3.increment(0)).toBe(3); + }); test("handles default instance with no explicit ID", async (c) => { const { client } = await setupDriverTest( c, driverTestConfig, - resolve(__dirname, "../fixtures/apps/counter.ts"), + COUNTER_APP_PATH, ); // Get default instance (no ID specified) diff --git a/packages/misc/driver-test-suite/src/utils.ts b/packages/actor-core/src/driver-test-suite/utils.ts similarity index 78% rename from packages/misc/driver-test-suite/src/utils.ts rename to packages/actor-core/src/driver-test-suite/utils.ts index 859aa082e..7f1062268 100644 --- a/packages/misc/driver-test-suite/src/utils.ts +++ b/packages/actor-core/src/driver-test-suite/utils.ts @@ -1,7 +1,7 @@ -import type { ActorCoreApp } from "actor-core"; +import type { ActorCoreApp } from "@/mod"; import { type TestContext, vi } from "vitest"; -import { createClient, Transport, type Client } from "actor-core/client"; -import type { DriverTestConfig, DriverTestConfigWithTransport } from "./mod"; +import { createClient, type Client } from "@/client/mod"; +import type { DriverTestConfigWithTransport } from "./mod"; // Must use `TestContext` since global hooks do not work when running concurrently export async function setupDriverTest>( diff --git a/packages/actor-core/tests/driver-test-suite.test.ts b/packages/actor-core/tests/driver-test-suite.test.ts new file mode 100644 index 000000000..0eb22fd4a --- /dev/null +++ b/packages/actor-core/tests/driver-test-suite.test.ts @@ -0,0 +1,19 @@ +import { + runDriverTests, + createTestRuntime, +} from "@/driver-test-suite/mod"; +import { TestGlobalState } from "@/test/driver/global-state"; +import { TestActorDriver } from "@/test/driver/actor"; +import { TestManagerDriver } from "@/test/driver/manager"; + +runDriverTests({ + async start(appPath: string) { + return await createTestRuntime(appPath, async (app) => { + const memoryState = new TestGlobalState(); + return { + actorDriver: new TestActorDriver(memoryState), + managerDriver: new TestManagerDriver(app, memoryState), + }; + }); + }, +}); diff --git a/packages/actor-core/tsconfig.json b/packages/actor-core/tsconfig.json index e3ebd02f1..42a144203 100644 --- a/packages/actor-core/tsconfig.json +++ b/packages/actor-core/tsconfig.json @@ -3,7 +3,9 @@ "compilerOptions": { "types": ["deno", "node"], "paths": { - "@/*": ["./src/*"] + "@/*": ["./src/*"], + // Used for test fixtures + "actor-core": ["./src/mod.ts"] } }, "include": ["src/**/*", "tests/**/*"] diff --git a/packages/drivers/file-system/package.json b/packages/drivers/file-system/package.json index 7d9a753ba..46ce31df9 100644 --- a/packages/drivers/file-system/package.json +++ b/packages/drivers/file-system/package.json @@ -27,7 +27,6 @@ "actor-core": "*" }, "devDependencies": { - "@actor-core/driver-test-suite": "workspace:*", "@types/invariant": "^2", "@types/node": "^22.14.0", "actor-core": "workspace:*", diff --git a/packages/drivers/file-system/src/manager.ts b/packages/drivers/file-system/src/manager.ts index f98cd7b47..1df511ff2 100644 --- a/packages/drivers/file-system/src/manager.ts +++ b/packages/drivers/file-system/src/manager.ts @@ -7,7 +7,7 @@ import type { GetWithKeyInput, ManagerDriver, } from "actor-core/driver-helpers"; -import { ActorAlreadyExists } from "actor-core/actor/errors"; +import { ActorAlreadyExists } from "actor-core/errors"; import { logger } from "./log"; import type { FileSystemGlobalState } from "./global-state"; import type { ActorCoreApp } from "actor-core"; diff --git a/packages/drivers/file-system/tests/driver-tests.test.ts b/packages/drivers/file-system/tests/driver-tests.test.ts index 9ebe9be1b..9d95d9c01 100644 --- a/packages/drivers/file-system/tests/driver-tests.test.ts +++ b/packages/drivers/file-system/tests/driver-tests.test.ts @@ -1,7 +1,7 @@ import { runDriverTests, createTestRuntime, -} from "@actor-core/driver-test-suite"; +} from "actor-core/driver-test-suite"; import { FileSystemActorDriver, FileSystemManagerDriver, diff --git a/packages/drivers/memory/package.json b/packages/drivers/memory/package.json index a56b7ef96..bf40cc129 100644 --- a/packages/drivers/memory/package.json +++ b/packages/drivers/memory/package.json @@ -27,7 +27,6 @@ "actor-core": "*" }, "devDependencies": { - "@actor-core/driver-test-suite": "workspace:*", "actor-core": "workspace:*", "tsup": "^8.4.0", "typescript": "^5.5.2" diff --git a/packages/drivers/memory/src/manager.ts b/packages/drivers/memory/src/manager.ts index d3dc495d1..44f694619 100644 --- a/packages/drivers/memory/src/manager.ts +++ b/packages/drivers/memory/src/manager.ts @@ -6,7 +6,7 @@ import type { GetWithKeyInput, ManagerDriver, } from "actor-core/driver-helpers"; -import { ActorAlreadyExists } from "actor-core/actor/errors"; +import { ActorAlreadyExists } from "actor-core/errors"; import type { MemoryGlobalState } from "./global-state"; import * as crypto from "node:crypto"; import { ManagerInspector } from "actor-core/inspector"; diff --git a/packages/drivers/memory/tests/driver-tests.test.ts b/packages/drivers/memory/tests/driver-tests.test.ts index 894894916..6879333c3 100644 --- a/packages/drivers/memory/tests/driver-tests.test.ts +++ b/packages/drivers/memory/tests/driver-tests.test.ts @@ -1,4 +1,4 @@ -import { runDriverTests, createTestRuntime } from "@actor-core/driver-test-suite"; +import { runDriverTests, createTestRuntime } from "actor-core/driver-test-suite"; import { MemoryActorDriver, MemoryManagerDriver, diff --git a/packages/drivers/redis/package.json b/packages/drivers/redis/package.json index 492b89b93..1b38858cb 100644 --- a/packages/drivers/redis/package.json +++ b/packages/drivers/redis/package.json @@ -59,7 +59,6 @@ "actor-core": "workspace:*" }, "devDependencies": { - "@actor-core/driver-test-suite": "workspace:*", "@types/node": "^22.13.1", "actor-core": "workspace:*", "tsup": "^8.4.0", diff --git a/packages/drivers/redis/src/manager.ts b/packages/drivers/redis/src/manager.ts index d4994847b..3276ada13 100644 --- a/packages/drivers/redis/src/manager.ts +++ b/packages/drivers/redis/src/manager.ts @@ -6,7 +6,7 @@ import type { GetWithKeyInput, ManagerDriver, } from "actor-core/driver-helpers"; -import { ActorAlreadyExists } from "actor-core/actor/errors"; +import { ActorAlreadyExists } from "actor-core/errors"; import type Redis from "ioredis"; import * as crypto from "node:crypto"; import { KEYS } from "./keys"; @@ -177,4 +177,4 @@ export class RedisManagerDriver implements ManagerDriver { .replace(/\\/g, "\\\\") // Escape backslashes first .replace(/:/g, "\\:"); // Escape colons (our delimiter) } -} \ No newline at end of file +} diff --git a/packages/drivers/redis/tests/driver-tests.test.ts b/packages/drivers/redis/tests/driver-tests.test.ts index 94ee79a74..08b66a2df 100644 --- a/packages/drivers/redis/tests/driver-tests.test.ts +++ b/packages/drivers/redis/tests/driver-tests.test.ts @@ -1,7 +1,7 @@ import { runDriverTests, createTestRuntime, -} from "@actor-core/driver-test-suite"; +} from "actor-core/driver-test-suite"; import { RedisActorDriver, RedisCoordinateDriver, diff --git a/packages/misc/driver-test-suite/package.json b/packages/misc/driver-test-suite/package.json deleted file mode 100644 index 4993fb051..000000000 --- a/packages/misc/driver-test-suite/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "@actor-core/driver-test-suite", - "version": "0.8.0", - "files": [ - "src", - "dist", - "package.json" - ], - "type": "module", - "exports": { - "import": { - "types": "./dist/mod.d.ts", - "default": "./dist/mod.js" - }, - "require": { - "types": "./dist/mod.d.cts", - "default": "./dist/mod.cjs" - } - }, - "sideEffects": false, - "scripts": { - "build": "tsup src/mod.ts", - "check-types": "tsc --noEmit" - }, - "peerDependencies": { - "actor-core": "workspace:*" - }, - "devDependencies": { - "tsup": "^8.4.0", - "typescript": "^5.7.3" - }, - "dependencies": { - "@hono/node-server": "^1.14.0", - "@hono/node-ws": "^1.1.1", - "@types/node": "^22.13.1", - "actor-core": "workspace:*", - "bundle-require": "^5.1.0", - "vitest": "^3.1.1" - } -} diff --git a/packages/misc/driver-test-suite/src/log.ts b/packages/misc/driver-test-suite/src/log.ts deleted file mode 100644 index ccc558d59..000000000 --- a/packages/misc/driver-test-suite/src/log.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { getLogger } from "actor-core/log"; - -export const LOGGER_NAME = "driver-test-suite"; - -export function logger() { - return getLogger(LOGGER_NAME); -} diff --git a/packages/misc/driver-test-suite/tsconfig.json b/packages/misc/driver-test-suite/tsconfig.json deleted file mode 100644 index accb9677a..000000000 --- a/packages/misc/driver-test-suite/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "paths": { - "@/*": ["./src/*"] - } - }, - "include": ["src/**/*"] -} diff --git a/packages/misc/driver-test-suite/tsup.config.bundled_6lmockkaxzl.mjs b/packages/misc/driver-test-suite/tsup.config.bundled_6lmockkaxzl.mjs deleted file mode 100644 index 103df5517..000000000 --- a/packages/misc/driver-test-suite/tsup.config.bundled_6lmockkaxzl.mjs +++ /dev/null @@ -1,22 +0,0 @@ -// ../../../tsup.base.ts -var tsup_base_default = { - target: "node16", - platform: "node", - format: ["cjs", "esm"], - sourcemap: true, - clean: true, - dts: true, - minify: false, - // IMPORTANT: Splitting is required to fix a bug with ESM (https://github.com/egoist/tsup/issues/992#issuecomment-1763540165) - splitting: true, - skipNodeModulesBundle: true, - publicDir: true -}; - -// tsup.config.ts -import { defineConfig } from "tsup"; -var tsup_config_default = defineConfig(tsup_base_default); -export { - tsup_config_default as default -}; -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vdHN1cC5iYXNlLnRzIiwgInRzdXAuY29uZmlnLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX2luamVjdGVkX2ZpbGVuYW1lX18gPSBcIi9Vc2Vycy9uYXRoYW4vcml2ZXQvYWN0b3ItY29yZS90c3VwLmJhc2UudHNcIjtjb25zdCBfX2luamVjdGVkX2Rpcm5hbWVfXyA9IFwiL1VzZXJzL25hdGhhbi9yaXZldC9hY3Rvci1jb3JlXCI7Y29uc3QgX19pbmplY3RlZF9pbXBvcnRfbWV0YV91cmxfXyA9IFwiZmlsZTovLy9Vc2Vycy9uYXRoYW4vcml2ZXQvYWN0b3ItY29yZS90c3VwLmJhc2UudHNcIjtpbXBvcnQgdHlwZSB7IE9wdGlvbnMgfSBmcm9tIFwidHN1cFwiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdHRhcmdldDogXCJub2RlMTZcIixcblx0cGxhdGZvcm06IFwibm9kZVwiLFxuXHRmb3JtYXQ6IFtcImNqc1wiLCBcImVzbVwiXSxcblx0c291cmNlbWFwOiB0cnVlLFxuXHRjbGVhbjogdHJ1ZSxcblx0ZHRzOiB0cnVlLFxuXHRtaW5pZnk6IGZhbHNlLFxuXHQvLyBJTVBPUlRBTlQ6IFNwbGl0dGluZyBpcyByZXF1aXJlZCB0byBmaXggYSBidWcgd2l0aCBFU00gKGh0dHBzOi8vZ2l0aHViLmNvbS9lZ29pc3QvdHN1cC9pc3N1ZXMvOTkyI2lzc3VlY29tbWVudC0xNzYzNTQwMTY1KVxuXHRzcGxpdHRpbmc6IHRydWUsXG5cdHNraXBOb2RlTW9kdWxlc0J1bmRsZTogdHJ1ZSxcblx0cHVibGljRGlyOiB0cnVlLFxufSBzYXRpc2ZpZXMgT3B0aW9ucztcbiIsICJjb25zdCBfX2luamVjdGVkX2ZpbGVuYW1lX18gPSBcIi9Vc2Vycy9uYXRoYW4vcml2ZXQvYWN0b3ItY29yZS9wYWNrYWdlcy9kcml2ZXJzL3JlZGlzL3RzdXAuY29uZmlnLnRzXCI7Y29uc3QgX19pbmplY3RlZF9kaXJuYW1lX18gPSBcIi9Vc2Vycy9uYXRoYW4vcml2ZXQvYWN0b3ItY29yZS9wYWNrYWdlcy9kcml2ZXJzL3JlZGlzXCI7Y29uc3QgX19pbmplY3RlZF9pbXBvcnRfbWV0YV91cmxfXyA9IFwiZmlsZTovLy9Vc2Vycy9uYXRoYW4vcml2ZXQvYWN0b3ItY29yZS9wYWNrYWdlcy9kcml2ZXJzL3JlZGlzL3RzdXAuY29uZmlnLnRzXCI7aW1wb3J0IGRlZmF1bHRDb25maWcgZnJvbSBcIi4uLy4uLy4uL3RzdXAuYmFzZS50c1wiO1xuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcInRzdXBcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKGRlZmF1bHRDb25maWcpO1xuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUVBLElBQU8sb0JBQVE7QUFBQSxFQUNkLFFBQVE7QUFBQSxFQUNSLFVBQVU7QUFBQSxFQUNWLFFBQVEsQ0FBQyxPQUFPLEtBQUs7QUFBQSxFQUNyQixXQUFXO0FBQUEsRUFDWCxPQUFPO0FBQUEsRUFDUCxLQUFLO0FBQUEsRUFDTCxRQUFRO0FBQUE7QUFBQSxFQUVSLFdBQVc7QUFBQSxFQUNYLHVCQUF1QjtBQUFBLEVBQ3ZCLFdBQVc7QUFDWjs7O0FDYkEsU0FBUyxvQkFBb0I7QUFFN0IsSUFBTyxzQkFBUSxhQUFhLGlCQUFhOyIsCiAgIm5hbWVzIjogW10KfQo= diff --git a/packages/misc/driver-test-suite/tsup.config.ts b/packages/misc/driver-test-suite/tsup.config.ts deleted file mode 100644 index 677cffb7b..000000000 --- a/packages/misc/driver-test-suite/tsup.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -import defaultConfig from "../../../tsup.base.ts"; -import { defineConfig } from "tsup"; - -export default defineConfig(defaultConfig); diff --git a/packages/misc/driver-test-suite/turbo.json b/packages/misc/driver-test-suite/turbo.json deleted file mode 100644 index 95960709b..000000000 --- a/packages/misc/driver-test-suite/turbo.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "$schema": "https://turbo.build/schema.json", - "extends": ["//"] -} diff --git a/packages/misc/driver-test-suite/vitest.config.ts b/packages/misc/driver-test-suite/vitest.config.ts deleted file mode 100644 index 87909ac20..000000000 --- a/packages/misc/driver-test-suite/vitest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -import defaultConfig from "../../../vitest.base.ts"; -import { defineConfig } from "vitest/config"; -import { resolve } from "path"; - -export default defineConfig({ - ...defaultConfig, - test: { - ...defaultConfig.test, - maxConcurrency: 1, - }, - resolve: { - alias: { - "@": resolve(__dirname, "./src"), - }, - }, -}); diff --git a/packages/platforms/cloudflare-workers/package.json b/packages/platforms/cloudflare-workers/package.json index 28ae3b59b..0b2b8b507 100644 --- a/packages/platforms/cloudflare-workers/package.json +++ b/packages/platforms/cloudflare-workers/package.json @@ -30,7 +30,6 @@ "actor-core": "*" }, "devDependencies": { - "@actor-core/driver-test-suite": "workspace:*", "@cloudflare/workers-types": "^4.20250129.0", "@types/invariant": "^2", "actor-core": "workspace:*", diff --git a/packages/platforms/cloudflare-workers/src/manager-driver.ts b/packages/platforms/cloudflare-workers/src/manager-driver.ts index 07552097a..afc2ed3db 100644 --- a/packages/platforms/cloudflare-workers/src/manager-driver.ts +++ b/packages/platforms/cloudflare-workers/src/manager-driver.ts @@ -5,7 +5,7 @@ import type { CreateActorInput, GetActorOutput, } from "actor-core/driver-helpers"; -import { ActorAlreadyExists } from "actor-core/actor/errors"; +import { ActorAlreadyExists } from "actor-core/errors"; import { Bindings } from "./mod"; import { logger } from "./log"; import { serializeNameAndKey, serializeKey } from "./util"; @@ -173,4 +173,4 @@ export class CloudflareWorkersManagerDriver implements ManagerDriver { meta: durableId, }; } -} \ No newline at end of file +} diff --git a/packages/platforms/cloudflare-workers/tests/driver-tests.test.ts b/packages/platforms/cloudflare-workers/tests/driver-tests.test.ts index 33b1e452e..1341b44c3 100644 --- a/packages/platforms/cloudflare-workers/tests/driver-tests.test.ts +++ b/packages/platforms/cloudflare-workers/tests/driver-tests.test.ts @@ -1,4 +1,4 @@ -import { runDriverTests } from "@actor-core/driver-test-suite"; +import { runDriverTests } from "actor-core/driver-test-suite"; import fs from "node:fs/promises"; import path from "node:path"; import os from "node:os"; diff --git a/packages/platforms/rivet/package.json b/packages/platforms/rivet/package.json index a34d561ff..8ea0111f5 100644 --- a/packages/platforms/rivet/package.json +++ b/packages/platforms/rivet/package.json @@ -30,7 +30,6 @@ "actor-core": "*" }, "devDependencies": { - "@actor-core/driver-test-suite": "workspace:*", "@rivet-gg/actor-core": "^25.1.0", "@types/deno": "^2.0.0", "@types/invariant": "^2", diff --git a/packages/platforms/rivet/src/manager-driver.ts b/packages/platforms/rivet/src/manager-driver.ts index d3e5560c7..21dffe607 100644 --- a/packages/platforms/rivet/src/manager-driver.ts +++ b/packages/platforms/rivet/src/manager-driver.ts @@ -1,5 +1,5 @@ import { assertUnreachable } from "actor-core/utils"; -import { ActorAlreadyExists } from "actor-core/actor/errors"; +import { ActorAlreadyExists } from "actor-core/errors"; import type { ManagerDriver, GetForIdInput, diff --git a/packages/platforms/rivet/tests/driver-tests.test.ts b/packages/platforms/rivet/tests/driver-tests.test.ts index f35aef393..46d925ca4 100644 --- a/packages/platforms/rivet/tests/driver-tests.test.ts +++ b/packages/platforms/rivet/tests/driver-tests.test.ts @@ -1,4 +1,4 @@ -import { runDriverTests } from "@actor-core/driver-test-suite"; +import { runDriverTests } from "actor-core/driver-test-suite"; import { deployToRivet, RIVET_CLIENT_CONFIG } from "./rivet-deploy"; import { type RivetClientConfig, rivetRequest } from "../src/rivet_client"; import invariant from "invariant";