From 46e199955e210696034c0bece07f47a9d5155de1 Mon Sep 17 00:00:00 2001 From: butlerx Date: Wed, 7 Oct 2020 17:57:33 +0100 Subject: [PATCH] allow assets to be served project root rather then pwd --- package.json | 3 ++- src/server/socketServer/assets.ts | 5 ++--- src/server/socketServer/middleware.ts | 4 ++-- src/server/socketServer/shared/path.ts | 12 ++++++++++++ yarn.lock | 2 +- 5 files changed, 19 insertions(+), 7 deletions(-) create mode 100644 src/server/socketServer/shared/path.ts diff --git a/package.json b/package.json index b000d5a..ea62c2f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wetty", - "version": "2.0.1", + "version": "2.0.2", "description": "WeTTY = Web + TTY. Terminal access in browser over http/https", "homepage": "https://github.com/butlerx/wetty", "license": "MIT", @@ -104,6 +104,7 @@ "express": "^4.17.1", "express-winston": "^4.0.5", "file-type": "^12.3.0", + "find-up": "^5.0.0", "fresh": "^0.5.2", "fs-extra": "^9.0.1", "helmet": "^4.1.0", diff --git a/src/server/socketServer/assets.ts b/src/server/socketServer/assets.ts index ef08aa2..509dc51 100644 --- a/src/server/socketServer/assets.ts +++ b/src/server/socketServer/assets.ts @@ -1,6 +1,5 @@ -import { resolve } from 'path'; import express from 'express'; +import { assetsPath } from './shared/path.js'; export const trim = (str: string): string => str.replace(/\/*$/, ''); -export const serveStatic = (path: string) => - express.static(resolve(process.cwd(), 'build', path)); +export const serveStatic = (path: string) => express.static(assetsPath(path)); diff --git a/src/server/socketServer/middleware.ts b/src/server/socketServer/middleware.ts index 9d88494..8f868c4 100644 --- a/src/server/socketServer/middleware.ts +++ b/src/server/socketServer/middleware.ts @@ -3,7 +3,7 @@ import etag from 'etag'; import fresh from 'fresh'; import parseUrl from 'parseurl'; import fs from 'fs'; -import { join, resolve } from 'path'; +import { assetsPath } from './shared/path.js'; const ONE_YEAR_MS = 60 * 60 * 24 * 365 * 1000; // 1 year @@ -43,7 +43,7 @@ export function redirect( * @returns middleware */ export function favicon(basePath: string): RequestHandler { - const path = resolve(join('build', 'assets', 'favicon.ico')); + const path = assetsPath('assets', 'favicon.ico'); return (req: Request, res: Response, next: NextFunction): void => { if (getPathName(req) !== `${basePath}/favicon.ico`) { next(); diff --git a/src/server/socketServer/shared/path.ts b/src/server/socketServer/shared/path.ts new file mode 100644 index 0000000..c49852d --- /dev/null +++ b/src/server/socketServer/shared/path.ts @@ -0,0 +1,12 @@ +import findUp from 'find-up'; +import { resolve, dirname } from 'path'; +import { fileURLToPath } from 'url'; + +const filePath = dirname( + findUp.sync('package.json', { + cwd: dirname(fileURLToPath(import.meta.url)), + }) || process.cwd(), +); + +export const assetsPath = (...args: string[]) => + resolve(filePath, 'build', ...args); diff --git a/yarn.lock b/yarn.lock index 563a7e5..f42ea4e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2323,7 +2323,7 @@ find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-up@5.0.0: +find-up@5.0.0, find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==