From 6685ec3c44f1741ab44b34ba607ae8c20e670023 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Sat, 8 Oct 2022 20:13:40 +0530 Subject: [PATCH] all: remove Cloudflare Workers functionality --- .github/renovate.json | 25 +---- .github/workflows/build-test.yml | 4 +- .github/workflows/deploy-to-cloudflare.yml | 86 --------------- package.json | 25 ++--- shell.nix | 1 - webpack.config.js | 30 ------ workers-site/src/bindings.d.ts | 6 -- workers-site/src/handler.ts | 117 --------------------- workers-site/src/index.ts | 7 -- wrangler.toml | 23 ---- 10 files changed, 8 insertions(+), 316 deletions(-) delete mode 100644 .github/workflows/deploy-to-cloudflare.yml delete mode 100644 webpack.config.js delete mode 100644 workers-site/src/bindings.d.ts delete mode 100644 workers-site/src/handler.ts delete mode 100644 workers-site/src/index.ts delete mode 100644 wrangler.toml diff --git a/.github/renovate.json b/.github/renovate.json index 9e8e018..f71c1e7 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -6,26 +6,6 @@ "github>msfjarvis/shared-workflows//renovate/automerge" ], "packageRules": [ - { - "managers": [ - "github-actions" - ], - "packagePatterns": [ - "^cloudflare/wrangler-action" - ], - "enabled": false - }, - { - "managers": [ - "npm" - ], - "packagePatterns": [ - "^source-map-loader", - "^ts-loader", - "^webpack" - ], - "enabled": false - }, { "packageNames": ["gohugoio/hugo"], "extractVersion": "^v(?\\d+\\.\\d+\\.\\d+)" @@ -34,10 +14,7 @@ "regexManagers": [ { "description": "Update Hugo version in Actions workflows", - "fileMatch": [ - ".yml$", - ".toml$" - ], + "fileMatch": [".yml$", ".toml$"], "matchStrings": [ "hugo-version: '(?.*?)'", "HUGO_VERSION = \"(?.*?)\"" diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index f03a46c..bbedea5 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -1,4 +1,4 @@ -name: Build worker and website +name: Build website on: push: @@ -27,5 +27,3 @@ jobs: shell: bash run: | hugo --minify --gc - yarn install - yarn run build diff --git a/.github/workflows/deploy-to-cloudflare.yml b/.github/workflows/deploy-to-cloudflare.yml deleted file mode 100644 index a693fe1..0000000 --- a/.github/workflows/deploy-to-cloudflare.yml +++ /dev/null @@ -1,86 +0,0 @@ -name: Deploy to Cloudflare Workers Sites - -on: - push: - branches: - - main - workflow_dispatch: - inputs: - environment: - description: "Environment to deploy built site to" - required: true - type: "string" - -jobs: - deploy-main: - if: "contains(github.event.head_commit.message, '[deploy]') || github.event.inputs.environment == '[deploy]'" - runs-on: ubuntu-latest - - steps: - - name: Checkout source - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # tag=v3 - - - name: Setup Latest Version of Hugo - uses: peaceiris/actions-hugo@c03b5dbed22245418539b65eb9a3b1d5fdd9a0a6 # tag=v2 - with: - hugo-version: '0.104.3' - extended: true - - - uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f # tag=v3 - with: - go-version-file: 'go.mod' - - - name: Build Hugo Site - shell: bash - run: | - yarn install - hugo --minify --gc - - - name: Publish to Cloudflare Workers Sites - uses: cloudflare/wrangler-action@2.0.0 - with: - apiToken: ${{ secrets.CF_API_TOKEN }} - accountId: ${{ secrets.CF_ACCOUNT_ID }} - command: publish --env production - env: - CF_ZONE_ID: ${{ secrets.CF_ZONE_ID }} - - - name: Notify search engines of sitemap updates - shell: bash - run: | - SITEMAP_URL="https://msfjarvis.dev/sitemap.xml" - curl "https://google.com/ping?sitemap=${SITEMAP_URL}" - curl "https://www.bing.com/ping?sitemap=${SITEMAP_URL}" - - deploy-staging: - if: "contains(github.event.head_commit.message, '[staging]') || github.event.inputs.environment == '[staging]'" - runs-on: ubuntu-latest - - steps: - - name: Checkout source - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # tag=v3 - - - name: Setup Latest Version of Hugo - uses: peaceiris/actions-hugo@c03b5dbed22245418539b65eb9a3b1d5fdd9a0a6 # tag=v2 - with: - hugo-version: '0.104.3' - extended: true - - - uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f # tag=v3 - with: - go-version-file: 'go.mod' - - - name: Build Hugo Site - shell: bash - run: | - yarn install - hugo --minify --gc -D --baseUrl 'https://drafts.msfjarvis.dev/' - - - name: Publish to Cloudflare Workers Sites - uses: cloudflare/wrangler-action@2.0.0 - with: - apiToken: ${{ secrets.CF_API_TOKEN }} - accountId: ${{ secrets.CF_ACCOUNT_ID }} - command: publish - env: - CF_ZONE_ID: ${{ secrets.CF_ZONE_ID }} diff --git a/package.json b/package.json index 0cbba00..a608d75 100644 --- a/package.json +++ b/package.json @@ -1,27 +1,14 @@ { - "name": "redirekt", + "name": "msfjarvis.dev", "version": "1.0.0", - "description": "Cloudflare Worker to do simple redirects to GitHub", - "repository": "https://github.com/msfjarvis/redirekt", + "description": "My blog and home page", + "repository": "https://github.com/msfjarvis/msfjarvis.dev", "main": "index.js", "scripts": { - "build": "webpack", - "dev": "NODE_ENV=development yarn run build", - "format": "prettier --write '**/*.{ts,js,css,json,md}' --ignore-path .gitignore" + "build": "hugo", + "dev": "hugo serve" }, "author": "Harsh Shandilya ", "license": "MIT OR Apache-2.0", - "devDependencies": { - "@cloudflare/workers-types": "3.16.0", - "prettier": "2.7.1", - "source-map-loader": "4.0.0", - "source-map-support": "0.5.21", - "ts-loader": "9.3.1", - "typescript": "4.8.4", - "webpack": "5.74.0", - "webpack-cli": "4.10.0" - }, - "dependencies": { - "@cloudflare/kv-asset-handler": "0.2.0" - } + "dependencies": {} } diff --git a/shell.nix b/shell.nix index 93a0b52..8c35621 100644 --- a/shell.nix +++ b/shell.nix @@ -8,6 +8,5 @@ pkgs.mkShell { imagemagick nodejs-16_x wrangler - yarn ]; } diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index 9967046..0000000 --- a/webpack.config.js +++ /dev/null @@ -1,30 +0,0 @@ -const path = require("path"); -const webpack = require("webpack"); - -const mode = process.env.NODE_ENV || "production"; - -module.exports = { - entry: "./workers-site/src", - output: { - filename: `worker.${mode}.js`, - path: path.join(__dirname, "dist"), - }, - devtool: "source-map", - mode, - resolve: { - extensions: [".ts", ".tsx", ".js"], - plugins: [], - }, - module: { - rules: [ - { - test: /\.tsx?$/, - loader: "ts-loader", - options: { - transpileOnly: true, - }, - }, - { enforce: "pre", test: /\.js$/, loader: "source-map-loader" }, - ], - }, -}; diff --git a/workers-site/src/bindings.d.ts b/workers-site/src/bindings.d.ts deleted file mode 100644 index eda946c..0000000 --- a/workers-site/src/bindings.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export {}; - -declare global { - const BASE_URL: string; - const NAMESPACE: KVNamespace; -} diff --git a/workers-site/src/handler.ts b/workers-site/src/handler.ts deleted file mode 100644 index a272bc6..0000000 --- a/workers-site/src/handler.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { getAssetFromKV } from "@cloudflare/kv-asset-handler"; - -const GITHUB_USERNAME = "msfjarvis"; -const APS_SLUG = "Android-Password-Store"; -const GITHUB_URL = `https://github.com`; -const MY_GITHUB = `${GITHUB_URL}/${GITHUB_USERNAME}`; -const APS_GITHUB_URL = `https://github.com/${APS_SLUG}/${APS_SLUG}`; -const CSP_POLICY = - "base-uri 'self'; connect-src 'self' insights.msfjarvis.dev utteranc.es; default-src 'self'; frame-src asciinema.org github.com platform.twitter.com utteranc.es; font-src 'self' fonts.gstatic.com; img-src 'self' data: gfycat.com imgur.com *.imgur.com insights.msfjarvis.dev syndication.twitter.com; object-src 'none'; script-src 'self' 'unsafe-hashes' asciinema.org platform.twitter.com utteranc.es insights.msfjarvis.dev 'sha256-/nV291Na1MuGRmAF5BCX/72e5aDh6O5wnlvisox+3Ts=' 'sha256-X5avg43RTxt2cSum+E3xICbowEMaOBxeBiNh05CXDTY=' 'sha256-z2izUJPvGYTnFTpFb7prEv2Soyt9qIS/B/aWU80v7As=' 'sha256-SW7YuU+FYIfxpDhNx/ozt2nByUOZMoJbUGRVtb9JMLc=' 'sha256-eyUVosQAviXm2qeOTG819D1n0kSst2gY8VmfgVsZlag='; style-src 'self' fonts.googleapis.com 'unsafe-inline'; frame-ancestors 'self';"; -const PERMISSIONS_POLICY = - "accelerometer=(), autoplay=(), camera=(), encrypted-media=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(), sync-xhr=(), usb=()"; - -export async function handleRequest(event: FetchEvent): Promise { - return redirectGitHub(event); -} - -async function getPageFromKV(event: FetchEvent): Promise { - const options = {}; - try { - const page = await getAssetFromKV(event, options); - if (page === null) { - throw new Error("No page found, short-circuit to 404 page"); - } - const response = new Response(page.body, page); - response.headers.set("X-XSS-Protection", "1; mode=block"); - response.headers.set("X-Content-Type-Options", "nosniff"); - response.headers.set("X-Frame-Options", "DENY"); - response.headers.set("Referrer-Policy", "no-referrer-when-downgrade"); - response.headers.set("Content-Security-Policy", CSP_POLICY); - response.headers.set("Permissions-Policy", PERMISSIONS_POLICY); - const url = event.request.url; - if (url.endsWith("css") || url.endsWith("js") || url.endsWith("ttf")) { - response.headers.set("Cache-Control", "public, max-age=31536000"); - } - return response; - } catch (e: unknown) { - try { - let notFoundResponse = await getAssetFromKV(event, { - mapRequestToAsset: (req) => - new Request(`${new URL(req.url).origin}/404.html`, req), - }); - return new Response(notFoundResponse.body, { - ...notFoundResponse, - status: 404, - }); - } catch (e) {} - if (e instanceof Error) { - return new Response(e.message || e.toString(), { status: 500 }); - } - } - return new Response("Failed to load page", { status: 500 }); -} - -async function recordStatsAndRedirect(url: string): Promise { - const key = `stats_${url}`; - var _count = await NAMESPACE.get(key); - if (_count == null) { - _count = "0"; - } - var count = parseInt(_count); - count += 1; - await NAMESPACE.put(key, `${count}`); - return Response.redirect(url, 301); -} - -async function redirectGitHub(event: FetchEvent): Promise { - const urlParts = event.request.url.replace(BASE_URL, "").split("/"); - switch (urlParts[0]) { - case "g": - switch (urlParts.length) { - case 1: - return recordStatsAndRedirect(MY_GITHUB); - case 2: - return recordStatsAndRedirect(`${MY_GITHUB}/${urlParts[1]}`); - case 3: - return recordStatsAndRedirect( - `${MY_GITHUB}/${urlParts[1]}/commit/${urlParts[2]}` - ); - case 4: - return recordStatsAndRedirect( - `${MY_GITHUB}/${urlParts[1]}/issues/${urlParts[3]}` - ); - } - case "aps": - switch (urlParts.length) { - case 1: - return recordStatsAndRedirect(APS_GITHUB_URL); - case 2: - return recordStatsAndRedirect( - `${APS_GITHUB_URL}/commit/${urlParts[1]}` - ); - case 3: - return recordStatsAndRedirect( - `${APS_GITHUB_URL}/issues/${urlParts[2]}` - ); - } - case "apsg": - switch (urlParts.length) { - case 1: - return recordStatsAndRedirect(`${GITHUB_URL}/${APS_SLUG}`); - case 2: - return recordStatsAndRedirect( - `${GITHUB_URL}/${APS_SLUG}/${urlParts[1]}` - ); - case 3: - return recordStatsAndRedirect( - `${GITHUB_URL}/${APS_SLUG}/${urlParts[1]}/commit/${urlParts[2]}` - ); - case 4: - return recordStatsAndRedirect( - `${GITHUB_URL}/${APS_SLUG}/${urlParts[1]}/issues/${urlParts[3]}` - ); - } - default: - return getPageFromKV(event); - } -} diff --git a/workers-site/src/index.ts b/workers-site/src/index.ts deleted file mode 100644 index 490ea58..0000000 --- a/workers-site/src/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { handleRequest } from "./handler"; - -addEventListener("fetch", (event) => { - if (event instanceof FetchEvent) { - event.respondWith(handleRequest(event)); - } -}); diff --git a/wrangler.toml b/wrangler.toml deleted file mode 100644 index 7437455..0000000 --- a/wrangler.toml +++ /dev/null @@ -1,23 +0,0 @@ -name = "msfjarvis-dev-staging" -workers_dev = false -route = "drafts.msfjarvis.dev/*" -vars = { BASE_URL = "https://drafts.msfjarvis.dev/" } -compatibility_date = "2021-11-08" -kv_namespaces = [ - { binding = "NAMESPACE", id = "43d755465f4642ccb30b1bdce031d1da", preview_id = "d2c0bff9f5584c938131063c9a702611" }, -] -main = "dist/worker.production.js" - -[build] -command = "yarn run build" - -[site] -bucket = "./public" - -[env.production] -name = "msfjarvis-dev-prod" -route = "msfjarvis.dev/*" -vars = { BASE_URL = "https://msfjarvis.dev/" } -kv_namespaces = [ - { binding = "NAMESPACE", id = "303799a857b0490482dabaf6c9ed0af8" } -]