diff --git a/.changeset/pr-1426.md b/.changeset/pr-1426.md new file mode 100644 index 0000000000..cfb3c5483a --- /dev/null +++ b/.changeset/pr-1426.md @@ -0,0 +1,6 @@ + +--- +'@sanity/cli': patch +--- + +fix(dev): align dev server typegen defaults with `sanity typegen generate` \ No newline at end of file diff --git a/packages/@sanity/cli/src/server/vite/__tests__/plugin-typegen.test.ts b/packages/@sanity/cli/src/server/vite/__tests__/plugin-typegen.test.ts index 2072780114..8498050dbc 100644 --- a/packages/@sanity/cli/src/server/vite/__tests__/plugin-typegen.test.ts +++ b/packages/@sanity/cli/src/server/vite/__tests__/plugin-typegen.test.ts @@ -2,6 +2,7 @@ import path from 'node:path' import {CLITelemetryStore} from '@sanity/cli-core' import {createMockHttpServer, createMockWatcher} from '@sanity/cli-test' +import {configDefinition} from '@sanity/codegen' import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest' import {sanityTypegenPlugin} from '../plugin-typegen.js' @@ -272,7 +273,7 @@ describe('sanityTypegenPlugin', () => { }) }) - it('applies default config values', async () => { + it('applies the same default config values as `sanity typegen generate`', async () => { vi.useRealTimers() const plugin = sanityTypegenPlugin({ @@ -288,12 +289,7 @@ describe('sanityTypegenPlugin', () => { await buildEnd() expect(runTypegenGenerate).toHaveBeenCalledWith({ - config: expect.objectContaining({ - formatGeneratedCode: false, - generates: 'sanity.types.ts', - overloadClientMethods: false, - schema: 'schema.json', - }), + config: configDefinition.parse({}), workDir: TEST_PROJECT_DIR, }) }) diff --git a/packages/@sanity/cli/src/server/vite/plugin-typegen.ts b/packages/@sanity/cli/src/server/vite/plugin-typegen.ts index a06105858e..d4f0bc85ce 100644 --- a/packages/@sanity/cli/src/server/vite/plugin-typegen.ts +++ b/packages/@sanity/cli/src/server/vite/plugin-typegen.ts @@ -4,6 +4,7 @@ import path from 'node:path' import {CLITelemetryStore} from '@sanity/cli-core' import {logSymbols} from '@sanity/cli-core/ux' import { + configDefinition, type GenerationResult, runTypegenGenerate, type TypeGenConfig, @@ -18,12 +19,6 @@ import {type Plugin} from 'vite' import {toForwardSlashes} from '../../util/toForwardSlashes.js' -/** - * Default glob patterns to watch for query file changes. - * Covers common source directory naming conventions. - */ -const DEFAULT_QUERY_PATTERNS = ['./src/**/*.{ts,tsx,js,jsx}', './app/**/*.{ts,tsx,js,jsx}'] - /** Default debounce delay in milliseconds */ const DEFAULT_DEBOUNCE_MS = 1000 @@ -85,14 +80,9 @@ interface TypegenPluginOptions { export function sanityTypegenPlugin(options: TypegenPluginOptions): Plugin { const {config: inputConfig, output = console, telemetryLogger, workDir} = options - // Apply defaults to config - const config: TypeGenConfig = { - formatGeneratedCode: inputConfig.formatGeneratedCode ?? false, - generates: inputConfig.generates ?? 'sanity.types.ts', - overloadClientMethods: inputConfig.overloadClientMethods ?? false, - path: inputConfig.path ?? DEFAULT_QUERY_PATTERNS, - schema: inputConfig.schema ?? 'schema.json', - } + // Apply defaults through the same schema as `sanity typegen generate`, + // so watch mode and manual generation produce identical output + const config: TypeGenConfig = configDefinition.parse(inputConfig) // Build query patterns from config const queryPatterns = Array.isArray(config.path) ? config.path : [config.path]