feat: transition module packages to database ABI v1
CI / verify (pull_request) Successful in 1m1s
CI / infrastructure-smoke (pull_request) Successful in 36s
CI / migration-smoke (pull_request) Successful in 1m54s
CI / image-build (pull_request) Successful in 31s
CI / deploy-smoke (same-origin) (pull_request) Successful in 52s
CI / deploy-smoke (split) (pull_request) Successful in 1m32s
CI / verify (pull_request) Successful in 1m1s
CI / infrastructure-smoke (pull_request) Successful in 36s
CI / migration-smoke (pull_request) Successful in 1m54s
CI / image-build (pull_request) Successful in 31s
CI / deploy-smoke (same-origin) (pull_request) Successful in 52s
CI / deploy-smoke (split) (pull_request) Successful in 1m32s
This commit is contained in:
@@ -3,7 +3,7 @@ import { readFile } from "node:fs/promises";
|
||||
import { isBuiltin } from "node:module";
|
||||
import path from "node:path";
|
||||
import { afterEach, describe, expect, it } from "vitest";
|
||||
import { type ModulePackErrorCode, ModulePackError, packModule } from "../src/index.js";
|
||||
import { ModulePackError, type ModulePackErrorCode, packModule } from "../src/index.js";
|
||||
import {
|
||||
cleanupFixtures,
|
||||
type FixtureModuleOptions,
|
||||
@@ -181,11 +181,12 @@ describe("packModule: a self-contained backend", () => {
|
||||
}
|
||||
});
|
||||
|
||||
it("bundles the module-side Drizzle adapter with the module's ORM runtime", async () => {
|
||||
it("bundles ABI-v1 Drizzle as a module detail without transitional runtime metadata", async () => {
|
||||
const { archive } = await pack({
|
||||
databaseAbi: 1,
|
||||
serverSource: `import { moduleDrizzle } from "@ekklesia/module-database/drizzle";
|
||||
export const database = (executor) => moduleDrizzle(executor);
|
||||
export default { id: "example", version: "0.1.0", register() {} };
|
||||
export default { database: { abi: 1 }, id: "example", version: "0.1.0", register() {} };
|
||||
`,
|
||||
withModuleDatabase: true,
|
||||
});
|
||||
@@ -194,7 +195,7 @@ export default { id: "example", version: "0.1.0", register() {} };
|
||||
expect(metadata.incorporates).toMatchObject({
|
||||
"@ekklesia/module-database": expect.any(String),
|
||||
});
|
||||
expect(metadata.transitional).toEqual({ databaseRuntime: { "drizzle-orm": "0.45.2" } });
|
||||
expect(metadata.transitional).toBeUndefined();
|
||||
for (const [file, data] of files) {
|
||||
if (!file.endsWith(".js")) {
|
||||
continue;
|
||||
@@ -213,6 +214,14 @@ export default { id: "example", version: "0.1.0", register() {} };
|
||||
}
|
||||
});
|
||||
|
||||
it("keeps legacy-v8 Drizzle runtime metadata unchanged", async () => {
|
||||
const { archive } = await pack({ withSchema: true });
|
||||
const metadata = JSON.parse(
|
||||
fileEntries(archive).get("example/ekklesia.package.json")?.toString("utf8") ?? "",
|
||||
);
|
||||
expect(metadata.transitional).toEqual({ databaseRuntime: { "drizzle-orm": "0.45.2" } });
|
||||
});
|
||||
|
||||
it("refuses a dependency the bundle cannot resolve rather than leaving it external", async () => {
|
||||
await packRejection(
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user