From 62bd20c906dbac32b0b1d52b43167deacf8684ca Mon Sep 17 00:00:00 2001
From: longdayi <13477510+longdayilongdayi@user.noreply.gitee.com>
Date: Sat, 22 Feb 2025 22:06:44 +0800
Subject: [PATCH] init
---
.continue/prompts/coder.prompt | 19 +
.continue/prompts/comment.prompt | 30 +
.continue/prompts/explain.prompt | 6 +
.continue/prompts/jstots.prompt | 13 +
.continue/prompts/refactor.prompt | 52 +
.continue/prompts/sci-post.prompt | 45 +
.dockerignore | 9 +
.gitignore | 71 +
.npmrc | 1 +
Dockerfile | 102 +
apps/server/.env.example | 14 +
apps/server/.eslintrc.js | 40 +
apps/server/.prettierrc | 4 +
apps/server/README.md | 73 +
apps/server/entrypoint.sh | 41 +
apps/server/nest-cli.json | 8 +
apps/server/package.json | 113 +
apps/server/src/app.module.ts | 52 +
apps/server/src/auth/auth.controller.ts | 112 +
apps/server/src/auth/auth.guard.ts | 37 +
apps/server/src/auth/auth.module.ts | 19 +
apps/server/src/auth/auth.service.ts | 243 +
apps/server/src/auth/config.ts | 9 +
apps/server/src/auth/session.service.ts | 61 +
apps/server/src/auth/types.ts | 31 +
apps/server/src/auth/utils.ts | 193 +
apps/server/src/env.ts | 3 +
apps/server/src/filters/exceptions.filter.ts | 33 +
apps/server/src/main.ts | 22 +
.../models/app-config/app-config.module.ts | 12 +
.../models/app-config/app-config.router.ts | 47 +
.../models/app-config/app-config.service.ts | 21 +
apps/server/src/models/base/base.service.ts | 577 +
.../src/models/base/base.tree.service.ts | 416 +
apps/server/src/models/base/base.type.ts | 44 +
.../server/src/models/base/errorMap.prisma.ts | 198 +
.../src/models/base/row-cache.service.ts | 183 +
.../src/models/base/row-model.service.ts | 307 +
apps/server/src/models/base/sql-builder.ts | 138 +
apps/server/src/models/base/test.sql | 30 +
.../department/department.controller.ts | 87 +
.../models/department/department.module.ts | 13 +
.../models/department/department.router.ts | 71 +
.../department/department.row.service.ts | 91 +
.../models/department/department.service.ts | 338 +
apps/server/src/models/department/utils.ts | 77 +
.../src/models/message/message.controller.ts | 125 +
.../src/models/message/message.module.ts | 14 +
.../src/models/message/message.router.ts | 39 +
.../src/models/message/message.service.ts | 57 +
apps/server/src/models/message/utils.ts | 20 +
.../server/src/models/post/post.controller.ts | 10 +
apps/server/src/models/post/post.module.ts | 18 +
apps/server/src/models/post/post.router.ts | 106 +
apps/server/src/models/post/post.service.ts | 178 +
apps/server/src/models/post/utils.ts | 54 +
apps/server/src/models/rbac/rbac.module.ts | 14 +
apps/server/src/models/rbac/role.router.ts | 88 +
.../src/models/rbac/role.row.service.ts | 47 +
apps/server/src/models/rbac/role.service.ts | 25 +
apps/server/src/models/rbac/rolemap.router.ts | 71 +
.../server/src/models/rbac/rolemap.service.ts | 316 +
.../models/resource/pipe/resource.pipeline.ts | 85 +
.../resource/processor/BaseProcessor.ts | 23 +
.../resource/processor/ImageProcessor.ts | 62 +
.../resource/processor/VideoProcessor.ts | 190 +
.../src/models/resource/resource.module.ts | 10 +
.../src/models/resource/resource.router.ts | 70 +
.../src/models/resource/resource.service.ts | 36 +
apps/server/src/models/resource/types.ts | 55 +
.../src/models/staff/staff.controller.ts | 48 +
apps/server/src/models/staff/staff.module.ts | 15 +
apps/server/src/models/staff/staff.router.ts | 81 +
.../src/models/staff/staff.row.service.ts | 135 +
apps/server/src/models/staff/staff.service.ts | 180 +
.../models/taxonomy/taxonomy.controller.ts | 28 +
.../src/models/taxonomy/taxonomy.module.ts | 12 +
.../src/models/taxonomy/taxonomy.router.ts | 55 +
.../src/models/taxonomy/taxonomy.service.ts | 203 +
.../server/src/models/term/term.controller.ts | 28 +
apps/server/src/models/term/term.module.ts | 16 +
apps/server/src/models/term/term.router.ts | 83 +
.../src/models/term/term.row.service.ts | 91 +
apps/server/src/models/term/term.service.ts | 425 +
apps/server/src/models/term/utils.ts | 24 +
.../src/models/transform/transform.module.ts | 21 +
.../src/models/transform/transform.router.ts | 31 +
.../src/models/transform/transform.service.ts | 541 +
apps/server/src/models/visit/visit.module.ts | 10 +
apps/server/src/models/visit/visit.router.ts | 37 +
apps/server/src/models/visit/visit.service.ts | 83 +
.../queue/postprocess/postprocess.service.ts | 10 +
apps/server/src/queue/queue.module.ts | 34 +
apps/server/src/queue/types.ts | 3 +
.../server/src/queue/worker/file.processor.ts | 22 +
apps/server/src/queue/worker/processor.ts | 20 +
.../src/socket/base/base-websocket-server.ts | 205 +
.../src/socket/collaboration/callback.ts | 150 +
.../collaboration/collaboration.module.ts | 8 +
.../src/socket/collaboration/persistence.ts | 34 +
apps/server/src/socket/collaboration/types.ts | 5 +
.../src/socket/collaboration/ws-shared-doc.ts | 158 +
.../src/socket/collaboration/yjs.server.ts | 85 +
.../src/socket/realtime/realtime.module.ts | 9 +
.../src/socket/realtime/realtime.server.ts | 25 +
apps/server/src/socket/types.ts | 29 +
apps/server/src/socket/websocket.module.ts | 11 +
apps/server/src/socket/websocket.service.ts | 61 +
apps/server/src/tasks/init/gendev.service.ts | 224 +
apps/server/src/tasks/init/init.module.ts | 16 +
apps/server/src/tasks/init/init.service.ts | 166 +
apps/server/src/tasks/init/utils.ts | 34 +
.../src/tasks/reminder/reminder.module.ts | 10 +
.../src/tasks/reminder/reminder.service.ts | 81 +
apps/server/src/tasks/tasks.module.ts | 9 +
apps/server/src/tasks/tasks.service.spec.ts | 18 +
apps/server/src/tasks/tasks.service.ts | 46 +
apps/server/src/trpc/trpc.module.ts | 40 +
apps/server/src/trpc/trpc.router.ts | 73 +
apps/server/src/trpc/trpc.service.ts | 62 +
apps/server/src/trpc/types.ts | 3 +
apps/server/src/trpc/utils.ts | 15 +
apps/server/src/upload/tus.service.ts | 133 +
apps/server/src/upload/types.ts | 29 +
apps/server/src/upload/upload.controller.ts | 54 +
apps/server/src/upload/upload.module.ts | 17 +
apps/server/src/upload/utils.ts | 4 +
apps/server/src/utils/event-bus.ts | 16 +
apps/server/src/utils/file.ts | 66 +
apps/server/src/utils/minio/minio.module.ts | 8 +
apps/server/src/utils/minio/minio.service.ts | 26 +
apps/server/src/utils/redis/redis.service.ts | 192 +
apps/server/src/utils/redis/utils.ts | 13 +
apps/server/src/utils/tool.ts | 148 +
apps/server/test/app.e2e-spec.ts | 24 +
apps/server/test/jest-e2e.json | 9 +
apps/server/tsconfig.build.json | 4 +
apps/server/tsconfig.json | 18 +
apps/web/.env.example | 5 +
apps/web/eslint.config.js | 43 +
apps/web/index.html | 23 +
apps/web/nginx.conf | 10 +
apps/web/package.json | 85 +
apps/web/postcss.config.js | 6 +
apps/web/public/params.json | 2 +
apps/web/public/vite.svg | 1 +
apps/web/src/App.css | 42 +
apps/web/src/App.tsx | 43 +
apps/web/src/app/admin/base-setting/page.tsx | 190 +
apps/web/src/app/admin/department/page.tsx | 7 +
apps/web/src/app/admin/layout.tsx | 111 +
apps/web/src/app/admin/role/page.tsx | 13 +
apps/web/src/app/admin/staff/page.tsx | 8 +
apps/web/src/app/admin/term/page.tsx | 11 +
apps/web/src/app/denied.tsx | 7 +
apps/web/src/app/error.tsx | 41 +
apps/web/src/app/login.tsx | 273 +
apps/web/src/app/main/home/page.tsx | 10 +
apps/web/src/app/main/layout/index.tsx | 7 +
apps/web/src/assets/react.svg | 1 +
.../src/components/animation/sine-wave.tsx | 122 +
.../src/components/common/container/Card.tsx | 41 +
.../common/container/CollapsibleContent.tsx | 54 +
.../common/editor/quill/QuillCharCounter.tsx | 42 +
.../common/editor/quill/QuillEditor.tsx | 198 +
.../common/editor/quill/constants.ts | 11 +
.../common/element/AnimatedTabs.tsx | 44 +
.../src/components/common/element/Avatar.tsx | 50 +
.../src/components/common/element/Button.tsx | 221 +
.../components/common/element/Pagination.tsx | 106 +
.../web/src/components/common/element/Tag.tsx | 88 +
.../components/common/form/FormArrayField.tsx | 136 +
.../common/form/FormDynamicInputs.tsx | 156 +
.../src/components/common/form/FormError.tsx | 32 +
.../src/components/common/form/FormInput.tsx | 148 +
.../components/common/form/FormQuillInput.tsx | 79 +
.../src/components/common/form/FormSelect.tsx | 123 +
.../src/components/common/input/InputList.tsx | 102 +
.../web/src/components/common/space/Empty.tsx | 25 +
.../common/uploader/AvatarUploader.tsx | 156 +
.../common/uploader/TusUploader.tsx | 222 +
.../components/layout/admin/AdminHeader.tsx | 198 +
.../components/layout/admin/AdminLayout.tsx | 20 +
.../components/layout/admin/AdminSidebar.tsx | 58 +
apps/web/src/components/layout/breadcrumb.tsx | 38 +
.../components/layout/element/breadcrumb.tsx | 37 +
.../src/components/layout/element/types.ts | 5 +
.../element/usermenu/user-edit-modal.tsx | 26 +
.../layout/element/usermenu/user-form.tsx | 216 +
.../layout/element/usermenu/usermenu.tsx | 259 +
apps/web/src/components/layout/fix-header.tsx | 176 +
.../components/layout/resizable-sidebar.tsx | 95 +
.../src/components/layout/sidebar-content.tsx | 76 +
.../web/src/components/layout/user-header.tsx | 46 +
.../models/department/department-form.tsx | 136 +
.../department/department-import-drawer.tsx | 63 +
.../models/department/department-list.tsx | 110 +
.../models/department/department-select.tsx | 178 +
.../models/department/dept-editor.tsx | 90 +
.../models/department/dept-import-form.tsx | 80 +
.../models/department/dept-import-modal.tsx | 25 +
.../models/department/dept-modal.tsx | 26 +
.../models/role/role-editor/assign-list.tsx | 118 +
.../models/role/role-editor/role-editor.tsx | 82 +
.../models/role/role-editor/role-form.tsx | 61 +
.../models/role/role-editor/role-list.tsx | 88 +
.../models/role/role-editor/role-modal.tsx | 31 +
.../role/role-editor/role-staff-modal.tsx | 64 +
.../components/models/role/role-select.tsx | 46 +
.../components/models/staff/staff-editor.tsx | 71 +
.../components/models/staff/staff-form.tsx | 178 +
.../components/models/staff/staff-list.tsx | 195 +
.../components/models/staff/staff-modal.tsx | 27 +
.../components/models/staff/staff-select.tsx | 84 +
.../models/staff/staff-transfer.tsx | 79 +
.../models/taxonomy/taxonomy-select.tsx | 67 +
.../components/models/term/taxonomy-form.tsx | 60 +
.../components/models/term/taxonomy-list.tsx | 45 +
.../components/models/term/taxonomy-modal.tsx | 23 +
.../components/models/term/term-editor.tsx | 94 +
.../src/components/models/term/term-form.tsx | 85 +
.../models/term/term-import-form.tsx | 87 +
.../models/term/term-import-modal.tsx | 25 +
.../src/components/models/term/term-list.tsx | 321 +
.../src/components/models/term/term-modal.tsx | 28 +
.../components/models/term/term-select.tsx | 193 +
.../models/term/term-select_BACKUP.tsx | 92 +
apps/web/src/components/models/term/util.ts | 15 +
.../src/components/presentation/NavBar.tsx | 58 +
.../src/components/presentation/Skeleton.tsx | 43 +
.../presentation/ag-server-table.tsx | 494 +
.../presentation/animate-progress.tsx | 28 +
.../presentation/collapse-section.tsx | 133 +
.../presentation/dashboard-card.tsx | 62 +
.../src/components/presentation/dialog.tsx | 229 +
.../components/presentation/dropdown-menu.tsx | 290 +
.../presentation/excel-to-base64-uploader.tsx | 85 +
.../presentation/general-dialog.tsx | 64 +
.../src/components/presentation/id-card.tsx | 25 +
.../src/components/presentation/nice-img.tsx | 80 +
.../components/presentation/phone-book.tsx | 23 +
.../src/components/presentation/round-tag.tsx | 20 +
.../presentation/rounded-rectangle-tag.tsx | 19 +
.../components/presentation/user/Avatar.tsx | 50 +
.../ControlButtons/Brightness.tsx | 32 +
.../ControlButtons/FullScreen.tsx | 29 +
.../video-player/ControlButtons/Play.tsx | 25 +
.../video-player/ControlButtons/Setting.tsx | 62 +
.../video-player/ControlButtons/Speed.tsx | 59 +
.../video-player/ControlButtons/TimeLine.tsx | 64 +
.../video-player/ControlButtons/Volume.tsx | 43 +
.../video-player/ControlButtons/index.ts | 4 +
.../video-player/LoadingOverlay.tsx | 33 +
.../video-player/VideoControls.tsx | 126 +
.../video-player/VideoDisplay.tsx | 222 +
.../presentation/video-player/VideoPlayer.tsx | 135 +
.../video-player/VideoPlayerLayout.tsx | 35 +
.../presentation/video-player/interface.ts | 10 +
.../presentation/video-player/type.ts | 1 +
.../presentation/video-player/utlis.ts | 5 +
apps/web/src/components/svg/rounded-clip.tsx | 28 +
.../src/components/utils/excel-importer.tsx | 136 +
.../src/components/utils/image-uploader.tsx | 111 +
apps/web/src/components/utils/with-auth.tsx | 62 +
apps/web/src/env.ts | 23 +
apps/web/src/hooks/useClickOutside.ts | 14 +
apps/web/src/hooks/useLocalSetting.ts | 17 +
apps/web/src/hooks/useTusUpload.ts | 113 +
apps/web/src/index.css | 131 +
apps/web/src/locale/ag-grid-locale.ts | 563 +
apps/web/src/main.tsx | 18 +
apps/web/src/polyfills/index.ts | 7 +
apps/web/src/providers/auth-provider.tsx | 254 +
apps/web/src/providers/params-provider.tsx | 45 +
apps/web/src/providers/query-provider.tsx | 84 +
apps/web/src/providers/theme-provider.tsx | 77 +
apps/web/src/routes/admin-route.tsx | 124 +
apps/web/src/routes/index.tsx | 31 +
apps/web/src/routes/main-route.tsx | 13 +
apps/web/src/routes/types.ts | 19 +
apps/web/src/utils/axios.ts | 20 +
apps/web/src/utils/idb.ts | 15 +
apps/web/src/utils/index.ts | 3 +
apps/web/src/utils/tusd.ts | 96 +
apps/web/src/vite-env.d.ts | 1 +
apps/web/tailwind.config.ts | 2 +
apps/web/tsconfig.app.json | 32 +
apps/web/tsconfig.json | 7 +
apps/web/tsconfig.node.json | 17 +
apps/web/vite.config.ts | 17 +
auto.sh | 44 +
config/backup.sh | 26 +
config/nginx/conf.d/web.conf | 113 +
config/nginx/conf.d/web.template | 114 +
config/nginx/entrypoint.sh | 25 +
config/nginx/nginx.conf | 31 +
config/redis.conf | 94 +
docker-compose.example.yml | 134 +
package.json | 14 +
packages/client/package.json | 42 +
packages/client/src/api/hooks/index.ts | 12 +
packages/client/src/api/hooks/useAppConfig.ts | 49 +
packages/client/src/api/hooks/useCourse.ts | 76 +
.../client/src/api/hooks/useDepartment.ts | 74 +
packages/client/src/api/hooks/useEntity.ts | 117 +
packages/client/src/api/hooks/useMessage.ts | 5 +
packages/client/src/api/hooks/usePost.ts | 12 +
packages/client/src/api/hooks/useQueryApi.ts | 27 +
packages/client/src/api/hooks/useRole.ts | 33 +
packages/client/src/api/hooks/useRoleMap.ts | 47 +
packages/client/src/api/hooks/useStaff.ts | 43 +
packages/client/src/api/hooks/useTaxonomy.ts | 47 +
packages/client/src/api/hooks/useTerm.ts | 71 +
packages/client/src/api/hooks/useTransform.ts | 34 +
packages/client/src/api/hooks/useVisitor.ts | 178 +
packages/client/src/api/index.ts | 3 +
packages/client/src/api/trpc.ts | 11 +
packages/client/src/api/utils.ts | 62 +
packages/client/src/event/index.ts | 133 +
packages/client/src/hooks/index.ts | 4 +
packages/client/src/hooks/useAwaitState.ts | 31 +
packages/client/src/hooks/useCheckBox.ts | 156 +
packages/client/src/hooks/useStack.ts | 128 +
packages/client/src/hooks/useTimeout.ts | 78 +
packages/client/src/index.ts | 10 +
packages/client/src/io/download.ts | 42 +
packages/client/src/io/index.ts | 1 +
packages/client/src/presentation/color.ts | 13 +
packages/client/src/presentation/index.ts | 1 +
packages/client/src/providers/index.ts | 1 +
packages/client/src/singleton/DataHolder.ts | 85 +
packages/client/src/tools/file.ts | 29 +
packages/client/src/tools/index.ts | 5 +
packages/client/src/tools/level.ts | 136 +
packages/client/src/tools/number.ts | 76 +
packages/client/src/tools/objects.ts | 33 +
packages/client/src/types/index.ts | 5 +
packages/client/src/upload/index.ts | 3 +
packages/client/src/upload/types.ts | 13 +
packages/client/src/upload/uploadManager.ts | 225 +
packages/client/src/upload/useUpload.ts | 56 +
packages/client/src/websocket/client.ts | 232 +
packages/client/src/websocket/index.ts | 2 +
packages/client/src/websocket/types.ts | 46 +
packages/client/tsconfig.json | 22 +
packages/client/tsup.config.ts | 10 +
packages/common/.env.example | 1 +
packages/common/package.json | 35 +
packages/common/prisma/schema.prisma | 331 +
packages/common/src/collaboration/index.ts | 4 +
packages/common/src/collaboration/types.ts | 7 +
packages/common/src/collaboration/utils.ts | 3 +
packages/common/src/collaboration/y-auth.ts | 29 +
.../common/src/collaboration/y-awareness.ts | 544 +
.../common/src/collaboration/y-handler.ts | 87 +
packages/common/src/collaboration/y-socket.ts | 388 +
packages/common/src/collaboration/y-sync.ts | 189 +
packages/common/src/constants.ts | 73 +
packages/common/src/db.ts | 18 +
packages/common/src/enum.ts | 121 +
packages/common/src/index.ts | 9 +
packages/common/src/models/department.ts | 15 +
packages/common/src/models/index.ts | 7 +
packages/common/src/models/message.ts | 7 +
packages/common/src/models/post.ts | 40 +
packages/common/src/models/rbac.ts | 22 +
packages/common/src/models/section.ts | 5 +
packages/common/src/models/select.ts | 67 +
packages/common/src/models/staff.ts | 38 +
packages/common/src/models/term.ts | 8 +
packages/common/src/schema.ts | 435 +
packages/common/src/types.ts | 40 +
packages/common/src/utils/array-utils.ts | 0
packages/common/src/utils/browser-utils.ts | 0
packages/common/src/utils/crypto-utils.ts | 0
packages/common/src/utils/date-utils.ts | 0
packages/common/src/utils/dom-utils.ts | 0
packages/common/src/utils/file-utils.ts | 0
packages/common/src/utils/index.ts | 365 +
packages/common/src/utils/math-utils.ts | 99 +
packages/common/src/utils/object-utils.ts | 59 +
packages/common/src/utils/random-utils.ts | 85 +
packages/common/src/utils/string-utils.ts | 80 +
packages/common/src/utils/type-utils.ts | 94 +
packages/common/src/utils/uuid.ts | 59 +
packages/common/src/utils/validation-utils.ts | 0
packages/common/tsconfig.json | 40 +
packages/common/tsup.config.ts | 18 +
packages/config/package.json | 34 +
packages/config/src/index.ts | 1 +
packages/config/src/tailwind.ts | 132 +
packages/config/tsconfig.json | 43 +
packages/config/tsup.config.ts | 13 +
packages/iconer/.eslintrc.cjs | 18 +
packages/iconer/README.md | 30 +
packages/iconer/package.json | 33 +
packages/iconer/public/vite.svg | 1 +
packages/iconer/src/components/svg-icon.tsx | 40 +
packages/iconer/src/generated/icon-names.ts | 2 +
.../iconer/src/icons/account-location.svg | 1 +
packages/iconer/src/icons/add.svg | 1 +
packages/iconer/src/icons/admin-outlined.svg | 1 +
packages/iconer/src/icons/airport.svg | 1 +
packages/iconer/src/icons/align-center.svg | 4 +
packages/iconer/src/icons/align-justify.svg | 1 +
packages/iconer/src/icons/align-left.svg | 1 +
packages/iconer/src/icons/align-right.svg | 1 +
packages/iconer/src/icons/approve.svg | 1 +
packages/iconer/src/icons/arrow-drop-down.svg | 1 +
packages/iconer/src/icons/blocks-group.svg | 1 +
packages/iconer/src/icons/bold.svg | 1 +
packages/iconer/src/icons/caret-right.svg | 1 +
.../iconer/src/icons/category-outline.svg | 1 +
packages/iconer/src/icons/check-one.svg | 1 +
packages/iconer/src/icons/check.svg | 1 +
packages/iconer/src/icons/config.svg | 1 +
packages/iconer/src/icons/content.svg | 1 +
packages/iconer/src/icons/copy.svg | 1 +
packages/iconer/src/icons/cube-duotone.svg | 1 +
packages/iconer/src/icons/date-time.svg | 1 +
packages/iconer/src/icons/delete.svg | 1 +
packages/iconer/src/icons/edit.svg | 1 +
packages/iconer/src/icons/error-duotone.svg | 1 +
packages/iconer/src/icons/error-outline.svg | 1 +
packages/iconer/src/icons/exit.svg | 1 +
packages/iconer/src/icons/filter.svg | 1 +
packages/iconer/src/icons/fluent-person.svg | 1 +
packages/iconer/src/icons/get-text.svg | 1 +
packages/iconer/src/icons/group-work.svg | 1 +
packages/iconer/src/icons/health-circle.svg | 1 +
packages/iconer/src/icons/history.svg | 1 +
packages/iconer/src/icons/home.svg | 1 +
packages/iconer/src/icons/horizontal-rule.svg | 1 +
packages/iconer/src/icons/image.svg | 1 +
packages/iconer/src/icons/inbox.svg | 1 +
packages/iconer/src/icons/italic.svg | 1 +
packages/iconer/src/icons/link-off.svg | 1 +
packages/iconer/src/icons/link.svg | 1 +
packages/iconer/src/icons/list.svg | 1 +
packages/iconer/src/icons/logout.svg | 1 +
packages/iconer/src/icons/loop.svg | 1 +
packages/iconer/src/icons/more.svg | 1 +
packages/iconer/src/icons/note.svg | 1 +
packages/iconer/src/icons/number-symbol.svg | 1 +
packages/iconer/src/icons/org.svg | 1 +
packages/iconer/src/icons/people-32.svg | 1 +
packages/iconer/src/icons/people-group.svg | 1 +
packages/iconer/src/icons/people-plus.svg | 1 +
packages/iconer/src/icons/people.svg | 1 +
packages/iconer/src/icons/person-board.svg | 1 +
packages/iconer/src/icons/person-hair.svg | 1 +
packages/iconer/src/icons/person-home.svg | 1 +
packages/iconer/src/icons/plane-takeoff.svg | 1 +
packages/iconer/src/icons/plane.svg | 1 +
packages/iconer/src/icons/progress.svg | 1 +
packages/iconer/src/icons/radar-chart.svg | 1 +
packages/iconer/src/icons/react.svg | 6 +
packages/iconer/src/icons/redo.svg | 1 +
packages/iconer/src/icons/right-line.svg | 1 +
packages/iconer/src/icons/seal-check.svg | 1 +
packages/iconer/src/icons/search.svg | 1 +
packages/iconer/src/icons/setting.svg | 1 +
packages/iconer/src/icons/share.svg | 1 +
packages/iconer/src/icons/strike.svg | 1 +
packages/iconer/src/icons/subject-rounded.svg | 1 +
packages/iconer/src/icons/sum.svg | 1 +
packages/iconer/src/icons/target.svg | 1 +
packages/iconer/src/icons/text-indent.svg | 1 +
packages/iconer/src/icons/text-outdent.svg | 1 +
packages/iconer/src/icons/time.svg | 1 +
packages/iconer/src/icons/underline.svg | 1 +
packages/iconer/src/icons/undo.svg | 1 +
packages/iconer/src/icons/user-id.svg | 1 +
packages/iconer/src/icons/work.svg | 1 +
packages/iconer/src/icons/zoomin.svg | 1 +
packages/iconer/src/icons/zoomout.svg | 1 +
packages/iconer/src/index.css | 0
packages/iconer/src/index.ts | 7 +
packages/iconer/src/utils/useLazySvgImport.ts | 29 +
packages/iconer/src/vite-env.d.ts | 1 +
packages/iconer/tsconfig.app.json | 40 +
packages/iconer/tsconfig.json | 11 +
packages/iconer/tsconfig.node.json | 16 +
.../iconer/types/src/components/svg-icon.d.ts | 9 +
.../types/src/generated/icon-names.d.ts | 1 +
packages/iconer/types/src/index.d.ts | 3 +
.../types/src/utils/useLazySvgImport.d.ts | 6 +
packages/iconer/vite.config.ts | 63 +
packages/template/package.json | 24 +
packages/template/src/index.ts | 1 +
packages/template/tsconfig.json | 40 +
packages/template/tsup.config.ts | 10 +
packages/tus/package.json | 35 +
packages/tus/src/handlers/BaseHandler.ts | 364 +
packages/tus/src/handlers/DeleteHandler.ts | 64 +
packages/tus/src/handlers/GetHandler.ts | 189 +
packages/tus/src/handlers/HeadHandler.ts | 90 +
packages/tus/src/handlers/OptionsHandler.ts | 61 +
packages/tus/src/handlers/PatchHandler.ts | 256 +
packages/tus/src/handlers/PostHandler.ts | 257 +
packages/tus/src/index.ts | 5 +
packages/tus/src/lockers/MemoryLocker.ts | 145 +
packages/tus/src/lockers/index.ts | 1 +
packages/tus/src/server.ts | 452 +
packages/tus/src/store/file-store/index.ts | 230 +
packages/tus/src/store/index.ts | 2 +
packages/tus/src/store/s3-store/index.ts | 803 +
packages/tus/src/types.ts | 211 +
packages/tus/src/utils/constants.ts | 132 +
packages/tus/src/utils/index.ts | 3 +
.../tus/src/utils/kvstores/FileKvStore.ts | 94 +
.../tus/src/utils/kvstores/IoRedisKvStore.ts | 54 +
.../tus/src/utils/kvstores/MemoryKvStore.ts | 26 +
.../tus/src/utils/kvstores/RedisKvStore.ts | 94 +
packages/tus/src/utils/kvstores/Types.ts | 43 +
packages/tus/src/utils/kvstores/index.ts | 5 +
packages/tus/src/utils/models/Context.ts | 14 +
packages/tus/src/utils/models/DataStore.ts | 72 +
packages/tus/src/utils/models/Locker.ts | 12 +
packages/tus/src/utils/models/Metadata.ts | 103 +
.../tus/src/utils/models/StreamLimiter.ts | 54 +
.../tus/src/utils/models/StreamSplitter.ts | 183 +
packages/tus/src/utils/models/Uid.ts | 21 +
packages/tus/src/utils/models/Upload.ts | 72 +
packages/tus/src/utils/models/index.ts | 8 +
.../tus/src/validators/HeaderValidator.ts | 138 +
packages/tus/tsconfig.json | 40 +
packages/tus/tsup.config.ts | 10 +
pnpm-lock.yaml | 14241 ++++++++++++++++
pnpm-workspace.yaml | 7 +
tsconfig.base.json | 26 +
531 files changed, 48219 insertions(+)
create mode 100755 .continue/prompts/coder.prompt
create mode 100755 .continue/prompts/comment.prompt
create mode 100755 .continue/prompts/explain.prompt
create mode 100755 .continue/prompts/jstots.prompt
create mode 100755 .continue/prompts/refactor.prompt
create mode 100755 .continue/prompts/sci-post.prompt
create mode 100755 .dockerignore
create mode 100755 .gitignore
create mode 100755 .npmrc
create mode 100755 Dockerfile
create mode 100755 apps/server/.env.example
create mode 100755 apps/server/.eslintrc.js
create mode 100755 apps/server/.prettierrc
create mode 100755 apps/server/README.md
create mode 100755 apps/server/entrypoint.sh
create mode 100755 apps/server/nest-cli.json
create mode 100755 apps/server/package.json
create mode 100755 apps/server/src/app.module.ts
create mode 100755 apps/server/src/auth/auth.controller.ts
create mode 100755 apps/server/src/auth/auth.guard.ts
create mode 100755 apps/server/src/auth/auth.module.ts
create mode 100755 apps/server/src/auth/auth.service.ts
create mode 100755 apps/server/src/auth/config.ts
create mode 100755 apps/server/src/auth/session.service.ts
create mode 100755 apps/server/src/auth/types.ts
create mode 100755 apps/server/src/auth/utils.ts
create mode 100755 apps/server/src/env.ts
create mode 100755 apps/server/src/filters/exceptions.filter.ts
create mode 100755 apps/server/src/main.ts
create mode 100755 apps/server/src/models/app-config/app-config.module.ts
create mode 100755 apps/server/src/models/app-config/app-config.router.ts
create mode 100755 apps/server/src/models/app-config/app-config.service.ts
create mode 100755 apps/server/src/models/base/base.service.ts
create mode 100755 apps/server/src/models/base/base.tree.service.ts
create mode 100755 apps/server/src/models/base/base.type.ts
create mode 100755 apps/server/src/models/base/errorMap.prisma.ts
create mode 100755 apps/server/src/models/base/row-cache.service.ts
create mode 100755 apps/server/src/models/base/row-model.service.ts
create mode 100755 apps/server/src/models/base/sql-builder.ts
create mode 100755 apps/server/src/models/base/test.sql
create mode 100755 apps/server/src/models/department/department.controller.ts
create mode 100755 apps/server/src/models/department/department.module.ts
create mode 100755 apps/server/src/models/department/department.router.ts
create mode 100755 apps/server/src/models/department/department.row.service.ts
create mode 100755 apps/server/src/models/department/department.service.ts
create mode 100755 apps/server/src/models/department/utils.ts
create mode 100755 apps/server/src/models/message/message.controller.ts
create mode 100755 apps/server/src/models/message/message.module.ts
create mode 100755 apps/server/src/models/message/message.router.ts
create mode 100755 apps/server/src/models/message/message.service.ts
create mode 100755 apps/server/src/models/message/utils.ts
create mode 100755 apps/server/src/models/post/post.controller.ts
create mode 100755 apps/server/src/models/post/post.module.ts
create mode 100755 apps/server/src/models/post/post.router.ts
create mode 100755 apps/server/src/models/post/post.service.ts
create mode 100755 apps/server/src/models/post/utils.ts
create mode 100755 apps/server/src/models/rbac/rbac.module.ts
create mode 100755 apps/server/src/models/rbac/role.router.ts
create mode 100755 apps/server/src/models/rbac/role.row.service.ts
create mode 100755 apps/server/src/models/rbac/role.service.ts
create mode 100755 apps/server/src/models/rbac/rolemap.router.ts
create mode 100755 apps/server/src/models/rbac/rolemap.service.ts
create mode 100755 apps/server/src/models/resource/pipe/resource.pipeline.ts
create mode 100755 apps/server/src/models/resource/processor/BaseProcessor.ts
create mode 100755 apps/server/src/models/resource/processor/ImageProcessor.ts
create mode 100755 apps/server/src/models/resource/processor/VideoProcessor.ts
create mode 100755 apps/server/src/models/resource/resource.module.ts
create mode 100755 apps/server/src/models/resource/resource.router.ts
create mode 100755 apps/server/src/models/resource/resource.service.ts
create mode 100755 apps/server/src/models/resource/types.ts
create mode 100755 apps/server/src/models/staff/staff.controller.ts
create mode 100755 apps/server/src/models/staff/staff.module.ts
create mode 100755 apps/server/src/models/staff/staff.router.ts
create mode 100755 apps/server/src/models/staff/staff.row.service.ts
create mode 100755 apps/server/src/models/staff/staff.service.ts
create mode 100755 apps/server/src/models/taxonomy/taxonomy.controller.ts
create mode 100755 apps/server/src/models/taxonomy/taxonomy.module.ts
create mode 100755 apps/server/src/models/taxonomy/taxonomy.router.ts
create mode 100755 apps/server/src/models/taxonomy/taxonomy.service.ts
create mode 100755 apps/server/src/models/term/term.controller.ts
create mode 100755 apps/server/src/models/term/term.module.ts
create mode 100755 apps/server/src/models/term/term.router.ts
create mode 100755 apps/server/src/models/term/term.row.service.ts
create mode 100755 apps/server/src/models/term/term.service.ts
create mode 100755 apps/server/src/models/term/utils.ts
create mode 100755 apps/server/src/models/transform/transform.module.ts
create mode 100755 apps/server/src/models/transform/transform.router.ts
create mode 100755 apps/server/src/models/transform/transform.service.ts
create mode 100755 apps/server/src/models/visit/visit.module.ts
create mode 100755 apps/server/src/models/visit/visit.router.ts
create mode 100755 apps/server/src/models/visit/visit.service.ts
create mode 100755 apps/server/src/queue/postprocess/postprocess.service.ts
create mode 100755 apps/server/src/queue/queue.module.ts
create mode 100755 apps/server/src/queue/types.ts
create mode 100755 apps/server/src/queue/worker/file.processor.ts
create mode 100755 apps/server/src/queue/worker/processor.ts
create mode 100755 apps/server/src/socket/base/base-websocket-server.ts
create mode 100755 apps/server/src/socket/collaboration/callback.ts
create mode 100755 apps/server/src/socket/collaboration/collaboration.module.ts
create mode 100755 apps/server/src/socket/collaboration/persistence.ts
create mode 100755 apps/server/src/socket/collaboration/types.ts
create mode 100755 apps/server/src/socket/collaboration/ws-shared-doc.ts
create mode 100755 apps/server/src/socket/collaboration/yjs.server.ts
create mode 100755 apps/server/src/socket/realtime/realtime.module.ts
create mode 100755 apps/server/src/socket/realtime/realtime.server.ts
create mode 100755 apps/server/src/socket/types.ts
create mode 100755 apps/server/src/socket/websocket.module.ts
create mode 100755 apps/server/src/socket/websocket.service.ts
create mode 100755 apps/server/src/tasks/init/gendev.service.ts
create mode 100755 apps/server/src/tasks/init/init.module.ts
create mode 100755 apps/server/src/tasks/init/init.service.ts
create mode 100755 apps/server/src/tasks/init/utils.ts
create mode 100755 apps/server/src/tasks/reminder/reminder.module.ts
create mode 100755 apps/server/src/tasks/reminder/reminder.service.ts
create mode 100755 apps/server/src/tasks/tasks.module.ts
create mode 100755 apps/server/src/tasks/tasks.service.spec.ts
create mode 100755 apps/server/src/tasks/tasks.service.ts
create mode 100755 apps/server/src/trpc/trpc.module.ts
create mode 100755 apps/server/src/trpc/trpc.router.ts
create mode 100755 apps/server/src/trpc/trpc.service.ts
create mode 100755 apps/server/src/trpc/types.ts
create mode 100755 apps/server/src/trpc/utils.ts
create mode 100755 apps/server/src/upload/tus.service.ts
create mode 100755 apps/server/src/upload/types.ts
create mode 100755 apps/server/src/upload/upload.controller.ts
create mode 100755 apps/server/src/upload/upload.module.ts
create mode 100755 apps/server/src/upload/utils.ts
create mode 100755 apps/server/src/utils/event-bus.ts
create mode 100755 apps/server/src/utils/file.ts
create mode 100755 apps/server/src/utils/minio/minio.module.ts
create mode 100755 apps/server/src/utils/minio/minio.service.ts
create mode 100755 apps/server/src/utils/redis/redis.service.ts
create mode 100755 apps/server/src/utils/redis/utils.ts
create mode 100755 apps/server/src/utils/tool.ts
create mode 100755 apps/server/test/app.e2e-spec.ts
create mode 100755 apps/server/test/jest-e2e.json
create mode 100755 apps/server/tsconfig.build.json
create mode 100755 apps/server/tsconfig.json
create mode 100755 apps/web/.env.example
create mode 100755 apps/web/eslint.config.js
create mode 100755 apps/web/index.html
create mode 100644 apps/web/nginx.conf
create mode 100755 apps/web/package.json
create mode 100755 apps/web/postcss.config.js
create mode 100755 apps/web/public/params.json
create mode 100755 apps/web/public/vite.svg
create mode 100644 apps/web/src/App.css
create mode 100755 apps/web/src/App.tsx
create mode 100755 apps/web/src/app/admin/base-setting/page.tsx
create mode 100755 apps/web/src/app/admin/department/page.tsx
create mode 100755 apps/web/src/app/admin/layout.tsx
create mode 100755 apps/web/src/app/admin/role/page.tsx
create mode 100755 apps/web/src/app/admin/staff/page.tsx
create mode 100755 apps/web/src/app/admin/term/page.tsx
create mode 100755 apps/web/src/app/denied.tsx
create mode 100755 apps/web/src/app/error.tsx
create mode 100755 apps/web/src/app/login.tsx
create mode 100755 apps/web/src/app/main/home/page.tsx
create mode 100644 apps/web/src/app/main/layout/index.tsx
create mode 100755 apps/web/src/assets/react.svg
create mode 100755 apps/web/src/components/animation/sine-wave.tsx
create mode 100755 apps/web/src/components/common/container/Card.tsx
create mode 100644 apps/web/src/components/common/container/CollapsibleContent.tsx
create mode 100755 apps/web/src/components/common/editor/quill/QuillCharCounter.tsx
create mode 100755 apps/web/src/components/common/editor/quill/QuillEditor.tsx
create mode 100755 apps/web/src/components/common/editor/quill/constants.ts
create mode 100755 apps/web/src/components/common/element/AnimatedTabs.tsx
create mode 100755 apps/web/src/components/common/element/Avatar.tsx
create mode 100755 apps/web/src/components/common/element/Button.tsx
create mode 100755 apps/web/src/components/common/element/Pagination.tsx
create mode 100755 apps/web/src/components/common/element/Tag.tsx
create mode 100755 apps/web/src/components/common/form/FormArrayField.tsx
create mode 100755 apps/web/src/components/common/form/FormDynamicInputs.tsx
create mode 100755 apps/web/src/components/common/form/FormError.tsx
create mode 100755 apps/web/src/components/common/form/FormInput.tsx
create mode 100755 apps/web/src/components/common/form/FormQuillInput.tsx
create mode 100755 apps/web/src/components/common/form/FormSelect.tsx
create mode 100644 apps/web/src/components/common/input/InputList.tsx
create mode 100755 apps/web/src/components/common/space/Empty.tsx
create mode 100755 apps/web/src/components/common/uploader/AvatarUploader.tsx
create mode 100755 apps/web/src/components/common/uploader/TusUploader.tsx
create mode 100755 apps/web/src/components/layout/admin/AdminHeader.tsx
create mode 100755 apps/web/src/components/layout/admin/AdminLayout.tsx
create mode 100755 apps/web/src/components/layout/admin/AdminSidebar.tsx
create mode 100755 apps/web/src/components/layout/breadcrumb.tsx
create mode 100755 apps/web/src/components/layout/element/breadcrumb.tsx
create mode 100755 apps/web/src/components/layout/element/types.ts
create mode 100755 apps/web/src/components/layout/element/usermenu/user-edit-modal.tsx
create mode 100755 apps/web/src/components/layout/element/usermenu/user-form.tsx
create mode 100755 apps/web/src/components/layout/element/usermenu/usermenu.tsx
create mode 100755 apps/web/src/components/layout/fix-header.tsx
create mode 100755 apps/web/src/components/layout/resizable-sidebar.tsx
create mode 100755 apps/web/src/components/layout/sidebar-content.tsx
create mode 100755 apps/web/src/components/layout/user-header.tsx
create mode 100755 apps/web/src/components/models/department/department-form.tsx
create mode 100755 apps/web/src/components/models/department/department-import-drawer.tsx
create mode 100755 apps/web/src/components/models/department/department-list.tsx
create mode 100755 apps/web/src/components/models/department/department-select.tsx
create mode 100755 apps/web/src/components/models/department/dept-editor.tsx
create mode 100755 apps/web/src/components/models/department/dept-import-form.tsx
create mode 100755 apps/web/src/components/models/department/dept-import-modal.tsx
create mode 100755 apps/web/src/components/models/department/dept-modal.tsx
create mode 100755 apps/web/src/components/models/role/role-editor/assign-list.tsx
create mode 100755 apps/web/src/components/models/role/role-editor/role-editor.tsx
create mode 100755 apps/web/src/components/models/role/role-editor/role-form.tsx
create mode 100755 apps/web/src/components/models/role/role-editor/role-list.tsx
create mode 100755 apps/web/src/components/models/role/role-editor/role-modal.tsx
create mode 100755 apps/web/src/components/models/role/role-editor/role-staff-modal.tsx
create mode 100755 apps/web/src/components/models/role/role-select.tsx
create mode 100755 apps/web/src/components/models/staff/staff-editor.tsx
create mode 100755 apps/web/src/components/models/staff/staff-form.tsx
create mode 100755 apps/web/src/components/models/staff/staff-list.tsx
create mode 100755 apps/web/src/components/models/staff/staff-modal.tsx
create mode 100755 apps/web/src/components/models/staff/staff-select.tsx
create mode 100755 apps/web/src/components/models/staff/staff-transfer.tsx
create mode 100755 apps/web/src/components/models/taxonomy/taxonomy-select.tsx
create mode 100755 apps/web/src/components/models/term/taxonomy-form.tsx
create mode 100755 apps/web/src/components/models/term/taxonomy-list.tsx
create mode 100755 apps/web/src/components/models/term/taxonomy-modal.tsx
create mode 100755 apps/web/src/components/models/term/term-editor.tsx
create mode 100755 apps/web/src/components/models/term/term-form.tsx
create mode 100755 apps/web/src/components/models/term/term-import-form.tsx
create mode 100755 apps/web/src/components/models/term/term-import-modal.tsx
create mode 100755 apps/web/src/components/models/term/term-list.tsx
create mode 100755 apps/web/src/components/models/term/term-modal.tsx
create mode 100755 apps/web/src/components/models/term/term-select.tsx
create mode 100755 apps/web/src/components/models/term/term-select_BACKUP.tsx
create mode 100755 apps/web/src/components/models/term/util.ts
create mode 100755 apps/web/src/components/presentation/NavBar.tsx
create mode 100755 apps/web/src/components/presentation/Skeleton.tsx
create mode 100755 apps/web/src/components/presentation/ag-server-table.tsx
create mode 100755 apps/web/src/components/presentation/animate-progress.tsx
create mode 100755 apps/web/src/components/presentation/collapse-section.tsx
create mode 100755 apps/web/src/components/presentation/dashboard-card.tsx
create mode 100755 apps/web/src/components/presentation/dialog.tsx
create mode 100755 apps/web/src/components/presentation/dropdown-menu.tsx
create mode 100755 apps/web/src/components/presentation/excel-to-base64-uploader.tsx
create mode 100755 apps/web/src/components/presentation/general-dialog.tsx
create mode 100755 apps/web/src/components/presentation/id-card.tsx
create mode 100755 apps/web/src/components/presentation/nice-img.tsx
create mode 100755 apps/web/src/components/presentation/phone-book.tsx
create mode 100755 apps/web/src/components/presentation/round-tag.tsx
create mode 100755 apps/web/src/components/presentation/rounded-rectangle-tag.tsx
create mode 100755 apps/web/src/components/presentation/user/Avatar.tsx
create mode 100755 apps/web/src/components/presentation/video-player/ControlButtons/Brightness.tsx
create mode 100755 apps/web/src/components/presentation/video-player/ControlButtons/FullScreen.tsx
create mode 100755 apps/web/src/components/presentation/video-player/ControlButtons/Play.tsx
create mode 100755 apps/web/src/components/presentation/video-player/ControlButtons/Setting.tsx
create mode 100755 apps/web/src/components/presentation/video-player/ControlButtons/Speed.tsx
create mode 100755 apps/web/src/components/presentation/video-player/ControlButtons/TimeLine.tsx
create mode 100755 apps/web/src/components/presentation/video-player/ControlButtons/Volume.tsx
create mode 100755 apps/web/src/components/presentation/video-player/ControlButtons/index.ts
create mode 100755 apps/web/src/components/presentation/video-player/LoadingOverlay.tsx
create mode 100755 apps/web/src/components/presentation/video-player/VideoControls.tsx
create mode 100755 apps/web/src/components/presentation/video-player/VideoDisplay.tsx
create mode 100755 apps/web/src/components/presentation/video-player/VideoPlayer.tsx
create mode 100755 apps/web/src/components/presentation/video-player/VideoPlayerLayout.tsx
create mode 100755 apps/web/src/components/presentation/video-player/interface.ts
create mode 100755 apps/web/src/components/presentation/video-player/type.ts
create mode 100755 apps/web/src/components/presentation/video-player/utlis.ts
create mode 100755 apps/web/src/components/svg/rounded-clip.tsx
create mode 100755 apps/web/src/components/utils/excel-importer.tsx
create mode 100755 apps/web/src/components/utils/image-uploader.tsx
create mode 100755 apps/web/src/components/utils/with-auth.tsx
create mode 100755 apps/web/src/env.ts
create mode 100755 apps/web/src/hooks/useClickOutside.ts
create mode 100755 apps/web/src/hooks/useLocalSetting.ts
create mode 100755 apps/web/src/hooks/useTusUpload.ts
create mode 100755 apps/web/src/index.css
create mode 100755 apps/web/src/locale/ag-grid-locale.ts
create mode 100755 apps/web/src/main.tsx
create mode 100755 apps/web/src/polyfills/index.ts
create mode 100755 apps/web/src/providers/auth-provider.tsx
create mode 100755 apps/web/src/providers/params-provider.tsx
create mode 100755 apps/web/src/providers/query-provider.tsx
create mode 100755 apps/web/src/providers/theme-provider.tsx
create mode 100755 apps/web/src/routes/admin-route.tsx
create mode 100755 apps/web/src/routes/index.tsx
create mode 100644 apps/web/src/routes/main-route.tsx
create mode 100755 apps/web/src/routes/types.ts
create mode 100755 apps/web/src/utils/axios.ts
create mode 100755 apps/web/src/utils/idb.ts
create mode 100644 apps/web/src/utils/index.ts
create mode 100755 apps/web/src/utils/tusd.ts
create mode 100755 apps/web/src/vite-env.d.ts
create mode 100755 apps/web/tailwind.config.ts
create mode 100755 apps/web/tsconfig.app.json
create mode 100755 apps/web/tsconfig.json
create mode 100755 apps/web/tsconfig.node.json
create mode 100755 apps/web/vite.config.ts
create mode 100755 auto.sh
create mode 100755 config/backup.sh
create mode 100755 config/nginx/conf.d/web.conf
create mode 100755 config/nginx/conf.d/web.template
create mode 100755 config/nginx/entrypoint.sh
create mode 100755 config/nginx/nginx.conf
create mode 100755 config/redis.conf
create mode 100755 docker-compose.example.yml
create mode 100755 package.json
create mode 100755 packages/client/package.json
create mode 100755 packages/client/src/api/hooks/index.ts
create mode 100755 packages/client/src/api/hooks/useAppConfig.ts
create mode 100755 packages/client/src/api/hooks/useCourse.ts
create mode 100755 packages/client/src/api/hooks/useDepartment.ts
create mode 100755 packages/client/src/api/hooks/useEntity.ts
create mode 100755 packages/client/src/api/hooks/useMessage.ts
create mode 100755 packages/client/src/api/hooks/usePost.ts
create mode 100755 packages/client/src/api/hooks/useQueryApi.ts
create mode 100755 packages/client/src/api/hooks/useRole.ts
create mode 100755 packages/client/src/api/hooks/useRoleMap.ts
create mode 100755 packages/client/src/api/hooks/useStaff.ts
create mode 100755 packages/client/src/api/hooks/useTaxonomy.ts
create mode 100755 packages/client/src/api/hooks/useTerm.ts
create mode 100755 packages/client/src/api/hooks/useTransform.ts
create mode 100755 packages/client/src/api/hooks/useVisitor.ts
create mode 100755 packages/client/src/api/index.ts
create mode 100755 packages/client/src/api/trpc.ts
create mode 100755 packages/client/src/api/utils.ts
create mode 100755 packages/client/src/event/index.ts
create mode 100755 packages/client/src/hooks/index.ts
create mode 100755 packages/client/src/hooks/useAwaitState.ts
create mode 100755 packages/client/src/hooks/useCheckBox.ts
create mode 100755 packages/client/src/hooks/useStack.ts
create mode 100755 packages/client/src/hooks/useTimeout.ts
create mode 100755 packages/client/src/index.ts
create mode 100755 packages/client/src/io/download.ts
create mode 100755 packages/client/src/io/index.ts
create mode 100755 packages/client/src/presentation/color.ts
create mode 100755 packages/client/src/presentation/index.ts
create mode 100755 packages/client/src/providers/index.ts
create mode 100755 packages/client/src/singleton/DataHolder.ts
create mode 100755 packages/client/src/tools/file.ts
create mode 100755 packages/client/src/tools/index.ts
create mode 100755 packages/client/src/tools/level.ts
create mode 100755 packages/client/src/tools/number.ts
create mode 100755 packages/client/src/tools/objects.ts
create mode 100755 packages/client/src/types/index.ts
create mode 100755 packages/client/src/upload/index.ts
create mode 100755 packages/client/src/upload/types.ts
create mode 100755 packages/client/src/upload/uploadManager.ts
create mode 100755 packages/client/src/upload/useUpload.ts
create mode 100755 packages/client/src/websocket/client.ts
create mode 100755 packages/client/src/websocket/index.ts
create mode 100755 packages/client/src/websocket/types.ts
create mode 100755 packages/client/tsconfig.json
create mode 100755 packages/client/tsup.config.ts
create mode 100755 packages/common/.env.example
create mode 100755 packages/common/package.json
create mode 100755 packages/common/prisma/schema.prisma
create mode 100755 packages/common/src/collaboration/index.ts
create mode 100755 packages/common/src/collaboration/types.ts
create mode 100755 packages/common/src/collaboration/utils.ts
create mode 100755 packages/common/src/collaboration/y-auth.ts
create mode 100755 packages/common/src/collaboration/y-awareness.ts
create mode 100755 packages/common/src/collaboration/y-handler.ts
create mode 100755 packages/common/src/collaboration/y-socket.ts
create mode 100755 packages/common/src/collaboration/y-sync.ts
create mode 100755 packages/common/src/constants.ts
create mode 100755 packages/common/src/db.ts
create mode 100755 packages/common/src/enum.ts
create mode 100755 packages/common/src/index.ts
create mode 100755 packages/common/src/models/department.ts
create mode 100755 packages/common/src/models/index.ts
create mode 100755 packages/common/src/models/message.ts
create mode 100755 packages/common/src/models/post.ts
create mode 100755 packages/common/src/models/rbac.ts
create mode 100755 packages/common/src/models/section.ts
create mode 100755 packages/common/src/models/select.ts
create mode 100755 packages/common/src/models/staff.ts
create mode 100755 packages/common/src/models/term.ts
create mode 100755 packages/common/src/schema.ts
create mode 100755 packages/common/src/types.ts
create mode 100755 packages/common/src/utils/array-utils.ts
create mode 100755 packages/common/src/utils/browser-utils.ts
create mode 100755 packages/common/src/utils/crypto-utils.ts
create mode 100755 packages/common/src/utils/date-utils.ts
create mode 100755 packages/common/src/utils/dom-utils.ts
create mode 100755 packages/common/src/utils/file-utils.ts
create mode 100755 packages/common/src/utils/index.ts
create mode 100755 packages/common/src/utils/math-utils.ts
create mode 100755 packages/common/src/utils/object-utils.ts
create mode 100755 packages/common/src/utils/random-utils.ts
create mode 100755 packages/common/src/utils/string-utils.ts
create mode 100755 packages/common/src/utils/type-utils.ts
create mode 100755 packages/common/src/utils/uuid.ts
create mode 100755 packages/common/src/utils/validation-utils.ts
create mode 100755 packages/common/tsconfig.json
create mode 100755 packages/common/tsup.config.ts
create mode 100755 packages/config/package.json
create mode 100644 packages/config/src/index.ts
create mode 100755 packages/config/src/tailwind.ts
create mode 100755 packages/config/tsconfig.json
create mode 100755 packages/config/tsup.config.ts
create mode 100755 packages/iconer/.eslintrc.cjs
create mode 100755 packages/iconer/README.md
create mode 100755 packages/iconer/package.json
create mode 100755 packages/iconer/public/vite.svg
create mode 100755 packages/iconer/src/components/svg-icon.tsx
create mode 100755 packages/iconer/src/generated/icon-names.ts
create mode 100755 packages/iconer/src/icons/account-location.svg
create mode 100755 packages/iconer/src/icons/add.svg
create mode 100755 packages/iconer/src/icons/admin-outlined.svg
create mode 100755 packages/iconer/src/icons/airport.svg
create mode 100755 packages/iconer/src/icons/align-center.svg
create mode 100755 packages/iconer/src/icons/align-justify.svg
create mode 100755 packages/iconer/src/icons/align-left.svg
create mode 100755 packages/iconer/src/icons/align-right.svg
create mode 100755 packages/iconer/src/icons/approve.svg
create mode 100755 packages/iconer/src/icons/arrow-drop-down.svg
create mode 100755 packages/iconer/src/icons/blocks-group.svg
create mode 100755 packages/iconer/src/icons/bold.svg
create mode 100755 packages/iconer/src/icons/caret-right.svg
create mode 100755 packages/iconer/src/icons/category-outline.svg
create mode 100755 packages/iconer/src/icons/check-one.svg
create mode 100755 packages/iconer/src/icons/check.svg
create mode 100755 packages/iconer/src/icons/config.svg
create mode 100755 packages/iconer/src/icons/content.svg
create mode 100755 packages/iconer/src/icons/copy.svg
create mode 100755 packages/iconer/src/icons/cube-duotone.svg
create mode 100755 packages/iconer/src/icons/date-time.svg
create mode 100755 packages/iconer/src/icons/delete.svg
create mode 100755 packages/iconer/src/icons/edit.svg
create mode 100755 packages/iconer/src/icons/error-duotone.svg
create mode 100755 packages/iconer/src/icons/error-outline.svg
create mode 100755 packages/iconer/src/icons/exit.svg
create mode 100755 packages/iconer/src/icons/filter.svg
create mode 100755 packages/iconer/src/icons/fluent-person.svg
create mode 100755 packages/iconer/src/icons/get-text.svg
create mode 100755 packages/iconer/src/icons/group-work.svg
create mode 100755 packages/iconer/src/icons/health-circle.svg
create mode 100755 packages/iconer/src/icons/history.svg
create mode 100755 packages/iconer/src/icons/home.svg
create mode 100755 packages/iconer/src/icons/horizontal-rule.svg
create mode 100755 packages/iconer/src/icons/image.svg
create mode 100755 packages/iconer/src/icons/inbox.svg
create mode 100755 packages/iconer/src/icons/italic.svg
create mode 100755 packages/iconer/src/icons/link-off.svg
create mode 100755 packages/iconer/src/icons/link.svg
create mode 100755 packages/iconer/src/icons/list.svg
create mode 100755 packages/iconer/src/icons/logout.svg
create mode 100755 packages/iconer/src/icons/loop.svg
create mode 100755 packages/iconer/src/icons/more.svg
create mode 100755 packages/iconer/src/icons/note.svg
create mode 100755 packages/iconer/src/icons/number-symbol.svg
create mode 100755 packages/iconer/src/icons/org.svg
create mode 100755 packages/iconer/src/icons/people-32.svg
create mode 100755 packages/iconer/src/icons/people-group.svg
create mode 100755 packages/iconer/src/icons/people-plus.svg
create mode 100755 packages/iconer/src/icons/people.svg
create mode 100755 packages/iconer/src/icons/person-board.svg
create mode 100755 packages/iconer/src/icons/person-hair.svg
create mode 100755 packages/iconer/src/icons/person-home.svg
create mode 100755 packages/iconer/src/icons/plane-takeoff.svg
create mode 100755 packages/iconer/src/icons/plane.svg
create mode 100755 packages/iconer/src/icons/progress.svg
create mode 100755 packages/iconer/src/icons/radar-chart.svg
create mode 100755 packages/iconer/src/icons/react.svg
create mode 100755 packages/iconer/src/icons/redo.svg
create mode 100755 packages/iconer/src/icons/right-line.svg
create mode 100755 packages/iconer/src/icons/seal-check.svg
create mode 100755 packages/iconer/src/icons/search.svg
create mode 100755 packages/iconer/src/icons/setting.svg
create mode 100755 packages/iconer/src/icons/share.svg
create mode 100755 packages/iconer/src/icons/strike.svg
create mode 100755 packages/iconer/src/icons/subject-rounded.svg
create mode 100755 packages/iconer/src/icons/sum.svg
create mode 100755 packages/iconer/src/icons/target.svg
create mode 100755 packages/iconer/src/icons/text-indent.svg
create mode 100755 packages/iconer/src/icons/text-outdent.svg
create mode 100755 packages/iconer/src/icons/time.svg
create mode 100755 packages/iconer/src/icons/underline.svg
create mode 100755 packages/iconer/src/icons/undo.svg
create mode 100755 packages/iconer/src/icons/user-id.svg
create mode 100755 packages/iconer/src/icons/work.svg
create mode 100755 packages/iconer/src/icons/zoomin.svg
create mode 100755 packages/iconer/src/icons/zoomout.svg
create mode 100755 packages/iconer/src/index.css
create mode 100755 packages/iconer/src/index.ts
create mode 100755 packages/iconer/src/utils/useLazySvgImport.ts
create mode 100755 packages/iconer/src/vite-env.d.ts
create mode 100755 packages/iconer/tsconfig.app.json
create mode 100755 packages/iconer/tsconfig.json
create mode 100755 packages/iconer/tsconfig.node.json
create mode 100755 packages/iconer/types/src/components/svg-icon.d.ts
create mode 100755 packages/iconer/types/src/generated/icon-names.d.ts
create mode 100755 packages/iconer/types/src/index.d.ts
create mode 100755 packages/iconer/types/src/utils/useLazySvgImport.d.ts
create mode 100755 packages/iconer/vite.config.ts
create mode 100755 packages/template/package.json
create mode 100755 packages/template/src/index.ts
create mode 100755 packages/template/tsconfig.json
create mode 100755 packages/template/tsup.config.ts
create mode 100755 packages/tus/package.json
create mode 100755 packages/tus/src/handlers/BaseHandler.ts
create mode 100755 packages/tus/src/handlers/DeleteHandler.ts
create mode 100755 packages/tus/src/handlers/GetHandler.ts
create mode 100755 packages/tus/src/handlers/HeadHandler.ts
create mode 100755 packages/tus/src/handlers/OptionsHandler.ts
create mode 100755 packages/tus/src/handlers/PatchHandler.ts
create mode 100755 packages/tus/src/handlers/PostHandler.ts
create mode 100755 packages/tus/src/index.ts
create mode 100755 packages/tus/src/lockers/MemoryLocker.ts
create mode 100755 packages/tus/src/lockers/index.ts
create mode 100755 packages/tus/src/server.ts
create mode 100755 packages/tus/src/store/file-store/index.ts
create mode 100755 packages/tus/src/store/index.ts
create mode 100755 packages/tus/src/store/s3-store/index.ts
create mode 100755 packages/tus/src/types.ts
create mode 100755 packages/tus/src/utils/constants.ts
create mode 100755 packages/tus/src/utils/index.ts
create mode 100755 packages/tus/src/utils/kvstores/FileKvStore.ts
create mode 100755 packages/tus/src/utils/kvstores/IoRedisKvStore.ts
create mode 100755 packages/tus/src/utils/kvstores/MemoryKvStore.ts
create mode 100755 packages/tus/src/utils/kvstores/RedisKvStore.ts
create mode 100755 packages/tus/src/utils/kvstores/Types.ts
create mode 100755 packages/tus/src/utils/kvstores/index.ts
create mode 100755 packages/tus/src/utils/models/Context.ts
create mode 100755 packages/tus/src/utils/models/DataStore.ts
create mode 100755 packages/tus/src/utils/models/Locker.ts
create mode 100755 packages/tus/src/utils/models/Metadata.ts
create mode 100755 packages/tus/src/utils/models/StreamLimiter.ts
create mode 100755 packages/tus/src/utils/models/StreamSplitter.ts
create mode 100755 packages/tus/src/utils/models/Uid.ts
create mode 100755 packages/tus/src/utils/models/Upload.ts
create mode 100755 packages/tus/src/utils/models/index.ts
create mode 100755 packages/tus/src/validators/HeaderValidator.ts
create mode 100755 packages/tus/tsconfig.json
create mode 100755 packages/tus/tsup.config.ts
create mode 100755 pnpm-lock.yaml
create mode 100755 pnpm-workspace.yaml
create mode 100755 tsconfig.base.json
diff --git a/.continue/prompts/coder.prompt b/.continue/prompts/coder.prompt
new file mode 100755
index 0000000..dce8ee7
--- /dev/null
+++ b/.continue/prompts/coder.prompt
@@ -0,0 +1,19 @@
+temperature: 0.5
+maxTokens: 8192
+---
+
A progressive Node.js framework for building efficient and scalable server-side applications.
+ + + +## Description + +[Nest](https://github.com/nestjs/nest) framework TypeScript starter repository. + +## Installation + +```bash +$ yarn install +``` + +## Running the app + +```bash +# development +$ yarn run start + +# watch mode +$ yarn run start:dev + +# production mode +$ yarn run start:prod +``` + +## Test + +```bash +# unit tests +$ yarn run test + +# e2e tests +$ yarn run test:e2e + +# test coverage +$ yarn run test:cov +``` + +## Support + +Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support). + +## Stay in touch + +- Author - [Kamil Myśliwiec](https://kamilmysliwiec.com) +- Website - [https://nestjs.com](https://nestjs.com/) +- Twitter - [@nestframework](https://twitter.com/nestframework) + +## License + +Nest is [MIT licensed](LICENSE). diff --git a/apps/server/entrypoint.sh b/apps/server/entrypoint.sh new file mode 100755 index 0000000..9ea56fa --- /dev/null +++ b/apps/server/entrypoint.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +# # 从 DATABASE_URL 环境变量中提取主机名、端口和用户名 +# DB_HOST=$(echo $DATABASE_URL | cut -d '@' -f 2 | cut -d ':' -f 1) +# DB_PORT=$(echo $DATABASE_URL | cut -d ':' -f 4 | cut -d '/' -f 1) +# DB_USER=$(echo $DATABASE_URL | cut -d '/' -f 3 | cut -d ':' -f 1) + +# # 检查数据库是否就绪 +# until pg_isready -h $DB_HOST -p $DB_PORT -U $DB_USER; do +# echo "Database is unavailable - sleeping" +# sleep 1 +# done + +# echo "Database is up" + +# # 检查标记文件是否存在,如果不存在,则执行 prisma deploy 并创建标记文件 +# # if [ ! -f "/app/prisma-deployed" ]; then +# # pnpm prisma generate +# # pnpm prisma migrate deploy +# # touch /app/prisma-deployed +# # fi + +# # 启动主应用 +# exec node apps/server/dist/main + + +# 从 DATABASE_URL 环境变量中提取主机名、端口和用户名 +DB_HOST=$(echo $DATABASE_URL | cut -d '@' -f 2 | cut -d ':' -f 1) +DB_PORT=$(echo $DATABASE_URL | cut -d ':' -f 4 | cut -d '/' -f 1) +DB_USER=$(echo $DATABASE_URL | cut -d '/' -f 3 | cut -d ':' -f 1) + +# 检查数据库是否就绪 +until nc -z $DB_HOST $DB_PORT; do + echo "Database is unavailable - sleeping" + sleep 1 +done + +echo "Database is up" + +# 启动主应用 +exec node apps/server/dist/main \ No newline at end of file diff --git a/apps/server/nest-cli.json b/apps/server/nest-cli.json new file mode 100755 index 0000000..f9aa683 --- /dev/null +++ b/apps/server/nest-cli.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/nest-cli", + "collection": "@nestjs/schematics", + "sourceRoot": "src", + "compilerOptions": { + "deleteOutDir": true + } +} diff --git a/apps/server/package.json b/apps/server/package.json new file mode 100755 index 0000000..566bfb2 --- /dev/null +++ b/apps/server/package.json @@ -0,0 +1,113 @@ +{ + "name": "server", + "version": "0.0.1", + "description": "", + "author": "", + "private": true, + "license": "UNLICENSED", + "scripts": { + "build": "nest build", + "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", + "start": "nest start", + "dev": "nest start --watch", + "start:debug": "nest start --debug --watch", + "start:prod": "node dist/main", + "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", + "test": "jest", + "test:watch": "jest --watch", + "test:cov": "jest --coverage", + "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", + "test:e2e": "jest --config ./test/jest-e2e.json" + }, + "dependencies": { + "@nestjs/bullmq": "^10.2.0", + "@nestjs/common": "^10.3.10", + "@nestjs/config": "^3.2.3", + "@nestjs/core": "^10.0.0", + "@nestjs/jwt": "^10.2.0", + "@nestjs/platform-express": "^10.0.0", + "@nestjs/platform-socket.io": "^10.3.10", + "@nestjs/schedule": "^4.1.0", + "@nestjs/websockets": "^10.3.10", + "@nice/common": "workspace:*", + "@nice/tus": "workspace:*", + "@trpc/server": "11.0.0-rc.456", + "argon2": "^0.41.1", + "axios": "^1.7.2", + "bullmq": "^5.12.0", + "cron": "^3.1.7", + "dayjs": "^1.11.13", + "dotenv": "^16.4.7", + "exceljs": "^4.4.0", + "fluent-ffmpeg": "^2.1.3", + "ioredis": "^5.4.1", + "lib0": "^0.2.97", + "lodash": "^4.17.21", + "lodash.debounce": "^4.0.8", + "mime-types": "^2.1.35", + "minio": "^8.0.1", + "mitt": "^3.0.1", + "nanoid": "^5.0.9", + "nanoid-cjs": "^0.0.7", + "pinyin-pro": "^3.26.0", + "reflect-metadata": "^0.2.0", + "rxjs": "^7.8.1", + "sharp": "^0.33.5", + "slugify": "^1.6.6", + "socket.io": "^4.7.5", + "superjson-cjs": "^2.2.3", + "transliteration": "^2.3.5", + "tus-js-client": "^4.1.0", + "uuid": "^10.0.0", + "ws": "^8.18.0", + "y-leveldb": "^0.1.2", + "yjs": "^13.6.20", + "zod": "^3.23.8" + }, + "devDependencies": { + "@nestjs/cli": "^10.0.0", + "@nestjs/schematics": "^10.0.0", + "@nestjs/testing": "^10.0.0", + "@types/exceljs": "^1.3.0", + "@types/express": "^4.17.21", + "@types/fluent-ffmpeg": "^2.1.27", + "@types/jest": "^29.5.2", + "@types/mime-types": "^2.1.4", + "@types/multer": "^1.4.12", + "@types/node": "^20.3.1", + "@types/supertest": "^6.0.0", + "@types/uuid": "^10.0.0", + "@types/ws": "^8.5.13", + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", + "eslint": "^8.42.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-prettier": "^5.0.0", + "jest": "^29.5.0", + "prettier": "^3.0.0", + "source-map-support": "^0.5.21", + "supertest": "^6.3.3", + "ts-jest": "^29.1.0", + "ts-loader": "^9.4.3", + "ts-node": "^10.9.1", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.5.4" + }, + "jest": { + "moduleFileExtensions": [ + "js", + "json", + "ts" + ], + "rootDir": "src", + "testRegex": ".*\\.spec\\.ts$", + "transform": { + "^.+\\.(t|j)s$": "ts-jest" + }, + "collectCoverageFrom": [ + "**/*.(t|j)s" + ], + "coverageDirectory": "../coverage", + "testEnvironment": "node" + } +} \ No newline at end of file diff --git a/apps/server/src/app.module.ts b/apps/server/src/app.module.ts new file mode 100755 index 0000000..3bc892f --- /dev/null +++ b/apps/server/src/app.module.ts @@ -0,0 +1,52 @@ +import { Module } from '@nestjs/common'; +import { TrpcModule } from './trpc/trpc.module'; +import { QueueModule } from './queue/queue.module'; +import { AuthModule } from './auth/auth.module'; +import { TaxonomyModule } from './models/taxonomy/taxonomy.module'; +import { TasksModule } from './tasks/tasks.module'; +import { ScheduleModule } from '@nestjs/schedule'; +import { InitModule } from './tasks/init/init.module'; +import { ReminderModule } from './tasks/reminder/reminder.module'; +import { JwtModule } from '@nestjs/jwt'; +import { env } from './env'; +import { ConfigModule } from '@nestjs/config'; +import { APP_FILTER } from '@nestjs/core'; +import { MinioModule } from './utils/minio/minio.module'; +import { WebSocketModule } from './socket/websocket.module'; +import { CollaborationModule } from './socket/collaboration/collaboration.module'; +import { ExceptionsFilter } from './filters/exceptions.filter'; +import { TransformModule } from './models/transform/transform.module'; +import { RealTimeModule } from './socket/realtime/realtime.module'; +import { UploadModule } from './upload/upload.module'; + +@Module({ + imports: [ + ConfigModule.forRoot({ + isGlobal: true, // 全局可用 + envFilePath: '.env' + }), + ScheduleModule.forRoot(), + JwtModule.register({ + global: true, + secret: env.JWT_SECRET + }), + WebSocketModule, + TrpcModule, + QueueModule, + AuthModule, + TaxonomyModule, + TasksModule, + InitModule, + ReminderModule, + TransformModule, + MinioModule, + CollaborationModule, + RealTimeModule, + UploadModule + ], + providers: [{ + provide: APP_FILTER, + useClass: ExceptionsFilter, + }], +}) +export class AppModule { } diff --git a/apps/server/src/auth/auth.controller.ts b/apps/server/src/auth/auth.controller.ts new file mode 100755 index 0000000..de67161 --- /dev/null +++ b/apps/server/src/auth/auth.controller.ts @@ -0,0 +1,112 @@ +import { + Controller, + Headers, + Post, + Body, + UseGuards, + Get, + Req, + HttpException, + HttpStatus, + BadRequestException, + InternalServerErrorException, + NotFoundException, + UnauthorizedException, + Logger, +} from '@nestjs/common'; +import { AuthService } from './auth.service'; +import { AuthSchema, JwtPayload } from '@nice/common'; +import { AuthGuard } from './auth.guard'; +import { UserProfileService } from './utils'; +import { z } from 'zod'; +import { FileValidationErrorType } from './types'; +@Controller('auth') +export class AuthController { + private logger = new Logger(AuthController.name); + constructor(private readonly authService: AuthService) {} + @Get('file') + async authFileRequset( + @Headers('x-original-uri') originalUri: string, + @Headers('x-real-ip') realIp: string, + @Headers('x-original-method') method: string, + @Headers('x-query-params') queryParams: string, + @Headers('host') host: string, + @Headers('authorization') authorization: string, + ) { + try { + const fileRequest = { + originalUri, + realIp, + method, + queryParams, + host, + authorization, + }; + + const authResult = + await this.authService.validateFileRequest(fileRequest); + if (!authResult.isValid) { + // 使用枚举类型进行错误处理 + switch (authResult.error) { + case FileValidationErrorType.INVALID_URI: + throw new BadRequestException(authResult.error); + case FileValidationErrorType.RESOURCE_NOT_FOUND: + throw new NotFoundException(authResult.error); + case FileValidationErrorType.AUTHORIZATION_REQUIRED: + case FileValidationErrorType.INVALID_TOKEN: + throw new UnauthorizedException(authResult.error); + default: + throw new InternalServerErrorException( + authResult.error || FileValidationErrorType.UNKNOWN_ERROR, + ); + } + } + return { + headers: { + 'X-User-Id': authResult.userId, + 'X-Resource-Type': authResult.resourceType, + }, + }; + } catch (error: any) { + this.logger.verbose( + `File request auth failed from ${realIp} reason:${error.message}`, + ); + throw error; + } + } + @UseGuards(AuthGuard) + @Get('user-profile') + async getUserProfile(@Req() request: Request) { + const payload: JwtPayload = (request as any).user; + const { staff } = await UserProfileService.instance.getUserProfileById( + payload.sub, + ); + return staff; + } + @Post('login') + async login(@Body() body: z.infer