aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bun.js/module_loader.zig14
-rw-r--r--test/js/bun/plugin/plugins.test.ts53
2 files changed, 61 insertions, 6 deletions
diff --git a/src/bun.js/module_loader.zig b/src/bun.js/module_loader.zig
index b5d2bdcc7..7543d5b80 100644
--- a/src/bun.js/module_loader.zig
+++ b/src/bun.js/module_loader.zig
@@ -1525,12 +1525,14 @@ pub const ModuleLoader = struct {
var slice = slice_;
if (slice.len == 0) return slice;
var was_http = false;
- if (strings.hasPrefixComptime(slice, "https://")) {
- slice = slice["https://".len..];
- was_http = true;
- } else if (strings.hasPrefixComptime(slice, "http://")) {
- slice = slice["http://".len..];
- was_http = true;
+ if (jsc_vm.bundler.options.serve) {
+ if (strings.hasPrefixComptime(slice, "https://")) {
+ slice = slice["https://".len..];
+ was_http = true;
+ } else if (strings.hasPrefixComptime(slice, "http://")) {
+ slice = slice["http://".len..];
+ was_http = true;
+ }
}
if (strings.hasPrefix(slice, jsc_vm.origin.host)) {
diff --git a/test/js/bun/plugin/plugins.test.ts b/test/js/bun/plugin/plugins.test.ts
index 778eca7d0..f754ffbb3 100644
--- a/test/js/bun/plugin/plugins.test.ts
+++ b/test/js/bun/plugin/plugins.test.ts
@@ -14,6 +14,26 @@ declare global {
}
plugin({
+ name: "url text file loader",
+ setup(builder) {
+ builder.onResolve({ namespace: "http", filter: /.*/ }, ({ path }) => {
+ return {
+ path,
+ namespace: "url",
+ };
+ });
+
+ builder.onLoad({ filter: /.*/, namespace: "url" }, async ({ path, namespace }) => {
+ const res = await fetch("http://" + path);
+ return {
+ exports: { default: await res.text() },
+ loader: "object",
+ };
+ });
+ },
+});
+
+plugin({
name: "boop beep beep",
setup(builder) {
builder.onResolve({ filter: /boop/, namespace: "beep" }, () => ({
@@ -313,4 +333,37 @@ describe("errors", () => {
throw -1;
}).toThrow('Cannot find package "');
});
+
+ it("can work with http urls", async () => {
+ const result = `The Mysterious Affair at Styles
+ The Secret Adversary
+ The Murder on the Links
+ The Man in the Brown Suit
+ The Secret of Chimneys
+ The Murder of Roger Ackroyd
+ The Big Four
+ The Mystery of the Blue Train
+ The Seven Dials Mystery
+ The Murder at the Vicarage
+ Giant's Bread
+ The Floating Admiral
+ The Sittaford Mystery
+ Peril at End House
+ Lord Edgware Dies
+ Murder on the Orient Express
+ Unfinished Portrait
+ Why Didn't They Ask Evans?
+ Three Act Tragedy
+ Death in the Clouds`;
+
+ const server = Bun.serve({
+ port: 0,
+ fetch(req, server) {
+ server.stop();
+ return new Response(result);
+ },
+ });
+ const { default: text } = await import(`http://${server.hostname}:${server.port}/hey.txt`);
+ expect(text).toBe(result);
+ });
});