feat: deliver module database ABI by manifest
CI / verify (pull_request) Successful in 1m0s
CI / infrastructure-smoke (pull_request) Successful in 36s
CI / migration-smoke (pull_request) Successful in 1m53s
CI / image-build (pull_request) Successful in 23s
CI / deploy-smoke (same-origin) (pull_request) Successful in 50s
CI / deploy-smoke (split) (pull_request) Successful in 1m30s
CI / verify (pull_request) Successful in 1m0s
CI / infrastructure-smoke (pull_request) Successful in 36s
CI / migration-smoke (pull_request) Successful in 1m53s
CI / image-build (pull_request) Successful in 23s
CI / deploy-smoke (same-origin) (pull_request) Successful in 50s
CI / deploy-smoke (split) (pull_request) Successful in 1m30s
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import { describe, expect, expectTypeOf, it, vi } from "vitest";
|
||||
import {
|
||||
EMPTY_MODULE_CONFIGURATION,
|
||||
defineModuleRuntime,
|
||||
EMPTY_MODULE_CONFIGURATION,
|
||||
isModuleHttpMethod,
|
||||
MODULE_HTTP_METHODS,
|
||||
type ModuleHttpRouteRegistrar,
|
||||
@@ -9,6 +9,42 @@ import {
|
||||
} from "../src/index.js";
|
||||
|
||||
describe("defineModuleRuntime", () => {
|
||||
it("types each database mode without exposing a legacy-or-ABI union", () => {
|
||||
defineModuleRuntime({
|
||||
database: { abi: 1 },
|
||||
id: "example",
|
||||
version: "0.1.0",
|
||||
start({ services }) {
|
||||
expectTypeOf(services.database.query).toBeFunction();
|
||||
expectTypeOf(services.database.abiVersion).toEqualTypeOf<1>();
|
||||
// @ts-expect-error ABI-v1 modules never receive the legacy Drizzle facade.
|
||||
services.database.select();
|
||||
},
|
||||
register({ http }) {
|
||||
http.route({
|
||||
handler: (_request, { services }) => {
|
||||
expectTypeOf(services.database.abiVersion).toEqualTypeOf<1>();
|
||||
return new Response();
|
||||
},
|
||||
maxBodyBytes: 0,
|
||||
method: "GET",
|
||||
path: "/",
|
||||
permission: "example.read",
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
defineModuleRuntime({
|
||||
id: "legacy",
|
||||
version: "0.1.0",
|
||||
start({ services }) {
|
||||
expectTypeOf(services.database.select).toBeFunction();
|
||||
// @ts-expect-error Legacy modules do not receive the ABI executor.
|
||||
services.database.abiVersion;
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it("defines a frozen server runtime without duplicating the static manifest", async () => {
|
||||
const start = vi.fn();
|
||||
const runtime = defineModuleRuntime({
|
||||
|
||||
Reference in New Issue
Block a user