summaryrefslogtreecommitdiffstats
path: root/src/server/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/utils')
-rw-r--r--src/server/utils/createUrl.ts5
-rw-r--r--src/server/utils/curl.ts7
-rw-r--r--src/server/utils/isDefined.ts3
-rw-r--r--src/server/utils/isDevel.ts5
-rw-r--r--src/server/utils/relDir.ts9
-rw-r--r--src/server/utils/relUrl.ts5
-rw-r--r--src/server/utils/schema.ts6
-rw-r--r--src/server/utils/setStingRoute.ts6
-rw-r--r--src/server/utils/strHandler.ts8
9 files changed, 54 insertions, 0 deletions
diff --git a/src/server/utils/createUrl.ts b/src/server/utils/createUrl.ts
new file mode 100644
index 0000000..2a05665
--- /dev/null
+++ b/src/server/utils/createUrl.ts
@@ -0,0 +1,5 @@
+import { URL } from "node:url";
+
+export default function createUrl(url: string | URL, base?: string | URL | undefined): URL {
+ return url instanceof URL ? url : new URL(url, base);
+}
diff --git a/src/server/utils/curl.ts b/src/server/utils/curl.ts
new file mode 100644
index 0000000..e422493
--- /dev/null
+++ b/src/server/utils/curl.ts
@@ -0,0 +1,7 @@
+import type { URL } from "node:url";
+import metadata from "../metadata.js";
+import createUrl from "./createUrl.js";
+
+export default function curl(path: string | URL) {
+ return createUrl(path, metadata.url);
+}
diff --git a/src/server/utils/isDefined.ts b/src/server/utils/isDefined.ts
new file mode 100644
index 0000000..fe42bdf
--- /dev/null
+++ b/src/server/utils/isDefined.ts
@@ -0,0 +1,3 @@
+export default function isDefined<T>(val: T | undefined | null): val is T {
+ return val !== undefined && val !== null;
+}
diff --git a/src/server/utils/isDevel.ts b/src/server/utils/isDevel.ts
new file mode 100644
index 0000000..6d03f4d
--- /dev/null
+++ b/src/server/utils/isDevel.ts
@@ -0,0 +1,5 @@
+import type express from "express";
+
+export default function isDevel(app: express.Express) {
+ return app.get("env") === "development";
+}
diff --git a/src/server/utils/relDir.ts b/src/server/utils/relDir.ts
new file mode 100644
index 0000000..1e3cb3c
--- /dev/null
+++ b/src/server/utils/relDir.ts
@@ -0,0 +1,9 @@
+import { dirname, join } from "node:path";
+import { URL, fileURLToPath } from "node:url";
+
+export default function relDir(url: URL | string) {
+ const base = dirname(fileURLToPath(url));
+ return function (dirname: string) {
+ return join(base, dirname);
+ };
+}
diff --git a/src/server/utils/relUrl.ts b/src/server/utils/relUrl.ts
new file mode 100644
index 0000000..5345ebf
--- /dev/null
+++ b/src/server/utils/relUrl.ts
@@ -0,0 +1,5 @@
+import type { URL } from "node:url";
+
+export default function relUrl(url: URL) {
+ return url.pathname + url.search + url.hash;
+}
diff --git a/src/server/utils/schema.ts b/src/server/utils/schema.ts
new file mode 100644
index 0000000..989d163
--- /dev/null
+++ b/src/server/utils/schema.ts
@@ -0,0 +1,6 @@
+import type { URL } from "node:url";
+import createUrl from "./createUrl.js";
+
+export default function schema(type: string | URL): URL {
+ return createUrl(type, "http://schema.org/");
+}
diff --git a/src/server/utils/setStingRoute.ts b/src/server/utils/setStingRoute.ts
new file mode 100644
index 0000000..e0fbd94
--- /dev/null
+++ b/src/server/utils/setStingRoute.ts
@@ -0,0 +1,6 @@
+import router from "../router.js";
+import strHandler from "./strHandler.js";
+
+export default function setStingRoute<T>(url: string, type: string | string[], content: () => Promise<T>): void {
+ router.get(url, strHandler(type, content));
+}
diff --git a/src/server/utils/strHandler.ts b/src/server/utils/strHandler.ts
new file mode 100644
index 0000000..5be21e0
--- /dev/null
+++ b/src/server/utils/strHandler.ts
@@ -0,0 +1,8 @@
+import type express from "express";
+
+export default function strHandler<T>(type: string | string[], content: () => Promise<T>) {
+ return async (_req: express.Request, res: express.Response) => {
+ const data = await content();
+ res.format(Object.fromEntries((Array.isArray(type) ? type : [type]).map(t => [t, () => res.send(data)])));
+ };
+}