From 8feaf11646df9da0991f082ce36a15e85d1fae92 Mon Sep 17 00:00:00 2001 From: Josh Buker Date: Sun, 24 Apr 2022 16:13:16 -0700 Subject: [PATCH] Prep for deployment via Heroku --- gsd-web-demo/.nvmrc | 1 + gsd-web-demo/package.json | 10 +- gsd-web-demo/src/components/EssentialLink.vue | 51 -------- gsd-web-demo/workers-site/.cargo-ok | 0 gsd-web-demo/workers-site/.gitignore | 2 - gsd-web-demo/workers-site/index.js | 109 ------------------ gsd-web-demo/workers-site/package-lock.json | 26 ----- gsd-web-demo/workers-site/package.json | 13 --- gsd-web-demo/yarn.lock | 18 +-- 9 files changed, 16 insertions(+), 214 deletions(-) create mode 100644 gsd-web-demo/.nvmrc delete mode 100644 gsd-web-demo/src/components/EssentialLink.vue delete mode 100644 gsd-web-demo/workers-site/.cargo-ok delete mode 100644 gsd-web-demo/workers-site/.gitignore delete mode 100644 gsd-web-demo/workers-site/index.js delete mode 100644 gsd-web-demo/workers-site/package-lock.json delete mode 100644 gsd-web-demo/workers-site/package.json diff --git a/gsd-web-demo/.nvmrc b/gsd-web-demo/.nvmrc new file mode 100644 index 0000000..b6a7d89 --- /dev/null +++ b/gsd-web-demo/.nvmrc @@ -0,0 +1 @@ +16 diff --git a/gsd-web-demo/package.json b/gsd-web-demo/package.json index b728f76..4084c9a 100644 --- a/gsd-web-demo/package.json +++ b/gsd-web-demo/package.json @@ -9,7 +9,9 @@ "lint": "eslint --ext .js,.vue ./", "test": "echo \"No test specified\" && exit 0", "build": "quasar build -m ssr", - "dev": "quasar dev -m ssr" + "heroku-postbuild": "yarn build", + "dev": "quasar dev -m ssr", + "start": "node dist/ssr/index.js" }, "dependencies": { "@quasar/extras": "^1.0.0", @@ -44,8 +46,8 @@ "last 5 Opera versions" ], "engines": { - "node": ">= 12.22.1", - "npm": ">= 6.13.4", - "yarn": ">= 1.21.1" + "node": "16.x", + "npm": "6.x", + "yarn": "1.x" } } diff --git a/gsd-web-demo/src/components/EssentialLink.vue b/gsd-web-demo/src/components/EssentialLink.vue deleted file mode 100644 index c289965..0000000 --- a/gsd-web-demo/src/components/EssentialLink.vue +++ /dev/null @@ -1,51 +0,0 @@ - - - diff --git a/gsd-web-demo/workers-site/.cargo-ok b/gsd-web-demo/workers-site/.cargo-ok deleted file mode 100644 index e69de29..0000000 diff --git a/gsd-web-demo/workers-site/.gitignore b/gsd-web-demo/workers-site/.gitignore deleted file mode 100644 index 75c573a..0000000 --- a/gsd-web-demo/workers-site/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -worker diff --git a/gsd-web-demo/workers-site/index.js b/gsd-web-demo/workers-site/index.js deleted file mode 100644 index 8957d1b..0000000 --- a/gsd-web-demo/workers-site/index.js +++ /dev/null @@ -1,109 +0,0 @@ -import { - getAssetFromKV, - mapRequestToAsset, - serveSinglePageApp -} from '@cloudflare/kv-asset-handler' -import { Router } from 'itty-router' - -// Create a new router -const router = Router() - -/** - * The DEBUG flag will do two things that help during development: - * 1. we will skip caching on the edge, which makes it easier to - * debug. - * 2. we will return an error message on exception in your Response rather - * than the default 404.html page. - */ -const DEBUG = false - -router.get("/api/testing", () => { - return new Response("Hello, world!") -}) - -router.all("*", handleSPA) - -addEventListener('fetch', event => { - try { - event.request.event = event - event.respondWith(router.handle(event.request)) - } catch (e) { - if (DEBUG) { - return event.respondWith( - new Response(e.message || e.toString(), { - status: 500, - }), - ) - } - event.respondWith(new Response('Internal Error', { status: 500 })) - } -}) - -async function handleSPA(request) { - const url = new URL(request.url) - let options = { - mapRequestToAsset: serveSinglePageApp - } - - /** - * You can add custom logic to how we fetch your assets - * by configuring the function `mapRequestToAsset` - */ - // options.mapRequestToAsset = handlePrefix(/^\/docs/) - - try { - if (DEBUG) { - // customize caching - options.cacheControl = { - bypassCache: true, - }; - } - const page = await getAssetFromKV(request.event, options); - - // allow headers to be altered - 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", "unsafe-url"); - response.headers.set("Feature-Policy", "none"); - - return response; - - } catch (e) { - // if an error is thrown try to serve the asset at 404.html - if (!DEBUG) { - try { - let notFoundResponse = await getAssetFromKV(request.event, { - mapRequestToAsset: req => new Request(`${new URL(req.url).origin}/404.html`, req), - }) - - return new Response(notFoundResponse.body, { ...notFoundResponse, status: 404 }) - } catch (e) {} - } - - return new Response(e.message || e.toString(), { status: 500 }) - } -} - -/** - * Here's one example of how to modify a request to - * remove a specific prefix, in this case `/docs` from - * the url. This can be useful if you are deploying to a - * route on a zone, or if you only want your static content - * to exist at a specific path. - */ -function handlePrefix(prefix) { - return request => { - // compute the default (e.g. / -> index.html) - let defaultAssetKey = mapRequestToAsset(request) - let url = new URL(defaultAssetKey.url) - - // strip the prefix from the path for lookup - url.pathname = url.pathname.replace(prefix, '/') - - // inherit all other props from the default request - return new Request(url.toString(), defaultAssetKey) - } -} \ No newline at end of file diff --git a/gsd-web-demo/workers-site/package-lock.json b/gsd-web-demo/workers-site/package-lock.json deleted file mode 100644 index a7eeb0f..0000000 --- a/gsd-web-demo/workers-site/package-lock.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "worker", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@cloudflare/kv-asset-handler": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.1.2.tgz", - "integrity": "sha512-otES1gV5mEhNh82p/sJERPMMrC7UOLV2JyfKf4e3EX1TmMkZ3N8IDGAqRNsoRU8UYTO7wc83I7pH1p4ozAdgMQ==", - "requires": { - "mime": "^2.5.2" - } - }, - "itty-router": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/itty-router/-/itty-router-2.6.0.tgz", - "integrity": "sha512-dPk2dA/0baEfrizHfsvfvybwLA2yVFbdzOyBO07x/vT9lSQ+7iGmw88DNvczeIMON4qd/I9x7kX9QDMqgAY/6w==" - }, - "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" - } - } -} diff --git a/gsd-web-demo/workers-site/package.json b/gsd-web-demo/workers-site/package.json deleted file mode 100644 index d679ebf..0000000 --- a/gsd-web-demo/workers-site/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "private": true, - "name": "worker", - "version": "1.0.0", - "description": "A template for kick starting a Cloudflare Workers project", - "main": "index.js", - "author": "Ashley Lewis ", - "license": "MIT", - "dependencies": { - "@cloudflare/kv-asset-handler": "~0.1.2", - "itty-router": "^2.6.0" - } -} diff --git a/gsd-web-demo/yarn.lock b/gsd-web-demo/yarn.lock index 865bc4b..6747078 100644 --- a/gsd-web-demo/yarn.lock +++ b/gsd-web-demo/yarn.lock @@ -1896,9 +1896,9 @@ body-parser@1.19.2: type-is "~1.6.18" bonjour-service@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.0.11.tgz#5418e5c1ac91c89a406f853a942e7892829c0d89" - integrity sha512-drMprzr2rDTCtgEE3VgdA9uUFaUHF+jXduwYSThHJnKMYM+FhI9Z3ph+TX3xy0LtgYHae6CHYPJ/2UnK8nQHcA== + version "1.0.12" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.0.12.tgz#28fbd4683f5f2e36feedb833e24ba661cac960c3" + integrity sha512-pMmguXYCu63Ug37DluMKEHdxc+aaIf/ay4YbF8Gxtba+9d3u+rmEWy61VK3Z3hp8Rskok3BunHYnG0dUHAsblw== dependencies: array-flatten "^2.1.2" dns-equal "^1.0.0" @@ -2665,9 +2665,9 @@ ejs@^2.3.1: integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== electron-to-chromium@^1.4.84: - version "1.4.117" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.117.tgz#829d747deb9faa653cab72764a891ef523ba7413" - integrity sha512-ypZHxY+Sf/PXu7LVN+xoeanyisnJeSOy8Ki439L/oLueZb4c72FI45zXcK3gPpmTwyufh9m6NnbMLXnJh/0Fxg== + version "1.4.118" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.118.tgz#2d917c71712dac9652cc01af46c7d0bd51552974" + integrity sha512-maZIKjnYDvF7Fs35nvVcyr44UcKNwybr93Oba2n3HkKDFAtk0svERkLN/HyczJDS3Fo4wU9th9fUQd09ZLtj1w== elementtree@0.1.7: version "0.1.7" @@ -5542,9 +5542,9 @@ ts-loader@9.2.6: semver "^7.3.4" tslib@^2.0.3, tslib@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== tsscmp@1.0.6: version "1.0.6"