From 248f382276509a9b2cd6972036ef79e011832aed Mon Sep 17 00:00:00 2001 From: john Date: Tue, 20 May 2025 10:44:37 +0200 Subject: [PATCH] add version --- package.json | 1 + src/App.tsx | 11 ++--------- src/initApp.ts | 16 ++++++++++++++++ src/types.d.ts | 1 + vite.config.ts | 5 +++++ yarn.lock | 12 ++++++++++++ 6 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 src/initApp.ts diff --git a/package.json b/package.json index c43e97b..c3e8dc9 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ }, "devDependencies": { "@eslint/js": "^9.22.0", + "@types/node": "^22.15.19", "@types/react": "^19.0.10", "@types/react-dom": "^19.0.4", "@types/react-router-dom": "^5.3.3", diff --git a/src/App.tsx b/src/App.tsx index 3e0a263..c1406bc 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,23 +1,16 @@ import { BrowserRouter, Route, Routes } from 'react-router-dom' import HomePage from './app/feed/pages/HomePage.tsx' -import { PostsService } from './app/feed/posts/postsService.ts' import AuthorPage from './app/feed/pages/AuthorPage.tsx' -import { MediaService } from './app/media/mediaService.ts' import SignupPage from './app/auth/pages/SignupPage.tsx' import LoginPage from './app/auth/pages/LoginPage.tsx' -import { AuthService } from './app/auth/authService.ts' import LogoutPage from './app/auth/pages/LogoutPage.tsx' import UnauthorizedHandler from './app/auth/components/UnauthorizedHandler.tsx' import AdminPage from './app/admin/pages/AdminPage.tsx' import SignupCodesManagementPage from './app/admin/pages/subpages/SignupCodesManagementPage.tsx' -import { initUser } from './app/user/user.ts' import { useRefreshSessionLoop } from './useRefreshSessionLoop.ts' +import { initApp } from './initApp.ts' -const postService = new PostsService() -const mediaService = new MediaService() -const authService = new AuthService() - -initUser() +const { postService, mediaService, authService } = initApp() export default function App() { useRefreshSessionLoop(authService) diff --git a/src/initApp.ts b/src/initApp.ts new file mode 100644 index 0000000..44bec96 --- /dev/null +++ b/src/initApp.ts @@ -0,0 +1,16 @@ +import { initUser } from './app/user/user.ts' +import { setGlobal } from './app/femtoApp.ts' +import { PostsService } from './app/feed/posts/postsService.ts' +import { MediaService } from './app/media/mediaService.ts' +import { AuthService } from './app/auth/authService.ts' + +export function initApp() { + setGlobal('version', import.meta.env.VITE_FEMTO_VERSION) + initUser() + + const postService = new PostsService() + const mediaService = new MediaService() + const authService = new AuthService() + + return { postService, mediaService, authService } +} diff --git a/src/types.d.ts b/src/types.d.ts index 3f1b818..162116e 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -15,5 +15,6 @@ declare global { } export interface FemtoApp { + version: string user: User | null } diff --git a/vite.config.ts b/vite.config.ts index c4069b7..2833f82 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,6 +1,11 @@ import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import tailwindcss from '@tailwindcss/vite' +import fs from 'node:fs' + +const packageJson = JSON.parse(fs.readFileSync('./package.json', 'utf-8')) + +process.env.VITE_FEMTO_VERSION = packageJson.version // https://vite.dev/config/ export default defineConfig({ diff --git a/yarn.lock b/yarn.lock index c5454e1..33f166d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -778,6 +778,13 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== +"@types/node@^22.15.19": + version "22.15.19" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.19.tgz#ba9f321675243af0456d607fa82a4865931e0cef" + integrity sha512-3vMNr4TzNQyjHcRZadojpRaD9Ofr6LsonZAoQ+HMUa/9ORTPoxVIw0e0mpqWpdjj8xybyCM+oKOUH2vwFu/oEw== + dependencies: + undici-types "~6.21.0" + "@types/react-dom@^19.0.4": version "19.1.3" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-19.1.3.tgz#3f0c60804441bf34d19f8dd0d44405c0c0e21bfa" @@ -2439,6 +2446,11 @@ typescript@~5.7.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.3.tgz#919b44a7dbb8583a9b856d162be24a54bf80073e" integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw== +undici-types@~6.21.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" + integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== + unpipe@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"