From 84ad7a6c2b2880dab51b550a46511f3645da2eac Mon Sep 17 00:00:00 2001 From: Mythie Date: Tue, 7 Jan 2025 12:45:53 +1100 Subject: [PATCH] wip --- apps/remix/.gitignore | 2 +- apps/remix/package.json | 3 +- apps/remix/server/app.ts | 42 +++++++++++-------- apps/remix/server/main.ts | 15 +++++-- apps/remix/tsconfig.json | 23 +++++++--- .../remix/{vite.config.ts => vite.config.mts} | 1 + 6 files changed, 58 insertions(+), 28 deletions(-) rename apps/remix/{vite.config.ts => vite.config.mts} (83%) diff --git a/apps/remix/.gitignore b/apps/remix/.gitignore index 028a77cbf..188507428 100644 --- a/apps/remix/.gitignore +++ b/apps/remix/.gitignore @@ -6,4 +6,4 @@ /build/ # Vite -vite.config.ts.timestamp* \ No newline at end of file +vite.config.*.timestamp* \ No newline at end of file diff --git a/apps/remix/package.json b/apps/remix/package.json index ab29f5b03..a1d6f094a 100644 --- a/apps/remix/package.json +++ b/apps/remix/package.json @@ -1,10 +1,9 @@ { "name": "@documenso/remix", - "type": "module", "private": true, "scripts": { "build": "cross-env NODE_ENV=production react-router build", - "dev": "tsx watch --ignore \"vite.config.ts*\" server/main.ts", + "dev": "tsx watch --ignore \"vite.config.{ts,mts,js,mjs}*\" server/main.ts", "start": "cross-env NODE_ENV=production node dist/server/index.js", "typecheck": "react-router typegen && tsc" }, diff --git a/apps/remix/server/app.ts b/apps/remix/server/app.ts index 2969a77b1..6909fdb0f 100644 --- a/apps/remix/server/app.ts +++ b/apps/remix/server/app.ts @@ -3,15 +3,17 @@ import { type HttpBindings } from '@hono/node-server'; import { Hono } from 'hono'; import { reactRouter } from 'remix-hono/handler'; -type Bindings = HttpBindings; +import { IS_APP_WEB } from '@documenso/lib/constants/app'; -const app = new Hono<{ Bindings: Bindings }>(); +console.log({ IS_APP_WEB }); + +type Bindings = HttpBindings; const isProduction = process.env.NODE_ENV === 'production'; const viteDevServer = isProduction ? undefined - : await import('vite').then(async (vite) => + : import('vite').then(async (vite) => vite.createServer({ server: { middlewareMode: true }, }), @@ -23,23 +25,29 @@ const reactRouterMiddleware = remember('reactRouterMiddleware', async () => build: isProduction ? // @ts-expect-error build/server/index.js is a build artifact await import('../build/server/index.js') - : async () => viteDevServer!.ssrLoadModule('virtual:react-router/server-build'), + : async () => (await viteDevServer)!.ssrLoadModule('virtual:react-router/server-build'), }), ); -// app.get('/', (c) => c.text('Hello, world!')); -if (viteDevServer) { - app.use('*', async (c, next) => { - return new Promise((resolve) => { - viteDevServer.middlewares(c.env.incoming, c.env.outgoing, () => resolve(next())); +export const getApp = async () => { + const app = new Hono<{ Bindings: Bindings }>(); + + const resolvedDevServer = await viteDevServer; + + // app.get('/', (c) => c.text('Hello, world!')); + if (resolvedDevServer) { + app.use('*', async (c, next) => { + return new Promise((resolve) => { + resolvedDevServer.middlewares(c.env.incoming, c.env.outgoing, () => resolve(next())); + }); }); + } + + app.use('*', async (c, next) => { + const middleware = await reactRouterMiddleware; + + return middleware(c, next); }); -} -app.use('*', async (c, next) => { - const middleware = await reactRouterMiddleware; - - return middleware(c, next); -}); - -export default app; + return app; +}; diff --git a/apps/remix/server/main.ts b/apps/remix/server/main.ts index c02f245a6..5f5605fbd 100644 --- a/apps/remix/server/main.ts +++ b/apps/remix/server/main.ts @@ -1,7 +1,16 @@ import { serve } from '@hono/node-server'; -import app from './app'; +import { getApp } from './app'; -serve(app, (info) => { - console.log(`Server is running on http://localhost:${info.port}`); +async function main() { + const app = await getApp(); + + serve(app, (info) => { + console.log(`Server is running on http://localhost:${info.port}`); + }); +} + +main().catch((error) => { + console.error('Failed to start server:', error); + process.exit(1); }); diff --git a/apps/remix/tsconfig.json b/apps/remix/tsconfig.json index dc391a45f..4188e6b55 100644 --- a/apps/remix/tsconfig.json +++ b/apps/remix/tsconfig.json @@ -6,22 +6,35 @@ ".react-router/types/**/*" ], "compilerOptions": { - "lib": ["DOM", "DOM.Iterable", "ES2022"], - "types": ["node", "vite/client"], + "lib": [ + "DOM", + "DOM.Iterable", + "ES2022" + ], + "types": [ + "node", + "vite/client" + ], "target": "ES2022", "module": "ES2022", "moduleResolution": "bundler", "jsx": "react-jsx", - "rootDirs": [".", "./.react-router/types"], + "rootDirs": [ + ".", + "./.react-router/types" + ], "baseUrl": ".", "paths": { - "~/*": ["./app/*"] + "~/*": [ + "./app/*" + ] }, "esModuleInterop": true, "verbatimModuleSyntax": true, "noEmit": true, + "moduleDetection": "force", "resolveJsonModule": true, "skipLibCheck": true, "strict": true } -} +} \ No newline at end of file diff --git a/apps/remix/vite.config.ts b/apps/remix/vite.config.mts similarity index 83% rename from apps/remix/vite.config.ts rename to apps/remix/vite.config.mts index 76a0b1add..0e78a5f0f 100644 --- a/apps/remix/vite.config.ts +++ b/apps/remix/vite.config.mts @@ -1,3 +1,4 @@ +// @ts-expect-error This is just due to our root config, it's a non-issue import { reactRouter } from '@react-router/dev/vite'; import autoprefixer from 'autoprefixer'; import tailwindcss from 'tailwindcss';