From db52047c9968a89d71b8ff894d512e645ca533c4 Mon Sep 17 00:00:00 2001 From: fantasticit Date: Fri, 11 Mar 2022 13:57:55 +0800 Subject: [PATCH] chore: refactor --- package.json | 6 +- packages/client/package.json | 3 +- .../src/components/document/card/index.tsx | 2 +- .../document/collaboration/index.tsx | 6 +- .../document/comments/comments/Item/index.tsx | 2 +- .../document/comments/comments/index.tsx | 2 +- .../components/document/comments/index.tsx | 5 - .../src/components/document/create/index.tsx | 2 +- .../src/components/document/editor/editor.tsx | 2 +- .../components/document/reader/content.tsx | 2 +- .../src/components/document/reader/editor.tsx | 2 +- .../src/components/document/reader/user.tsx | 2 +- .../src/components/document/share/index.tsx | 3 +- .../src/components/icons/IconSearch.tsx | 20 +++ .../client/src/components/icons/index.tsx | 1 + .../client/src/components/message/index.tsx | 3 + .../src/components/search/index.module.scss | 43 ++++++ .../client/src/components/search/index.tsx | 125 ++++++++++++++++++ .../src/components/template/card/index.tsx | 2 +- .../src/components/template/editor/editor.tsx | 2 +- .../src/components/template/reader/editor.tsx | 2 +- .../client/src/components/tiptap/base-kit.tsx | 2 +- .../tiptap/extensions/trailing-node.tsx | 2 +- .../client/src/components/tiptap/provider.ts | 2 +- .../client/src/components/wiki/card/index.tsx | 2 +- .../src/components/wiki/create/index.tsx | 2 +- .../src/components/wiki/pin-card/index.tsx | 2 +- .../components/wiki/setting/base/index.tsx | 3 +- .../wiki/setting/documents/index.tsx | 6 +- .../src/components/wiki/setting/users/add.tsx | 2 +- .../components/wiki/setting/users/edit.tsx | 2 +- .../components/wiki/setting/users/index.tsx | 2 +- .../client/src/components/wiki/tocs/index.tsx | 3 - .../components/wiki/tocs/manager/index.tsx | 6 +- .../wiki/tocs/menu-item/index.module.scss | 56 -------- .../components/wiki/tocs/menu-item/index.tsx | 102 -------------- .../wiki/tocs/menu/index.module.scss | 7 - .../src/components/wiki/tocs/menu/index.tsx | 85 ------------ .../src/components/wiki/tocs/public.tsx | 6 +- .../client/src/components/wiki/tocs/tree.tsx | 13 +- packages/client/src/data/comment.ts | 2 +- packages/client/src/data/document.ts | 2 +- packages/client/src/data/message.ts | 8 +- packages/client/src/data/template.ts | 2 +- packages/client/src/data/user.tsx | 6 +- packages/client/src/data/wiki.tsx | 8 +- packages/client/src/helpers/url.tsx | 10 +- .../src/layouts/router-header/Recent.tsx | 5 + .../src/layouts/router-header/index.tsx | 2 + packages/client/src/pages/index.tsx | 8 +- packages/client/src/services/document.ts | 11 +- packages/client/src/services/user.ts | 2 +- packages/client/src/styles/prosemirror.scss | 12 +- packages/config/yaml/dev.yaml | 10 +- .../default.d.ts => constants/lib/index.d.ts} | 0 .../lib/default.js => constants/lib/index.js} | 2 +- packages/constants/lib/index.js.map | 1 + packages/constants/package.json | 24 ++++ .../src/default.ts => constants/src/index.ts} | 0 packages/{share => constants}/tsconfig.json | 0 packages/domains/lib/index.d.ts | 2 + packages/{share => domains}/lib/index.js | 5 +- packages/domains/lib/index.js.map | 1 + packages/domains/lib/models/collector.d.ts | 4 + packages/domains/lib/models/collector.js | 9 ++ packages/domains/lib/models/collector.js.map | 1 + packages/domains/lib/models/comment.d.ts | 16 +++ .../type.js => domains/lib/models/comment.js} | 2 +- packages/domains/lib/models/comment.js.map | 1 + packages/domains/lib/models/document.d.ts | 29 ++++ packages/domains/lib/models/document.js | 9 ++ packages/domains/lib/models/document.js.map | 1 + packages/domains/lib/models/index.d.ts | 8 ++ packages/domains/lib/models/index.js | 21 +++ packages/domains/lib/models/index.js.map | 1 + packages/domains/lib/models/message.d.ts | 11 ++ packages/domains/lib/models/message.js | 3 + packages/domains/lib/models/message.js.map | 1 + packages/domains/lib/models/pagination.d.ts | 4 + packages/domains/lib/models/pagination.js | 3 + packages/domains/lib/models/pagination.js.map | 1 + packages/domains/lib/models/template.d.ts | 13 ++ packages/domains/lib/models/template.js | 3 + packages/domains/lib/models/template.js.map | 1 + packages/domains/lib/models/user.d.ts | 21 +++ packages/domains/lib/models/user.js | 15 +++ packages/domains/lib/models/user.js.map | 1 + packages/domains/lib/models/wiki.d.ts | 30 +++++ packages/domains/lib/models/wiki.js | 20 +++ packages/domains/lib/models/wiki.js.map | 1 + .../lib/services/ICollectorService.d.ts | 37 ++++++ .../domains/lib/services/ICollectorService.js | 7 + .../lib/services/ICollectorService.js.map | 1 + .../domains/lib/services/ICommentService.d.ts | 17 +++ .../domains/lib/services/ICommentService.js | 7 + .../lib/services/ICommentService.js.map | 1 + .../lib/services/IDocumentService.d.ts | 70 ++++++++++ .../domains/lib/services/IDocumentService.js | 41 ++++++ .../lib/services/IDocumentService.js.map | 1 + .../domains/lib/services/IFileService.d.ts | 3 + packages/domains/lib/services/IFileService.js | 7 + .../domains/lib/services/IFileService.js.map | 1 + .../domains/lib/services/IMessageService.d.ts | 16 +++ .../domains/lib/services/IMessageService.js | 7 + .../lib/services/IMessageService.js.map | 1 + .../domains/lib/services/IRequestService.d.ts | 15 +++ .../domains/lib/services/IRequestService.js | 7 + .../lib/services/IRequestService.js.map | 1 + .../lib/services/ITemplateService.d.ts | 21 +++ .../domains/lib/services/ITemplateService.js | 7 + .../lib/services/ITemplateService.js.map | 1 + .../domains/lib/services/IUserService.d.ts | 33 +++++ packages/domains/lib/services/IUserService.js | 17 +++ .../domains/lib/services/IUserService.js.map | 1 + .../domains/lib/services/IWikiService.d.ts | 102 ++++++++++++++ packages/domains/lib/services/IWikiService.js | 61 +++++++++ .../domains/lib/services/IWikiService.js.map | 1 + packages/domains/lib/services/index.d.ts | 9 ++ packages/domains/lib/services/index.js | 22 +++ packages/domains/lib/services/index.js.map | 1 + packages/domains/lib/util.d.ts | 17 +++ packages/domains/lib/util.js | 47 +++++++ packages/domains/lib/util.js.map | 1 + packages/{share => domains}/package.json | 10 +- packages/domains/src/index.ts | 2 + packages/domains/src/models/collector.ts | 4 + packages/domains/src/models/comment.ts | 20 +++ packages/domains/src/models/document.ts | 41 ++++++ packages/domains/src/models/index.ts | 8 ++ packages/domains/src/models/message.ts | 15 +++ packages/domains/src/models/pagination.ts | 4 + packages/domains/src/models/template.ts | 17 +++ packages/domains/src/models/user.ts | 36 +++++ packages/domains/src/models/wiki.ts | 50 +++++++ packages/domains/src/util.ts | 83 ++++++++++++ packages/domains/tsconfig.json | 17 +++ packages/server/package.json | 3 +- .../src/controllers/document.controller.ts | 8 ++ .../server/src/controllers/wiki.controller.ts | 8 +- packages/server/src/dtos/collect.dto.ts | 2 +- packages/server/src/dtos/share-wiki.dto.ts | 2 +- packages/server/src/dtos/wiki-user.dto.ts | 2 +- .../server/src/entities/collector.entity.ts | 2 +- .../server/src/entities/document.entity.ts | 5 +- packages/server/src/entities/user.entity.ts | 2 +- .../server/src/entities/wiki-user.entity.ts | 2 +- packages/server/src/entities/wiki.entity.ts | 3 +- .../src/exceptions/http-response.exception.ts | 1 - .../src/services/collaboration.service.ts | 2 +- .../server/src/services/collector.service.ts | 20 ++- .../server/src/services/document.service.ts | 55 +++++++- packages/server/src/services/user.service.ts | 2 +- packages/server/src/services/view.service.ts | 4 +- packages/server/src/services/wiki.service.ts | 13 +- packages/share/README.md | 3 - packages/share/lib/default.js.map | 1 - packages/share/lib/enum.d.ts | 49 ------- packages/share/lib/enum.js | 91 ------------- packages/share/lib/enum.js.map | 1 - packages/share/lib/index.d.ts | 3 - packages/share/lib/index.js.map | 1 - packages/share/lib/type.d.ts | 89 ------------- packages/share/lib/type.js.map | 1 - packages/share/src/enum.ts | 93 ------------- packages/share/src/index.ts | 3 - packages/share/src/type.ts | 97 -------------- pnpm-lock.yaml | 27 +++- 167 files changed, 1575 insertions(+), 803 deletions(-) create mode 100644 packages/client/src/components/icons/IconSearch.tsx create mode 100644 packages/client/src/components/search/index.module.scss create mode 100644 packages/client/src/components/search/index.tsx delete mode 100644 packages/client/src/components/wiki/tocs/menu-item/index.module.scss delete mode 100644 packages/client/src/components/wiki/tocs/menu-item/index.tsx delete mode 100644 packages/client/src/components/wiki/tocs/menu/index.module.scss delete mode 100644 packages/client/src/components/wiki/tocs/menu/index.tsx rename packages/{share/lib/default.d.ts => constants/lib/index.d.ts} (100%) rename packages/{share/lib/default.js => constants/lib/index.js} (97%) create mode 100644 packages/constants/lib/index.js.map create mode 100644 packages/constants/package.json rename packages/{share/src/default.ts => constants/src/index.ts} (100%) rename packages/{share => constants}/tsconfig.json (100%) create mode 100644 packages/domains/lib/index.d.ts rename packages/{share => domains}/lib/index.js (78%) create mode 100644 packages/domains/lib/index.js.map create mode 100644 packages/domains/lib/models/collector.d.ts create mode 100644 packages/domains/lib/models/collector.js create mode 100644 packages/domains/lib/models/collector.js.map create mode 100644 packages/domains/lib/models/comment.d.ts rename packages/{share/lib/type.js => domains/lib/models/comment.js} (68%) create mode 100644 packages/domains/lib/models/comment.js.map create mode 100644 packages/domains/lib/models/document.d.ts create mode 100644 packages/domains/lib/models/document.js create mode 100644 packages/domains/lib/models/document.js.map create mode 100644 packages/domains/lib/models/index.d.ts create mode 100644 packages/domains/lib/models/index.js create mode 100644 packages/domains/lib/models/index.js.map create mode 100644 packages/domains/lib/models/message.d.ts create mode 100644 packages/domains/lib/models/message.js create mode 100644 packages/domains/lib/models/message.js.map create mode 100644 packages/domains/lib/models/pagination.d.ts create mode 100644 packages/domains/lib/models/pagination.js create mode 100644 packages/domains/lib/models/pagination.js.map create mode 100644 packages/domains/lib/models/template.d.ts create mode 100644 packages/domains/lib/models/template.js create mode 100644 packages/domains/lib/models/template.js.map create mode 100644 packages/domains/lib/models/user.d.ts create mode 100644 packages/domains/lib/models/user.js create mode 100644 packages/domains/lib/models/user.js.map create mode 100644 packages/domains/lib/models/wiki.d.ts create mode 100644 packages/domains/lib/models/wiki.js create mode 100644 packages/domains/lib/models/wiki.js.map create mode 100644 packages/domains/lib/services/ICollectorService.d.ts create mode 100644 packages/domains/lib/services/ICollectorService.js create mode 100644 packages/domains/lib/services/ICollectorService.js.map create mode 100644 packages/domains/lib/services/ICommentService.d.ts create mode 100644 packages/domains/lib/services/ICommentService.js create mode 100644 packages/domains/lib/services/ICommentService.js.map create mode 100644 packages/domains/lib/services/IDocumentService.d.ts create mode 100644 packages/domains/lib/services/IDocumentService.js create mode 100644 packages/domains/lib/services/IDocumentService.js.map create mode 100644 packages/domains/lib/services/IFileService.d.ts create mode 100644 packages/domains/lib/services/IFileService.js create mode 100644 packages/domains/lib/services/IFileService.js.map create mode 100644 packages/domains/lib/services/IMessageService.d.ts create mode 100644 packages/domains/lib/services/IMessageService.js create mode 100644 packages/domains/lib/services/IMessageService.js.map create mode 100644 packages/domains/lib/services/IRequestService.d.ts create mode 100644 packages/domains/lib/services/IRequestService.js create mode 100644 packages/domains/lib/services/IRequestService.js.map create mode 100644 packages/domains/lib/services/ITemplateService.d.ts create mode 100644 packages/domains/lib/services/ITemplateService.js create mode 100644 packages/domains/lib/services/ITemplateService.js.map create mode 100644 packages/domains/lib/services/IUserService.d.ts create mode 100644 packages/domains/lib/services/IUserService.js create mode 100644 packages/domains/lib/services/IUserService.js.map create mode 100644 packages/domains/lib/services/IWikiService.d.ts create mode 100644 packages/domains/lib/services/IWikiService.js create mode 100644 packages/domains/lib/services/IWikiService.js.map create mode 100644 packages/domains/lib/services/index.d.ts create mode 100644 packages/domains/lib/services/index.js create mode 100644 packages/domains/lib/services/index.js.map create mode 100644 packages/domains/lib/util.d.ts create mode 100644 packages/domains/lib/util.js create mode 100644 packages/domains/lib/util.js.map rename packages/{share => domains}/package.json (76%) create mode 100644 packages/domains/src/index.ts create mode 100644 packages/domains/src/models/collector.ts create mode 100644 packages/domains/src/models/comment.ts create mode 100644 packages/domains/src/models/document.ts create mode 100644 packages/domains/src/models/index.ts create mode 100644 packages/domains/src/models/message.ts create mode 100644 packages/domains/src/models/pagination.ts create mode 100644 packages/domains/src/models/template.ts create mode 100644 packages/domains/src/models/user.ts create mode 100644 packages/domains/src/models/wiki.ts create mode 100644 packages/domains/src/util.ts create mode 100644 packages/domains/tsconfig.json delete mode 100644 packages/share/README.md delete mode 100644 packages/share/lib/default.js.map delete mode 100644 packages/share/lib/enum.d.ts delete mode 100644 packages/share/lib/enum.js delete mode 100644 packages/share/lib/enum.js.map delete mode 100644 packages/share/lib/index.d.ts delete mode 100644 packages/share/lib/index.js.map delete mode 100644 packages/share/lib/type.d.ts delete mode 100644 packages/share/lib/type.js.map delete mode 100644 packages/share/src/enum.ts delete mode 100644 packages/share/src/index.ts delete mode 100644 packages/share/src/type.ts diff --git a/package.json b/package.json index ac60ab2e..a7ca5d20 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,11 @@ "dev": "concurrently \"pnpm:dev:*\"", "dev:server": "pnpm run --dir packages/server dev", "dev:client": "pnpm run --dir packages/client dev", - "build": "pnpm build:share && pnpm build:server && pnpm build:client", + "build": "pnpm build:server && pnpm build:client", + "build:dep": "pnpm build:constants && pnpm build:domains && pnpm build:config", + "build:constants": "pnpm run --dir packages/constants build", + "build:domains": "pnpm run --dir packages/domains build", "build:config": "pnpm run --dir packages/config build", - "build:share": "pnpm run --dir packages/share build", "build:server": "pnpm run --dir packages/server build", "build:client": "pnpm run --dir packages/client build", "start": "concurrently \"pnpm:start:*\"", diff --git a/packages/client/package.json b/packages/client/package.json index cb009c5f..82bfe9e3 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -15,7 +15,8 @@ "@douyinfe/semi-ui": "^2.3.1", "@hocuspocus/provider": "^1.0.0-alpha.29", "@think/config": "workspace:^1.0.0", - "@think/share": "workspace:^1.0.0", + "@think/constants": "workspace:^1.0.0", + "@think/domains": "workspace:^1.0.0", "@tiptap/core": "^2.0.0-beta.171", "@tiptap/extension-blockquote": "^2.0.0-beta.26", "@tiptap/extension-bold": "^2.0.0-beta.25", diff --git a/packages/client/src/components/document/card/index.tsx b/packages/client/src/components/document/card/index.tsx index 804c3e67..374ed435 100644 --- a/packages/client/src/components/document/card/index.tsx +++ b/packages/client/src/components/document/card/index.tsx @@ -1,3 +1,4 @@ +import type { IDocument } from "@think/domains"; import { useCallback } from "react"; import Router from "next/router"; import Link from "next/link"; @@ -10,7 +11,6 @@ import { Skeleton, } from "@douyinfe/semi-ui"; import { IconEdit, IconUser } from "@douyinfe/semi-icons"; -import { IDocument } from "@think/share"; import { LocaleTime } from "components/locale-time"; import { IconDocument } from "components/icons/IconDocument"; import { DocumentShare } from "components/document/share"; diff --git a/packages/client/src/components/document/collaboration/index.tsx b/packages/client/src/components/document/collaboration/index.tsx index 70d5f36f..3b77942a 100644 --- a/packages/client/src/components/document/collaboration/index.tsx +++ b/packages/client/src/components/document/collaboration/index.tsx @@ -133,11 +133,7 @@ export const DocumentCollaboration: React.FC = ({ {collaborationUsers.map((user) => { return ( - + {user.name && user.name.charAt(0)} diff --git a/packages/client/src/components/document/comments/comments/Item/index.tsx b/packages/client/src/components/document/comments/comments/Item/index.tsx index fb487e03..2c2102f6 100644 --- a/packages/client/src/components/document/comments/comments/Item/index.tsx +++ b/packages/client/src/components/document/comments/comments/Item/index.tsx @@ -1,5 +1,5 @@ import React from "react"; -import type { IComment, IUser } from "@think/share"; +import type { IComment, IUser } from "@think/domains"; import { Avatar, Typography, diff --git a/packages/client/src/components/document/comments/comments/index.tsx b/packages/client/src/components/document/comments/comments/index.tsx index 1cd759aa..a1133e3a 100644 --- a/packages/client/src/components/document/comments/comments/index.tsx +++ b/packages/client/src/components/document/comments/comments/index.tsx @@ -1,5 +1,5 @@ import React from "react"; -import type { IComment } from "@think/share"; +import type { IComment } from "@think/domains"; import { CommentItem } from "./Item"; interface IProps { diff --git a/packages/client/src/components/document/comments/index.tsx b/packages/client/src/components/document/comments/index.tsx index 0d4bd34c..2f9d576b 100644 --- a/packages/client/src/components/document/comments/index.tsx +++ b/packages/client/src/components/document/comments/index.tsx @@ -9,7 +9,6 @@ import { Pagination, } from "@douyinfe/semi-ui"; import { useToggle } from "hooks/useToggle"; -import { useClickOutside } from "hooks/use-click-outside"; import { DEFAULT_EXTENSION, Document, CommentMenuBar } from "components/tiptap"; import { DataRender } from "components/data-render"; import { useUser } from "data/user"; @@ -40,10 +39,6 @@ export const CommentEditor: React.FC = ({ documentId }) => { const [replyComment, setReplyComment] = useState(null); const [editComment, setEditComment] = useState(null); - useClickOutside($container, { - out: () => isEdit && toggleIsEdit(false), - }); - const editor = useEditor({ editable: true, extensions: [...DEFAULT_EXTENSION, Document], diff --git a/packages/client/src/components/document/create/index.tsx b/packages/client/src/components/document/create/index.tsx index 4868a019..f91591c5 100644 --- a/packages/client/src/components/document/create/index.tsx +++ b/packages/client/src/components/document/create/index.tsx @@ -65,7 +65,7 @@ export const DocumentCreator: React.FC = ({ okButtonProps={{ loading }} style={{ maxWidth: "96vw", - width: "calc(100vh - 120px)", + width: "calc(80vw - 120px)", }} bodyStyle={{ maxHeight: "calc(90vh - 120px)", diff --git a/packages/client/src/components/document/editor/editor.tsx b/packages/client/src/components/document/editor/editor.tsx index e5780eb4..a6d80dac 100644 --- a/packages/client/src/components/document/editor/editor.tsx +++ b/packages/client/src/components/document/editor/editor.tsx @@ -2,7 +2,7 @@ import React, { useMemo, useEffect } from "react"; import cls from "classnames"; import { useEditor, EditorContent } from "@tiptap/react"; import { Layout, Nav, BackTop, Toast } from "@douyinfe/semi-ui"; -import { IUser, IAuthority } from "@think/share"; +import { IUser, IAuthority } from "@think/domains"; import { useToggle } from "hooks/useToggle"; import { DEFAULT_EXTENSION, diff --git a/packages/client/src/components/document/reader/content.tsx b/packages/client/src/components/document/reader/content.tsx index adb0990e..0462a224 100644 --- a/packages/client/src/components/document/reader/content.tsx +++ b/packages/client/src/components/document/reader/content.tsx @@ -1,7 +1,7 @@ import React from "react"; import { useEditor, EditorContent } from "@tiptap/react"; import { Layout } from "@douyinfe/semi-ui"; -import { IDocument } from "@think/share"; +import { IDocument } from "@think/domains"; import { DEFAULT_EXTENSION, DocumentWithTitle } from "components/tiptap"; import { safeJSONParse } from "helpers/json"; diff --git a/packages/client/src/components/document/reader/editor.tsx b/packages/client/src/components/document/reader/editor.tsx index d2deaee0..2512c848 100644 --- a/packages/client/src/components/document/reader/editor.tsx +++ b/packages/client/src/components/document/reader/editor.tsx @@ -1,7 +1,7 @@ import React, { useMemo, useEffect } from "react"; import { useEditor, EditorContent } from "@tiptap/react"; import { Layout } from "@douyinfe/semi-ui"; -import { IUser } from "@think/share"; +import { IUser } from "@think/domains"; import { useToggle } from "hooks/useToggle"; import { DEFAULT_EXTENSION, diff --git a/packages/client/src/components/document/reader/user.tsx b/packages/client/src/components/document/reader/user.tsx index a354ee23..4d1653cb 100644 --- a/packages/client/src/components/document/reader/user.tsx +++ b/packages/client/src/components/document/reader/user.tsx @@ -1,6 +1,6 @@ import { Space, Typography, Avatar } from "@douyinfe/semi-ui"; import { IconUser } from "@douyinfe/semi-icons"; -import { IDocument } from "@think/share"; +import { IDocument } from "@think/domains"; import { LocaleTime } from "components/locale-time"; const { Text } = Typography; diff --git a/packages/client/src/components/document/share/index.tsx b/packages/client/src/components/document/share/index.tsx index 4c8b71c0..3d362b91 100644 --- a/packages/client/src/components/document/share/index.tsx +++ b/packages/client/src/components/document/share/index.tsx @@ -1,7 +1,8 @@ import React, { useMemo, useState, useEffect } from "react"; import { Button, Modal, Input, Typography, Toast } from "@douyinfe/semi-ui"; import { IconLink } from "@douyinfe/semi-icons"; -import { isPublicDocument, getDocumentShareURL } from "@think/share"; +import { isPublicDocument } from "@think/domains"; +import { getDocumentShareURL } from "helpers/url"; import { ShareIllustration } from "illustrations/share"; import { DataRender } from "components/data-render"; import { useToggle } from "hooks/useToggle"; diff --git a/packages/client/src/components/icons/IconSearch.tsx b/packages/client/src/components/icons/IconSearch.tsx new file mode 100644 index 00000000..c4e2e4bc --- /dev/null +++ b/packages/client/src/components/icons/IconSearch.tsx @@ -0,0 +1,20 @@ +import React from "react"; +import { Icon } from "@douyinfe/semi-ui"; + +export const IconSearch: React.FC<{ style?: React.CSSProperties }> = ({ + style = {}, +}) => { + return ( + + + + } + /> + ); +}; diff --git a/packages/client/src/components/icons/index.tsx b/packages/client/src/components/icons/index.tsx index 86e7ef77..cf2ace20 100644 --- a/packages/client/src/components/icons/index.tsx +++ b/packages/client/src/components/icons/index.tsx @@ -33,3 +33,4 @@ export * from "./IconMergeCell"; export * from "./IconSplitCell"; export * from "./IconAttachment"; export * from "./IconMath"; +export * from "./IconSearch"; diff --git a/packages/client/src/components/message/index.tsx b/packages/client/src/components/message/index.tsx index 95fad967..bef8534c 100644 --- a/packages/client/src/components/message/index.tsx +++ b/packages/client/src/components/message/index.tsx @@ -167,6 +167,9 @@ export const Message = () => { ), duration: 3, + onHookClose() { + readMessage(msg.id); + }, }); }, [unreadMsgs]); diff --git a/packages/client/src/components/search/index.module.scss b/packages/client/src/components/search/index.module.scss new file mode 100644 index 00000000..dda14bc3 --- /dev/null +++ b/packages/client/src/components/search/index.module.scss @@ -0,0 +1,43 @@ +.itemsWrap { +} + +.itemWrap { + margin-top: 8px; + border-radius: var(--semi-border-radius-small); + + &:hover { + background-color: var(--semi-color-fill-0); + color: var(--semi-color-text-0); + } + + .item { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; + padding: 4px 8px; + + .leftWrap { + display: flex; + align-items: center; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color: var(--semi-color-primary); + + > span { + word-break: break-all; + } + + svg { + fill: var(--semi-color-primary); + color: var(--semi-color-primary); + } + + > div { + display: flex; + flex-direction: column; + } + } + } +} diff --git a/packages/client/src/components/search/index.tsx b/packages/client/src/components/search/index.tsx new file mode 100644 index 00000000..41c2fe77 --- /dev/null +++ b/packages/client/src/components/search/index.tsx @@ -0,0 +1,125 @@ +import React, { useCallback, useEffect, useMemo, useState } from "react"; +import Link from "next/link"; +import Router from "next/router"; +import { Typography, Button, Modal, Input } from "@douyinfe/semi-ui"; +import { IconSearch } from "components/icons"; +import { IDocument } from "@think/domains"; +import { useRecentDocuments } from "data/document"; +import { useToggle } from "hooks/useToggle"; +import { searchDocument } from "services/document"; +import { Empty } from "components/empty"; +import { DataRender } from "components/data-render"; +import { LocaleTime } from "components/locale-time"; +import { DocumentStar } from "components/document/star"; +import { IconDocumentFill } from "components/icons/IconDocumentFill"; +import styles from "./index.module.scss"; + +const { Text } = Typography; + +export const Search = () => { + const [visible, toggleVisible] = useToggle(false); + const { data: recentDocs, loading, error } = useRecentDocuments(); + const [keyword, setKeyword] = useState(""); + const [searchDocs, setSearchDocs] = useState([]); + const data = useMemo( + () => (searchDocs.length ? searchDocs : recentDocs), + [searchDocs.length, recentDocs] + ); + + const search = useCallback(() => { + searchDocument(keyword).then((res) => { + setSearchDocs(res); + }); + }, [keyword]); + + useEffect(() => { + const fn = () => { + toggleVisible(false); + }; + Router.events.on("routeChangeStart", fn); + + return () => { + Router.events.off("routeChangeStart", fn); + }; + }, []); + + return ( + <> + + diff --git a/packages/client/src/services/document.ts b/packages/client/src/services/document.ts index b157426a..a31a4253 100644 --- a/packages/client/src/services/document.ts +++ b/packages/client/src/services/document.ts @@ -1,4 +1,4 @@ -import { IDocument } from "@think/share"; +import { IDocument } from "@think/domains"; import { HttpClient } from "./HttpClient"; /** @@ -22,3 +22,12 @@ export const getPublicDocumentDetail = ( ): Promise => { return HttpClient.post("/document/public/detail/" + id, data); }; + +/** + * 搜索文档 + * @param keyword + * @returns + */ +export const searchDocument = (keyword: string): Promise => { + return HttpClient.get("/document/search", { params: { keyword } }); +}; diff --git a/packages/client/src/services/user.ts b/packages/client/src/services/user.ts index 0af8b5b4..4d77f801 100644 --- a/packages/client/src/services/user.ts +++ b/packages/client/src/services/user.ts @@ -1,4 +1,4 @@ -import type { IUser } from "@think/share"; +import type { IUser } from "@think/domains"; import { HttpClient } from "./HttpClient"; export const register = (data: Partial): Promise => { diff --git a/packages/client/src/styles/prosemirror.scss b/packages/client/src/styles/prosemirror.scss index c03565ee..669cca3e 100644 --- a/packages/client/src/styles/prosemirror.scss +++ b/packages/client/src/styles/prosemirror.scss @@ -157,7 +157,7 @@ ul[data-type="taskList"] { list-style: none; - padding: 0 0 0 8px; + padding: 0; p { margin: 0; @@ -165,16 +165,26 @@ li { display: flex; + align-items: center; > label { flex: 0 0 auto; user-select: none; + transform: translateY(2px); } > div { flex: 1 1 auto; padding-left: 0.5rem; } + + &[data-checked="true"] { + color: var(--semi-color-text-2); + + > div { + text-decoration: line-through; + } + } } } diff --git a/packages/config/yaml/dev.yaml b/packages/config/yaml/dev.yaml index 7442c103..6cee207d 100644 --- a/packages/config/yaml/dev.yaml +++ b/packages/config/yaml/dev.yaml @@ -15,7 +15,7 @@ db: host: "127.0.0.1" username: "root" password: "root" - database: "think" + database: "think7" port: 3306 charset: "utf8mb4" timezone: "+08:00" @@ -24,11 +24,11 @@ db: # oss 文件存储服务 oss: aliyun: - accessKeyId: "" - accessKeySecret: "" - bucket: "" + accessKeyId: "LTAI4Fc65yMwx2LR23PZwUed" + accessKeySecret: "I0EBFxRTWLyVk674raeYgC8h1tvSqG" + bucket: "wipi" https: true - region: "" + region: "oss-cn-shanghai" # jwt 配置 jwt: diff --git a/packages/share/lib/default.d.ts b/packages/constants/lib/index.d.ts similarity index 100% rename from packages/share/lib/default.d.ts rename to packages/constants/lib/index.d.ts diff --git a/packages/share/lib/default.js b/packages/constants/lib/index.js similarity index 97% rename from packages/share/lib/default.js rename to packages/constants/lib/index.js index d5ec3b07..cc09876b 100644 --- a/packages/share/lib/default.js +++ b/packages/constants/lib/index.js @@ -16,4 +16,4 @@ exports.WIKI_AVATARS = [ "https://wipi.oss-cn-shanghai.aliyuncs.com/2022-02-01/default17-96.png", "https://wipi.oss-cn-shanghai.aliyuncs.com/2022-02-01/default18-96.png", ]; -//# sourceMappingURL=default.js.map \ No newline at end of file +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/constants/lib/index.js.map b/packages/constants/lib/index.js.map new file mode 100644 index 00000000..0605370f --- /dev/null +++ b/packages/constants/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAC9B,sEAAsE,CAAC;AAE5D,QAAA,YAAY,GAAG;IAC1B,2BAAmB;IACnB,sEAAsE;IACtE,sEAAsE;IACtE,sEAAsE;IACtE,uEAAuE;IACvE,uEAAuE;IACvE,uEAAuE;IACvE,4EAA4E;IAC5E,sEAAsE;IACtE,uEAAuE;IACvE,uEAAuE;IACvE,uEAAuE;CACxE,CAAC"} \ No newline at end of file diff --git a/packages/constants/package.json b/packages/constants/package.json new file mode 100644 index 00000000..02b71443 --- /dev/null +++ b/packages/constants/package.json @@ -0,0 +1,24 @@ +{ + "name": "@think/constants", + "version": "1.0.0", + "main": "./lib/index.js", + "types": "./lib/index.d.ts", + "exports": { + ".": { + "import": "./lib/index.js", + "require": "./lib/index.js" + } + }, + "sideEffects": false, + "license": "MIT", + "scripts": { + "build": "tsc --declaration" + }, + "files": [ + "lib", + "src" + ], + "devDependencies": { + "typescript": "^4.5.5" + } +} diff --git a/packages/share/src/default.ts b/packages/constants/src/index.ts similarity index 100% rename from packages/share/src/default.ts rename to packages/constants/src/index.ts diff --git a/packages/share/tsconfig.json b/packages/constants/tsconfig.json similarity index 100% rename from packages/share/tsconfig.json rename to packages/constants/tsconfig.json diff --git a/packages/domains/lib/index.d.ts b/packages/domains/lib/index.d.ts new file mode 100644 index 00000000..93fa0482 --- /dev/null +++ b/packages/domains/lib/index.d.ts @@ -0,0 +1,2 @@ +export * from "./models"; +export * from "./util"; diff --git a/packages/share/lib/index.js b/packages/domains/lib/index.js similarity index 78% rename from packages/share/lib/index.js rename to packages/domains/lib/index.js index b949ee2f..ee81a3dc 100644 --- a/packages/share/lib/index.js +++ b/packages/domains/lib/index.js @@ -10,7 +10,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); -__exportStar(require("./default"), exports); -__exportStar(require("./enum"), exports); -__exportStar(require("./type"), exports); +__exportStar(require("./models"), exports); +__exportStar(require("./util"), exports); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/domains/lib/index.js.map b/packages/domains/lib/index.js.map new file mode 100644 index 00000000..e48c23c1 --- /dev/null +++ b/packages/domains/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB;AACzB,yCAAuB"} \ No newline at end of file diff --git a/packages/domains/lib/models/collector.d.ts b/packages/domains/lib/models/collector.d.ts new file mode 100644 index 00000000..7da9b705 --- /dev/null +++ b/packages/domains/lib/models/collector.d.ts @@ -0,0 +1,4 @@ +export declare enum CollectType { + document = "document", + wiki = "wiki" +} diff --git a/packages/domains/lib/models/collector.js b/packages/domains/lib/models/collector.js new file mode 100644 index 00000000..2be2922c --- /dev/null +++ b/packages/domains/lib/models/collector.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CollectType = void 0; +var CollectType; +(function (CollectType) { + CollectType["document"] = "document"; + CollectType["wiki"] = "wiki"; +})(CollectType = exports.CollectType || (exports.CollectType = {})); +//# sourceMappingURL=collector.js.map \ No newline at end of file diff --git a/packages/domains/lib/models/collector.js.map b/packages/domains/lib/models/collector.js.map new file mode 100644 index 00000000..766941c2 --- /dev/null +++ b/packages/domains/lib/models/collector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../src/models/collector.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,oCAAqB,CAAA;IACrB,4BAAa,CAAA;AACf,CAAC,EAHW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAGtB"} \ No newline at end of file diff --git a/packages/domains/lib/models/comment.d.ts b/packages/domains/lib/models/comment.d.ts new file mode 100644 index 00000000..c90794b1 --- /dev/null +++ b/packages/domains/lib/models/comment.d.ts @@ -0,0 +1,16 @@ +import { IUser } from "./user"; +import { IDocument } from "./document"; +export interface IComment { + id: string; + parentCommentId?: IComment["id"]; + documentId: IDocument["id"]; + createUserId: IUser["id"]; + createUser: IUser; + replyUserId?: IUser["id"]; + replyUser?: IUser; + html: string; + userAgent: string; + createdAt: Date; + updatedAt: Date; + children?: IComment[]; +} diff --git a/packages/share/lib/type.js b/packages/domains/lib/models/comment.js similarity index 68% rename from packages/share/lib/type.js rename to packages/domains/lib/models/comment.js index cd671e58..17c250c2 100644 --- a/packages/share/lib/type.js +++ b/packages/domains/lib/models/comment.js @@ -1,3 +1,3 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=type.js.map \ No newline at end of file +//# sourceMappingURL=comment.js.map \ No newline at end of file diff --git a/packages/domains/lib/models/comment.js.map b/packages/domains/lib/models/comment.js.map new file mode 100644 index 00000000..49d93a56 --- /dev/null +++ b/packages/domains/lib/models/comment.js.map @@ -0,0 +1 @@ +{"version":3,"file":"comment.js","sourceRoot":"","sources":["../../src/models/comment.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/packages/domains/lib/models/document.d.ts b/packages/domains/lib/models/document.d.ts new file mode 100644 index 00000000..2474aa31 --- /dev/null +++ b/packages/domains/lib/models/document.d.ts @@ -0,0 +1,29 @@ +import { IUser } from "./user"; +import { IWiki } from "./wiki"; +export declare enum DocumentStatus { + private = "private", + public = "public" +} +export interface IDocument { + id: string; + wikiId: IWiki["id"]; + isWikiHome: boolean; + createUserId: IUser["id"]; + createUser: IUser; + parentDocumentId?: IDocument["id"]; + title: string; + content: string; + status: DocumentStatus; + views: number; + sharePassword?: string; + createdAt: Date; + updatedAt: Date; + children?: IDocument[]; +} +export interface IAuthority { + id: string; + documentId: IDocument["id"]; + userId: IUser["id"]; + readable: boolean; + editable: boolean; +} diff --git a/packages/domains/lib/models/document.js b/packages/domains/lib/models/document.js new file mode 100644 index 00000000..32691f66 --- /dev/null +++ b/packages/domains/lib/models/document.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DocumentStatus = void 0; +var DocumentStatus; +(function (DocumentStatus) { + DocumentStatus["private"] = "private"; + DocumentStatus["public"] = "public"; +})(DocumentStatus = exports.DocumentStatus || (exports.DocumentStatus = {})); +//# sourceMappingURL=document.js.map \ No newline at end of file diff --git a/packages/domains/lib/models/document.js.map b/packages/domains/lib/models/document.js.map new file mode 100644 index 00000000..08f88ff6 --- /dev/null +++ b/packages/domains/lib/models/document.js.map @@ -0,0 +1 @@ +{"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/models/document.ts"],"names":[],"mappings":";;;AAMA,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,qCAAmB,CAAA;IACnB,mCAAiB,CAAA;AACnB,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB"} \ No newline at end of file diff --git a/packages/domains/lib/models/index.d.ts b/packages/domains/lib/models/index.d.ts new file mode 100644 index 00000000..3a069d65 --- /dev/null +++ b/packages/domains/lib/models/index.d.ts @@ -0,0 +1,8 @@ +export * from "./user"; +export * from "./wiki"; +export * from "./document"; +export * from "./message"; +export * from "./template"; +export * from "./comment"; +export * from "./collector"; +export * from "./pagination"; diff --git a/packages/domains/lib/models/index.js b/packages/domains/lib/models/index.js new file mode 100644 index 00000000..872c083e --- /dev/null +++ b/packages/domains/lib/models/index.js @@ -0,0 +1,21 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./user"), exports); +__exportStar(require("./wiki"), exports); +__exportStar(require("./document"), exports); +__exportStar(require("./message"), exports); +__exportStar(require("./template"), exports); +__exportStar(require("./comment"), exports); +__exportStar(require("./collector"), exports); +__exportStar(require("./pagination"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/domains/lib/models/index.js.map b/packages/domains/lib/models/index.js.map new file mode 100644 index 00000000..c97d5f39 --- /dev/null +++ b/packages/domains/lib/models/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAuB;AACvB,yCAAuB;AACvB,6CAA2B;AAC3B,4CAA0B;AAC1B,6CAA2B;AAC3B,4CAA0B;AAC1B,8CAA4B;AAC5B,+CAA6B"} \ No newline at end of file diff --git a/packages/domains/lib/models/message.d.ts b/packages/domains/lib/models/message.d.ts new file mode 100644 index 00000000..e44dce7f --- /dev/null +++ b/packages/domains/lib/models/message.d.ts @@ -0,0 +1,11 @@ +import { IUser } from "./user"; +export interface IMessage { + id: string; + userId: IUser["id"]; + title: string; + message: string; + url: string; + read: boolean; + createdAt: Date; + updatedAt: Date; +} diff --git a/packages/domains/lib/models/message.js b/packages/domains/lib/models/message.js new file mode 100644 index 00000000..d9d1c3b4 --- /dev/null +++ b/packages/domains/lib/models/message.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=message.js.map \ No newline at end of file diff --git a/packages/domains/lib/models/message.js.map b/packages/domains/lib/models/message.js.map new file mode 100644 index 00000000..4f492a9f --- /dev/null +++ b/packages/domains/lib/models/message.js.map @@ -0,0 +1 @@ +{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/models/message.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/packages/domains/lib/models/pagination.d.ts b/packages/domains/lib/models/pagination.d.ts new file mode 100644 index 00000000..d733051a --- /dev/null +++ b/packages/domains/lib/models/pagination.d.ts @@ -0,0 +1,4 @@ +export declare type IPagination = { + page: number; + pageSize: number; +}; diff --git a/packages/domains/lib/models/pagination.js b/packages/domains/lib/models/pagination.js new file mode 100644 index 00000000..7696f1a4 --- /dev/null +++ b/packages/domains/lib/models/pagination.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=pagination.js.map \ No newline at end of file diff --git a/packages/domains/lib/models/pagination.js.map b/packages/domains/lib/models/pagination.js.map new file mode 100644 index 00000000..266b018c --- /dev/null +++ b/packages/domains/lib/models/pagination.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/models/pagination.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/packages/domains/lib/models/template.d.ts b/packages/domains/lib/models/template.d.ts new file mode 100644 index 00000000..50bf0c35 --- /dev/null +++ b/packages/domains/lib/models/template.d.ts @@ -0,0 +1,13 @@ +import { IUser } from "./user"; +export interface ITemplate { + id: string; + createUserId: IUser["id"]; + createUser: IUser; + title: string; + content: string; + state: string; + usageAmount: number; + isPublic: boolean; + createdAt: Date; + updatedAt: Date; +} diff --git a/packages/domains/lib/models/template.js b/packages/domains/lib/models/template.js new file mode 100644 index 00000000..ea29227b --- /dev/null +++ b/packages/domains/lib/models/template.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=template.js.map \ No newline at end of file diff --git a/packages/domains/lib/models/template.js.map b/packages/domains/lib/models/template.js.map new file mode 100644 index 00000000..e74fd69e --- /dev/null +++ b/packages/domains/lib/models/template.js.map @@ -0,0 +1 @@ +{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/models/template.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/packages/domains/lib/models/user.d.ts b/packages/domains/lib/models/user.d.ts new file mode 100644 index 00000000..d065237a --- /dev/null +++ b/packages/domains/lib/models/user.d.ts @@ -0,0 +1,21 @@ +export declare enum UserRole { + normal = "normal", + admin = "admin", + superadmin = "superadmin" +} +export declare enum UserStatus { + normal = "normal", + locked = "locked" +} +export interface IUser { + id: string; + name: string; + password?: string; + avatar?: string; + email?: string; + role: UserRole; + status: UserStatus; +} +export interface ILoginUser extends IUser { + token: string; +} diff --git a/packages/domains/lib/models/user.js b/packages/domains/lib/models/user.js new file mode 100644 index 00000000..eb017266 --- /dev/null +++ b/packages/domains/lib/models/user.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UserStatus = exports.UserRole = void 0; +var UserRole; +(function (UserRole) { + UserRole["normal"] = "normal"; + UserRole["admin"] = "admin"; + UserRole["superadmin"] = "superadmin"; +})(UserRole = exports.UserRole || (exports.UserRole = {})); +var UserStatus; +(function (UserStatus) { + UserStatus["normal"] = "normal"; + UserStatus["locked"] = "locked"; +})(UserStatus = exports.UserStatus || (exports.UserStatus = {})); +//# sourceMappingURL=user.js.map \ No newline at end of file diff --git a/packages/domains/lib/models/user.js.map b/packages/domains/lib/models/user.js.map new file mode 100644 index 00000000..be2d5037 --- /dev/null +++ b/packages/domains/lib/models/user.js.map @@ -0,0 +1 @@ +{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/models/user.ts"],"names":[],"mappings":";;;AAGA,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,6BAAiB,CAAA;IACjB,2BAAe,CAAA;IACf,qCAAyB,CAAA;AAC3B,CAAC,EAJW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAInB;AAKD,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,+BAAiB,CAAA;IACjB,+BAAiB,CAAA;AACnB,CAAC,EAHW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAGrB"} \ No newline at end of file diff --git a/packages/domains/lib/models/wiki.d.ts b/packages/domains/lib/models/wiki.d.ts new file mode 100644 index 00000000..1a2b6e06 --- /dev/null +++ b/packages/domains/lib/models/wiki.d.ts @@ -0,0 +1,30 @@ +import { IUser } from "./user"; +export declare enum WikiStatus { + private = "private", + public = "public" +} +export declare enum WikiUserStatus { + applying = "applying", + inviting = "inviting", + normal = "normal" +} +export declare enum WikiUserRole { + normal = "normal", + admin = "admin" +} +export interface IWiki { + id: string; + name: string; + avatar: string; + description: string; + createUserId: IUser["id"]; + createUser: IUser; + status: WikiStatus; + createdAt: Date; + updatedAt: Date; +} +export interface IWikiUser extends IUser { + userRole: WikiUserRole; + userStatus: WikiUserStatus; + isCreator: boolean; +} diff --git a/packages/domains/lib/models/wiki.js b/packages/domains/lib/models/wiki.js new file mode 100644 index 00000000..18f2010d --- /dev/null +++ b/packages/domains/lib/models/wiki.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WikiUserRole = exports.WikiUserStatus = exports.WikiStatus = void 0; +var WikiStatus; +(function (WikiStatus) { + WikiStatus["private"] = "private"; + WikiStatus["public"] = "public"; +})(WikiStatus = exports.WikiStatus || (exports.WikiStatus = {})); +var WikiUserStatus; +(function (WikiUserStatus) { + WikiUserStatus["applying"] = "applying"; + WikiUserStatus["inviting"] = "inviting"; + WikiUserStatus["normal"] = "normal"; +})(WikiUserStatus = exports.WikiUserStatus || (exports.WikiUserStatus = {})); +var WikiUserRole; +(function (WikiUserRole) { + WikiUserRole["normal"] = "normal"; + WikiUserRole["admin"] = "admin"; +})(WikiUserRole = exports.WikiUserRole || (exports.WikiUserRole = {})); +//# sourceMappingURL=wiki.js.map \ No newline at end of file diff --git a/packages/domains/lib/models/wiki.js.map b/packages/domains/lib/models/wiki.js.map new file mode 100644 index 00000000..8133c7d4 --- /dev/null +++ b/packages/domains/lib/models/wiki.js.map @@ -0,0 +1 @@ +{"version":3,"file":"wiki.js","sourceRoot":"","sources":["../../src/models/wiki.ts"],"names":[],"mappings":";;;AAKA,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,iCAAmB,CAAA;IACnB,+BAAiB,CAAA;AACnB,CAAC,EAHW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAGrB;AAKD,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,uCAAqB,CAAA;IACrB,mCAAiB,CAAA;AACnB,CAAC,EAJW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAIzB;AAKD,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,iCAAiB,CAAA;IACjB,+BAAe,CAAA;AACjB,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB"} \ No newline at end of file diff --git a/packages/domains/lib/services/ICollectorService.d.ts b/packages/domains/lib/services/ICollectorService.d.ts new file mode 100644 index 00000000..959c1d0d --- /dev/null +++ b/packages/domains/lib/services/ICollectorService.d.ts @@ -0,0 +1,37 @@ +import { IUser, IWiki, IDocument, CollectType } from "../models"; +export declare type ICollectDto = { + targetId: IWiki["id"] | IDocument["id"]; + type: CollectType; +}; +export declare abstract class ICollectorService { + /** + * 知识库 + */ + wikis = []; + getWikisLoading = false; + getWikisError = null; + + /** + * 文档 + */ + documents = []; + getDocumentsLoading = false; + getDocumentsError = null; + + /** + * 收藏(或取消收藏) + */ + toggleLoading = false; + toggleError = null; + + /** + * 检查是否收藏 + */ + checkLoading = false; + checkError = null; + + abstract toggleCollect(data: ICollectDto, user?: IUser): Promise; + abstract checkCollect(data: ICollectDto): Promise; + abstract getCollectWikis(user?: IUser): Promise; + abstract getCollectDocuments(user?: IUser): Promise; +} diff --git a/packages/domains/lib/services/ICollectorService.js b/packages/domains/lib/services/ICollectorService.js new file mode 100644 index 00000000..7a6cae39 --- /dev/null +++ b/packages/domains/lib/services/ICollectorService.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ICollectorService = void 0; +class ICollectorService { +} +exports.ICollectorService = ICollectorService; +//# sourceMappingURL=ICollectorService.js.map \ No newline at end of file diff --git a/packages/domains/lib/services/ICollectorService.js.map b/packages/domains/lib/services/ICollectorService.js.map new file mode 100644 index 00000000..fa7e718f --- /dev/null +++ b/packages/domains/lib/services/ICollectorService.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ICollectorService.js","sourceRoot":"","sources":["../../src/services/ICollectorService.ts"],"names":[],"mappings":";;;AAcA,MAAsB,iBAAiB;CAyBtC;AAzBD,8CAyBC"} \ No newline at end of file diff --git a/packages/domains/lib/services/ICommentService.d.ts b/packages/domains/lib/services/ICommentService.d.ts new file mode 100644 index 00000000..b26b463d --- /dev/null +++ b/packages/domains/lib/services/ICommentService.d.ts @@ -0,0 +1,17 @@ +import { IUser, IComment, IDocument, IPagination } from "../models"; +export declare type ICreateCommentDto = { + parentCommentId?: IComment["id"]; + documentId: IDocument["id"]; + html: string; + replyUserId?: IUser["id"]; +}; +export declare type IUpdateCommentDto = { + id: IComment["id"]; + html?: string; +}; +export declare abstract class ICommentService { + abstract createComment(data: ICreateCommentDto, user?: IUser, userAgent?: string): Promise; + abstract updateComment(data: IUpdateCommentDto, user?: IUser): Promise; + abstract deleteComment(id: IComment["id"], user?: IUser): Promise; + abstract getDocumentComments(documentId: IDocument["id"], pagination: IPagination): Promise; +} diff --git a/packages/domains/lib/services/ICommentService.js b/packages/domains/lib/services/ICommentService.js new file mode 100644 index 00000000..f01e21e5 --- /dev/null +++ b/packages/domains/lib/services/ICommentService.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ICommentService = void 0; +class ICommentService { +} +exports.ICommentService = ICommentService; +//# sourceMappingURL=ICommentService.js.map \ No newline at end of file diff --git a/packages/domains/lib/services/ICommentService.js.map b/packages/domains/lib/services/ICommentService.js.map new file mode 100644 index 00000000..8a08255b --- /dev/null +++ b/packages/domains/lib/services/ICommentService.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ICommentService.js","sourceRoot":"","sources":["../../src/services/ICommentService.ts"],"names":[],"mappings":";;;AAkCA,MAAsB,eAAe;CAuCpC;AAvCD,0CAuCC"} \ No newline at end of file diff --git a/packages/domains/lib/services/IDocumentService.d.ts b/packages/domains/lib/services/IDocumentService.d.ts new file mode 100644 index 00000000..2ada0694 --- /dev/null +++ b/packages/domains/lib/services/IDocumentService.d.ts @@ -0,0 +1,70 @@ +import { IUser, IWiki, ITemplate, IDocument, IAuthority } from "../models"; +export declare type ICreateDocumentDto = { + wikiId: IWiki["id"]; + parentDocumentId?: IDocument["id"] | null; + title?: string; + templateId?: ITemplate["id"]; +}; +export declare type IUpdateDocumentDto = { + content: string; + state: Uint8Array; +} & Pick; +export declare type IShareDocumentDto = { + sharePassword?: string; +}; +export declare type IDocumentAuthorityDto = { + documentId: IDocument["id"]; + userName: IUser["name"]; + readable: boolean; + editable: boolean; +}; +export declare abstract class IDocumentService { + createLoading: boolean; + createError: any; + documentsDetail: Map; + getDocumentDetailLoading: boolean; + getDocumentDetailError: any; + updateDocumentLoading: boolean; + updateDocumentError: any; + deleteDocumentLoading: boolean; + deleteDocumentError: any; + documentsChildren: Map; + getDocumentChildrenLoading: boolean; + getDocumentChildrenError: any; + publicDocumentsChildren: Map; + getPublicDocumentChildrenLoading: boolean; + getPublicDocumentChildrenError: any; + shareLoading: boolean; + shareError: any; + documentsUsers: Map; + getDocumentUsersLoading: boolean; + getDocumentUsersError: any; + addDocumentUserLoading: boolean; + addDocumentUserError: any; + updateDocumentUserLoading: boolean; + updateDocumentUserError: any; + deleteDocumentUserLoading: boolean; + deleteDocumentUserError: any; + recentlyViewedDocuments: any[]; + getRecentlyViewedDocumentsLoading: boolean; + getRecentlyViewedDocumentsError: any; + publicDocumentsDetail: Map; + getPublicDocumentDetailLoading: boolean; + getPublicDocumentDetailError: any; + abstract createDocument(data: ICreateDocumentDto, user?: IUser): Promise; + abstract getDocumentDetail(id: IDocument["id"], user: IUser): Promise; + abstract updateDocument(id: IDocument["id"], data: IUpdateDocumentDto, user?: IUser): Promise; + abstract deleteDocument(id: IDocument["id"], user?: IUser): Promise; + abstract getDocumentChidren(wikiId: IWiki["id"], documentId: IDocument["id"], user?: IUser): Promise; + abstract shareDocument(id: IDocument["id"], data: IShareDocumentDto, user?: IUser): Promise; + abstract getDocumentUsers(id: IDocument["id"], user?: IUser): Promise>; + abstract addDocumentUser(data: IDocumentAuthorityDto, user?: IUser): Promise; + abstract updateDocumentUser(data: IDocumentAuthorityDto, user?: IUser): Promise; + abstract deleteDocumentUser(data: IDocumentAuthorityDto, user?: IUser): Promise; + abstract getRecentlyViewedDocuments(user?: IUser): Promise; + abstract getPublicDocumentDetail(id: IDocument["id"], data?: IShareDocumentDto, userAgent?: string): any; + abstract getPublicDocumentChildren(wikiId: IWiki["id"], documentId: IDocument["id"]): Promise; +} diff --git a/packages/domains/lib/services/IDocumentService.js b/packages/domains/lib/services/IDocumentService.js new file mode 100644 index 00000000..10b1dd39 --- /dev/null +++ b/packages/domains/lib/services/IDocumentService.js @@ -0,0 +1,41 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IDocumentService = void 0; +class IDocumentService { + constructor() { + this.createLoading = false; + this.createError = null; + this.documentsDetail = new Map(); + this.getDocumentDetailLoading = false; + this.getDocumentDetailError = null; + this.updateDocumentLoading = false; + this.updateDocumentError = null; + this.deleteDocumentLoading = false; + this.deleteDocumentError = null; + this.documentsChildren = new Map(); + this.getDocumentChildrenLoading = false; + this.getDocumentChildrenError = null; + this.publicDocumentsChildren = new Map(); + this.getPublicDocumentChildrenLoading = false; + this.getPublicDocumentChildrenError = null; + this.shareLoading = false; + this.shareError = null; + this.documentsUsers = new Map(); + this.getDocumentUsersLoading = false; + this.getDocumentUsersError = null; + this.addDocumentUserLoading = false; + this.addDocumentUserError = null; + this.updateDocumentUserLoading = false; + this.updateDocumentUserError = null; + this.deleteDocumentUserLoading = false; + this.deleteDocumentUserError = null; + this.recentlyViewedDocuments = []; + this.getRecentlyViewedDocumentsLoading = false; + this.getRecentlyViewedDocumentsError = null; + this.publicDocumentsDetail = new Map(); + this.getPublicDocumentDetailLoading = false; + this.getPublicDocumentDetailError = null; + } +} +exports.IDocumentService = IDocumentService; +//# sourceMappingURL=IDocumentService.js.map \ No newline at end of file diff --git a/packages/domains/lib/services/IDocumentService.js.map b/packages/domains/lib/services/IDocumentService.js.map new file mode 100644 index 00000000..62dd02f1 --- /dev/null +++ b/packages/domains/lib/services/IDocumentService.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IDocumentService.js","sourceRoot":"","sources":["../../src/services/IDocumentService.ts"],"names":[],"mappings":";;;AA+DA,MAAsB,gBAAgB;IAAtC;QAIE,kBAAa,GAAG,KAAK,CAAC;QACtB,gBAAW,GAAG,IAAI,CAAC;QAKnB,oBAAe,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5B,6BAAwB,GAAG,KAAK,CAAC;QACjC,2BAAsB,GAAG,IAAI,CAAC;QAK9B,0BAAqB,GAAG,KAAK,CAAC;QAC9B,wBAAmB,GAAG,IAAI,CAAC;QAK3B,0BAAqB,GAAG,KAAK,CAAC;QAC9B,wBAAmB,GAAG,IAAI,CAAC;QAK3B,sBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,+BAA0B,GAAG,KAAK,CAAC;QACnC,6BAAwB,GAAG,IAAI,CAAC;QAKhC,4BAAuB,GAAG,IAAI,GAAG,EAAE,CAAC;QACpC,qCAAgC,GAAG,KAAK,CAAC;QACzC,mCAA8B,GAAG,IAAI,CAAC;QAKtC,iBAAY,GAAG,KAAK,CAAC;QACrB,eAAU,GAAG,IAAI,CAAC;QAKlB,mBAAc,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3B,4BAAuB,GAAG,KAAK,CAAC;QAChC,0BAAqB,GAAG,IAAI,CAAC;QAK7B,2BAAsB,GAAG,KAAK,CAAC;QAC/B,yBAAoB,GAAG,IAAI,CAAC;QAK5B,8BAAyB,GAAG,KAAK,CAAC;QAClC,4BAAuB,GAAG,IAAI,CAAC;QAK/B,8BAAyB,GAAG,KAAK,CAAC;QAClC,4BAAuB,GAAG,IAAI,CAAC;QAK/B,4BAAuB,GAAG,EAAE,CAAC;QAC7B,sCAAiC,GAAG,KAAK,CAAC;QAC1C,oCAA+B,GAAG,IAAI,CAAC;QAKvC,0BAAqB,GAAG,IAAI,GAAG,EAAE,CAAC;QAClC,mCAA8B,GAAG,KAAK,CAAC;QACvC,iCAA4B,GAAG,IAAI,CAAC;IAoItC,CAAC;CAAA;AAvND,4CAuNC"} \ No newline at end of file diff --git a/packages/domains/lib/services/IFileService.d.ts b/packages/domains/lib/services/IFileService.d.ts new file mode 100644 index 00000000..41d17d66 --- /dev/null +++ b/packages/domains/lib/services/IFileService.d.ts @@ -0,0 +1,3 @@ +export declare abstract class IFileService { + abstract uploadFile(file: any): Promise; +} diff --git a/packages/domains/lib/services/IFileService.js b/packages/domains/lib/services/IFileService.js new file mode 100644 index 00000000..f3dfdc97 --- /dev/null +++ b/packages/domains/lib/services/IFileService.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IFileService = void 0; +class IFileService { +} +exports.IFileService = IFileService; +//# sourceMappingURL=IFileService.js.map \ No newline at end of file diff --git a/packages/domains/lib/services/IFileService.js.map b/packages/domains/lib/services/IFileService.js.map new file mode 100644 index 00000000..69868cb9 --- /dev/null +++ b/packages/domains/lib/services/IFileService.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IFileService.js","sourceRoot":"","sources":["../../src/services/IFileService.ts"],"names":[],"mappings":";;;AAAA,MAAsB,YAAY;CAMjC;AAND,oCAMC"} \ No newline at end of file diff --git a/packages/domains/lib/services/IMessageService.d.ts b/packages/domains/lib/services/IMessageService.d.ts new file mode 100644 index 00000000..7162600e --- /dev/null +++ b/packages/domains/lib/services/IMessageService.d.ts @@ -0,0 +1,16 @@ +import { IUser, IMessage, IPagination } from "../models"; +export declare abstract class IMessageService { + abstract getUnreadMessage(pagination: IPagination, user?: IUser): Promise<{ + data: IMessage[]; + total: number; + }>; + abstract getReadMessage(pagination: IPagination, user?: IUser): Promise<{ + data: IMessage[]; + total: number; + }>; + abstract getAllMessage(pagination: IPagination, user?: IUser): Promise<{ + data: IMessage[]; + total: number; + }>; + abstract readMessage(id: IMessage["id"], user?: IUser): Promise; +} diff --git a/packages/domains/lib/services/IMessageService.js b/packages/domains/lib/services/IMessageService.js new file mode 100644 index 00000000..67cd485f --- /dev/null +++ b/packages/domains/lib/services/IMessageService.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IMessageService = void 0; +class IMessageService { +} +exports.IMessageService = IMessageService; +//# sourceMappingURL=IMessageService.js.map \ No newline at end of file diff --git a/packages/domains/lib/services/IMessageService.js.map b/packages/domains/lib/services/IMessageService.js.map new file mode 100644 index 00000000..84646a2f --- /dev/null +++ b/packages/domains/lib/services/IMessageService.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IMessageService.js","sourceRoot":"","sources":["../../src/services/IMessageService.ts"],"names":[],"mappings":";;;AAEA,MAAsB,eAAe;CAqCpC;AArCD,0CAqCC"} \ No newline at end of file diff --git a/packages/domains/lib/services/IRequestService.d.ts b/packages/domains/lib/services/IRequestService.d.ts new file mode 100644 index 00000000..e6969f6f --- /dev/null +++ b/packages/domains/lib/services/IRequestService.d.ts @@ -0,0 +1,15 @@ +export interface IResponse { + data: T | null; + msg: string | null; + statusCode: number; + success: boolean; +} +export declare abstract class IRequestService { + abstract get(url: string, config?: unknown): Promise; + abstract delete(url: string, config?: unknown): Promise; + abstract head(url: string, config?: unknown): Promise; + abstract options(url: string, config?: unknown): Promise; + abstract post(url: string, data?: unknown, config?: unknown): Promise; + abstract put(url: string, data?: unknown, config?: unknown): Promise; + abstract patch(url: string, data?: unknown, config?: unknown): Promise; +} diff --git a/packages/domains/lib/services/IRequestService.js b/packages/domains/lib/services/IRequestService.js new file mode 100644 index 00000000..a9238220 --- /dev/null +++ b/packages/domains/lib/services/IRequestService.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IRequestService = void 0; +class IRequestService { +} +exports.IRequestService = IRequestService; +//# sourceMappingURL=IRequestService.js.map \ No newline at end of file diff --git a/packages/domains/lib/services/IRequestService.js.map b/packages/domains/lib/services/IRequestService.js.map new file mode 100644 index 00000000..ac2c5c5a --- /dev/null +++ b/packages/domains/lib/services/IRequestService.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IRequestService.js","sourceRoot":"","sources":["../../src/services/IRequestService.ts"],"names":[],"mappings":";;;AAOA,MAAsB,eAAe;CAQpC;AARD,0CAQC"} \ No newline at end of file diff --git a/packages/domains/lib/services/ITemplateService.d.ts b/packages/domains/lib/services/ITemplateService.d.ts new file mode 100644 index 00000000..0881e22a --- /dev/null +++ b/packages/domains/lib/services/ITemplateService.d.ts @@ -0,0 +1,21 @@ +import { IUser, ITemplate, IPagination } from "../models"; +export declare type ICreateTemplateDto = { + title: string; + content?: string; + state?: Uint8Array; + isPublic?: boolean; +}; +export declare abstract class ITemplateService { + abstract createTemplate(data: ICreateTemplateDto, user?: IUser): Promise; + abstract updateTemplate(id: ITemplate["id"], data: ICreateTemplateDto): Promise; + abstract deleteTemplate(id: ITemplate["id"], data: ICreateTemplateDto): Promise; + abstract getTemplateDetail(id: ITemplate["id"]): Promise; + abstract getPrivateTemplates(pagination: IPagination, user?: IUser): Promise<{ + data: ITemplate[]; + total: number; + }>; + abstract getPublicTemplates(pagination: IPagination): Promise<{ + data: ITemplate[]; + total: number; + }>; +} diff --git a/packages/domains/lib/services/ITemplateService.js b/packages/domains/lib/services/ITemplateService.js new file mode 100644 index 00000000..1db2669d --- /dev/null +++ b/packages/domains/lib/services/ITemplateService.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ITemplateService = void 0; +class ITemplateService { +} +exports.ITemplateService = ITemplateService; +//# sourceMappingURL=ITemplateService.js.map \ No newline at end of file diff --git a/packages/domains/lib/services/ITemplateService.js.map b/packages/domains/lib/services/ITemplateService.js.map new file mode 100644 index 00000000..593709de --- /dev/null +++ b/packages/domains/lib/services/ITemplateService.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ITemplateService.js","sourceRoot":"","sources":["../../src/services/ITemplateService.ts"],"names":[],"mappings":";;;AAwBA,MAAsB,gBAAgB;CAsDrC;AAtDD,4CAsDC"} \ No newline at end of file diff --git a/packages/domains/lib/services/IUserService.d.ts b/packages/domains/lib/services/IUserService.d.ts new file mode 100644 index 00000000..35b0c54c --- /dev/null +++ b/packages/domains/lib/services/IUserService.d.ts @@ -0,0 +1,33 @@ +import { IUser, ILoginUser } from "../models"; +export declare type ICreateUserDto = { + name: string; + password: string; + confirmPassword: string; + avatar?: string; + email?: string; +}; +export declare type ILoginUserDto = Pick; +export declare type IUpdateUserDto = Pick; +export declare abstract class IUserService { + user; + token; + registerLoading; + registerError; + loginLoading; + loginError; + updateLoading; + updateError; + abstract register(createUser: ICreateUserDto): Promise; + abstract login(loginUser: ILoginUserDto): Promise; + abstract updateUser(updateUser: IUpdateUserDto): Promise; + abstract logout(): void; + /** + * 将数据存储到浏览器 + */ + abstract storetDataInBrowser(): void; + + /** + * 从浏览器恢复数据 + */ + abstract syncDataInBrowser(): void; +} diff --git a/packages/domains/lib/services/IUserService.js b/packages/domains/lib/services/IUserService.js new file mode 100644 index 00000000..07c470b7 --- /dev/null +++ b/packages/domains/lib/services/IUserService.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IUserService = void 0; +class IUserService { + constructor() { + this.user = null; + this.token = null; + this.registerLoading = false; + this.registerError = null; + this.loginLoading = false; + this.loginError = null; + this.updateLoading = false; + this.updateError = null; + } +} +exports.IUserService = IUserService; +//# sourceMappingURL=IUserService.js.map \ No newline at end of file diff --git a/packages/domains/lib/services/IUserService.js.map b/packages/domains/lib/services/IUserService.js.map new file mode 100644 index 00000000..d016437a --- /dev/null +++ b/packages/domains/lib/services/IUserService.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IUserService.js","sourceRoot":"","sources":["../../src/services/IUserService.ts"],"names":[],"mappings":";;;AAgCA,MAAsB,YAAY;IAAlC;QACU,SAAI,GAAsB,IAAI,CAAC;QAC/B,UAAK,GAAkB,IAAI,CAAC;QAC5B,oBAAe,GAAG,KAAK,CAAC;QACxB,kBAAa,GAAG,IAAI,CAAC;QACrB,iBAAY,GAAG,KAAK,CAAC;QACrB,eAAU,GAAG,IAAI,CAAC;QAClB,kBAAa,GAAG,KAAK,CAAC;QACtB,gBAAW,GAAG,IAAI,CAAC;IAmB7B,CAAC;CAAA;AA3BD,oCA2BC"} \ No newline at end of file diff --git a/packages/domains/lib/services/IWikiService.d.ts b/packages/domains/lib/services/IWikiService.d.ts new file mode 100644 index 00000000..5ffa4c12 --- /dev/null +++ b/packages/domains/lib/services/IWikiService.d.ts @@ -0,0 +1,102 @@ +import { IUser, IWiki, IWikiUser, WikiUserRole, WikiStatus, IDocument, IPagination } from "../models"; +export declare type ICreateWikiDto = { + name: string; + description: string; + cover: string; +}; +export declare type IUpdateWikiDto = Partial; +export declare type IWikiUserDto = { + userName: string; + userRole: WikiUserRole; +}; +export declare type IShareWikiDto = { + nextStatus: WikiStatus; + publicDocumentIds?: IDocument["id"][]; + privateDocumentIds?: IDocument["id"][]; +}; +export declare type IWikiTocRelation = { + id: IDocument["id"]; + parentDocumentId: IDocument["id"] | null; +}; +export declare abstract class IWikiService { + createLoading: boolean; + createError: any; + allWikis: any[]; + allWikisTotal: number; + getAllWikisLoading: boolean; + getAllWikisError: any; + joinWikis: any[]; + joinWikisTotal: number; + getJoinWikisLoading: boolean; + getJoinWikisError: any; + ownWikis: any[]; + ownWikisTotal: number; + getOwnWikisLoading: boolean; + getOwnWikisError: any; + wikisDetail: Map; + getWikiLoading: boolean; + getWikiError: any; + updateWikiLoading: boolean; + updateWikiError: any; + deleteWikiLoading: boolean; + deleteWikiError: any; + wikisHomeDocument: Map; + getWikisHomeDocumentLoading: boolean; + getWikisHomeDocumentError: any; + wikiUsers: Map; + getWikiUsersLoading: boolean; + getWikiUsersError: any; + addWikiUserLoading: boolean; + addWikiUserError: any; + updateWikiUserLoading: boolean; + updateWikiUserError: any; + deleteWikiUserLoading: boolean; + deleteWikiUserError: any; + wikisDocuments: Map; + getWikisDocumentsLoading: boolean; + getWikisDocumentsError: any; + wikisTocs: Map; + getWikisTocsLoading: boolean; + getWikisTocsError: any; + updateWikisTocsLoading: boolean; + updateWikisTocsError: any; + shareWikiLoading: boolean; + shareWikiError: any; + publicWikisHomeDocuments: Map; + getPublictWikisHomeDocumentLoading: boolean; + getPublicWikisHomeDocumentError: any; + publicWikisTocs: Map; + getPublicWikisTocsLoading: boolean; + getPublicWikisTocsError: any; + publicWikisDetail: Map; + getPublicWikiLoading: boolean; + getPublicWikiError: any; + abstract createWiki(data: ICreateWikiDto, user?: IUser): Promise; + abstract getUserAllWikis(pagination: IPagination, user?: IUser): Promise<{ + data: IWiki[]; + total: number; + }>; + abstract getUserOwnWikis(pagination: IPagination, user?: IUser): Promise<{ + data: IWiki[]; + total: number; + }>; + abstract getUserJoinWikis(pagination: IPagination, user?: IUser): Promise<{ + data: IWiki[]; + total: number; + }>; + abstract getWikiDetail(wikiId: IWiki["id"], user?: IUser): Promise; + abstract updateWiki(wikiId: IWiki["id"], data: IUpdateWikiDto, user?: IUser): Promise; + abstract deleteWiki(wikiId: IWiki["id"], user?: IUser): Promise; + abstract getWikiHomeDocument(wikiId: IWiki["id"], user?: IUser): Promise; + abstract getWikiUsers(wikiId: IWiki["id"], user?: IUser): Promise; + abstract addWikiUser(wikiId: IWiki["id"], data: IWikiUserDto, user?: IUser): Promise; + abstract updateWikiUser(wikiId: IWiki["id"], data: IWikiUserDto, user?: IUser): Promise; + abstract deleteWikiUser(wikiId: IWiki["id"], data: IWikiUserDto, user?: IUser): Promise; + abstract getWikiDocuments(wikiId: IWiki["id"], user?: IUser): Promise; + abstract getWikiTocs(wikiId: IWiki["id"], user?: IUser): Promise; + abstract updateWikiTocs(wikiId: IWiki["id"], relations: IWikiTocRelation[], user?: IUser): Promise; + abstract shareWiki(wikiId: IWiki["id"], data: IShareWikiDto, user?: IUser): Promise; + abstract getPublicWikiHomeDocument(wikiId: IWiki["id"]): Promise; + abstract getPublicWikiTocs(wikiId: IWiki["id"]): Promise; + abstract getPublicWikiDetail(wikiId: IWiki["id"]): Promise; +} diff --git a/packages/domains/lib/services/IWikiService.js b/packages/domains/lib/services/IWikiService.js new file mode 100644 index 00000000..c6af2d11 --- /dev/null +++ b/packages/domains/lib/services/IWikiService.js @@ -0,0 +1,61 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IWikiService = void 0; +class IWikiService { + constructor() { + this.createLoading = false; + this.createError = null; + this.allWikis = []; + this.allWikisTotal = 0; + this.getAllWikisLoading = false; + this.getAllWikisError = null; + this.joinWikis = []; + this.joinWikisTotal = 0; + this.getJoinWikisLoading = false; + this.getJoinWikisError = null; + this.ownWikis = []; + this.ownWikisTotal = 0; + this.getOwnWikisLoading = false; + this.getOwnWikisError = null; + this.wikisDetail = new Map(); + this.getWikiLoading = false; + this.getWikiError = null; + this.updateWikiLoading = false; + this.updateWikiError = null; + this.deleteWikiLoading = false; + this.deleteWikiError = null; + this.wikisHomeDocument = new Map(); + this.getWikisHomeDocumentLoading = false; + this.getWikisHomeDocumentError = null; + this.wikiUsers = new Map(); + this.getWikiUsersLoading = false; + this.getWikiUsersError = null; + this.addWikiUserLoading = false; + this.addWikiUserError = null; + this.updateWikiUserLoading = false; + this.updateWikiUserError = null; + this.deleteWikiUserLoading = false; + this.deleteWikiUserError = null; + this.wikisDocuments = new Map(); + this.getWikisDocumentsLoading = false; + this.getWikisDocumentsError = null; + this.wikisTocs = new Map(); + this.getWikisTocsLoading = false; + this.getWikisTocsError = null; + this.updateWikisTocsLoading = false; + this.updateWikisTocsError = null; + this.shareWikiLoading = false; + this.shareWikiError = null; + this.publicWikisHomeDocuments = new Map(); + this.getPublictWikisHomeDocumentLoading = false; + this.getPublicWikisHomeDocumentError = null; + this.publicWikisTocs = new Map(); + this.getPublicWikisTocsLoading = false; + this.getPublicWikisTocsError = null; + this.publicWikisDetail = new Map(); + this.getPublicWikiLoading = false; + this.getPublicWikiError = null; + } +} +exports.IWikiService = IWikiService; +//# sourceMappingURL=IWikiService.js.map \ No newline at end of file diff --git a/packages/domains/lib/services/IWikiService.js.map b/packages/domains/lib/services/IWikiService.js.map new file mode 100644 index 00000000..edde8d40 --- /dev/null +++ b/packages/domains/lib/services/IWikiService.js.map @@ -0,0 +1 @@ +{"version":3,"file":"IWikiService.js","sourceRoot":"","sources":["../../src/services/IWikiService.ts"],"names":[],"mappings":";;;AAsEA,MAAsB,YAAY;IAAlC;QAIE,kBAAa,GAAG,KAAK,CAAC;QACtB,gBAAW,GAAG,IAAI,CAAC;QAKnB,aAAQ,GAAG,EAAE,CAAC;QACd,kBAAa,GAAG,CAAC,CAAC;QAClB,uBAAkB,GAAG,KAAK,CAAC;QAC3B,qBAAgB,GAAG,IAAI,CAAC;QAKxB,cAAS,GAAG,EAAE,CAAC;QACf,mBAAc,GAAG,CAAC,CAAC;QACnB,wBAAmB,GAAG,KAAK,CAAC;QAC5B,sBAAiB,GAAG,IAAI,CAAC;QAKzB,aAAQ,GAAG,EAAE,CAAC;QACd,kBAAa,GAAG,CAAC,CAAC;QAClB,uBAAkB,GAAG,KAAK,CAAC;QAC3B,qBAAgB,GAAG,IAAI,CAAC;QAKxB,gBAAW,GAAG,IAAI,GAAG,EAAE,CAAC;QACxB,mBAAc,GAAG,KAAK,CAAC;QACvB,iBAAY,GAAG,IAAI,CAAC;QAKpB,sBAAiB,GAAG,KAAK,CAAC;QAC1B,oBAAe,GAAG,IAAI,CAAC;QAKvB,sBAAiB,GAAG,KAAK,CAAC;QAC1B,oBAAe,GAAG,IAAI,CAAC;QAKvB,sBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,gCAA2B,GAAG,KAAK,CAAC;QACpC,8BAAyB,GAAG,IAAI,CAAC;QAKjC,cAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,wBAAmB,GAAG,KAAK,CAAC;QAC5B,sBAAiB,GAAG,IAAI,CAAC;QAKzB,uBAAkB,GAAG,KAAK,CAAC;QAC3B,qBAAgB,GAAG,IAAI,CAAC;QAKxB,0BAAqB,GAAG,KAAK,CAAC;QAC9B,wBAAmB,GAAG,IAAI,CAAC;QAK3B,0BAAqB,GAAG,KAAK,CAAC;QAC9B,wBAAmB,GAAG,IAAI,CAAC;QAK3B,mBAAc,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3B,6BAAwB,GAAG,KAAK,CAAC;QACjC,2BAAsB,GAAG,IAAI,CAAC;QAK9B,cAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,wBAAmB,GAAG,KAAK,CAAC;QAC5B,sBAAiB,GAAG,IAAI,CAAC;QACzB,2BAAsB,GAAG,KAAK,CAAC;QAC/B,yBAAoB,GAAG,IAAI,CAAC;QAK5B,qBAAgB,GAAG,KAAK,CAAC;QACzB,mBAAc,GAAG,IAAI,CAAC;QAKtB,6BAAwB,GAAG,IAAI,GAAG,EAAE,CAAC;QACrC,uCAAkC,GAAG,KAAK,CAAC;QAC3C,oCAA+B,GAAG,IAAI,CAAC;QAKvC,oBAAe,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5B,8BAAyB,GAAG,KAAK,CAAC;QAClC,4BAAuB,GAAG,IAAI,CAAC;QAK/B,sBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,yBAAoB,GAAG,KAAK,CAAC;QAC7B,uBAAkB,GAAG,IAAI,CAAC;IA4L5B,CAAC;CAAA;AAvTD,oCAuTC"} \ No newline at end of file diff --git a/packages/domains/lib/services/index.d.ts b/packages/domains/lib/services/index.d.ts new file mode 100644 index 00000000..8c7366be --- /dev/null +++ b/packages/domains/lib/services/index.d.ts @@ -0,0 +1,9 @@ +export * from "./IRequestService"; +export * from "./ICollectorService"; +export * from "./ICommentService"; +export * from "./IDocumentService"; +export * from "./IFileService"; +export * from "./IMessageService"; +export * from "./ITemplateService"; +export * from "./IUserService"; +export * from "./IWikiService"; diff --git a/packages/domains/lib/services/index.js b/packages/domains/lib/services/index.js new file mode 100644 index 00000000..927264cf --- /dev/null +++ b/packages/domains/lib/services/index.js @@ -0,0 +1,22 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./IRequestService"), exports); +__exportStar(require("./ICollectorService"), exports); +__exportStar(require("./ICommentService"), exports); +__exportStar(require("./IDocumentService"), exports); +__exportStar(require("./IFileService"), exports); +__exportStar(require("./IMessageService"), exports); +__exportStar(require("./ITemplateService"), exports); +__exportStar(require("./IUserService"), exports); +__exportStar(require("./IWikiService"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/domains/lib/services/index.js.map b/packages/domains/lib/services/index.js.map new file mode 100644 index 00000000..039dc5cb --- /dev/null +++ b/packages/domains/lib/services/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAkC;AAClC,sDAAoC;AACpC,oDAAkC;AAClC,qDAAmC;AACnC,iDAA+B;AAC/B,oDAAkC;AAClC,qDAAmC;AACnC,iDAA+B;AAC/B,iDAA+B"} \ No newline at end of file diff --git a/packages/domains/lib/util.d.ts b/packages/domains/lib/util.d.ts new file mode 100644 index 00000000..2e04dd2a --- /dev/null +++ b/packages/domains/lib/util.d.ts @@ -0,0 +1,17 @@ +import { WikiStatus, WikiUserRole, DocumentStatus, IWiki, IDocument } from "./models"; +export declare const WIKI_STATUS_LIST: { + value: WikiStatus; + label: string; +}[]; +export declare const WIKI_USER_ROLES: { + value: string; + label: string; +}[]; +export declare const DOCUMENT_STATUS: { + value: DocumentStatus; + label: string; +}[]; +export declare const getWikiStatusText: (wiki: IWiki) => string; +export declare const isPublicWiki: (currentStatus: IWiki["status"]) => boolean; +export declare const getWikiUserRoleText: (role: WikiUserRole) => string; +export declare const isPublicDocument: (currentStatus: IDocument["status"]) => boolean; diff --git a/packages/domains/lib/util.js b/packages/domains/lib/util.js new file mode 100644 index 00000000..44b719d9 --- /dev/null +++ b/packages/domains/lib/util.js @@ -0,0 +1,47 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isPublicDocument = exports.getWikiUserRoleText = exports.isPublicWiki = exports.getWikiStatusText = exports.DOCUMENT_STATUS = exports.WIKI_USER_ROLES = exports.WIKI_STATUS_LIST = void 0; +const models_1 = require("./models"); +exports.WIKI_STATUS_LIST = [ + { + value: models_1.WikiStatus.private, + label: "私有", + }, + { + value: models_1.WikiStatus.public, + label: "公开", + }, +]; +exports.WIKI_USER_ROLES = [ + { + value: "admin", + label: "管理员", + }, + { + value: "normal", + label: "成员", + }, +]; +exports.DOCUMENT_STATUS = [ + { + value: models_1.DocumentStatus.private, + label: "私有", + }, + { + value: models_1.DocumentStatus.public, + label: "公开", + }, +]; +const getWikiStatusText = (wiki) => { + return exports.WIKI_STATUS_LIST.find((t) => t.value === wiki.status).label; +}; +exports.getWikiStatusText = getWikiStatusText; +const isPublicWiki = (currentStatus) => currentStatus === models_1.WikiStatus.public; +exports.isPublicWiki = isPublicWiki; +const getWikiUserRoleText = (role) => { + return exports.WIKI_USER_ROLES.find((d) => d.value === role).label; +}; +exports.getWikiUserRoleText = getWikiUserRoleText; +const isPublicDocument = (currentStatus) => currentStatus === models_1.DocumentStatus.public; +exports.isPublicDocument = isPublicDocument; +//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/packages/domains/lib/util.js.map b/packages/domains/lib/util.js.map new file mode 100644 index 00000000..07bb1a60 --- /dev/null +++ b/packages/domains/lib/util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;AAAA,qCAMkB;AAKL,QAAA,gBAAgB,GAAG;IAC9B;QACE,KAAK,EAAE,mBAAU,CAAC,OAAO;QACzB,KAAK,EAAE,IAAI;KACZ;IACD;QACE,KAAK,EAAE,mBAAU,CAAC,MAAM;QACxB,KAAK,EAAE,IAAI;KACZ;CACF,CAAC;AAKW,QAAA,eAAe,GAAG;IAC7B;QACE,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,KAAK;KACb;IACD;QACE,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,IAAI;KACZ;CACF,CAAC;AAKW,QAAA,eAAe,GAAG;IAC7B;QACE,KAAK,EAAE,uBAAc,CAAC,OAAO;QAC7B,KAAK,EAAE,IAAI;KACZ;IACD;QACE,KAAK,EAAE,uBAAc,CAAC,MAAM;QAC5B,KAAK,EAAE,IAAI;KACZ;CACF,CAAC;AAOK,MAAM,iBAAiB,GAAG,CAAC,IAAW,EAAU,EAAE;IACvD,OAAO,wBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;AACrE,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B;AAOK,MAAM,YAAY,GAAG,CAAC,aAA8B,EAAE,EAAE,CAC7D,aAAa,KAAK,mBAAU,CAAC,MAAM,CAAC;AADzB,QAAA,YAAY,gBACa;AAO/B,MAAM,mBAAmB,GAAG,CAAC,IAAkB,EAAE,EAAE;IACxD,OAAO,uBAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC;AAC7D,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B;AAOK,MAAM,gBAAgB,GAAG,CAAC,aAAkC,EAAE,EAAE,CACrE,aAAa,KAAK,uBAAc,CAAC,MAAM,CAAC;AAD7B,QAAA,gBAAgB,oBACa"} \ No newline at end of file diff --git a/packages/share/package.json b/packages/domains/package.json similarity index 76% rename from packages/share/package.json rename to packages/domains/package.json index 70265a2b..2b2c6e1b 100644 --- a/packages/share/package.json +++ b/packages/domains/package.json @@ -1,5 +1,5 @@ { - "name": "@think/share", + "name": "@think/domains", "version": "1.0.0", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -16,7 +16,9 @@ }, "files": [ "lib", - "src", - "yaml" - ] + "src" + ], + "devDependencies": { + "typescript": "^4.5.5" + } } diff --git a/packages/domains/src/index.ts b/packages/domains/src/index.ts new file mode 100644 index 00000000..93fa0482 --- /dev/null +++ b/packages/domains/src/index.ts @@ -0,0 +1,2 @@ +export * from "./models"; +export * from "./util"; diff --git a/packages/domains/src/models/collector.ts b/packages/domains/src/models/collector.ts new file mode 100644 index 00000000..1b944072 --- /dev/null +++ b/packages/domains/src/models/collector.ts @@ -0,0 +1,4 @@ +export enum CollectType { + document = "document", + wiki = "wiki", +} diff --git a/packages/domains/src/models/comment.ts b/packages/domains/src/models/comment.ts new file mode 100644 index 00000000..87c39004 --- /dev/null +++ b/packages/domains/src/models/comment.ts @@ -0,0 +1,20 @@ +import { IUser } from "./user"; +import { IDocument } from "./document"; + +/** + * 评论 + */ +export interface IComment { + id: string; + parentCommentId?: IComment["id"]; + documentId: IDocument["id"]; + createUserId: IUser["id"]; + createUser: IUser; + replyUserId?: IUser["id"]; + replyUser?: IUser; + html: string; + userAgent: string; + createdAt: Date; + updatedAt: Date; + children?: IComment[]; +} diff --git a/packages/domains/src/models/document.ts b/packages/domains/src/models/document.ts new file mode 100644 index 00000000..35340acc --- /dev/null +++ b/packages/domains/src/models/document.ts @@ -0,0 +1,41 @@ +import { IUser } from "./user"; +import { IWiki } from "./wiki"; + +/** + * 文档状态枚举 + */ +export enum DocumentStatus { + private = "private", + public = "public", +} + +/** + * 文档数据定义 + */ +export interface IDocument { + id: string; + wikiId: IWiki["id"]; + isWikiHome: boolean; + createUserId: IUser["id"]; + createUser: IUser; + parentDocumentId?: IDocument["id"]; + title: string; + content: string; + status: DocumentStatus; + views: number; + sharePassword?: string; + createdAt: Date; + updatedAt: Date; + children?: IDocument[]; +} + +/** + * 文档成员权限数据定义 + */ +export interface IAuthority { + id: string; + documentId: IDocument["id"]; + userId: IUser["id"]; + readable: boolean; + editable: boolean; +} diff --git a/packages/domains/src/models/index.ts b/packages/domains/src/models/index.ts new file mode 100644 index 00000000..3a069d65 --- /dev/null +++ b/packages/domains/src/models/index.ts @@ -0,0 +1,8 @@ +export * from "./user"; +export * from "./wiki"; +export * from "./document"; +export * from "./message"; +export * from "./template"; +export * from "./comment"; +export * from "./collector"; +export * from "./pagination"; diff --git a/packages/domains/src/models/message.ts b/packages/domains/src/models/message.ts new file mode 100644 index 00000000..c9b012c8 --- /dev/null +++ b/packages/domains/src/models/message.ts @@ -0,0 +1,15 @@ +import { IUser } from "./user"; + +/** + * 消息数据定义 + */ +export interface IMessage { + id: string; + userId: IUser["id"]; + title: string; + message: string; + url: string; + read: boolean; + createdAt: Date; + updatedAt: Date; +} diff --git a/packages/domains/src/models/pagination.ts b/packages/domains/src/models/pagination.ts new file mode 100644 index 00000000..4b58240f --- /dev/null +++ b/packages/domains/src/models/pagination.ts @@ -0,0 +1,4 @@ +export type IPagination = { + page: number; + pageSize: number; +}; diff --git a/packages/domains/src/models/template.ts b/packages/domains/src/models/template.ts new file mode 100644 index 00000000..091f144b --- /dev/null +++ b/packages/domains/src/models/template.ts @@ -0,0 +1,17 @@ +import { IUser } from "./user"; + +/** + * 文档模板数据定义 + */ +export interface ITemplate { + id: string; + createUserId: IUser["id"]; + createUser: IUser; + title: string; + content: string; + state: string; + usageAmount: number; + isPublic: boolean; + createdAt: Date; + updatedAt: Date; +} diff --git a/packages/domains/src/models/user.ts b/packages/domains/src/models/user.ts new file mode 100644 index 00000000..4c128387 --- /dev/null +++ b/packages/domains/src/models/user.ts @@ -0,0 +1,36 @@ +/** + * 用户角色枚举 + */ +export enum UserRole { + normal = "normal", + admin = "admin", + superadmin = "superadmin", +} + +/** + * 用户状态枚举 + */ +export enum UserStatus { + normal = "normal", + locked = "locked", +} + +/** + * 用户数据定义 + */ +export interface IUser { + id: string; + name: string; + password?: string; + avatar?: string; + email?: string; + role: UserRole; + status: UserStatus; +} + +/** + * 登录用户数据定义 + */ +export interface ILoginUser extends IUser { + token: string; +} diff --git a/packages/domains/src/models/wiki.ts b/packages/domains/src/models/wiki.ts new file mode 100644 index 00000000..d380fad1 --- /dev/null +++ b/packages/domains/src/models/wiki.ts @@ -0,0 +1,50 @@ +import { IUser } from "./user"; + +/** + * 知识库状态枚举 + */ +export enum WikiStatus { + private = "private", + public = "public", +} + +/** + * 知识库成员状态枚举 + */ +export enum WikiUserStatus { + applying = "applying", + inviting = "inviting", + normal = "normal", +} + +/** + * 知识库成员角色枚举 + */ +export enum WikiUserRole { + normal = "normal", + admin = "admin", +} + +/** + * 知识库数据定义 + */ +export interface IWiki { + id: string; + name: string; + avatar: string; + description: string; + createUserId: IUser["id"]; + createUser: IUser; + status: WikiStatus; + createdAt: Date; + updatedAt: Date; +} + +/** + * 知识库成员数据定义 + */ +export interface IWikiUser extends IUser { + userRole: WikiUserRole; + userStatus: WikiUserStatus; + isCreator: boolean; +} diff --git a/packages/domains/src/util.ts b/packages/domains/src/util.ts new file mode 100644 index 00000000..ca2875e1 --- /dev/null +++ b/packages/domains/src/util.ts @@ -0,0 +1,83 @@ +import { + WikiStatus, + WikiUserRole, + DocumentStatus, + IWiki, + IDocument, +} from "./models"; + +/** + * 知识库状态列表数据 + */ +export const WIKI_STATUS_LIST = [ + { + value: WikiStatus.private, + label: "私有", + }, + { + value: WikiStatus.public, + label: "公开", + }, +]; + +/** + * 知识库成员角色列表数据 + */ +export const WIKI_USER_ROLES = [ + { + value: "admin", + label: "管理员", + }, + { + value: "normal", + label: "成员", + }, +]; + +/** + * 文档状态列表数据 + */ +export const DOCUMENT_STATUS = [ + { + value: DocumentStatus.private, + label: "私有", + }, + { + value: DocumentStatus.public, + label: "公开", + }, +]; + +/** + * 获取知识库状态对应文本 + * @param wiki 实例数据 + * @returns + */ +export const getWikiStatusText = (wiki: IWiki): string => { + return WIKI_STATUS_LIST.find((t) => t.value === wiki.status).label; +}; + +/** + * 检查知识库是否公开 + * @param currentStatus wiki 实例数据的 status 字段 + * @returns + */ +export const isPublicWiki = (currentStatus: IWiki["status"]) => + currentStatus === WikiStatus.public; + +/** + * 获取知识库成员角色对应文本 + * @param role 实例数据的 role 字段 + * @returns + */ +export const getWikiUserRoleText = (role: WikiUserRole) => { + return WIKI_USER_ROLES.find((d) => d.value === role).label; +}; + +/** + * 检查文档是否公开 + * @param currentStatus document 实例数据的 status 字段 + * @returns + */ +export const isPublicDocument = (currentStatus: IDocument["status"]) => + currentStatus === DocumentStatus.public; diff --git a/packages/domains/tsconfig.json b/packages/domains/tsconfig.json new file mode 100644 index 00000000..be9056be --- /dev/null +++ b/packages/domains/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "module": "commonjs", + "declaration": true, + "removeComments": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "target": "ES2017", + "sourceMap": true, + "incremental": true, + "rootDir": "src", + "outDir": "lib" + }, + "include": ["src"], + "exclude": ["src/**/*.spec.ts"] +} diff --git a/packages/server/package.json b/packages/server/package.json index 973fc1a1..86e26f98 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -28,7 +28,8 @@ "@nestjs/platform-express": "^8.0.0", "@nestjs/typeorm": "^8.0.3", "@think/config": "workspace:^1.0.0", - "@think/share": "workspace:^1.0.0", + "@think/constants": "workspace:^1.0.0", + "@think/domains": "workspace:^1.0.0", "ali-oss": "^6.16.0", "bcryptjs": "^2.4.3", "class-transformer": "^0.5.1", diff --git a/packages/server/src/controllers/document.controller.ts b/packages/server/src/controllers/document.controller.ts index 568144d3..dc3e9251 100644 --- a/packages/server/src/controllers/document.controller.ts +++ b/packages/server/src/controllers/document.controller.ts @@ -84,6 +84,14 @@ export class DocumentController { return await this.documentService.shareDocument(req.user, documentId, dto); } + @UseInterceptors(ClassSerializerInterceptor) + @Get('search') + @HttpCode(HttpStatus.OK) + @UseGuards(JwtGuard) + async search(@Request() req, @Query('keyword') keyword) { + return await this.documentService.search(req.user, keyword); + } + @UseInterceptors(ClassSerializerInterceptor) @Get('user/:id') @HttpCode(HttpStatus.OK) diff --git a/packages/server/src/controllers/wiki.controller.ts b/packages/server/src/controllers/wiki.controller.ts index 54ea1d14..d8a58bd2 100644 --- a/packages/server/src/controllers/wiki.controller.ts +++ b/packages/server/src/controllers/wiki.controller.ts @@ -15,7 +15,7 @@ import { Delete, } from '@nestjs/common'; import { JwtGuard } from '@guard/jwt.guard'; -import { Pagination } from '@think/share'; +import { IPagination } from '@think/domains'; import { WikiService } from '@services/wiki.service'; import { WikiUserDto } from '@dtos/wiki-user.dto'; import { CreateWikiDto } from '@dtos/create-wiki.dto'; @@ -38,7 +38,7 @@ export class WikiController { @Get('list/all') @HttpCode(HttpStatus.OK) @UseGuards(JwtGuard) - async getAllWikis(@Request() req, @Query() pagination: Pagination) { + async getAllWikis(@Request() req, @Query() pagination: IPagination) { return await this.wikiService.getAllWikis(req.user, pagination); } @@ -46,7 +46,7 @@ export class WikiController { @Get('list/own') @HttpCode(HttpStatus.OK) @UseGuards(JwtGuard) - async getOwnWikis(@Request() req, @Query() pagination: Pagination) { + async getOwnWikis(@Request() req, @Query() pagination: IPagination) { return await this.wikiService.getOwnWikis(req.user, pagination); } @@ -54,7 +54,7 @@ export class WikiController { @Get('list/join') @HttpCode(HttpStatus.OK) @UseGuards(JwtGuard) - async getJoinWikis(@Request() req, @Query() pagination: Pagination) { + async getJoinWikis(@Request() req, @Query() pagination: IPagination) { return await this.wikiService.getJoinWikis(req.user, pagination); } diff --git a/packages/server/src/dtos/collect.dto.ts b/packages/server/src/dtos/collect.dto.ts index ec24c7c1..c2371564 100644 --- a/packages/server/src/dtos/collect.dto.ts +++ b/packages/server/src/dtos/collect.dto.ts @@ -1,5 +1,5 @@ import { IsNotEmpty, IsString } from 'class-validator'; -import { CollectType } from '@think/share'; +import { CollectType } from '@think/domains'; export class CollectDto { @IsString({ message: '收藏目标Id类型错误(正确类型为:String)' }) diff --git a/packages/server/src/dtos/share-wiki.dto.ts b/packages/server/src/dtos/share-wiki.dto.ts index d5a28c4b..aafd694d 100644 --- a/packages/server/src/dtos/share-wiki.dto.ts +++ b/packages/server/src/dtos/share-wiki.dto.ts @@ -1,5 +1,5 @@ import { IsOptional } from 'class-validator'; -import { WikiStatus } from '@think/share'; +import { WikiStatus } from '@think/domains'; export class ShareWikiDto { // 目标状态:公开或私有 diff --git a/packages/server/src/dtos/wiki-user.dto.ts b/packages/server/src/dtos/wiki-user.dto.ts index 82c7e5b0..8cfdeaa0 100644 --- a/packages/server/src/dtos/wiki-user.dto.ts +++ b/packages/server/src/dtos/wiki-user.dto.ts @@ -1,5 +1,5 @@ import { IsString } from 'class-validator'; -import { WikiUserRole } from '@think/share'; +import { WikiUserRole } from '@think/domains'; export class WikiUserDto { @IsString() diff --git a/packages/server/src/entities/collector.entity.ts b/packages/server/src/entities/collector.entity.ts index 5f007e92..55f5dcc4 100644 --- a/packages/server/src/entities/collector.entity.ts +++ b/packages/server/src/entities/collector.entity.ts @@ -5,7 +5,7 @@ import { PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; -import { CollectType } from '@think/share'; +import { CollectType } from '@think/domains'; @Entity('collector') export class CollectorEntity { diff --git a/packages/server/src/entities/document.entity.ts b/packages/server/src/entities/document.entity.ts index 86cd010b..37ab7ae9 100644 --- a/packages/server/src/entities/document.entity.ts +++ b/packages/server/src/entities/document.entity.ts @@ -6,7 +6,7 @@ import { UpdateDateColumn, } from 'typeorm'; import { Exclude } from 'class-transformer'; -import { DocumentStatus } from '@think/share'; +import { DocumentStatus } from '@think/domains'; @Entity('document') export class DocumentEntity { @@ -49,6 +49,9 @@ export class DocumentEntity { @Column({ type: 'bigint', default: 0, comment: '文档访问量' }) public views: number; + @Column({ type: 'bigint', default: 0, comment: '文档索引顺序' }) + public index: number; + @CreateDateColumn({ type: 'timestamp', name: 'created_at', diff --git a/packages/server/src/entities/user.entity.ts b/packages/server/src/entities/user.entity.ts index 3fe1c9a9..443c4694 100644 --- a/packages/server/src/entities/user.entity.ts +++ b/packages/server/src/entities/user.entity.ts @@ -8,7 +8,7 @@ import { } from 'typeorm'; import { Exclude } from 'class-transformer'; import * as bcrypt from 'bcryptjs'; -import { UserRole, UserStatus } from '@think/share'; +import { UserRole, UserStatus } from '@think/domains'; @Entity('user') export class UserEntity { diff --git a/packages/server/src/entities/wiki-user.entity.ts b/packages/server/src/entities/wiki-user.entity.ts index 3c83e1c8..9ebfe835 100644 --- a/packages/server/src/entities/wiki-user.entity.ts +++ b/packages/server/src/entities/wiki-user.entity.ts @@ -5,7 +5,7 @@ import { PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; -import { WikiUserRole, WikiUserStatus } from '@think/share'; +import { WikiUserRole, WikiUserStatus } from '@think/domains'; @Entity('wiki_user') export class WikiUserEntity { diff --git a/packages/server/src/entities/wiki.entity.ts b/packages/server/src/entities/wiki.entity.ts index 1bc41f8f..c5bf0d0d 100644 --- a/packages/server/src/entities/wiki.entity.ts +++ b/packages/server/src/entities/wiki.entity.ts @@ -5,7 +5,8 @@ import { PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; -import { WikiStatus, DEFAULT_WIKI_AVATAR } from '@think/share'; +import { WikiStatus } from '@think/domains'; +import { DEFAULT_WIKI_AVATAR } from '@think/constants'; @Entity('wiki') export class WikiEntity { diff --git a/packages/server/src/exceptions/http-response.exception.ts b/packages/server/src/exceptions/http-response.exception.ts index 65def2cb..9c979162 100644 --- a/packages/server/src/exceptions/http-response.exception.ts +++ b/packages/server/src/exceptions/http-response.exception.ts @@ -26,6 +26,5 @@ export class HttpResponseExceptionFilter implements ExceptionFilter { response.status(status); response.header('Content-Type', 'application/json; charset=utf-8'); response.send(errorResponse); - console.error(url, errorResponse); } } diff --git a/packages/server/src/services/collaboration.service.ts b/packages/server/src/services/collaboration.service.ts index 93e4d528..d4f57cf2 100644 --- a/packages/server/src/services/collaboration.service.ts +++ b/packages/server/src/services/collaboration.service.ts @@ -5,7 +5,7 @@ import { Inject, forwardRef, } from '@nestjs/common'; -import { DocumentStatus } from '@think/share'; +import { DocumentStatus } from '@think/domains'; import { getConfig } from '@think/config'; import * as Y from 'yjs'; import { TiptapTransformer } from '@hocuspocus/transformer'; diff --git a/packages/server/src/services/collector.service.ts b/packages/server/src/services/collector.service.ts index bdd03988..78e73d6c 100644 --- a/packages/server/src/services/collector.service.ts +++ b/packages/server/src/services/collector.service.ts @@ -1,7 +1,7 @@ import { Injectable, Inject, forwardRef } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { CollectType } from '@think/share'; +import { CollectType } from '@think/domains'; import { OutUser, UserService } from '@services/user.service'; import { WikiService } from '@services/wiki.service'; import { DocumentService } from '@services/document.service'; @@ -49,8 +49,14 @@ export class CollectorService { const res = await this.wikiService.findByIds( records.map((record) => record.targetId), ); + const withCreateUserRes = await Promise.all( + res.map(async (wiki) => { + const createUser = await this.userService.findById(wiki.createUserId); + return { createUser, ...wiki }; + }), + ); - return res; + return withCreateUserRes; } async getDocuments(user: OutUser) { @@ -58,8 +64,16 @@ export class CollectorService { userId: user.id, type: CollectType.document, }); - return await this.documentService.findByIds( + const res = await this.documentService.findByIds( records.map((record) => record.targetId), ); + const withCreateUserRes = await Promise.all( + res.map(async (doc) => { + const createUser = await this.userService.findById(doc.createUserId); + return { createUser, ...doc }; + }), + ); + + return withCreateUserRes; } } diff --git a/packages/server/src/services/document.service.ts b/packages/server/src/services/document.service.ts index 0d48e279..74f3d002 100644 --- a/packages/server/src/services/document.service.ts +++ b/packages/server/src/services/document.service.ts @@ -8,7 +8,7 @@ import { import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { instanceToPlain } from 'class-transformer'; -import { DocumentStatus, WikiUserRole } from '@think/share'; +import { DocumentStatus, IDocument, WikiUserRole } from '@think/domains'; import { DocumentAuthorityEntity } from '@entities/document-authority.entity'; import { DocumentEntity } from '@entities/document.entity'; import { OutUser, UserService } from '@services/user.service'; @@ -764,6 +764,7 @@ export class DocumentService { const documents = await this.documentRepo.findByIds(ids, { order: { createdAt: 'ASC' }, }); + documents.sort((a, b) => a.index - b.index); documents.forEach((doc) => { delete doc.state; }); @@ -796,17 +797,18 @@ export class DocumentService { public async orderWikiTocs( user: OutUser, wikiId: string, - relations: Array<{ id: string; parentDocumentId?: string }>, + relations: Array<{ id: string; parentDocumentId?: string; index: number }>, ) { await this.wikiService.getWikiDetail(user, wikiId); await Promise.all( relations.map(async (relation) => { - const { id, parentDocumentId } = relation; + const { id, parentDocumentId, index } = relation; const doc = await this.documentRepo.findOne(id); if (doc) { const newData = await this.documentRepo.merge(doc, { parentDocumentId, + index, }); await this.documentRepo.save(newData); } @@ -835,6 +837,8 @@ export class DocumentService { }, ); + documents.sort((a, b) => a.index - b.index); + const docs = documents .filter((doc) => !doc.isWikiHome) .map((doc) => { @@ -900,6 +904,7 @@ export class DocumentService { .andWhere('document.isWikiHome=:isWikiHome') .setParameter('createUserId', user.id) .setParameter('isWikiHome', 0); + query.orderBy('document.updatedAt', 'DESC'); query.take(10); const documents = await query.getMany(); @@ -909,10 +914,50 @@ export class DocumentService { const res = await Promise.all( docs.map(async (doc) => { const views = await this.viewService.getDocumentTotalViews(doc.id); - return { ...doc, views }; + return { ...doc, views } as IDocument & { views: number }; }), ); - return res; + const withCreateUserRes = await Promise.all( + res.map(async (doc) => { + const createUser = await this.userService.findById(doc.createUserId); + return { createUser, ...doc }; + }), + ); + + return withCreateUserRes; + } + + /** + * 关键词搜索文档 + * @param keyword + */ + async search(user, keyword) { + const res = await this.documentRepo + .createQueryBuilder('document') + .where('document.title LIKE :keyword') + .setParameter('keyword', `%${keyword}%`) + .getMany(); + + const ret = await Promise.all( + res.map(async (doc) => { + const auth = await this.documentAuthorityRepo.findOne({ + documentId: doc.id, + userId: user.id, + }); + return auth && auth.readable ? doc : null; + }), + ); + + const data = ret.filter(Boolean); + + const withCreateUserRes = await Promise.all( + data.map(async (doc) => { + const createUser = await this.userService.findById(doc.createUserId); + return { createUser, ...doc }; + }), + ); + + return withCreateUserRes; } } diff --git a/packages/server/src/services/user.service.ts b/packages/server/src/services/user.service.ts index dba230d9..cfd49d0c 100644 --- a/packages/server/src/services/user.service.ts +++ b/packages/server/src/services/user.service.ts @@ -10,7 +10,7 @@ import { InjectRepository } from '@nestjs/typeorm'; import { JwtService } from '@nestjs/jwt'; import { Repository } from 'typeorm'; import { instanceToPlain } from 'class-transformer'; -import { CollectType, UserRole, UserStatus } from '@think/share'; +import { CollectType, UserRole, UserStatus } from '@think/domains'; import { MessageService } from '@services/message.service'; import { CollectorService } from '@services/collector.service'; import { WikiService } from '@services/wiki.service'; diff --git a/packages/server/src/services/view.service.ts b/packages/server/src/services/view.service.ts index 8f9c3b87..0e7ee13d 100644 --- a/packages/server/src/services/view.service.ts +++ b/packages/server/src/services/view.service.ts @@ -3,7 +3,7 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { ViewEntity } from '@entities/view.entity'; import { parseUserAgent } from '@helpers/ua.helper'; -import { Pagination } from '@think/share'; +import { IPagination } from '@think/domains'; @Injectable() export class ViewService { @@ -35,7 +35,7 @@ export class ViewService { return total; } - async getDocumentViews(documentId, pagination: Pagination) { + async getDocumentViews(documentId, pagination: IPagination) { let { page = 1, pageSize = 12 } = pagination; if (page <= 0) { page = 1; diff --git a/packages/server/src/services/wiki.service.ts b/packages/server/src/services/wiki.service.ts index 9dfeb7ed..881bf4ef 100644 --- a/packages/server/src/services/wiki.service.ts +++ b/packages/server/src/services/wiki.service.ts @@ -11,9 +11,8 @@ import { WikiStatus, WikiUserRole, DocumentStatus, - Pagination, - CollectType, -} from '@think/share'; + IPagination, +} from '@think/domains'; import { WikiEntity } from '@entities/wiki.entity'; import { WikiUserEntity } from '@entities/wiki-user.entity'; import { UserService } from '@services/user.service'; @@ -325,7 +324,7 @@ export class WikiService { * @param pagination * @returns */ - async getAllWikis(user: OutUser, pagination: Pagination) { + async getAllWikis(user: OutUser, pagination: IPagination) { const { page = 1, pageSize = 12 } = pagination; const query = await this.wikiUserRepo .createQueryBuilder('WikiUser') @@ -353,7 +352,7 @@ export class WikiService { * @param pagination * @returns */ - async getOwnWikis(user: OutUser, pagination: Pagination) { + async getOwnWikis(user: OutUser, pagination: IPagination) { const { page = 1, pageSize = 12 } = pagination; const query = await this.wikiRepo .createQueryBuilder('wiki') @@ -379,7 +378,7 @@ export class WikiService { * @param pagination * @returns */ - async getJoinWikis(user: OutUser, pagination: Pagination) { + async getJoinWikis(user: OutUser, pagination: IPagination) { const { page = 1, pageSize = 12 } = pagination; const query = await this.wikiUserRepo .createQueryBuilder('WikiUser') @@ -622,7 +621,7 @@ export class WikiService { public async orderWikiTocs( user: OutUser, wikiId: string, - relations: Array<{ id: string; parentDocumentId?: string }>, + relations: Array<{ id: string; parentDocumentId?: string; index: number }>, ) { return await this.documentService.orderWikiTocs(user, wikiId, relations); } diff --git a/packages/share/README.md b/packages/share/README.md deleted file mode 100644 index 103418fc..00000000 --- a/packages/share/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# @think/share - -> 数据类型定义、枚举、配置等。 diff --git a/packages/share/lib/default.js.map b/packages/share/lib/default.js.map deleted file mode 100644 index 4a1bb9c8..00000000 --- a/packages/share/lib/default.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"default.js","sourceRoot":"","sources":["../src/default.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAC9B,sEAAsE,CAAC;AAE5D,QAAA,YAAY,GAAG;IAC1B,2BAAmB;IACnB,sEAAsE;IACtE,sEAAsE;IACtE,sEAAsE;IACtE,uEAAuE;IACvE,uEAAuE;IACvE,uEAAuE;IACvE,4EAA4E;IAC5E,sEAAsE;IACtE,uEAAuE;IACvE,uEAAuE;IACvE,uEAAuE;CACxE,CAAC"} \ No newline at end of file diff --git a/packages/share/lib/enum.d.ts b/packages/share/lib/enum.d.ts deleted file mode 100644 index 2f5aafad..00000000 --- a/packages/share/lib/enum.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { IDocument, IWiki } from "./type"; -export declare enum UserRole { - normal = "normal", - admin = "admin", - superadmin = "superadmin" -} -export declare enum UserStatus { - normal = "normal", - locked = "locked" -} -export declare enum WikiStatus { - private = "private", - public = "public" -} -export declare enum WikiUserStatus { - applying = "applying", - inviting = "inviting", - normal = "normal" -} -export declare enum WikiUserRole { - normal = "normal", - admin = "admin" -} -export declare enum DocumentStatus { - private = "private", - public = "public" -} -export declare enum CollectType { - document = "document", - wiki = "wiki" -} -export declare const WIKI_STATUS_LIST: { - value: WikiStatus; - label: string; -}[]; -export declare const WIKI_USER_ROLES: { - value: string; - label: string; -}[]; -export declare const DOCUMENT_STATUS: { - value: DocumentStatus; - label: string; -}[]; -export declare const getWikiStatusText: (wiki: IWiki) => string; -export declare const isPublicWiki: (currentStatus: IWiki["status"]) => boolean; -export declare const renderWikiUserRole: (role: any) => string; -export declare const getWikiShareURL: (wikiId: any) => string; -export declare const getDocumentShareURL: (documentId: any) => string; -export declare const isPublicDocument: (currentStatus: IDocument["status"]) => boolean; diff --git a/packages/share/lib/enum.js b/packages/share/lib/enum.js deleted file mode 100644 index 4df61f24..00000000 --- a/packages/share/lib/enum.js +++ /dev/null @@ -1,91 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isPublicDocument = exports.getDocumentShareURL = exports.getWikiShareURL = exports.renderWikiUserRole = exports.isPublicWiki = exports.getWikiStatusText = exports.DOCUMENT_STATUS = exports.WIKI_USER_ROLES = exports.WIKI_STATUS_LIST = exports.CollectType = exports.DocumentStatus = exports.WikiUserRole = exports.WikiUserStatus = exports.WikiStatus = exports.UserStatus = exports.UserRole = void 0; -var UserRole; -(function (UserRole) { - UserRole["normal"] = "normal"; - UserRole["admin"] = "admin"; - UserRole["superadmin"] = "superadmin"; -})(UserRole = exports.UserRole || (exports.UserRole = {})); -var UserStatus; -(function (UserStatus) { - UserStatus["normal"] = "normal"; - UserStatus["locked"] = "locked"; -})(UserStatus = exports.UserStatus || (exports.UserStatus = {})); -var WikiStatus; -(function (WikiStatus) { - WikiStatus["private"] = "private"; - WikiStatus["public"] = "public"; -})(WikiStatus = exports.WikiStatus || (exports.WikiStatus = {})); -var WikiUserStatus; -(function (WikiUserStatus) { - WikiUserStatus["applying"] = "applying"; - WikiUserStatus["inviting"] = "inviting"; - WikiUserStatus["normal"] = "normal"; -})(WikiUserStatus = exports.WikiUserStatus || (exports.WikiUserStatus = {})); -var WikiUserRole; -(function (WikiUserRole) { - WikiUserRole["normal"] = "normal"; - WikiUserRole["admin"] = "admin"; -})(WikiUserRole = exports.WikiUserRole || (exports.WikiUserRole = {})); -var DocumentStatus; -(function (DocumentStatus) { - DocumentStatus["private"] = "private"; - DocumentStatus["public"] = "public"; -})(DocumentStatus = exports.DocumentStatus || (exports.DocumentStatus = {})); -var CollectType; -(function (CollectType) { - CollectType["document"] = "document"; - CollectType["wiki"] = "wiki"; -})(CollectType = exports.CollectType || (exports.CollectType = {})); -exports.WIKI_STATUS_LIST = [ - { - value: WikiStatus.private, - label: "私有", - }, - { - value: WikiStatus.public, - label: "公开", - }, -]; -exports.WIKI_USER_ROLES = [ - { - value: "admin", - label: "管理员", - }, - { - value: "normal", - label: "成员", - }, -]; -exports.DOCUMENT_STATUS = [ - { - value: DocumentStatus.private, - label: "私有", - }, - { - value: DocumentStatus.public, - label: "公开", - }, -]; -const getWikiStatusText = (wiki) => { - return exports.WIKI_STATUS_LIST.find((t) => t.value === wiki.status).label; -}; -exports.getWikiStatusText = getWikiStatusText; -const isPublicWiki = (currentStatus) => currentStatus === WikiStatus.public; -exports.isPublicWiki = isPublicWiki; -const renderWikiUserRole = (role) => { - return exports.WIKI_USER_ROLES.find((d) => d.value === role).label; -}; -exports.renderWikiUserRole = renderWikiUserRole; -const getWikiShareURL = (wikiId) => { - return window.location.host + "/share/wiki/" + wikiId; -}; -exports.getWikiShareURL = getWikiShareURL; -const getDocumentShareURL = (documentId) => { - return window.location.host + "/share/document/" + documentId; -}; -exports.getDocumentShareURL = getDocumentShareURL; -const isPublicDocument = (currentStatus) => currentStatus === DocumentStatus.public; -exports.isPublicDocument = isPublicDocument; -//# sourceMappingURL=enum.js.map \ No newline at end of file diff --git a/packages/share/lib/enum.js.map b/packages/share/lib/enum.js.map deleted file mode 100644 index b3b85f99..00000000 --- a/packages/share/lib/enum.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"enum.js","sourceRoot":"","sources":["../src/enum.ts"],"names":[],"mappings":";;;AAEA,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,6BAAiB,CAAA;IACjB,2BAAe,CAAA;IACf,qCAAyB,CAAA;AAC3B,CAAC,EAJW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAInB;AAED,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,+BAAiB,CAAA;IACjB,+BAAiB,CAAA;AACnB,CAAC,EAHW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAGrB;AAED,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,iCAAmB,CAAA;IACnB,+BAAiB,CAAA;AACnB,CAAC,EAHW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAGrB;AAED,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,uCAAqB,CAAA;IACrB,mCAAiB,CAAA;AACnB,CAAC,EAJW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAIzB;AAED,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,iCAAiB,CAAA;IACjB,+BAAe,CAAA;AACjB,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB;AAED,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,qCAAmB,CAAA;IACnB,mCAAiB,CAAA;AACnB,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB;AAED,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,oCAAqB,CAAA;IACrB,4BAAa,CAAA;AACf,CAAC,EAHW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAGtB;AAEY,QAAA,gBAAgB,GAAG;IAC9B;QACE,KAAK,EAAE,UAAU,CAAC,OAAO;QACzB,KAAK,EAAE,IAAI;KACZ;IACD;QACE,KAAK,EAAE,UAAU,CAAC,MAAM;QACxB,KAAK,EAAE,IAAI;KACZ;CACF,CAAC;AAEW,QAAA,eAAe,GAAG;IAC7B;QACE,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,KAAK;KACb;IACD;QACE,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,IAAI;KACZ;CACF,CAAC;AAEW,QAAA,eAAe,GAAG;IAC7B;QACE,KAAK,EAAE,cAAc,CAAC,OAAO;QAC7B,KAAK,EAAE,IAAI;KACZ;IACD;QACE,KAAK,EAAE,cAAc,CAAC,MAAM;QAC5B,KAAK,EAAE,IAAI;KACZ;CACF,CAAC;AAEK,MAAM,iBAAiB,GAAG,CAAC,IAAW,EAAE,EAAE;IAC/C,OAAO,wBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;AACrE,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B;AAEK,MAAM,YAAY,GAAG,CAAC,aAA8B,EAAE,EAAE,CAC7D,aAAa,KAAK,UAAU,CAAC,MAAM,CAAC;AADzB,QAAA,YAAY,gBACa;AAE/B,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,EAAE;IACzC,OAAO,uBAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC;AAC7D,CAAC,CAAC;AAFW,QAAA,kBAAkB,sBAE7B;AAEK,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,EAAE;IACxC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,cAAc,GAAG,MAAM,CAAC;AACxD,CAAC,CAAC;AAFW,QAAA,eAAe,mBAE1B;AAEK,MAAM,mBAAmB,GAAG,CAAC,UAAU,EAAE,EAAE;IAChD,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,kBAAkB,GAAG,UAAU,CAAC;AAChE,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B;AAEK,MAAM,gBAAgB,GAAG,CAAC,aAAkC,EAAE,EAAE,CACrE,aAAa,KAAK,cAAc,CAAC,MAAM,CAAC;AAD7B,QAAA,gBAAgB,oBACa"} \ No newline at end of file diff --git a/packages/share/lib/index.d.ts b/packages/share/lib/index.d.ts deleted file mode 100644 index 2a398aee..00000000 --- a/packages/share/lib/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./default"; -export * from "./enum"; -export * from "./type"; diff --git a/packages/share/lib/index.js.map b/packages/share/lib/index.js.map deleted file mode 100644 index 03aa1686..00000000 --- a/packages/share/lib/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAA0B;AAC1B,yCAAuB;AACvB,yCAAuB"} \ No newline at end of file diff --git a/packages/share/lib/type.d.ts b/packages/share/lib/type.d.ts deleted file mode 100644 index 5d708b49..00000000 --- a/packages/share/lib/type.d.ts +++ /dev/null @@ -1,89 +0,0 @@ -export interface Pagination { - page: number; - pageSize: number; -} -export interface IUser { - id: string; - name: string; - password?: string; - avatar?: string; - email?: string; - role: "normal" | "admin"; - status: "normal" | "locked"; - token?: string; -} -export interface IWiki { - id: string; - name: string; - avatar: string; - description: string; - createUserId: string; - createUser: IUser; - status: "private" | "public"; - createdAt: string; - updatedAt: string; -} -export interface IWikiUser extends IUser { - userRole: "admin" | "noraml"; - userStatus: "normal"; - isCreator: boolean; -} -export interface IDocument { - id: string; - wikiId: string; - isWikiHome: boolean; - createUserId: string; - createUser: IUser; - parentDocumentId?: string; - title: string; - content: string; - status: "private" | "public"; - views: number; - sharePassword?: string; - createdAt: string; - updatedAt: string; - children?: IDocument[]; -} -export interface IAuthority { - id: string; - documentId: string; - userId: string; - readable: boolean; - editable: boolean; -} -export interface IComment { - id: string; - parentCommentId?: string; - documentId: string; - createUserId: string; - createUser: IUser; - replyUserId?: string; - replyUser?: IUser; - html: string; - userAgent: string; - createdAt: string; - updatedAt: string; - children?: IComment[]; -} -export interface IMessage { - id: string; - userId: string; - title: string; - message: string; - url: string; - read: boolean; - createdAt: string; - updatedAt: string; -} -export interface ITemplate { - id: string; - createUserId: string; - createUser: IUser; - title: string; - content: string; - state: string; - usageAmount: number; - isPublic: boolean; - createdAt: string; - updatedAt: string; -} diff --git a/packages/share/lib/type.js.map b/packages/share/lib/type.js.map deleted file mode 100644 index 5102d18c..00000000 --- a/packages/share/lib/type.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"type.js","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/packages/share/src/enum.ts b/packages/share/src/enum.ts deleted file mode 100644 index e3807f89..00000000 --- a/packages/share/src/enum.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { IDocument, IWiki } from "./type"; - -export enum UserRole { - normal = "normal", - admin = "admin", - superadmin = "superadmin", -} - -export enum UserStatus { - normal = "normal", - locked = "locked", -} - -export enum WikiStatus { - private = "private", - public = "public", -} - -export enum WikiUserStatus { - applying = "applying", - inviting = "inviting", - normal = "normal", -} - -export enum WikiUserRole { - normal = "normal", - admin = "admin", -} - -export enum DocumentStatus { - private = "private", - public = "public", -} - -export enum CollectType { - document = "document", - wiki = "wiki", -} - -export const WIKI_STATUS_LIST = [ - { - value: WikiStatus.private, - label: "私有", - }, - { - value: WikiStatus.public, - label: "公开", - }, -]; - -export const WIKI_USER_ROLES = [ - { - value: "admin", - label: "管理员", - }, - { - value: "normal", - label: "成员", - }, -]; - -export const DOCUMENT_STATUS = [ - { - value: DocumentStatus.private, - label: "私有", - }, - { - value: DocumentStatus.public, - label: "公开", - }, -]; - -export const getWikiStatusText = (wiki: IWiki) => { - return WIKI_STATUS_LIST.find((t) => t.value === wiki.status).label; -}; - -export const isPublicWiki = (currentStatus: IWiki["status"]) => - currentStatus === WikiStatus.public; - -export const renderWikiUserRole = (role) => { - return WIKI_USER_ROLES.find((d) => d.value === role).label; -}; - -export const getWikiShareURL = (wikiId) => { - return window.location.host + "/share/wiki/" + wikiId; -}; - -export const getDocumentShareURL = (documentId) => { - return window.location.host + "/share/document/" + documentId; -}; - -export const isPublicDocument = (currentStatus: IDocument["status"]) => - currentStatus === DocumentStatus.public; diff --git a/packages/share/src/index.ts b/packages/share/src/index.ts deleted file mode 100644 index 2a398aee..00000000 --- a/packages/share/src/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./default"; -export * from "./enum"; -export * from "./type"; diff --git a/packages/share/src/type.ts b/packages/share/src/type.ts deleted file mode 100644 index 80d8b6d1..00000000 --- a/packages/share/src/type.ts +++ /dev/null @@ -1,97 +0,0 @@ -export interface Pagination { - page: number; - pageSize: number; -} - -export interface IUser { - id: string; - name: string; - password?: string; - avatar?: string; - email?: string; - role: "normal" | "admin"; - status: "normal" | "locked"; - token?: string; -} - -export interface IWiki { - id: string; - name: string; - avatar: string; - description: string; - createUserId: string; - createUser: IUser; - status: "private" | "public"; - createdAt: string; - updatedAt: string; -} - -export interface IWikiUser extends IUser { - userRole: "admin" | "noraml"; - userStatus: "normal"; - isCreator: boolean; -} - -export interface IDocument { - id: string; - wikiId: string; - isWikiHome: boolean; - createUserId: string; - createUser: IUser; - parentDocumentId?: string; - title: string; - content: string; - status: "private" | "public"; - views: number; - sharePassword?: string; - createdAt: string; - updatedAt: string; - children?: IDocument[]; -} - -export interface IAuthority { - id: string; - documentId: string; - userId: string; - readable: boolean; - editable: boolean; -} - -export interface IComment { - id: string; - parentCommentId?: string; - documentId: string; - createUserId: string; - createUser: IUser; - replyUserId?: string; - replyUser?: IUser; - html: string; - userAgent: string; - createdAt: string; - updatedAt: string; - children?: IComment[]; -} - -export interface IMessage { - id: string; - userId: string; - title: string; - message: string; - url: string; - read: boolean; - createdAt: string; - updatedAt: string; -} - -export interface ITemplate { - id: string; - createUserId: string; - createUser: IUser; - title: string; - content: string; - state: string; - usageAmount: number; - isPublic: boolean; - createdAt: string; - updatedAt: string; -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index daf5845c..af2d2d11 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,7 +24,8 @@ importers: '@douyinfe/semi-ui': ^2.3.1 '@hocuspocus/provider': ^1.0.0-alpha.29 '@think/config': workspace:^1.0.0 - '@think/share': workspace:^1.0.0 + '@think/constants': workspace:^1.0.0 + '@think/domains': workspace:^1.0.0 '@tiptap/core': ^2.0.0-beta.171 '@tiptap/extension-blockquote': ^2.0.0-beta.26 '@tiptap/extension-bold': ^2.0.0-beta.25 @@ -91,7 +92,8 @@ importers: '@douyinfe/semi-ui': 2.3.1_b3482aaf5744fc7c2aeb7941b0e0a78f '@hocuspocus/provider': 1.0.0-alpha.29 '@think/config': link:../config - '@think/share': link:../share + '@think/constants': link:../constants + '@think/domains': link:../domains '@tiptap/core': 2.0.0-beta.171 '@tiptap/extension-blockquote': 2.0.0-beta.26_@tiptap+core@2.0.0-beta.171 '@tiptap/extension-bold': 2.0.0-beta.25_@tiptap+core@2.0.0-beta.171 @@ -160,6 +162,18 @@ importers: dependencies: js-yaml: 4.1.0 + packages/constants: + specifiers: + typescript: ^4.5.5 + devDependencies: + typescript: 4.5.5 + + packages/domains: + specifiers: + typescript: ^4.5.5 + devDependencies: + typescript: 4.5.5 + packages/server: specifiers: '@hocuspocus/server': ^1.0.0-alpha.91 @@ -175,7 +189,8 @@ importers: '@nestjs/testing': ^8.0.0 '@nestjs/typeorm': ^8.0.3 '@think/config': workspace:^1.0.0 - '@think/share': workspace:^1.0.0 + '@think/constants': workspace:^1.0.0 + '@think/domains': workspace:^1.0.0 '@types/express': ^4.17.13 '@types/jest': 27.0.2 '@types/node': ^16.0.0 @@ -226,7 +241,8 @@ importers: '@nestjs/platform-express': 8.2.6_732a54a2558f64827b8cc4f9baac4f1f '@nestjs/typeorm': 8.0.3_7d295ee70f5e60cc7bb984ed65836a4c '@think/config': link:../config - '@think/share': link:../share + '@think/constants': link:../constants + '@think/domains': link:../domains ali-oss: 6.16.0 bcryptjs: 2.4.3 class-transformer: 0.5.1 @@ -271,9 +287,6 @@ importers: tsconfig-paths: 3.12.0 typescript: 4.5.5 - packages/share: - specifiers: {} - packages: /@angular-devkit/core/13.0.2: