@cocalc/hub
Version:
CoCalc: Backend webserver component
30 lines (25 loc) • 1.05 kB
text/typescript
/* Save other paths in # part of URL then redirect to the single page app.
That this happened is assumed, e.g., in packages/static/src/init-app-base-path.ts
This redirect is *undone* in @cocalc/frontend/client/handle-hash-url.ts
*/
import { join } from "path";
import { Router } from "express";
import basePath from "@cocalc/backend/base-path";
import { getLogger } from "@cocalc/hub/logger";
// All top level page "entry points" in the webapp must be listed here.
// Should be consistent with what is handled in @cocalc/frontend/history.ts
// and @cocalc/frontend/app/actions.ts
const ROUTES = ["admin", "projects", "settings", "notifications"];
export default function init(router: Router) {
const winston = getLogger("app-redirect");
const v: string[] = [];
for (const path of ROUTES) {
v.push(`/${path}*`);
}
router.get(v, (req, res) => {
winston.debug(req.url);
const url = new URL("http://host");
url.searchParams.set("target", req.url);
res.redirect(join(basePath, "static/app.html") + url.search);
});
}