diff options
Move to Server Side Render with expressjs
Backend Rewritten in typescript
Signed-off-by: Marc Pervaz Boocha <mboocha@sudomsg.xyz>
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
new file: .editorconfig
modified: .gitignore
new file: Containerfile
renamed: favicon/icon.svg -> assets/favicon.svg
modified: assets/index.css
deleted: assets/index.js
deleted: assets/mandle.png
deleted: assets/sw.js
new file: assets/syntax.css
modified: deploy
deleted: eleventy.config.js
deleted: favicon/192.png
deleted: favicon/512.png
deleted: favicon/icon.ico
deleted: license
modified: package-lock.json
modified: package.json
deleted: src/_data/env.js
deleted: src/_data/metadata.js
deleted: src/_includes/base.njk
deleted: src/_includes/page.njk
deleted: src/_includes/post.njk
deleted: src/about.njk
deleted: src/blog.njk
new file: src/client/index.ts
deleted: src/gen/atom.njk
deleted: src/gen/error.njk
deleted: src/gen/feedjson.11ty.js
deleted: src/gen/gen.11tydata.js
deleted: src/gen/manifest.11ty.js
deleted: src/gen/metadata.11ty.js
deleted: src/gen/robot.njk
deleted: src/gen/sitemap.njk
deleted: src/index.njk
deleted: src/post/post.11tydata.js
new file: src/server/app.ts
new file: src/server/build.ts
new file: src/server/content/about.ts
new file: src/server/content/blog.ts
new file: src/server/content/feed.ts
new file: src/server/content/index.ts
new file: src/server/content/robots.ts
new file: src/server/content/sitemap.ts
new file: src/server/content/webmanifest.ts
new file: src/server/errHanadler.ts
new file: src/server/img.ts
new file: src/server/metadata.ts
new file: src/server/router.ts
new file: src/server/server.ts
new file: src/server/template/Base.ts
new file: src/server/template/Page.ts
new file: src/server/template/Post.ts
new file: src/server/template/atom.ts
new file: src/server/template/header.ts
new file: src/server/template/html.ts
new file: src/server/template/sitemap.ts
new file: src/server/template/syntax.ts
new file: src/server/template/table.ts
new file: src/server/template/vdom.ts
new file: src/server/template/xml.ts
new file: src/server/utils/createUrl.ts
new file: src/server/utils/curl.ts
new file: src/server/utils/isDefined.ts
new file: src/server/utils/isDevel.ts
new file: src/server/utils/relDir.ts
new file: src/server/utils/relUrl.ts
new file: src/server/utils/schema.ts
new file: src/server/utils/setStingRoute.ts
new file: src/server/utils/strHandler.ts
new file: src/worker/sw.ts
new file: src/worker/tsconfig.json
new file: tsconfig.json
Diffstat (limited to 'src/server/utils')
-rw-r--r-- | src/server/utils/createUrl.ts | 5 | ||||
-rw-r--r-- | src/server/utils/curl.ts | 7 | ||||
-rw-r--r-- | src/server/utils/isDefined.ts | 3 | ||||
-rw-r--r-- | src/server/utils/isDevel.ts | 5 | ||||
-rw-r--r-- | src/server/utils/relDir.ts | 9 | ||||
-rw-r--r-- | src/server/utils/relUrl.ts | 5 | ||||
-rw-r--r-- | src/server/utils/schema.ts | 6 | ||||
-rw-r--r-- | src/server/utils/setStingRoute.ts | 6 | ||||
-rw-r--r-- | src/server/utils/strHandler.ts | 8 |
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)]))); + }; +} |