aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bun.js/api/filesystem_router.zig3
-rw-r--r--test/bun.js/filesystem_router.test.ts16
2 files changed, 18 insertions, 1 deletions
diff --git a/src/bun.js/api/filesystem_router.zig b/src/bun.js/api/filesystem_router.zig
index f43a30d4e..c80a4ed07 100644
--- a/src/bun.js/api/filesystem_router.zig
+++ b/src/bun.js/api/filesystem_router.zig
@@ -320,7 +320,7 @@ pub const FileSystemRouter = struct {
};
var router = Router.init(vm.bundler.fs, allocator, .{
- .dir = this.router.config.dir,
+ .dir = allocator.dupe(u8, this.router.config.dir) catch unreachable,
.extensions = allocator.dupe(string, this.router.config.extensions) catch unreachable,
.asset_prefix_path = this.router.config.asset_prefix_path,
}) catch unreachable;
@@ -338,6 +338,7 @@ pub const FileSystemRouter = struct {
this.arena = arena;
@This().routesSetCached(this_value, globalThis, JSC.JSValue.zero);
this.allocator = allocator;
+ this.router = router;
return this_value;
}
diff --git a/test/bun.js/filesystem_router.test.ts b/test/bun.js/filesystem_router.test.ts
index 168543e41..a73e98c2d 100644
--- a/test/bun.js/filesystem_router.test.ts
+++ b/test/bun.js/filesystem_router.test.ts
@@ -349,6 +349,22 @@ it(".query works", () => {
}
});
+it("reload() works", () => {
+ // set up the test
+ const { dir } = make(["posts.tsx"]);
+
+ const router = new Bun.FileSystemRouter({
+ dir,
+ style: "nextjs",
+ assetPrefix: "/_next/static/",
+ origin: "https://nextjs.org",
+ });
+
+ expect(router.match("/posts").name).toBe("/posts");
+ router.reload();
+ expect(router.match("/posts").name).toBe("/posts");
+});
+
it(".query works with dynamic routes, including params", () => {
// set up the test
const { dir } = make(["posts/[id].tsx"]);