Skip to content
This repository was archived by the owner on Apr 19, 2023. It is now read-only.

Commit c5b89e2

Browse files
✨ Add support for redirects
1 parent f0bda49 commit c5b89e2

File tree

5 files changed

+44
-4
lines changed

5 files changed

+44
-4
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@
6666
"prettier": "^1.18.2",
6767
"ts-jest": "^24.0.2",
6868
"typedoc": "^0.14.2",
69-
"typescript": "^3.5.1"
69+
"typescript": "^3.5.1",
70+
"yaml": "^1.6.0"
7071
},
7172
"dependencies": {
7273
"@hapi/joi": "^15.0.3",

setup/controllers.js

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
const fs = require("fs-extra");
22
const path = require("path");
3+
const yaml = require("yaml");
34

45
const SRC = path.join(__dirname, "..", "src");
56
let server = fs.readFileSync(path.join(SRC, "server.ts")).toString();
67

7-
// Find controllers
88
const controllers = fs.readdirSync(path.join(SRC, "controllers"));
99
const exportName = [];
1010
controllers.forEach(controller => {
@@ -24,9 +24,26 @@ const importCode = `${exportName
2424
const insertCode = `
2525
super.addControllers([${exportName.map(e => `new ${e}()`).join(", ")}]);
2626
`;
27-
2827
server = importCode + server.replace("// staart:setup/controllers", insertCode);
28+
console.log("✅ Generated paths");
29+
30+
const redirects = yaml.parse(
31+
fs.readFileSync(path.join(SRC, "redirects.yml")).toString()
32+
);
33+
34+
const redirectCode = `
35+
${redirects
36+
.map(
37+
rule => `
38+
this.app.get("${rule.split(" ")[0]}", (req, res) => res.redirect("${
39+
rule.split(" ")[1]
40+
}"));
41+
`
42+
)
43+
.join("")}
44+
`;
45+
server = server.replace("// staart:setup/redirects", redirectCode);
46+
console.log("✅ Generated redirects");
2947

3048
fs.writeFileSync(path.join(SRC, "app.ts"), server);
31-
console.log("Paths generated successfully!");
3249
process.exit(0);

src/redirects.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
- / https://oswaldlabs.com
2+
- /deep-redirect /
3+
- /redirect /auth/google/link

src/server.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export class Staart extends Server {
2727
super();
2828
this.setupHandlers();
2929
this.setupControllers();
30+
this.setupRedirects();
3031
this.app.use(errorHandler);
3132
}
3233

@@ -46,6 +47,10 @@ export class Staart extends Server {
4647
// staart:setup/controllers
4748
}
4849

50+
private setupRedirects() {
51+
// staart:setup/redirects
52+
}
53+
4954
public start(port: number): void {
5055
this.app.listen(port, () => console.log(`Listening on ${port}!`));
5156
}

yarn.lock

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -713,6 +713,13 @@
713713
"@babel/helper-plugin-utils" "^7.0.0"
714714
"@babel/plugin-transform-typescript" "^7.3.2"
715715

716+
"@babel/runtime@^7.4.5":
717+
version "7.4.5"
718+
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12"
719+
integrity sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==
720+
dependencies:
721+
regenerator-runtime "^0.13.2"
722+
716723
"@babel/template@^7.0.0", "@babel/template@^7.1.0", "@babel/template@^7.4.0":
717724
version "7.4.0"
718725
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.0.tgz#12474e9c077bae585c5d835a95c0b0b790c25c8b"
@@ -6611,6 +6618,13 @@ yallist@^3.0.0, yallist@^3.0.2:
66116618
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
66126619
integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
66136620

6621+
yaml@^1.6.0:
6622+
version "1.6.0"
6623+
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.6.0.tgz#d8a985cfb26086dd73f91c637f6e6bc909fddd3c"
6624+
integrity sha512-iZfse3lwrJRoSlfs/9KQ9iIXxs9++RvBFVzAqbbBiFT+giYtyanevreF9r61ZTbGMgWQBxAua3FzJiniiJXWWw==
6625+
dependencies:
6626+
"@babel/runtime" "^7.4.5"
6627+
66146628
yargs-parser@10.x:
66156629
version "10.1.0"
66166630
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8"

0 commit comments

Comments
 (0)