diff --git a/.changeset/two-vans-drive.md b/.changeset/two-vans-drive.md new file mode 100644 index 000000000..99c2b4e35 --- /dev/null +++ b/.changeset/two-vans-drive.md @@ -0,0 +1,5 @@ +--- +'houdini': patch +--- + +fix: config.include now checks against files ignoring QueryString diff --git a/packages/houdini/src/lib/config.test.ts b/packages/houdini/src/lib/config.test.ts index 139a4ba6a..2a79ef4d2 100644 --- a/packages/houdini/src/lib/config.test.ts +++ b/packages/houdini/src/lib/config.test.ts @@ -1,5 +1,7 @@ import { describe, expect, test } from 'vitest' +import { path } from '.' +import { testConfig } from '../test' import type { PluginMeta } from './config' import { orderedPlugins, readConfigFile } from './config' @@ -79,3 +81,28 @@ test(`orderedPlugins - empty => empty`, async () => { const o = orderedPlugins([]).map((p) => p.name) expect(o).toMatchInlineSnapshot('[]') }) + +test(`Files that should be included`, async () => { + const config = testConfig() + + // defaults + expect(config.includeFile(path.join(process.cwd(), 'src/routes/page.ts'))).toBe(true) + expect(config.includeFile(path.join(process.cwd(), 'src/routes/page.js'))).toBe(true) + expect(config.includeFile(path.join(process.cwd(), 'src/routes/page.gql'))).toBe(true) + expect(config.includeFile(path.join(process.cwd(), 'src/routes/page.graphql'))).toBe(true) + + // with some "?" + expect(config.includeFile(path.join(process.cwd(), 'src/routes/page.ts?sentry'))).toBe(true) + expect(config.includeFile(path.join(process.cwd(), 'src/rou?tes/page.ts?sentry'))).toBe(true) + expect(config.includeFile(path.join(process.cwd(), 'src/page.ts?s?e?n?t?r?y'))).toBe(true) +}) + +test(`Files that should not be included`, async () => { + const config = testConfig() + + expect(config.includeFile(path.join(process.cwd(), 'src/routes/test'))).toBe(false) + expect(config.includeFile(path.join(process.cwd(), 'src/routes/test.'))).toBe(false) + expect(config.includeFile(path.join(process.cwd(), 'src/routes/test.jts'))).toBe(false) + expect(config.includeFile(path.join(process.cwd(), 'src/routes/test?'))).toBe(false) + expect(config.includeFile(path.join(process.cwd(), 'src/rou?tes/page.nop?s?e'))).toBe(false) +}) diff --git a/packages/houdini/src/lib/config.ts b/packages/houdini/src/lib/config.ts index 3d71b4715..7cddd0db0 100644 --- a/packages/houdini/src/lib/config.ts +++ b/packages/houdini/src/lib/config.ts @@ -480,6 +480,9 @@ export class Config { ignore_plugins = false, }: { root?: string; ignore_plugins?: boolean } = {} ) { + const parsed = path.parse(filepath) + filepath = `${parsed.dir}/${parsed.name}${parsed.ext.split('?')[0]}` + let included = false // plugins might define custom include logic for (const plugin of ignore_plugins ? [] : this.plugins) {