Skip to content

Commit c54f8da

Browse files
authored
Add default Text module rule for .sql files (#11738)
* Add failing fixture * Add default SQL rule to Wrangler * Add failing Vite playground test * Add default SQL rule to Vite plugin * Add changeset * Update snapshot
1 parent 2cfea12 commit c54f8da

File tree

12 files changed

+46
-9
lines changed

12 files changed

+46
-9
lines changed

.changeset/sour-plants-spend.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
"@cloudflare/vite-plugin": minor
3+
"wrangler": minor
4+
---
5+
6+
Add default `Text` module rule for `.sql` files.
7+
8+
This enables importing `.sql` files directly in Wrangler and the Cloudflare Vite plugin without extra configuration.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
SELECT * FROM users;

fixtures/additional-modules/src/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import common from "./common.cjs";
22
import dep from "./dep";
3+
import sql from "./example.sql";
34
import text from "./text.txt";
45

56
export default <ExportedHandler>{
@@ -11,6 +12,9 @@ export default <ExportedHandler>{
1112
if (url.pathname === "/text") {
1213
return new Response(text);
1314
}
15+
if (url.pathname === "/sql") {
16+
return new Response(sql);
17+
}
1418
if (url.pathname === "/common") {
1519
return new Response(common);
1620
}

fixtures/additional-modules/src/text.d.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,8 @@ declare module "*.txt" {
22
const value: string;
33
export default value;
44
}
5+
6+
declare module "*.sql" {
7+
const value: string;
8+
export default value;
9+
}

fixtures/additional-modules/test/index.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ describe("find_additional_modules dev", () => {
6969
const res = await get(worker, "/text");
7070
expect(await res.text()).toBe("test\n");
7171
});
72+
test("supports SQL modules", async () => {
73+
const res = await get(worker, "/sql");
74+
expect(await res.text()).toBe("SELECT * FROM users;\n");
75+
});
7276
test("supports dynamic imports", async () => {
7377
const res = await get(worker, "/dynamic");
7478
expect(await res.text()).toBe("dynamic");
@@ -160,6 +164,7 @@ describe("find_additional_modules deploy", () => {
160164
var dep_default = "bundled";
161165
162166
// src/index.ts
167+
import sql from "./example.sql";
163168
import text from "./text.txt";
164169
var index_default = {
165170
async fetch(request) {
@@ -170,6 +175,9 @@ describe("find_additional_modules deploy", () => {
170175
if (url.pathname === "/text") {
171176
return new Response(text);
172177
}
178+
if (url.pathname === "/sql") {
179+
return new Response(sql);
180+
}
173181
if (url.pathname === "/common") {
174182
return new Response(common);
175183
}

packages/vite-plugin-cloudflare/playground/additional-modules/__tests__/additional-modules.spec.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ test("supports Text modules with a '.txt' extension", async () => {
2222
expect(result).toBe("Example text content.\n");
2323
});
2424

25+
test("supports Text modules with a '.sql' extension", async () => {
26+
const result = await getTextResponse("/sql");
27+
expect(result).toBe("SELECT * FROM users;\n");
28+
});
29+
2530
test("supports modules with `__`s in the filename", async () => {
2631
const result = await getTextResponse("/text2");
2732
expect(result).toBe("Example text content 2");

packages/vite-plugin-cloudflare/playground/additional-modules/src/index.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import bin from "./modules/bin-example.bin";
22
import html from "./modules/html-example.html";
3+
import sql from "./modules/sql-example.sql";
34
import text2 from "./modules/text__example__2.txt";
45
import text from "./modules/text-example.txt";
56
import wasm from "./modules/wasm-example.wasm";
@@ -24,14 +25,13 @@ export default {
2425
return new Response(html, { headers: { "Content-Type": "text/html" } });
2526
}
2627
case "/text": {
27-
return new Response(text, {
28-
headers: { "Content-Type": "text/plain" },
29-
});
28+
return new Response(text);
3029
}
3130
case "/text2": {
32-
return new Response(text2, {
33-
headers: { "Content-Type": "text/plain" },
34-
});
31+
return new Response(text2);
32+
}
33+
case "/sql": {
34+
return new Response(sql);
3535
}
3636
case "/wasm": {
3737
const instance = (await WebAssembly.instantiate(wasm)) as Instance;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
SELECT * FROM users;

packages/vite-plugin-cloudflare/playground/additional-modules/src/types.d.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ declare module '*.html' {
88
export default html
99
}
1010

11+
declare module '*.sql' {
12+
const sql: string
13+
export default sql
14+
}
15+
1116
declare module '*.wasm' {
1217
const wasm: WebAssembly.Module
1318
export default wasm

packages/vite-plugin-cloudflare/src/plugins/additional-modules.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ type ModuleRules = Array<{
126126
const moduleRules: ModuleRules = [
127127
{ type: "CompiledWasm", extensions: [".wasm", ".wasm?module"] },
128128
{ type: "Data", extensions: [".bin"] },
129-
{ type: "Text", extensions: [".txt", ".html"] },
129+
{ type: "Text", extensions: [".txt", ".html", ".sql"] },
130130
];
131131

132132
function matchAdditionalModule(source: string) {

0 commit comments

Comments
 (0)