gitextract_ls8v8cv6/ ├── .eslintignore ├── .eslintrc.js ├── .github/ │ └── workflows/ │ ├── docker-build-test.yml │ └── docker-image.yml ├── .gitignore ├── .prettierignore ├── .prettierrc.js ├── Dockerfile ├── LICENSE ├── README.md ├── backend/ │ ├── .env.example │ ├── package.json │ ├── src/ │ │ ├── app.ts │ │ ├── config/ │ │ │ ├── database.ts │ │ │ └── index.ts │ │ ├── controllers/ │ │ │ ├── BaseCloudController.ts │ │ │ ├── BaseController.ts │ │ │ ├── cloud115.ts │ │ │ ├── douban.ts │ │ │ ├── quark.ts │ │ │ ├── resource.ts │ │ │ ├── setting.ts │ │ │ ├── sponsors.ts │ │ │ ├── teleImages.ts │ │ │ └── user.ts │ │ ├── core/ │ │ │ ├── ApiResponse.ts │ │ │ └── types.ts │ │ ├── inversify.config.ts │ │ ├── middleware/ │ │ │ ├── auth.ts │ │ │ ├── cors.ts │ │ │ ├── errorHandler.ts │ │ │ ├── index.ts │ │ │ ├── rateLimiter.ts │ │ │ ├── requestLogger.ts │ │ │ └── validateRequest.ts │ │ ├── models/ │ │ │ ├── GlobalSetting.ts │ │ │ ├── User.ts │ │ │ └── UserSetting.ts │ │ ├── routes/ │ │ │ └── api.ts │ │ ├── services/ │ │ │ ├── Cloud115Service.ts │ │ │ ├── DatabaseService.ts │ │ │ ├── DoubanService.ts │ │ │ ├── ImageService.ts │ │ │ ├── QuarkService.ts │ │ │ ├── Searcher.ts │ │ │ ├── SettingService.ts │ │ │ ├── SponsorsService.ts │ │ │ └── UserService.ts │ │ ├── sponsors/ │ │ │ └── sponsors.json │ │ ├── types/ │ │ │ ├── cloud.ts │ │ │ ├── cloud115.ts │ │ │ ├── express.ts │ │ │ ├── index.ts │ │ │ └── services.ts │ │ └── utils/ │ │ ├── axiosInstance.ts │ │ ├── handleError.ts │ │ ├── index.ts │ │ ├── logger.ts │ │ ├── response.ts │ │ └── responseHandler.ts │ └── tsconfig.json ├── docker-entrypoint.sh ├── frontend/ │ ├── .env │ ├── auto-imports.d.ts │ ├── components.d.ts │ ├── index.html │ ├── package.json │ ├── postcss.config.cjs │ ├── src/ │ │ ├── App.vue │ │ ├── api/ │ │ │ ├── cloud115.ts │ │ │ ├── douban.ts │ │ │ ├── quark.ts │ │ │ ├── resource.ts │ │ │ ├── setting.ts │ │ │ └── user.ts │ │ ├── components/ │ │ │ ├── AsideMenu.vue │ │ │ ├── Home/ │ │ │ │ ├── FolderSelect.vue │ │ │ │ ├── ResourceCard.vue │ │ │ │ ├── ResourceSelect.vue │ │ │ │ └── ResourceTable.vue │ │ │ ├── SearchBar.vue │ │ │ └── mobile/ │ │ │ ├── FolderSelect.vue │ │ │ ├── ResourceCard.vue │ │ │ └── ResourceSelect.vue │ │ ├── constants/ │ │ │ ├── project.ts │ │ │ └── storage.ts │ │ ├── env.d.ts │ │ ├── main.ts │ │ ├── router/ │ │ │ ├── index.ts │ │ │ ├── mobile-routes.ts │ │ │ └── pc-routes.ts │ │ ├── stores/ │ │ │ ├── douban.ts │ │ │ ├── index.ts │ │ │ ├── resource.ts │ │ │ └── userSetting.ts │ │ ├── styles/ │ │ │ ├── common.scss │ │ │ ├── global.scss │ │ │ ├── mobile.scss │ │ │ └── responsive.scss │ │ ├── types/ │ │ │ ├── douban.ts │ │ │ ├── globals.d.ts │ │ │ ├── index.ts │ │ │ ├── response.ts │ │ │ └── user.ts │ │ ├── utils/ │ │ │ ├── device.ts │ │ │ ├── image.ts │ │ │ ├── index.ts │ │ │ └── request.ts │ │ └── views/ │ │ ├── Douban.vue │ │ ├── Home.vue │ │ ├── ResourceList.vue │ │ ├── Setting.vue │ │ ├── Thanks.vue │ │ ├── mobile/ │ │ │ ├── Douban.vue │ │ │ ├── Home.vue │ │ │ ├── Login.vue │ │ │ ├── ResourceList.vue │ │ │ └── Setting.vue │ │ └── pc/ │ │ └── Login.vue │ ├── tsconfig.json │ ├── tsconfig.node.json │ └── vite.config.ts ├── nginx.conf ├── package.json └── pnpm-workspace.yaml