From c87e57f4984417b8815d370fbb3294227646427f Mon Sep 17 00:00:00 2001 From: Doug Mealing Date: Sat, 6 Jun 2026 13:29:31 -0400 Subject: [PATCH] fix(cli): scaffold outDir defaults to src/generated, not ./src/db MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `meta init` scaffolded `outDir: "./src/db"` alongside `dbImport: "../db"`, which puts generated files in src/db/ right next to the src/db.ts the user must create for their DB instance — same path stem, two different things — and the generated routes' `import { db } from "../db"` can resolve to the generated barrel (src/db/index.ts) instead of the user's src/db.ts. Default to `src/generated` (matches docs/ports/typescript.md) so generated code and the user's db module stay clearly separate. Found while building the five-minute quickstart demo against published 0.9.0. Adds an init test asserting the scaffolded outDir. Co-Authored-By: Claude Opus 4.8 (1M context) --- server/typescript/packages/cli/src/commands/init.ts | 2 +- server/typescript/packages/cli/test/init.test.ts | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/server/typescript/packages/cli/src/commands/init.ts b/server/typescript/packages/cli/src/commands/init.ts index 5fc977683..be08f2d13 100644 --- a/server/typescript/packages/cli/src/commands/init.ts +++ b/server/typescript/packages/cli/src/commands/init.ts @@ -38,7 +38,7 @@ import { } from "@metaobjectsdev/codegen-ts/generators"; export default defineConfig({ - outDir: "./src/db", + outDir: "src/generated", extStyle: "none", dbImport: "../db", dialect: "${dialect}", diff --git a/server/typescript/packages/cli/test/init.test.ts b/server/typescript/packages/cli/test/init.test.ts index b9cbb2821..07e60e38f 100644 --- a/server/typescript/packages/cli/test/init.test.ts +++ b/server/typescript/packages/cli/test/init.test.ts @@ -214,4 +214,14 @@ describe("init --d1", () => { const configTs = readFileSync(join(cwd, "metaobjects.config.ts"), "utf8"); expect(configTs).toContain('dialect: "sqlite"'); }); + + test("scaffolds metaobjects.config.ts with outDir = 'src/generated' (not the ambiguous src/db)", async () => { + const code = await initCommand([], cwd); + expect(code).toBe(0); + const configTs = readFileSync(join(cwd, "metaobjects.config.ts"), "utf8"); + expect(configTs).toContain('outDir: "src/generated"'); + // "./src/db" as outDir collides with the user-created src/db.ts that the + // generated routes import via dbImport "../db" — keep them distinct. + expect(configTs).not.toContain('"./src/db"'); + }); });