This release is 23 versions behind 1.4.9 — the latest version of @fedify/fedify. Jump to latest
Built and signed on GitHub ActionsBuilt and signed on GitHub Actions
Built and signed on GitHub Actions
An ActivityPub/fediverse server framework
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475import { assertEquals, assertThrows } from "jsr:@std/assert@^0.226.0"; import { test } from "../testing/mod.ts"; import { Router, RouterError, type RouterOptions } from "./router.ts"; function setUp(options: RouterOptions = {}): Router { const router = new Router(options); router.add("/users/{name}", "user"); router.add( "/users/{name}/posts/{postId}" + (options.trailingSlashInsensitive ? "/" : ""), "post", ); return router; } test("Router.add()", () => { const router = new Router(); assertEquals(router.add("/users", "users"), new Set()); assertEquals(router.add("/users/{name}", "user"), new Set(["name"])); assertEquals( router.add("/users/{name}/posts/{postId}", "post"), new Set([ "name", "postId", ]), ); assertThrows(() => router.add("foo", "name"), RouterError); }); test("Router.route()", () => { let router = setUp(); assertEquals(router.route("/users/alice"), { name: "user", template: "/users/{name}", values: { name: "alice" }, }); assertEquals(router.route("/users/bob/"), null); assertEquals(router.route("/users/alice/posts/123"), { name: "post", template: "/users/{name}/posts/{postId}", values: { name: "alice", postId: "123" }, }); assertEquals(router.route("/users/bob/posts/456/"), null); router = setUp({ trailingSlashInsensitive: true }); assertEquals(router.route("/users/alice"), { name: "user", template: "/users/{name}", values: { name: "alice" }, }); assertEquals(router.route("/users/bob/"), { name: "user", template: "/users/{name}", values: { name: "bob" }, }); assertEquals(router.route("/users/alice/posts/123"), { name: "post", template: "/users/{name}/posts/{postId}/", values: { name: "alice", postId: "123" }, }); assertEquals(router.route("/users/bob/posts/456/"), { name: "post", template: "/users/{name}/posts/{postId}/", values: { name: "bob", postId: "456" }, }); }); test("Router.build()", () => { const router = setUp(); assertEquals(router.build("user", { name: "alice" }), "/users/alice"); assertEquals( router.build("post", { name: "alice", postId: "123" }), "/users/alice/posts/123", ); });