aboutsummaryrefslogtreecommitdiff
path: root/FrontEnd
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-06-15 14:14:28 +0800
committercrupest <crupest@outlook.com>2021-06-15 14:14:28 +0800
commit47587812b809fee2a95c76266d9d0e42fc4ac1ca (patch)
treebfaa7320c838e21edf88b5a037263f89a8012222 /FrontEnd
parentda26373c7fc13cded47428b27638b349b0432437 (diff)
downloadtimeline-47587812b809fee2a95c76266d9d0e42fc4ac1ca.tar.gz
timeline-47587812b809fee2a95c76266d9d0e42fc4ac1ca.tar.bz2
timeline-47587812b809fee2a95c76266d9d0e42fc4ac1ca.zip
...
Diffstat (limited to 'FrontEnd')
-rw-r--r--FrontEnd/.babelrc27
-rw-r--r--FrontEnd/.eslintignore2
-rw-r--r--FrontEnd/.eslintrc.js2
-rw-r--r--FrontEnd/package.json28
-rw-r--r--FrontEnd/src/App.tsx (renamed from FrontEnd/src/app/App.tsx)0
-rw-r--r--FrontEnd/src/app/tsconfig.json13
-rw-r--r--FrontEnd/src/app/typings.d.ts24
-rw-r--r--FrontEnd/src/common.ts (renamed from FrontEnd/src/app/common.ts)0
-rw-r--r--FrontEnd/src/http/bookmark.ts (renamed from FrontEnd/src/app/http/bookmark.ts)0
-rw-r--r--FrontEnd/src/http/common.ts (renamed from FrontEnd/src/app/http/common.ts)0
-rw-r--r--FrontEnd/src/http/highlight.ts (renamed from FrontEnd/src/app/http/highlight.ts)0
-rw-r--r--FrontEnd/src/http/search.ts (renamed from FrontEnd/src/app/http/search.ts)0
-rw-r--r--FrontEnd/src/http/timeline.ts (renamed from FrontEnd/src/app/http/timeline.ts)0
-rw-r--r--FrontEnd/src/http/token.ts (renamed from FrontEnd/src/app/http/token.ts)0
-rw-r--r--FrontEnd/src/http/user.ts (renamed from FrontEnd/src/app/http/user.ts)0
-rw-r--r--FrontEnd/src/i18n.ts (renamed from FrontEnd/src/app/i18n.ts)4
-rw-r--r--FrontEnd/src/index.ejs (renamed from FrontEnd/src/app/index.ejs)0
-rw-r--r--FrontEnd/src/index.sass (renamed from FrontEnd/src/app/index.sass)0
-rw-r--r--FrontEnd/src/index.tsx (renamed from FrontEnd/src/app/index.tsx)0
-rw-r--r--FrontEnd/src/locales/en/admin.json (renamed from FrontEnd/src/app/locales/en/admin.json)0
-rw-r--r--FrontEnd/src/locales/en/translation.json (renamed from FrontEnd/src/app/locales/en/translation.json)0
-rw-r--r--FrontEnd/src/locales/zh/admin.json (renamed from FrontEnd/src/app/locales/zh/admin.json)0
-rw-r--r--FrontEnd/src/locales/zh/translation.json (renamed from FrontEnd/src/app/locales/zh/translation.json)0
-rw-r--r--FrontEnd/src/palette.ts (renamed from FrontEnd/src/app/palette.ts)0
-rw-r--r--FrontEnd/src/service-worker.txt (renamed from FrontEnd/src/app/service-worker.tsx)0
-rw-r--r--FrontEnd/src/services/TimelinePostBuilder.ts (renamed from FrontEnd/src/app/services/TimelinePostBuilder.ts)4
-rw-r--r--FrontEnd/src/services/alert.ts (renamed from FrontEnd/src/app/services/alert.ts)0
-rw-r--r--FrontEnd/src/services/timeline.ts (renamed from FrontEnd/src/app/services/timeline.ts)4
-rw-r--r--FrontEnd/src/services/user.ts (renamed from FrontEnd/src/app/services/user.ts)6
-rw-r--r--FrontEnd/src/sw/sw.ts62
-rw-r--r--FrontEnd/src/sw/tsconfig.json12
-rw-r--r--FrontEnd/src/tsconfig.json10
-rw-r--r--FrontEnd/src/utilities/mediaQuery.ts (renamed from FrontEnd/src/app/utilities/mediaQuery.ts)0
-rw-r--r--FrontEnd/src/utilities/url.ts (renamed from FrontEnd/src/app/utilities/url.ts)0
-rw-r--r--FrontEnd/src/utilities/useReverseScrollPositionRemember.ts (renamed from FrontEnd/src/app/utilities/useReverseScrollPositionRemember.ts)0
-rw-r--r--FrontEnd/src/utilities/useScrollToTop.ts (renamed from FrontEnd/src/app/utilities/useScrollToTop.ts)0
-rw-r--r--FrontEnd/src/views/about/about.sass (renamed from FrontEnd/src/app/views/about/about.sass)0
-rw-r--r--FrontEnd/src/views/about/author-avatar.png (renamed from FrontEnd/src/app/views/about/author-avatar.png)bin12038 -> 12038 bytes
-rw-r--r--FrontEnd/src/views/about/github.png (renamed from FrontEnd/src/app/views/about/github.png)bin4268 -> 4268 bytes
-rw-r--r--FrontEnd/src/views/about/index.tsx (renamed from FrontEnd/src/app/views/about/index.tsx)0
-rw-r--r--FrontEnd/src/views/admin/Admin.tsx (renamed from FrontEnd/src/app/views/admin/Admin.tsx)0
-rw-r--r--FrontEnd/src/views/admin/AdminNav.tsx (renamed from FrontEnd/src/app/views/admin/AdminNav.tsx)0
-rw-r--r--FrontEnd/src/views/admin/MoreAdmin.tsx (renamed from FrontEnd/src/app/views/admin/MoreAdmin.tsx)0
-rw-r--r--FrontEnd/src/views/admin/UserAdmin.tsx (renamed from FrontEnd/src/app/views/admin/UserAdmin.tsx)2
-rw-r--r--FrontEnd/src/views/admin/admin.sass (renamed from FrontEnd/src/app/views/admin/admin.sass)0
-rw-r--r--FrontEnd/src/views/center/CenterBoards.tsx (renamed from FrontEnd/src/app/views/center/CenterBoards.tsx)6
-rw-r--r--FrontEnd/src/views/center/TimelineBoard.tsx (renamed from FrontEnd/src/app/views/center/TimelineBoard.tsx)2
-rw-r--r--FrontEnd/src/views/center/TimelineCreateDialog.tsx (renamed from FrontEnd/src/app/views/center/TimelineCreateDialog.tsx)2
-rw-r--r--FrontEnd/src/views/center/center.sass (renamed from FrontEnd/src/app/views/center/center.sass)0
-rw-r--r--FrontEnd/src/views/center/index.tsx (renamed from FrontEnd/src/app/views/center/index.tsx)0
-rw-r--r--FrontEnd/src/views/common/AppBar.tsx (renamed from FrontEnd/src/app/views/common/AppBar.tsx)0
-rw-r--r--FrontEnd/src/views/common/BlobImage.tsx (renamed from FrontEnd/src/app/views/common/BlobImage.tsx)0
-rw-r--r--FrontEnd/src/views/common/ConfirmDialog.tsx (renamed from FrontEnd/src/app/views/common/ConfirmDialog.tsx)0
-rw-r--r--FrontEnd/src/views/common/FlatButton.tsx (renamed from FrontEnd/src/app/views/common/FlatButton.tsx)0
-rw-r--r--FrontEnd/src/views/common/FullPage.tsx (renamed from FrontEnd/src/app/views/common/FullPage.tsx)0
-rw-r--r--FrontEnd/src/views/common/ImageCropper.tsx (renamed from FrontEnd/src/app/views/common/ImageCropper.tsx)0
-rw-r--r--FrontEnd/src/views/common/LoadFailReload.tsx (renamed from FrontEnd/src/app/views/common/LoadFailReload.tsx)0
-rw-r--r--FrontEnd/src/views/common/LoadingButton.tsx (renamed from FrontEnd/src/app/views/common/LoadingButton.tsx)0
-rw-r--r--FrontEnd/src/views/common/LoadingPage.tsx (renamed from FrontEnd/src/app/views/common/LoadingPage.tsx)0
-rw-r--r--FrontEnd/src/views/common/Menu.tsx (renamed from FrontEnd/src/app/views/common/Menu.tsx)0
-rw-r--r--FrontEnd/src/views/common/OperationDialog.tsx (renamed from FrontEnd/src/app/views/common/OperationDialog.tsx)0
-rw-r--r--FrontEnd/src/views/common/SearchInput.tsx (renamed from FrontEnd/src/app/views/common/SearchInput.tsx)0
-rw-r--r--FrontEnd/src/views/common/Skeleton.tsx (renamed from FrontEnd/src/app/views/common/Skeleton.tsx)0
-rw-r--r--FrontEnd/src/views/common/TabPages.tsx (renamed from FrontEnd/src/app/views/common/TabPages.tsx)0
-rw-r--r--FrontEnd/src/views/common/TimelineLogo.tsx (renamed from FrontEnd/src/app/views/common/TimelineLogo.tsx)0
-rw-r--r--FrontEnd/src/views/common/ToggleIconButton.tsx (renamed from FrontEnd/src/app/views/common/ToggleIconButton.tsx)0
-rw-r--r--FrontEnd/src/views/common/UserTimelineLogo.tsx (renamed from FrontEnd/src/app/views/common/UserTimelineLogo.tsx)0
-rw-r--r--FrontEnd/src/views/common/alert/AlertHost.tsx (renamed from FrontEnd/src/app/views/common/alert/AlertHost.tsx)0
-rw-r--r--FrontEnd/src/views/common/alert/alert.sass (renamed from FrontEnd/src/app/views/common/alert/alert.sass)0
-rw-r--r--FrontEnd/src/views/common/common.sass (renamed from FrontEnd/src/app/views/common/common.sass)0
-rw-r--r--FrontEnd/src/views/common/user/UserAvatar.tsx (renamed from FrontEnd/src/app/views/common/user/UserAvatar.tsx)2
-rw-r--r--FrontEnd/src/views/home/TimelineListView.tsx (renamed from FrontEnd/src/app/views/home/TimelineListView.tsx)2
-rw-r--r--FrontEnd/src/views/home/WebsiteIntroduction.tsx (renamed from FrontEnd/src/app/views/home/WebsiteIntroduction.tsx)0
-rw-r--r--FrontEnd/src/views/home/home.sass (renamed from FrontEnd/src/app/views/home/home.sass)0
-rw-r--r--FrontEnd/src/views/home/index.tsx (renamed from FrontEnd/src/app/views/home/index.tsx)4
-rw-r--r--FrontEnd/src/views/login/index.tsx (renamed from FrontEnd/src/app/views/login/index.tsx)0
-rw-r--r--FrontEnd/src/views/login/login.sass (renamed from FrontEnd/src/app/views/login/login.sass)0
-rw-r--r--FrontEnd/src/views/search/index.tsx (renamed from FrontEnd/src/app/views/search/index.tsx)6
-rw-r--r--FrontEnd/src/views/search/search.sass (renamed from FrontEnd/src/app/views/search/search.sass)0
-rw-r--r--FrontEnd/src/views/settings/ChangeAvatarDialog.tsx (renamed from FrontEnd/src/app/views/settings/ChangeAvatarDialog.tsx)2
-rw-r--r--FrontEnd/src/views/settings/ChangeNicknameDialog.tsx (renamed from FrontEnd/src/app/views/settings/ChangeNicknameDialog.tsx)2
-rw-r--r--FrontEnd/src/views/settings/ChangePasswordDialog.tsx (renamed from FrontEnd/src/app/views/settings/ChangePasswordDialog.tsx)0
-rw-r--r--FrontEnd/src/views/settings/index.tsx (renamed from FrontEnd/src/app/views/settings/index.tsx)0
-rw-r--r--FrontEnd/src/views/settings/settings.sass (renamed from FrontEnd/src/app/views/settings/settings.sass)0
-rw-r--r--FrontEnd/src/views/timeline-common/CollapseButton.tsx (renamed from FrontEnd/src/app/views/timeline-common/CollapseButton.tsx)0
-rw-r--r--FrontEnd/src/views/timeline-common/ConnectionStatusBadge.tsx (renamed from FrontEnd/src/app/views/timeline-common/ConnectionStatusBadge.tsx)0
-rw-r--r--FrontEnd/src/views/timeline-common/MarkdownPostEdit.tsx (renamed from FrontEnd/src/app/views/timeline-common/MarkdownPostEdit.tsx)2
-rw-r--r--FrontEnd/src/views/timeline-common/PostPropertyChangeDialog.tsx (renamed from FrontEnd/src/app/views/timeline-common/PostPropertyChangeDialog.tsx)2
-rw-r--r--FrontEnd/src/views/timeline-common/Timeline.tsx (renamed from FrontEnd/src/app/views/timeline-common/Timeline.tsx)4
-rw-r--r--FrontEnd/src/views/timeline-common/TimelineDateLabel.tsx (renamed from FrontEnd/src/app/views/timeline-common/TimelineDateLabel.tsx)0
-rw-r--r--FrontEnd/src/views/timeline-common/TimelineLine.tsx (renamed from FrontEnd/src/app/views/timeline-common/TimelineLine.tsx)0
-rw-r--r--FrontEnd/src/views/timeline-common/TimelineLoading.tsx (renamed from FrontEnd/src/app/views/timeline-common/TimelineLoading.tsx)0
-rw-r--r--FrontEnd/src/views/timeline-common/TimelineMember.tsx (renamed from FrontEnd/src/app/views/timeline-common/TimelineMember.tsx)6
-rw-r--r--FrontEnd/src/views/timeline-common/TimelinePageCardTemplate.tsx (renamed from FrontEnd/src/app/views/timeline-common/TimelinePageCardTemplate.tsx)4
-rw-r--r--FrontEnd/src/views/timeline-common/TimelinePageTemplate.tsx (renamed from FrontEnd/src/app/views/timeline-common/TimelinePageTemplate.tsx)4
-rw-r--r--FrontEnd/src/views/timeline-common/TimelinePagedPostListView.tsx (renamed from FrontEnd/src/app/views/timeline-common/TimelinePagedPostListView.tsx)2
-rw-r--r--FrontEnd/src/views/timeline-common/TimelinePostContentView.tsx (renamed from FrontEnd/src/app/views/timeline-common/TimelinePostContentView.tsx)4
-rw-r--r--FrontEnd/src/views/timeline-common/TimelinePostDeleteConfirmDialog.tsx (renamed from FrontEnd/src/app/views/timeline-common/TimelinePostDeleteConfirmDialog.tsx)0
-rw-r--r--FrontEnd/src/views/timeline-common/TimelinePostEdit.tsx (renamed from FrontEnd/src/app/views/timeline-common/TimelinePostEdit.tsx)4
-rw-r--r--FrontEnd/src/views/timeline-common/TimelinePostListView.tsx (renamed from FrontEnd/src/app/views/timeline-common/TimelinePostListView.tsx)2
-rw-r--r--FrontEnd/src/views/timeline-common/TimelinePostView.tsx (renamed from FrontEnd/src/app/views/timeline-common/TimelinePostView.tsx)2
-rw-r--r--FrontEnd/src/views/timeline-common/TimelinePropertyChangeDialog.tsx (renamed from FrontEnd/src/app/views/timeline-common/TimelinePropertyChangeDialog.tsx)2
-rw-r--r--FrontEnd/src/views/timeline-common/TimelineTop.tsx (renamed from FrontEnd/src/app/views/timeline-common/TimelineTop.tsx)0
-rw-r--r--FrontEnd/src/views/timeline-common/timeline-common.sass (renamed from FrontEnd/src/app/views/timeline-common/timeline-common.sass)0
-rw-r--r--FrontEnd/src/views/timeline/TimelineCard.tsx (renamed from FrontEnd/src/app/views/timeline/TimelineCard.tsx)0
-rw-r--r--FrontEnd/src/views/timeline/TimelineDeleteDialog.tsx (renamed from FrontEnd/src/app/views/timeline/TimelineDeleteDialog.tsx)2
-rw-r--r--FrontEnd/src/views/timeline/index.tsx (renamed from FrontEnd/src/app/views/timeline/index.tsx)0
-rw-r--r--FrontEnd/src/views/timeline/timeline.sass (renamed from FrontEnd/src/app/views/timeline/timeline.sass)0
-rw-r--r--FrontEnd/src/views/user/UserCard.tsx (renamed from FrontEnd/src/app/views/user/UserCard.tsx)0
-rw-r--r--FrontEnd/src/views/user/index.tsx (renamed from FrontEnd/src/app/views/user/index.tsx)0
-rw-r--r--FrontEnd/src/views/user/user.sass (renamed from FrontEnd/src/app/views/user/user.sass)0
-rw-r--r--FrontEnd/vite.config.js19
-rw-r--r--FrontEnd/webpack.common.js73
-rw-r--r--FrontEnd/webpack.config.dev.js38
-rw-r--r--FrontEnd/webpack.config.prod.js53
115 files changed, 73 insertions, 378 deletions
diff --git a/FrontEnd/.babelrc b/FrontEnd/.babelrc
deleted file mode 100644
index 092f2f73..00000000
--- a/FrontEnd/.babelrc
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "presets": [
- "@babel/env",
- "@babel/preset-react"
- ],
- "plugins": [
- "@babel/plugin-syntax-dynamic-import",
- "@babel/plugin-proposal-class-properties",
- "@babel/plugin-proposal-optional-chaining",
- "@babel/plugin-proposal-nullish-coalescing-operator",
- [
- "@babel/plugin-proposal-decorators",
- {
- "decoratorsBeforeExport": true
- }
- ],
- [
- "babel-plugin-transform-builtin-extend",
- {
- "globals": [
- "Error",
- "Array"
- ]
- }
- ]
- ]
-} \ No newline at end of file
diff --git a/FrontEnd/.eslintignore b/FrontEnd/.eslintignore
index f29f7466..f4f28252 100644
--- a/FrontEnd/.eslintignore
+++ b/FrontEnd/.eslintignore
@@ -1,6 +1,6 @@
.yarn
node_modules
dist
-webpack.*.js
.eslintrc.js
postcss.config.js
+vite.config.js
diff --git a/FrontEnd/.eslintrc.js b/FrontEnd/.eslintrc.js
index 9bb22216..611b965f 100644
--- a/FrontEnd/.eslintrc.js
+++ b/FrontEnd/.eslintrc.js
@@ -18,7 +18,7 @@ module.exports = {
},
parser: "@typescript-eslint/parser",
parserOptions: {
- project: ["./src/app/tsconfig.json", "./src/sw/tsconfig.json"],
+ project: ["./src/tsconfig.json"],
ecmaFeatures: {
jsx: true,
},
diff --git a/FrontEnd/package.json b/FrontEnd/package.json
index 9f0145c9..1afb5ad0 100644
--- a/FrontEnd/package.json
+++ b/FrontEnd/package.json
@@ -30,12 +30,6 @@
"regenerator-runtime": "^0.13.7",
"remarkable": "^2.0.1",
"rxjs": "^7.1.0",
- "workbox-cacheable-response": "^6.1.5",
- "workbox-expiration": "^6.1.2",
- "workbox-precaching": "^6.1.0",
- "workbox-routing": "^6.1.5",
- "workbox-strategies": "^6.1.0",
- "workbox-window": "^6.1.1",
"xregexp": "^5.0.2"
},
"scripts": {
@@ -57,7 +51,6 @@
]
},
"devDependencies": {
- "@pmmmwh/react-refresh-webpack-plugin": "^0.5.0-rc.0",
"@types/color": "^3.0.1",
"@types/lodash": "^4.14.170",
"@types/node": "^15.12.2",
@@ -68,36 +61,19 @@
"@types/react-router": "^5.1.15",
"@types/react-router-dom": "^5.1.7",
"@types/remarkable": "^2.0.2",
- "@types/webpack-env": "^1.16.0",
"@typescript-eslint/eslint-plugin": "^4.26.1",
"@typescript-eslint/parser": "^4.26.1",
- "clean-webpack-plugin": "^3.0.0",
- "copy-webpack-plugin": "^9.0.0",
- "css-loader": "^5.2.6",
+ "@vitejs/plugin-react-refresh": "^1.3.3",
"eslint": "^7.28.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^3.4.0",
"eslint-plugin-react": "^7.24.0",
"eslint-plugin-react-hooks": "^4.2.0",
- "file-loader": "^6.2.0",
- "html-webpack-plugin": "5.3.1",
- "mini-css-extract-plugin": "^1.6.0",
"postcss": "^8.3.0",
- "postcss-loader": "^5.3.0",
"postcss-preset-env": "^6.7.0",
"prettier": "^2.3.1",
- "react-refresh": "^0.10.0",
- "react-refresh-typescript": "^2.0.1",
"sass": "^1.34.1",
- "sass-loader": "^12.0.0",
- "style-loader": "^2.0.0",
- "ts-loader": "^9.2.3",
"typescript": "^4.3.2",
- "url-loader": "^4.1.1",
- "webpack": "^5.38.1",
- "webpack-chain": "^6.5.1",
- "webpack-cli": "^4.7.2",
- "webpack-dev-server": "^4.0.0-beta.3",
- "workbox-webpack-plugin": "^6.1.5"
+ "vite": "^2.3.7"
}
}
diff --git a/FrontEnd/src/app/App.tsx b/FrontEnd/src/App.tsx
index a4363ff5..a4363ff5 100644
--- a/FrontEnd/src/app/App.tsx
+++ b/FrontEnd/src/App.tsx
diff --git a/FrontEnd/src/app/tsconfig.json b/FrontEnd/src/app/tsconfig.json
deleted file mode 100644
index 17ee69cb..00000000
--- a/FrontEnd/src/app/tsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "extends": "../tsconfig.json",
- "compilerOptions": {
- "lib": [
- "dom",
- "dom.iterable",
- "esnext"
- ]
- },
- "include": [
- "."
- ]
-}
diff --git a/FrontEnd/src/app/typings.d.ts b/FrontEnd/src/app/typings.d.ts
deleted file mode 100644
index 34381682..00000000
--- a/FrontEnd/src/app/typings.d.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-declare module "*.png" {
- const content: string;
- export default content;
-}
-
-declare module "*.jpeg" {
- const content: string;
- export default content;
-}
-
-declare module "*.jpg" {
- const content: string;
- export default content;
-}
-
-declare module "*.gif" {
- const content: string;
- export default content;
-}
-
-declare module "*.svg" {
- const content: string;
- export default content;
-}
diff --git a/FrontEnd/src/app/common.ts b/FrontEnd/src/common.ts
index 1a4f6dda..1a4f6dda 100644
--- a/FrontEnd/src/app/common.ts
+++ b/FrontEnd/src/common.ts
diff --git a/FrontEnd/src/app/http/bookmark.ts b/FrontEnd/src/http/bookmark.ts
index 3e5be229..3e5be229 100644
--- a/FrontEnd/src/app/http/bookmark.ts
+++ b/FrontEnd/src/http/bookmark.ts
diff --git a/FrontEnd/src/app/http/common.ts b/FrontEnd/src/http/common.ts
index e1672985..e1672985 100644
--- a/FrontEnd/src/app/http/common.ts
+++ b/FrontEnd/src/http/common.ts
diff --git a/FrontEnd/src/app/http/highlight.ts b/FrontEnd/src/http/highlight.ts
index fddf0729..fddf0729 100644
--- a/FrontEnd/src/app/http/highlight.ts
+++ b/FrontEnd/src/http/highlight.ts
diff --git a/FrontEnd/src/app/http/search.ts b/FrontEnd/src/http/search.ts
index 8ca48fe9..8ca48fe9 100644
--- a/FrontEnd/src/app/http/search.ts
+++ b/FrontEnd/src/http/search.ts
diff --git a/FrontEnd/src/app/http/timeline.ts b/FrontEnd/src/http/timeline.ts
index 9697c1a0..9697c1a0 100644
--- a/FrontEnd/src/app/http/timeline.ts
+++ b/FrontEnd/src/http/timeline.ts
diff --git a/FrontEnd/src/app/http/token.ts b/FrontEnd/src/http/token.ts
index f8b09d63..f8b09d63 100644
--- a/FrontEnd/src/app/http/token.ts
+++ b/FrontEnd/src/http/token.ts
diff --git a/FrontEnd/src/app/http/user.ts b/FrontEnd/src/http/user.ts
index dcf24cba..dcf24cba 100644
--- a/FrontEnd/src/app/http/user.ts
+++ b/FrontEnd/src/http/user.ts
diff --git a/FrontEnd/src/app/i18n.ts b/FrontEnd/src/i18n.ts
index 5b8e9d41..8caf51ec 100644
--- a/FrontEnd/src/app/i18n.ts
+++ b/FrontEnd/src/i18n.ts
@@ -71,8 +71,8 @@ export const i18nPromise = i18n
*/
});
-if (module.hot) {
- module.hot.accept(
+if (import.meta.hot) {
+ import.meta.hot.accept(
[
"./locales/en/translation.json",
"./locales/zh/translation.json",
diff --git a/FrontEnd/src/app/index.ejs b/FrontEnd/src/index.ejs
index c2ff4182..c2ff4182 100644
--- a/FrontEnd/src/app/index.ejs
+++ b/FrontEnd/src/index.ejs
diff --git a/FrontEnd/src/app/index.sass b/FrontEnd/src/index.sass
index 4cee155f..4cee155f 100644
--- a/FrontEnd/src/app/index.sass
+++ b/FrontEnd/src/index.sass
diff --git a/FrontEnd/src/app/index.tsx b/FrontEnd/src/index.tsx
index fb0c8899..fb0c8899 100644
--- a/FrontEnd/src/app/index.tsx
+++ b/FrontEnd/src/index.tsx
diff --git a/FrontEnd/src/app/locales/en/admin.json b/FrontEnd/src/locales/en/admin.json
index ddb3ffad..ddb3ffad 100644
--- a/FrontEnd/src/app/locales/en/admin.json
+++ b/FrontEnd/src/locales/en/admin.json
diff --git a/FrontEnd/src/app/locales/en/translation.json b/FrontEnd/src/locales/en/translation.json
index a2766b4e..a2766b4e 100644
--- a/FrontEnd/src/app/locales/en/translation.json
+++ b/FrontEnd/src/locales/en/translation.json
diff --git a/FrontEnd/src/app/locales/zh/admin.json b/FrontEnd/src/locales/zh/admin.json
index edd1cabd..edd1cabd 100644
--- a/FrontEnd/src/app/locales/zh/admin.json
+++ b/FrontEnd/src/locales/zh/admin.json
diff --git a/FrontEnd/src/app/locales/zh/translation.json b/FrontEnd/src/locales/zh/translation.json
index 5a5a6843..5a5a6843 100644
--- a/FrontEnd/src/app/locales/zh/translation.json
+++ b/FrontEnd/src/locales/zh/translation.json
diff --git a/FrontEnd/src/app/palette.ts b/FrontEnd/src/palette.ts
index c4f4f4f9..c4f4f4f9 100644
--- a/FrontEnd/src/app/palette.ts
+++ b/FrontEnd/src/palette.ts
diff --git a/FrontEnd/src/app/service-worker.tsx b/FrontEnd/src/service-worker.txt
index ea8dfc32..ea8dfc32 100644
--- a/FrontEnd/src/app/service-worker.tsx
+++ b/FrontEnd/src/service-worker.txt
diff --git a/FrontEnd/src/app/services/TimelinePostBuilder.ts b/FrontEnd/src/services/TimelinePostBuilder.ts
index 40279eca..fe4c7a9a 100644
--- a/FrontEnd/src/app/services/TimelinePostBuilder.ts
+++ b/FrontEnd/src/services/TimelinePostBuilder.ts
@@ -2,8 +2,8 @@ import { Remarkable } from "remarkable";
import { UiLogicError } from "@/common";
-import { base64 } from "@/http/common";
-import { HttpTimelinePostPostRequest } from "@/http/timeline";
+import { base64 } from "http/common";
+import { HttpTimelinePostPostRequest } from "http/timeline";
export default class TimelinePostBuilder {
private _onChange: () => void;
diff --git a/FrontEnd/src/app/services/alert.ts b/FrontEnd/src/services/alert.ts
index 48d482ea..48d482ea 100644
--- a/FrontEnd/src/app/services/alert.ts
+++ b/FrontEnd/src/services/alert.ts
diff --git a/FrontEnd/src/app/services/timeline.ts b/FrontEnd/src/services/timeline.ts
index d8c0ae00..4ebb705d 100644
--- a/FrontEnd/src/app/services/timeline.ts
+++ b/FrontEnd/src/services/timeline.ts
@@ -1,9 +1,9 @@
-import { TimelineVisibility } from "@/http/timeline";
+import { TimelineVisibility } from "http/timeline";
import XRegExp from "xregexp";
import { Observable } from "rxjs";
import { HubConnectionBuilder, HubConnectionState } from "@microsoft/signalr";
-import { getHttpToken } from "@/http/common";
+import { getHttpToken } from "http/common";
const timelineNameReg = XRegExp("^[-_\\p{L}]*$", "u");
diff --git a/FrontEnd/src/app/services/user.ts b/FrontEnd/src/services/user.ts
index 9a8e5687..3375c88a 100644
--- a/FrontEnd/src/app/services/user.ts
+++ b/FrontEnd/src/services/user.ts
@@ -3,12 +3,12 @@ import { BehaviorSubject, Observable } from "rxjs";
import { UiLogicError } from "@/common";
-import { HttpNetworkError, setHttpToken } from "@/http/common";
+import { HttpNetworkError, setHttpToken } from "http/common";
import {
getHttpTokenClient,
HttpCreateTokenBadCredentialError,
-} from "@/http/token";
-import { getHttpUserClient, HttpUser, UserPermission } from "@/http/user";
+} from "http/token";
+import { getHttpUserClient, HttpUser, UserPermission } from "http/user";
import { pushAlert } from "./alert";
diff --git a/FrontEnd/src/sw/sw.ts b/FrontEnd/src/sw/sw.ts
deleted file mode 100644
index 724804dd..00000000
--- a/FrontEnd/src/sw/sw.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import { precacheAndRoute, matchPrecache } from "workbox-precaching";
-import { registerRoute, setDefaultHandler } from "workbox-routing";
-import {
- NetworkFirst,
- NetworkOnly,
- StaleWhileRevalidate,
-} from "workbox-strategies";
-import { CacheableResponsePlugin } from "workbox-cacheable-response";
-import { ExpirationPlugin } from "workbox-expiration";
-
-declare let self: ServiceWorkerGlobalScope;
-
-self.addEventListener("message", (event) => {
- if (event.data && (event.data as { type: string }).type === "SKIP_WAITING") {
- void self.skipWaiting();
- }
-});
-
-precacheAndRoute(self.__WB_MANIFEST);
-
-const networkOnly = new NetworkOnly();
-
-registerRoute(new RegExp("/swagger/?.*"), new NetworkOnly());
-
-registerRoute(new RegExp("/api/token/?.*"), new NetworkOnly());
-registerRoute(new RegExp("/api/search/?.*"), new NetworkOnly());
-
-registerRoute(
- new RegExp("/api/users/.+/avatar"),
- new StaleWhileRevalidate({
- cacheName: "avatars",
- plugins: [
- new CacheableResponsePlugin({
- statuses: [200],
- }),
- new ExpirationPlugin({
- maxAgeSeconds: 60 * 60 * 24 * 30 * 3, // 3 months
- }),
- ],
- })
-);
-
-registerRoute(
- new RegExp("/api/?.*"),
- new NetworkFirst({
- plugins: [
- new CacheableResponsePlugin({
- statuses: [200],
- }),
- ],
- })
-);
-
-setDefaultHandler((options) => {
- const { request } = options;
-
- if (request instanceof Request && request.destination === "document")
- return matchPrecache("/index.html").then((r) =>
- r == null ? Response.error() : r
- );
- else return networkOnly.handle(options);
-});
diff --git a/FrontEnd/src/sw/tsconfig.json b/FrontEnd/src/sw/tsconfig.json
deleted file mode 100644
index 71fc0bcd..00000000
--- a/FrontEnd/src/sw/tsconfig.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "extends": "../tsconfig.json",
- "compilerOptions": {
- "lib": [
- "esnext",
- "webworker"
- ]
- },
- "include": [
- "."
- ]
-}
diff --git a/FrontEnd/src/tsconfig.json b/FrontEnd/src/tsconfig.json
index 21989043..817c50bd 100644
--- a/FrontEnd/src/tsconfig.json
+++ b/FrontEnd/src/tsconfig.json
@@ -1,6 +1,5 @@
{
"compilerOptions": {
- "target": "ES6",
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
@@ -12,10 +11,13 @@
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "react",
+ "types": ["vite/client"],
"sourceMap": true,
"baseUrl": "./",
"paths": {
- "@/*": ["app/*"]
- }
- }
+ "@/*": ["*"]
+ },
+ "lib": ["dom", "dom.iterable", "esnext"]
+ },
+ "include": ["."]
}
diff --git a/FrontEnd/src/app/utilities/mediaQuery.ts b/FrontEnd/src/utilities/mediaQuery.ts
index ad55c3c0..ad55c3c0 100644
--- a/FrontEnd/src/app/utilities/mediaQuery.ts
+++ b/FrontEnd/src/utilities/mediaQuery.ts
diff --git a/FrontEnd/src/app/utilities/url.ts b/FrontEnd/src/utilities/url.ts
index 4f2a6ecd..4f2a6ecd 100644
--- a/FrontEnd/src/app/utilities/url.ts
+++ b/FrontEnd/src/utilities/url.ts
diff --git a/FrontEnd/src/app/utilities/useReverseScrollPositionRemember.ts b/FrontEnd/src/utilities/useReverseScrollPositionRemember.ts
index a5812808..a5812808 100644
--- a/FrontEnd/src/app/utilities/useReverseScrollPositionRemember.ts
+++ b/FrontEnd/src/utilities/useReverseScrollPositionRemember.ts
diff --git a/FrontEnd/src/app/utilities/useScrollToTop.ts b/FrontEnd/src/utilities/useScrollToTop.ts
index 892e3545..892e3545 100644
--- a/FrontEnd/src/app/utilities/useScrollToTop.ts
+++ b/FrontEnd/src/utilities/useScrollToTop.ts
diff --git a/FrontEnd/src/app/views/about/about.sass b/FrontEnd/src/views/about/about.sass
index f4d00cae..f4d00cae 100644
--- a/FrontEnd/src/app/views/about/about.sass
+++ b/FrontEnd/src/views/about/about.sass
diff --git a/FrontEnd/src/app/views/about/author-avatar.png b/FrontEnd/src/views/about/author-avatar.png
index d890d8d0..d890d8d0 100644
--- a/FrontEnd/src/app/views/about/author-avatar.png
+++ b/FrontEnd/src/views/about/author-avatar.png
Binary files differ
diff --git a/FrontEnd/src/app/views/about/github.png b/FrontEnd/src/views/about/github.png
index ea6ff545..ea6ff545 100644
--- a/FrontEnd/src/app/views/about/github.png
+++ b/FrontEnd/src/views/about/github.png
Binary files differ
diff --git a/FrontEnd/src/app/views/about/index.tsx b/FrontEnd/src/views/about/index.tsx
index a8a53a97..a8a53a97 100644
--- a/FrontEnd/src/app/views/about/index.tsx
+++ b/FrontEnd/src/views/about/index.tsx
diff --git a/FrontEnd/src/app/views/admin/Admin.tsx b/FrontEnd/src/views/admin/Admin.tsx
index 0b6d1f05..0b6d1f05 100644
--- a/FrontEnd/src/app/views/admin/Admin.tsx
+++ b/FrontEnd/src/views/admin/Admin.tsx
diff --git a/FrontEnd/src/app/views/admin/AdminNav.tsx b/FrontEnd/src/views/admin/AdminNav.tsx
index 47e2138f..47e2138f 100644
--- a/FrontEnd/src/app/views/admin/AdminNav.tsx
+++ b/FrontEnd/src/views/admin/AdminNav.tsx
diff --git a/FrontEnd/src/app/views/admin/MoreAdmin.tsx b/FrontEnd/src/views/admin/MoreAdmin.tsx
index 042789a0..042789a0 100644
--- a/FrontEnd/src/app/views/admin/MoreAdmin.tsx
+++ b/FrontEnd/src/views/admin/MoreAdmin.tsx
diff --git a/FrontEnd/src/app/views/admin/UserAdmin.tsx b/FrontEnd/src/views/admin/UserAdmin.tsx
index 558d3aee..4e9cd600 100644
--- a/FrontEnd/src/app/views/admin/UserAdmin.tsx
+++ b/FrontEnd/src/views/admin/UserAdmin.tsx
@@ -12,7 +12,7 @@ import {
HttpUser,
kUserPermissionList,
UserPermission,
-} from "@/http/user";
+} from "http/user";
import { Trans, useTranslation } from "react-i18next";
interface DialogProps<TData = undefined, TReturn = undefined> {
diff --git a/FrontEnd/src/app/views/admin/admin.sass b/FrontEnd/src/views/admin/admin.sass
index 1ce010f8..1ce010f8 100644
--- a/FrontEnd/src/app/views/admin/admin.sass
+++ b/FrontEnd/src/views/admin/admin.sass
diff --git a/FrontEnd/src/app/views/center/CenterBoards.tsx b/FrontEnd/src/views/center/CenterBoards.tsx
index f5200415..431d1e9a 100644
--- a/FrontEnd/src/app/views/center/CenterBoards.tsx
+++ b/FrontEnd/src/views/center/CenterBoards.tsx
@@ -5,9 +5,9 @@ import { useTranslation } from "react-i18next";
import { pushAlert } from "@/services/alert";
import { useUserLoggedIn } from "@/services/user";
-import { getHttpTimelineClient } from "@/http/timeline";
-import { getHttpBookmarkClient } from "@/http/bookmark";
-import { getHttpHighlightClient } from "@/http/highlight";
+import { getHttpTimelineClient } from "http/timeline";
+import { getHttpBookmarkClient } from "http/bookmark";
+import { getHttpHighlightClient } from "http/highlight";
import TimelineBoard from "./TimelineBoard";
diff --git a/FrontEnd/src/app/views/center/TimelineBoard.tsx b/FrontEnd/src/views/center/TimelineBoard.tsx
index 35249f66..bb80266b 100644
--- a/FrontEnd/src/app/views/center/TimelineBoard.tsx
+++ b/FrontEnd/src/views/center/TimelineBoard.tsx
@@ -4,7 +4,7 @@ import { Link } from "react-router-dom";
import { useTranslation } from "react-i18next";
import { Spinner } from "react-bootstrap";
-import { HttpTimelineInfo } from "@/http/timeline";
+import { HttpTimelineInfo } from "http/timeline";
import TimelineLogo from "../common/TimelineLogo";
import UserTimelineLogo from "../common/UserTimelineLogo";
diff --git a/FrontEnd/src/app/views/center/TimelineCreateDialog.tsx b/FrontEnd/src/views/center/TimelineCreateDialog.tsx
index b4e25ba1..a2437ae5 100644
--- a/FrontEnd/src/app/views/center/TimelineCreateDialog.tsx
+++ b/FrontEnd/src/views/center/TimelineCreateDialog.tsx
@@ -3,7 +3,7 @@ import { useHistory } from "react-router";
import { validateTimelineName } from "@/services/timeline";
import OperationDialog from "../common/OperationDialog";
-import { getHttpTimelineClient, HttpTimelineInfo } from "@/http/timeline";
+import { getHttpTimelineClient, HttpTimelineInfo } from "http/timeline";
interface TimelineCreateDialogProps {
open: boolean;
diff --git a/FrontEnd/src/app/views/center/center.sass b/FrontEnd/src/views/center/center.sass
index c0dfb9c0..c0dfb9c0 100644
--- a/FrontEnd/src/app/views/center/center.sass
+++ b/FrontEnd/src/views/center/center.sass
diff --git a/FrontEnd/src/app/views/center/index.tsx b/FrontEnd/src/views/center/index.tsx
index 0a2abb2c..0a2abb2c 100644
--- a/FrontEnd/src/app/views/center/index.tsx
+++ b/FrontEnd/src/views/center/index.tsx
diff --git a/FrontEnd/src/app/views/common/AppBar.tsx b/FrontEnd/src/views/common/AppBar.tsx
index 91dfbee9..91dfbee9 100644
--- a/FrontEnd/src/app/views/common/AppBar.tsx
+++ b/FrontEnd/src/views/common/AppBar.tsx
diff --git a/FrontEnd/src/app/views/common/BlobImage.tsx b/FrontEnd/src/views/common/BlobImage.tsx
index 0dd25c52..0dd25c52 100644
--- a/FrontEnd/src/app/views/common/BlobImage.tsx
+++ b/FrontEnd/src/views/common/BlobImage.tsx
diff --git a/FrontEnd/src/app/views/common/ConfirmDialog.tsx b/FrontEnd/src/views/common/ConfirmDialog.tsx
index 72940c51..72940c51 100644
--- a/FrontEnd/src/app/views/common/ConfirmDialog.tsx
+++ b/FrontEnd/src/views/common/ConfirmDialog.tsx
diff --git a/FrontEnd/src/app/views/common/FlatButton.tsx b/FrontEnd/src/views/common/FlatButton.tsx
index b1f7a051..b1f7a051 100644
--- a/FrontEnd/src/app/views/common/FlatButton.tsx
+++ b/FrontEnd/src/views/common/FlatButton.tsx
diff --git a/FrontEnd/src/app/views/common/FullPage.tsx b/FrontEnd/src/views/common/FullPage.tsx
index 1b59045a..1b59045a 100644
--- a/FrontEnd/src/app/views/common/FullPage.tsx
+++ b/FrontEnd/src/views/common/FullPage.tsx
diff --git a/FrontEnd/src/app/views/common/ImageCropper.tsx b/FrontEnd/src/views/common/ImageCropper.tsx
index 2ef5b7ed..2ef5b7ed 100644
--- a/FrontEnd/src/app/views/common/ImageCropper.tsx
+++ b/FrontEnd/src/views/common/ImageCropper.tsx
diff --git a/FrontEnd/src/app/views/common/LoadFailReload.tsx b/FrontEnd/src/views/common/LoadFailReload.tsx
index a80e7b76..a80e7b76 100644
--- a/FrontEnd/src/app/views/common/LoadFailReload.tsx
+++ b/FrontEnd/src/views/common/LoadFailReload.tsx
diff --git a/FrontEnd/src/app/views/common/LoadingButton.tsx b/FrontEnd/src/views/common/LoadingButton.tsx
index cd9f1adc..cd9f1adc 100644
--- a/FrontEnd/src/app/views/common/LoadingButton.tsx
+++ b/FrontEnd/src/views/common/LoadingButton.tsx
diff --git a/FrontEnd/src/app/views/common/LoadingPage.tsx b/FrontEnd/src/views/common/LoadingPage.tsx
index 590fafa0..590fafa0 100644
--- a/FrontEnd/src/app/views/common/LoadingPage.tsx
+++ b/FrontEnd/src/views/common/LoadingPage.tsx
diff --git a/FrontEnd/src/app/views/common/Menu.tsx b/FrontEnd/src/views/common/Menu.tsx
index ae73a331..ae73a331 100644
--- a/FrontEnd/src/app/views/common/Menu.tsx
+++ b/FrontEnd/src/views/common/Menu.tsx
diff --git a/FrontEnd/src/app/views/common/OperationDialog.tsx b/FrontEnd/src/views/common/OperationDialog.tsx
index ac4c51b9..ac4c51b9 100644
--- a/FrontEnd/src/app/views/common/OperationDialog.tsx
+++ b/FrontEnd/src/views/common/OperationDialog.tsx
diff --git a/FrontEnd/src/app/views/common/SearchInput.tsx b/FrontEnd/src/views/common/SearchInput.tsx
index ccb6dad6..ccb6dad6 100644
--- a/FrontEnd/src/app/views/common/SearchInput.tsx
+++ b/FrontEnd/src/views/common/SearchInput.tsx
diff --git a/FrontEnd/src/app/views/common/Skeleton.tsx b/FrontEnd/src/views/common/Skeleton.tsx
index 14886c71..14886c71 100644
--- a/FrontEnd/src/app/views/common/Skeleton.tsx
+++ b/FrontEnd/src/views/common/Skeleton.tsx
diff --git a/FrontEnd/src/app/views/common/TabPages.tsx b/FrontEnd/src/views/common/TabPages.tsx
index 2b1d91cb..2b1d91cb 100644
--- a/FrontEnd/src/app/views/common/TabPages.tsx
+++ b/FrontEnd/src/views/common/TabPages.tsx
diff --git a/FrontEnd/src/app/views/common/TimelineLogo.tsx b/FrontEnd/src/views/common/TimelineLogo.tsx
index 27d188fc..27d188fc 100644
--- a/FrontEnd/src/app/views/common/TimelineLogo.tsx
+++ b/FrontEnd/src/views/common/TimelineLogo.tsx
diff --git a/FrontEnd/src/app/views/common/ToggleIconButton.tsx b/FrontEnd/src/views/common/ToggleIconButton.tsx
index c4d2d132..c4d2d132 100644
--- a/FrontEnd/src/app/views/common/ToggleIconButton.tsx
+++ b/FrontEnd/src/views/common/ToggleIconButton.tsx
diff --git a/FrontEnd/src/app/views/common/UserTimelineLogo.tsx b/FrontEnd/src/views/common/UserTimelineLogo.tsx
index 19b9fee5..19b9fee5 100644
--- a/FrontEnd/src/app/views/common/UserTimelineLogo.tsx
+++ b/FrontEnd/src/views/common/UserTimelineLogo.tsx
diff --git a/FrontEnd/src/app/views/common/alert/AlertHost.tsx b/FrontEnd/src/views/common/alert/AlertHost.tsx
index 949be7ed..949be7ed 100644
--- a/FrontEnd/src/app/views/common/alert/AlertHost.tsx
+++ b/FrontEnd/src/views/common/alert/AlertHost.tsx
diff --git a/FrontEnd/src/app/views/common/alert/alert.sass b/FrontEnd/src/views/common/alert/alert.sass
index c3560b87..c3560b87 100644
--- a/FrontEnd/src/app/views/common/alert/alert.sass
+++ b/FrontEnd/src/views/common/alert/alert.sass
diff --git a/FrontEnd/src/app/views/common/common.sass b/FrontEnd/src/views/common/common.sass
index cbf7292e..cbf7292e 100644
--- a/FrontEnd/src/app/views/common/common.sass
+++ b/FrontEnd/src/views/common/common.sass
diff --git a/FrontEnd/src/app/views/common/user/UserAvatar.tsx b/FrontEnd/src/views/common/user/UserAvatar.tsx
index 9e822528..901697db 100644
--- a/FrontEnd/src/app/views/common/user/UserAvatar.tsx
+++ b/FrontEnd/src/views/common/user/UserAvatar.tsx
@@ -1,6 +1,6 @@
import React from "react";
-import { getHttpUserClient } from "@/http/user";
+import { getHttpUserClient } from "http/user";
export interface UserAvatarProps
extends React.ImgHTMLAttributes<HTMLImageElement> {
diff --git a/FrontEnd/src/app/views/home/TimelineListView.tsx b/FrontEnd/src/views/home/TimelineListView.tsx
index 95c3c367..975875af 100644
--- a/FrontEnd/src/app/views/home/TimelineListView.tsx
+++ b/FrontEnd/src/views/home/TimelineListView.tsx
@@ -2,7 +2,7 @@ import React from "react";
import { convertI18nText, I18nText } from "@/common";
-import { HttpTimelineInfo } from "@/http/timeline";
+import { HttpTimelineInfo } from "http/timeline";
import { useTranslation } from "react-i18next";
import { Link } from "react-router-dom";
diff --git a/FrontEnd/src/app/views/home/WebsiteIntroduction.tsx b/FrontEnd/src/views/home/WebsiteIntroduction.tsx
index aea7b4b2..aea7b4b2 100644
--- a/FrontEnd/src/app/views/home/WebsiteIntroduction.tsx
+++ b/FrontEnd/src/views/home/WebsiteIntroduction.tsx
diff --git a/FrontEnd/src/app/views/home/home.sass b/FrontEnd/src/views/home/home.sass
index b4cda586..b4cda586 100644
--- a/FrontEnd/src/app/views/home/home.sass
+++ b/FrontEnd/src/views/home/home.sass
diff --git a/FrontEnd/src/app/views/home/index.tsx b/FrontEnd/src/views/home/index.tsx
index 0eca23ee..efc364d7 100644
--- a/FrontEnd/src/app/views/home/index.tsx
+++ b/FrontEnd/src/views/home/index.tsx
@@ -1,8 +1,8 @@
import React from "react";
import { useHistory } from "react-router";
-import { HttpTimelineInfo } from "@/http/timeline";
-import { getHttpHighlightClient } from "@/http/highlight";
+import { HttpTimelineInfo } from "http/timeline";
+import { getHttpHighlightClient } from "http/highlight";
import SearchInput from "../common/SearchInput";
import TimelineListView from "./TimelineListView";
diff --git a/FrontEnd/src/app/views/login/index.tsx b/FrontEnd/src/views/login/index.tsx
index 6adcef39..6adcef39 100644
--- a/FrontEnd/src/app/views/login/index.tsx
+++ b/FrontEnd/src/views/login/index.tsx
diff --git a/FrontEnd/src/app/views/login/login.sass b/FrontEnd/src/views/login/login.sass
index 0bf385f5..0bf385f5 100644
--- a/FrontEnd/src/app/views/login/login.sass
+++ b/FrontEnd/src/views/login/login.sass
diff --git a/FrontEnd/src/app/views/search/index.tsx b/FrontEnd/src/views/search/index.tsx
index 966ca666..14a9709c 100644
--- a/FrontEnd/src/app/views/search/index.tsx
+++ b/FrontEnd/src/views/search/index.tsx
@@ -4,9 +4,9 @@ import { Container, Row } from "react-bootstrap";
import { useHistory, useLocation } from "react-router";
import { Link } from "react-router-dom";
-import { HttpNetworkError } from "@/http/common";
-import { getHttpSearchClient } from "@/http/search";
-import { HttpTimelineInfo } from "@/http/timeline";
+import { HttpNetworkError } from "http/common";
+import { getHttpSearchClient } from "http/search";
+import { HttpTimelineInfo } from "http/timeline";
import SearchInput from "../common/SearchInput";
import UserAvatar from "../common/user/UserAvatar";
diff --git a/FrontEnd/src/app/views/search/search.sass b/FrontEnd/src/views/search/search.sass
index 83f297fe..83f297fe 100644
--- a/FrontEnd/src/app/views/search/search.sass
+++ b/FrontEnd/src/views/search/search.sass
diff --git a/FrontEnd/src/app/views/settings/ChangeAvatarDialog.tsx b/FrontEnd/src/views/settings/ChangeAvatarDialog.tsx
index c4f6f492..338d2112 100644
--- a/FrontEnd/src/app/views/settings/ChangeAvatarDialog.tsx
+++ b/FrontEnd/src/views/settings/ChangeAvatarDialog.tsx
@@ -7,7 +7,7 @@ import { UiLogicError } from "@/common";
import { useUserLoggedIn } from "@/services/user";
-import { getHttpUserClient } from "@/http/user";
+import { getHttpUserClient } from "http/user";
import ImageCropper, { Clip, applyClipToImage } from "../common/ImageCropper";
diff --git a/FrontEnd/src/app/views/settings/ChangeNicknameDialog.tsx b/FrontEnd/src/views/settings/ChangeNicknameDialog.tsx
index 4b44cdd6..e6420f36 100644
--- a/FrontEnd/src/app/views/settings/ChangeNicknameDialog.tsx
+++ b/FrontEnd/src/views/settings/ChangeNicknameDialog.tsx
@@ -1,4 +1,4 @@
-import { getHttpUserClient } from "@/http/user";
+import { getHttpUserClient } from "http/user";
import { useUserLoggedIn } from "@/services/user";
import React from "react";
diff --git a/FrontEnd/src/app/views/settings/ChangePasswordDialog.tsx b/FrontEnd/src/views/settings/ChangePasswordDialog.tsx
index 21eeeb09..21eeeb09 100644
--- a/FrontEnd/src/app/views/settings/ChangePasswordDialog.tsx
+++ b/FrontEnd/src/views/settings/ChangePasswordDialog.tsx
diff --git a/FrontEnd/src/app/views/settings/index.tsx b/FrontEnd/src/views/settings/index.tsx
index 04a2777a..04a2777a 100644
--- a/FrontEnd/src/app/views/settings/index.tsx
+++ b/FrontEnd/src/views/settings/index.tsx
diff --git a/FrontEnd/src/app/views/settings/settings.sass b/FrontEnd/src/views/settings/settings.sass
index 8c6d24b8..8c6d24b8 100644
--- a/FrontEnd/src/app/views/settings/settings.sass
+++ b/FrontEnd/src/views/settings/settings.sass
diff --git a/FrontEnd/src/app/views/timeline-common/CollapseButton.tsx b/FrontEnd/src/views/timeline-common/CollapseButton.tsx
index 12a3b710..12a3b710 100644
--- a/FrontEnd/src/app/views/timeline-common/CollapseButton.tsx
+++ b/FrontEnd/src/views/timeline-common/CollapseButton.tsx
diff --git a/FrontEnd/src/app/views/timeline-common/ConnectionStatusBadge.tsx b/FrontEnd/src/views/timeline-common/ConnectionStatusBadge.tsx
index df43d8d2..df43d8d2 100644
--- a/FrontEnd/src/app/views/timeline-common/ConnectionStatusBadge.tsx
+++ b/FrontEnd/src/views/timeline-common/ConnectionStatusBadge.tsx
diff --git a/FrontEnd/src/app/views/timeline-common/MarkdownPostEdit.tsx b/FrontEnd/src/views/timeline-common/MarkdownPostEdit.tsx
index 685e17be..1514d28f 100644
--- a/FrontEnd/src/app/views/timeline-common/MarkdownPostEdit.tsx
+++ b/FrontEnd/src/views/timeline-common/MarkdownPostEdit.tsx
@@ -4,7 +4,7 @@ import { Form, Spinner } from "react-bootstrap";
import { useTranslation } from "react-i18next";
import { Prompt } from "react-router";
-import { getHttpTimelineClient, HttpTimelinePostInfo } from "@/http/timeline";
+import { getHttpTimelineClient, HttpTimelinePostInfo } from "http/timeline";
import FlatButton from "../common/FlatButton";
import TabPages from "../common/TabPages";
diff --git a/FrontEnd/src/app/views/timeline-common/PostPropertyChangeDialog.tsx b/FrontEnd/src/views/timeline-common/PostPropertyChangeDialog.tsx
index 001e52d7..21c5272e 100644
--- a/FrontEnd/src/app/views/timeline-common/PostPropertyChangeDialog.tsx
+++ b/FrontEnd/src/views/timeline-common/PostPropertyChangeDialog.tsx
@@ -1,6 +1,6 @@
import React from "react";
-import { getHttpTimelineClient, HttpTimelinePostInfo } from "@/http/timeline";
+import { getHttpTimelineClient, HttpTimelinePostInfo } from "http/timeline";
import OperationDialog from "../common/OperationDialog";
diff --git a/FrontEnd/src/app/views/timeline-common/Timeline.tsx b/FrontEnd/src/views/timeline-common/Timeline.tsx
index 589382b0..40619e64 100644
--- a/FrontEnd/src/app/views/timeline-common/Timeline.tsx
+++ b/FrontEnd/src/views/timeline-common/Timeline.tsx
@@ -5,8 +5,8 @@ import {
HttpForbiddenError,
HttpNetworkError,
HttpNotFoundError,
-} from "@/http/common";
-import { getHttpTimelineClient, HttpTimelinePostInfo } from "@/http/timeline";
+} from "http/common";
+import { getHttpTimelineClient, HttpTimelinePostInfo } from "http/timeline";
import { getTimelinePostUpdate$ } from "@/services/timeline";
diff --git a/FrontEnd/src/app/views/timeline-common/TimelineDateLabel.tsx b/FrontEnd/src/views/timeline-common/TimelineDateLabel.tsx
index 80968ee2..80968ee2 100644
--- a/FrontEnd/src/app/views/timeline-common/TimelineDateLabel.tsx
+++ b/FrontEnd/src/views/timeline-common/TimelineDateLabel.tsx
diff --git a/FrontEnd/src/app/views/timeline-common/TimelineLine.tsx b/FrontEnd/src/views/timeline-common/TimelineLine.tsx
index 0a828b32..0a828b32 100644
--- a/FrontEnd/src/app/views/timeline-common/TimelineLine.tsx
+++ b/FrontEnd/src/views/timeline-common/TimelineLine.tsx
diff --git a/FrontEnd/src/app/views/timeline-common/TimelineLoading.tsx b/FrontEnd/src/views/timeline-common/TimelineLoading.tsx
index fc42f4b4..fc42f4b4 100644
--- a/FrontEnd/src/app/views/timeline-common/TimelineLoading.tsx
+++ b/FrontEnd/src/views/timeline-common/TimelineLoading.tsx
diff --git a/FrontEnd/src/app/views/timeline-common/TimelineMember.tsx b/FrontEnd/src/views/timeline-common/TimelineMember.tsx
index 299d6a53..3d4de8b8 100644
--- a/FrontEnd/src/app/views/timeline-common/TimelineMember.tsx
+++ b/FrontEnd/src/views/timeline-common/TimelineMember.tsx
@@ -4,12 +4,12 @@ import { Container, ListGroup, Modal, Row, Col, Button } from "react-bootstrap";
import { convertI18nText, I18nText } from "@/common";
-import { HttpUser } from "@/http/user";
-import { getHttpSearchClient } from "@/http/search";
+import { HttpUser } from "http/user";
+import { getHttpSearchClient } from "http/search";
import SearchInput from "../common/SearchInput";
import UserAvatar from "../common/user/UserAvatar";
-import { getHttpTimelineClient, HttpTimelineInfo } from "@/http/timeline";
+import { getHttpTimelineClient, HttpTimelineInfo } from "http/timeline";
const TimelineMemberItem: React.FC<{
user: HttpUser;
diff --git a/FrontEnd/src/app/views/timeline-common/TimelinePageCardTemplate.tsx b/FrontEnd/src/views/timeline-common/TimelinePageCardTemplate.tsx
index 623d643f..038ea3ab 100644
--- a/FrontEnd/src/app/views/timeline-common/TimelinePageCardTemplate.tsx
+++ b/FrontEnd/src/views/timeline-common/TimelinePageCardTemplate.tsx
@@ -2,8 +2,8 @@ import React from "react";
import classnames from "classnames";
import { useTranslation } from "react-i18next";
-import { getHttpHighlightClient } from "@/http/highlight";
-import { getHttpBookmarkClient } from "@/http/bookmark";
+import { getHttpHighlightClient } from "http/highlight";
+import { getHttpBookmarkClient } from "http/bookmark";
import { useUser } from "@/services/user";
import { pushAlert } from "@/services/alert";
diff --git a/FrontEnd/src/app/views/timeline-common/TimelinePageTemplate.tsx b/FrontEnd/src/views/timeline-common/TimelinePageTemplate.tsx
index 658ce502..44926cc6 100644
--- a/FrontEnd/src/app/views/timeline-common/TimelinePageTemplate.tsx
+++ b/FrontEnd/src/views/timeline-common/TimelinePageTemplate.tsx
@@ -3,8 +3,8 @@ import { useTranslation } from "react-i18next";
import { Container } from "react-bootstrap";
import { HubConnectionState } from "@microsoft/signalr";
-import { HttpNetworkError, HttpNotFoundError } from "@/http/common";
-import { getHttpTimelineClient, HttpTimelineInfo } from "@/http/timeline";
+import { HttpNetworkError, HttpNotFoundError } from "http/common";
+import { getHttpTimelineClient, HttpTimelineInfo } from "http/timeline";
import { getAlertHost } from "@/services/alert";
diff --git a/FrontEnd/src/app/views/timeline-common/TimelinePagedPostListView.tsx b/FrontEnd/src/views/timeline-common/TimelinePagedPostListView.tsx
index 37f02a82..d569a2d7 100644
--- a/FrontEnd/src/app/views/timeline-common/TimelinePagedPostListView.tsx
+++ b/FrontEnd/src/views/timeline-common/TimelinePagedPostListView.tsx
@@ -1,6 +1,6 @@
import React from "react";
-import { HttpTimelinePostInfo } from "@/http/timeline";
+import { HttpTimelinePostInfo } from "http/timeline";
import useScrollToTop from "@/utilities/useScrollToTop";
diff --git a/FrontEnd/src/app/views/timeline-common/TimelinePostContentView.tsx b/FrontEnd/src/views/timeline-common/TimelinePostContentView.tsx
index 607b72c9..f1b53335 100644
--- a/FrontEnd/src/app/views/timeline-common/TimelinePostContentView.tsx
+++ b/FrontEnd/src/views/timeline-common/TimelinePostContentView.tsx
@@ -4,8 +4,8 @@ import { Remarkable } from "remarkable";
import { UiLogicError } from "@/common";
-import { HttpNetworkError } from "@/http/common";
-import { getHttpTimelineClient, HttpTimelinePostInfo } from "@/http/timeline";
+import { HttpNetworkError } from "http/common";
+import { getHttpTimelineClient, HttpTimelinePostInfo } from "http/timeline";
import { useUser } from "@/services/user";
diff --git a/FrontEnd/src/app/views/timeline-common/TimelinePostDeleteConfirmDialog.tsx b/FrontEnd/src/views/timeline-common/TimelinePostDeleteConfirmDialog.tsx
index b2c7a470..b2c7a470 100644
--- a/FrontEnd/src/app/views/timeline-common/TimelinePostDeleteConfirmDialog.tsx
+++ b/FrontEnd/src/views/timeline-common/TimelinePostDeleteConfirmDialog.tsx
diff --git a/FrontEnd/src/app/views/timeline-common/TimelinePostEdit.tsx b/FrontEnd/src/views/timeline-common/TimelinePostEdit.tsx
index 5f3f0345..0f470fd6 100644
--- a/FrontEnd/src/app/views/timeline-common/TimelinePostEdit.tsx
+++ b/FrontEnd/src/views/timeline-common/TimelinePostEdit.tsx
@@ -10,10 +10,10 @@ import {
HttpTimelineInfo,
HttpTimelinePostInfo,
HttpTimelinePostPostRequestData,
-} from "@/http/timeline";
+} from "http/timeline";
import { pushAlert } from "@/services/alert";
-import { base64 } from "@/http/common";
+import { base64 } from "http/common";
import BlobImage from "../common/BlobImage";
import LoadingButton from "../common/LoadingButton";
diff --git a/FrontEnd/src/app/views/timeline-common/TimelinePostListView.tsx b/FrontEnd/src/views/timeline-common/TimelinePostListView.tsx
index ba204b72..49284720 100644
--- a/FrontEnd/src/app/views/timeline-common/TimelinePostListView.tsx
+++ b/FrontEnd/src/views/timeline-common/TimelinePostListView.tsx
@@ -1,7 +1,7 @@
import React, { Fragment } from "react";
import classnames from "classnames";
-import { HttpTimelinePostInfo } from "@/http/timeline";
+import { HttpTimelinePostInfo } from "http/timeline";
import TimelinePostView from "./TimelinePostView";
import TimelineDateLabel from "./TimelineDateLabel";
diff --git a/FrontEnd/src/app/views/timeline-common/TimelinePostView.tsx b/FrontEnd/src/views/timeline-common/TimelinePostView.tsx
index f7b81478..e8b32c71 100644
--- a/FrontEnd/src/app/views/timeline-common/TimelinePostView.tsx
+++ b/FrontEnd/src/views/timeline-common/TimelinePostView.tsx
@@ -3,7 +3,7 @@ import classnames from "classnames";
import { Link } from "react-router-dom";
import { useTranslation } from "react-i18next";
-import { getHttpTimelineClient, HttpTimelinePostInfo } from "@/http/timeline";
+import { getHttpTimelineClient, HttpTimelinePostInfo } from "http/timeline";
import { pushAlert } from "@/services/alert";
diff --git a/FrontEnd/src/app/views/timeline-common/TimelinePropertyChangeDialog.tsx b/FrontEnd/src/views/timeline-common/TimelinePropertyChangeDialog.tsx
index 70f72025..83b24d01 100644
--- a/FrontEnd/src/app/views/timeline-common/TimelinePropertyChangeDialog.tsx
+++ b/FrontEnd/src/views/timeline-common/TimelinePropertyChangeDialog.tsx
@@ -6,7 +6,7 @@ import {
HttpTimelinePatchRequest,
kTimelineVisibilities,
TimelineVisibility,
-} from "@/http/timeline";
+} from "http/timeline";
import OperationDialog from "../common/OperationDialog";
diff --git a/FrontEnd/src/app/views/timeline-common/TimelineTop.tsx b/FrontEnd/src/views/timeline-common/TimelineTop.tsx
index dabbdf1e..dabbdf1e 100644
--- a/FrontEnd/src/app/views/timeline-common/TimelineTop.tsx
+++ b/FrontEnd/src/views/timeline-common/TimelineTop.tsx
diff --git a/FrontEnd/src/app/views/timeline-common/timeline-common.sass b/FrontEnd/src/views/timeline-common/timeline-common.sass
index 4400fead..4400fead 100644
--- a/FrontEnd/src/app/views/timeline-common/timeline-common.sass
+++ b/FrontEnd/src/views/timeline-common/timeline-common.sass
diff --git a/FrontEnd/src/app/views/timeline/TimelineCard.tsx b/FrontEnd/src/views/timeline/TimelineCard.tsx
index e031b565..e031b565 100644
--- a/FrontEnd/src/app/views/timeline/TimelineCard.tsx
+++ b/FrontEnd/src/views/timeline/TimelineCard.tsx
diff --git a/FrontEnd/src/app/views/timeline/TimelineDeleteDialog.tsx b/FrontEnd/src/views/timeline/TimelineDeleteDialog.tsx
index dbca62ca..8821507d 100644
--- a/FrontEnd/src/app/views/timeline/TimelineDeleteDialog.tsx
+++ b/FrontEnd/src/views/timeline/TimelineDeleteDialog.tsx
@@ -2,7 +2,7 @@ import React from "react";
import { useHistory } from "react-router";
import { Trans } from "react-i18next";
-import { getHttpTimelineClient, HttpTimelineInfo } from "@/http/timeline";
+import { getHttpTimelineClient, HttpTimelineInfo } from "http/timeline";
import OperationDialog from "../common/OperationDialog";
diff --git a/FrontEnd/src/app/views/timeline/index.tsx b/FrontEnd/src/views/timeline/index.tsx
index c5bfd7ab..c5bfd7ab 100644
--- a/FrontEnd/src/app/views/timeline/index.tsx
+++ b/FrontEnd/src/views/timeline/index.tsx
diff --git a/FrontEnd/src/app/views/timeline/timeline.sass b/FrontEnd/src/views/timeline/timeline.sass
index e69de29b..e69de29b 100644
--- a/FrontEnd/src/app/views/timeline/timeline.sass
+++ b/FrontEnd/src/views/timeline/timeline.sass
diff --git a/FrontEnd/src/app/views/user/UserCard.tsx b/FrontEnd/src/views/user/UserCard.tsx
index e7e4252e..e7e4252e 100644
--- a/FrontEnd/src/app/views/user/UserCard.tsx
+++ b/FrontEnd/src/views/user/UserCard.tsx
diff --git a/FrontEnd/src/app/views/user/index.tsx b/FrontEnd/src/views/user/index.tsx
index 57454d0d..57454d0d 100644
--- a/FrontEnd/src/app/views/user/index.tsx
+++ b/FrontEnd/src/views/user/index.tsx
diff --git a/FrontEnd/src/app/views/user/user.sass b/FrontEnd/src/views/user/user.sass
index 63a28e05..63a28e05 100644
--- a/FrontEnd/src/app/views/user/user.sass
+++ b/FrontEnd/src/views/user/user.sass
diff --git a/FrontEnd/vite.config.js b/FrontEnd/vite.config.js
new file mode 100644
index 00000000..6e8cde1b
--- /dev/null
+++ b/FrontEnd/vite.config.js
@@ -0,0 +1,19 @@
+/**
+ * @type {import('vite').UserConfig}
+ */
+
+import reactRefresh from "@vitejs/plugin-react-refresh";
+import { defineConfig } from "vite";
+
+export default defineConfig({
+ plugins: [reactRefresh()],
+ server: {
+ port: 13000,
+ proxy: {
+ "/api": {
+ target: "http://localhost:5000",
+ changeOrigin: true,
+ },
+ },
+ },
+});
diff --git a/FrontEnd/webpack.common.js b/FrontEnd/webpack.common.js
deleted file mode 100644
index 94cdf694..00000000
--- a/FrontEnd/webpack.common.js
+++ /dev/null
@@ -1,73 +0,0 @@
-const path = require("path");
-const HtmlWebpackPlugin = require("html-webpack-plugin");
-const Config = require("webpack-chain");
-
-const config = new Config();
-
-config.entry("index").add(path.resolve(__dirname, "src/app/index.tsx"));
-
-config.module
- .rule("jsts")
- .test(/\.[jt]sx?$/)
- .exclude.add(/node_modules/)
- .end()
- .use("ts")
- .loader("ts-loader")
- .end();
-
-config.module
- .rule("css")
- .test(/\.css$/)
- .use("css")
- .loader("css-loader")
- .end()
- .use("postcss")
- .loader("postcss-loader")
- .end();
-
-config.module
- .rule("sass")
- .test(/\.(scss|sass)$/)
- .use("css")
- .loader("css-loader")
- .end()
- .use("postcss")
- .loader("postcss-loader")
- .end()
- .use("sass")
- .loader("sass-loader")
- .end();
-
-config.module
- .rule("file")
- .test(/\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot)$/i)
- .use("url")
- .loader("url-loader")
- .options({
- limit: 8192,
- });
-
-config.resolve.extensions
- .add("*")
- .add(".js")
- .add(".jsx")
- .add(".ts")
- .add(".tsx")
- .end();
-
-config.resolve.alias.set("@", path.resolve(__dirname, "src/app"));
-
-config.output
- .path(path.resolve(__dirname, "dist/"))
- .filename("[name].[contenthash].js")
- .chunkFilename("[name].[contenthash].js")
- .publicPath("/");
-
-config.plugin("html").use(HtmlWebpackPlugin, [
- {
- template: "src/app/index.ejs",
- title: "Timeline",
- },
-]);
-
-module.exports = config;
diff --git a/FrontEnd/webpack.config.dev.js b/FrontEnd/webpack.config.dev.js
deleted file mode 100644
index 4c6031c7..00000000
--- a/FrontEnd/webpack.config.dev.js
+++ /dev/null
@@ -1,38 +0,0 @@
-const path = require("path");
-const ReactRefreshWebpackPlugin = require("@pmmmwh/react-refresh-webpack-plugin");
-const ReactRefreshTypeScript = require("react-refresh-typescript");
-
-const config = require("./webpack.common");
-
-config.mode("development");
-
-config.module
- .rule("jsts")
- .use("ts")
- .options({
- getCustomTransformers: () => ({
- before: [ReactRefreshTypeScript()],
- }),
- });
-
-config.module
- .rule("css")
- .use("style")
- .before("css")
- .loader("style-loader")
- .end();
-
-config.module
- .rule("sass")
- .use("style")
- .before("css")
- .loader("style-loader")
- .end();
-
-config.devtool("eval-cheap-module-source-map");
-
-config.devServer.port(3000).historyApiFallback(true).hot(true);
-
-config.plugin("react-refresh").use(new ReactRefreshWebpackPlugin());
-
-module.exports = config.toConfig();
diff --git a/FrontEnd/webpack.config.prod.js b/FrontEnd/webpack.config.prod.js
deleted file mode 100644
index 188cb940..00000000
--- a/FrontEnd/webpack.config.prod.js
+++ /dev/null
@@ -1,53 +0,0 @@
-const path = require("path");
-const { CleanWebpackPlugin } = require("clean-webpack-plugin");
-const CopyPlugin = require("copy-webpack-plugin");
-const WorkboxPlugin = require("workbox-webpack-plugin");
-const MiniCssExtractPlugin = require("mini-css-extract-plugin");
-
-const config = require("./webpack.common");
-
-config.mode("production");
-
-config
- .entry("index")
- .add(path.resolve(__dirname, "src/app/service-worker.tsx"));
-
-config.module
- .rule("css")
- .use("mini-css-extract")
- .before("css")
- .loader(MiniCssExtractPlugin.loader)
- .end();
-
-config.module
- .rule("sass")
- .use("mini-css-extract")
- .before("css")
- .loader(MiniCssExtractPlugin.loader)
- .end();
-
-config.devtool("source-map");
-
-config.plugin("mini-css-extract").use(MiniCssExtractPlugin);
-
-config.plugin("clean").use(CleanWebpackPlugin);
-
-config.plugin("copy").use(CopyPlugin, [
- {
- patterns: [
- {
- from: path.resolve(__dirname, "public/"),
- to: path.resolve(__dirname, "dist/"),
- },
- ],
- },
-]);
-
-config.plugin("workbox").use(WorkboxPlugin.InjectManifest, [
- {
- swSrc: path.resolve(__dirname, "src/sw/sw.ts"),
- maximumFileSizeToCacheInBytes: 15000000,
- },
-]);
-
-module.exports = config.toConfig();