From f2981ace226d8acee3ffc557048b43352318d392 Mon Sep 17 00:00:00 2001 From: MiniDay <372403923@qq.com> Date: Mon, 3 Apr 2023 20:59:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=BC=80=E5=8F=91=E4=B8=AD...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blog/controller/BlogController.java | 5 +- .../blog/service/IBlogService.java | 5 +- .../blog/service/impl/BlogService.java | 11 +- .../application/blog/vo/PageableVO.java | 21 +- .../application/blog/vo/ResponseVO.java | 2 +- blog-frontend/index.html | 22 +- blog-frontend/package-lock.json | 958 ++++++++++++++++++ blog-frontend/package.json | 1 + blog-frontend/src/App.vue | 60 +- blog-frontend/src/api/api.ts | 55 +- blog-frontend/src/api/global-store.ts | 57 +- blog-frontend/src/api/index.ts | 6 +- blog-frontend/src/assets/base.css | 7 +- blog-frontend/src/assets/main.css | 4 +- .../src/components/BlogComponent.vue | 2 +- .../src/components/FooterComponent.vue | 65 +- .../src/components/HeaderComponent.vue | 122 ++- .../components/manage/SiteManageComponent.vue | 69 +- blog-frontend/src/main.ts | 16 +- blog-frontend/src/router/index.ts | 15 +- .../src/swagger/apis/blog-controller-api.ts | 8 +- .../src/swagger/apis/user-controller-api.ts | 16 +- .../src/swagger/models/attach-entity.ts | 57 -- .../src/swagger/models/blog-attach-entity.ts | 64 -- .../src/swagger/models/blog-entity.ts | 100 -- .../swagger/models/blog-info-response-vo.ts | 23 +- blog-frontend/src/swagger/models/index.ts | 5 - .../pageable-voattach-info-response-vo.ts | 2 +- .../pageable-voblog-info-response-vo.ts | 2 +- .../pageable-vosetting-info-response-vo.ts | 2 +- .../pageable-vouser-info-response-vo.ts | 2 +- .../response-voblog-info-response-vo.ts | 2 +- .../response-volist-blog-info-response-vo.ts | 39 - .../src/swagger/models/response-volong.ts | 2 +- ...se-vopageable-voattach-info-response-vo.ts | 2 +- ...onse-vopageable-voblog-info-response-vo.ts | 2 +- ...e-vopageable-vosetting-info-response-vo.ts | 2 +- ...onse-vopageable-vouser-info-response-vo.ts | 2 +- .../response-vosetting-info-response-vo.ts | 2 +- .../src/swagger/models/response-vostring.ts | 2 +- .../response-vouser-info-response-vo.ts | 2 +- .../src/swagger/models/response-vovoid.ts | 2 +- .../swagger/models/user-create-require-vo.ts | 2 +- .../src/swagger/models/user-entity.ts | 87 -- .../swagger/models/user-info-response-vo.ts | 14 - blog-frontend/src/views/BlogEditView.vue | 80 +- blog-frontend/src/views/BlogReadView.vue | 79 +- blog-frontend/src/views/IndexView.vue | 85 +- blog-frontend/src/views/LoginView.vue | 93 +- blog-frontend/src/views/ManagePaneView.vue | 37 +- blog-frontend/src/views/RegisterView.vue | 91 +- blog-frontend/src/views/TagsView.vue | 12 +- 52 files changed, 1576 insertions(+), 847 deletions(-) delete mode 100644 blog-frontend/src/swagger/models/attach-entity.ts delete mode 100644 blog-frontend/src/swagger/models/blog-attach-entity.ts delete mode 100644 blog-frontend/src/swagger/models/blog-entity.ts delete mode 100644 blog-frontend/src/swagger/models/response-volist-blog-info-response-vo.ts delete mode 100644 blog-frontend/src/swagger/models/user-entity.ts diff --git a/blog-backend/src/main/java/cn/hamster3/application/blog/controller/BlogController.java b/blog-backend/src/main/java/cn/hamster3/application/blog/controller/BlogController.java index 054a012..0698adf 100644 --- a/blog-backend/src/main/java/cn/hamster3/application/blog/controller/BlogController.java +++ b/blog-backend/src/main/java/cn/hamster3/application/blog/controller/BlogController.java @@ -1,6 +1,7 @@ package cn.hamster3.application.blog.controller; import cn.hamster3.application.blog.service.IBlogService; +import cn.hamster3.application.blog.vo.PageableVO; import cn.hamster3.application.blog.vo.ResponseVO; import cn.hamster3.application.blog.vo.blog.BlogInfoResponseVO; import cn.hamster3.application.blog.vo.blog.BlogUpdateRequireVO; @@ -13,8 +14,6 @@ import org.springframework.data.domain.PageRequest; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; -import java.util.List; - @Tag(name = "BlogController", description = "博文相关接口") @RestController @RequestMapping(value = "/api/v1/blog", produces = MediaType.APPLICATION_JSON_VALUE) @@ -36,7 +35,7 @@ public class BlogController { @GetMapping("/") @Operation(summary = "获取博文列表") - public ResponseVO> getBlogInfoList( + public ResponseVO> getBlogInfoList( @Parameter(description = "页码", example = "0") int page, @Parameter(description = "大小", example = "10") int size ) { diff --git a/blog-backend/src/main/java/cn/hamster3/application/blog/service/IBlogService.java b/blog-backend/src/main/java/cn/hamster3/application/blog/service/IBlogService.java index 989ed0b..f54d443 100644 --- a/blog-backend/src/main/java/cn/hamster3/application/blog/service/IBlogService.java +++ b/blog-backend/src/main/java/cn/hamster3/application/blog/service/IBlogService.java @@ -1,19 +1,18 @@ package cn.hamster3.application.blog.service; +import cn.hamster3.application.blog.vo.PageableVO; import cn.hamster3.application.blog.vo.ResponseVO; import cn.hamster3.application.blog.vo.blog.BlogInfoResponseVO; import cn.hamster3.application.blog.vo.blog.BlogUpdateRequireVO; import org.jetbrains.annotations.NotNull; import org.springframework.data.domain.PageRequest; -import java.util.List; - public interface IBlogService { @NotNull ResponseVO createBlog(@NotNull BlogUpdateRequireVO requireVO); @NotNull ResponseVO getBlogInfo(@NotNull Long blogID); - @NotNull ResponseVO> getBlogInfoList(@NotNull PageRequest page); + @NotNull ResponseVO> getBlogInfoList(@NotNull PageRequest page); @NotNull ResponseVO updateBlog(@NotNull Long blogID, @NotNull BlogUpdateRequireVO requireVO); diff --git a/blog-backend/src/main/java/cn/hamster3/application/blog/service/impl/BlogService.java b/blog-backend/src/main/java/cn/hamster3/application/blog/service/impl/BlogService.java index f4914a8..c40fdb1 100644 --- a/blog-backend/src/main/java/cn/hamster3/application/blog/service/impl/BlogService.java +++ b/blog-backend/src/main/java/cn/hamster3/application/blog/service/impl/BlogService.java @@ -8,6 +8,7 @@ import cn.hamster3.application.blog.entity.mapper.BlogMapper; import cn.hamster3.application.blog.entity.repo.BlogRepository; import cn.hamster3.application.blog.service.IBlogService; import cn.hamster3.application.blog.util.BlogUtils; +import cn.hamster3.application.blog.vo.PageableVO; import cn.hamster3.application.blog.vo.ResponseVO; import cn.hamster3.application.blog.vo.blog.BlogInfoResponseVO; import cn.hamster3.application.blog.vo.blog.BlogUpdateRequireVO; @@ -17,8 +18,6 @@ import org.jetbrains.annotations.NotNull; import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; -import java.util.List; - @Slf4j @Service public class BlogService implements IBlogService { @@ -50,12 +49,8 @@ public class BlogService implements IBlogService { } @Override - public @NotNull ResponseVO> getBlogInfoList(@NotNull PageRequest page) { - return ResponseVO.success( - blogRepo.findAll(page).stream() - .map(o -> blogMapper.entityToInfoVO(o)) - .toList() - ); + public @NotNull ResponseVO> getBlogInfoList(@NotNull PageRequest page) { + return PageableVO.success(blogRepo.findAll(page).map(o -> blogMapper.entityToInfoVO(o))); } @Override diff --git a/blog-backend/src/main/java/cn/hamster3/application/blog/vo/PageableVO.java b/blog-backend/src/main/java/cn/hamster3/application/blog/vo/PageableVO.java index 69f4be3..bf9628d 100644 --- a/blog-backend/src/main/java/cn/hamster3/application/blog/vo/PageableVO.java +++ b/blog-backend/src/main/java/cn/hamster3/application/blog/vo/PageableVO.java @@ -10,11 +10,26 @@ import java.util.List; @Data @AllArgsConstructor public class PageableVO { - private int page; - private int size; + /** + * 当前查询页码 + */ + private int pageNumber; + /** + * 当前查询页面大小 + */ + private int pageSize; + /** + * 总元素数量 + */ private long totalElements; + /** + * 总页码 + */ private int totalPage; - private List data; + /** + * 当前查询内容 + */ + private List elements; @NotNull public static ResponseVO> success(@NotNull Page page) { diff --git a/blog-backend/src/main/java/cn/hamster3/application/blog/vo/ResponseVO.java b/blog-backend/src/main/java/cn/hamster3/application/blog/vo/ResponseVO.java index b23c9dd..fcda663 100644 --- a/blog-backend/src/main/java/cn/hamster3/application/blog/vo/ResponseVO.java +++ b/blog-backend/src/main/java/cn/hamster3/application/blog/vo/ResponseVO.java @@ -15,7 +15,7 @@ public class ResponseVO { @Nullable private String msg; @Nullable - private T data; + private T content; @NotNull public static ResponseVO success() { diff --git a/blog-frontend/index.html b/blog-frontend/index.html index 6c45541..9d21b83 100644 --- a/blog-frontend/index.html +++ b/blog-frontend/index.html @@ -1,18 +1,16 @@ - - - - - - + + + + + 网站标题 - - + + - +
- - - \ No newline at end of file + + diff --git a/blog-frontend/package-lock.json b/blog-frontend/package-lock.json index b00a881..e29a74e 100644 --- a/blog-frontend/package-lock.json +++ b/blog-frontend/package-lock.json @@ -8,6 +8,7 @@ "name": "blog-frontend", "version": "0.0.1", "dependencies": { + "@wangeditor/editor-for-vue": "^5.1.12", "axios": "^1.3.4", "element-plus": "^2.2.32", "vue": "^3.2.45", @@ -319,6 +320,18 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/runtime": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "peer": true, + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/standalone": { "version": "7.21.1", "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.21.1.tgz", @@ -952,12 +965,24 @@ } } }, + "node_modules/@transloadit/prettier-bytes": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz", + "integrity": "sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==", + "peer": true + }, "node_modules/@types/estree": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", "dev": true }, + "node_modules/@types/event-emitter": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@types/event-emitter/-/event-emitter-0.3.3.tgz", + "integrity": "sha512-UfnOK1pIxO7P+EgPRZXD9jMpimd8QEFcEZ5R67R1UhGbv4zghU5+NE7U8M8G9H5Jc8FI51rqDWQs6FtUfq2e/Q==", + "peer": true + }, "node_modules/@types/lodash": { "version": "4.14.191", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz", @@ -982,6 +1007,61 @@ "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" }, + "node_modules/@uppy/companion-client": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@uppy/companion-client/-/companion-client-2.2.2.tgz", + "integrity": "sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==", + "peer": true, + "dependencies": { + "@uppy/utils": "^4.1.2", + "namespace-emitter": "^2.0.1" + } + }, + "node_modules/@uppy/core": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@uppy/core/-/core-2.3.4.tgz", + "integrity": "sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==", + "peer": true, + "dependencies": { + "@transloadit/prettier-bytes": "0.0.7", + "@uppy/store-default": "^2.1.1", + "@uppy/utils": "^4.1.3", + "lodash.throttle": "^4.1.1", + "mime-match": "^1.0.2", + "namespace-emitter": "^2.0.1", + "nanoid": "^3.1.25", + "preact": "^10.5.13" + } + }, + "node_modules/@uppy/store-default": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@uppy/store-default/-/store-default-2.1.1.tgz", + "integrity": "sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==", + "peer": true + }, + "node_modules/@uppy/utils": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@uppy/utils/-/utils-4.1.3.tgz", + "integrity": "sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==", + "peer": true, + "dependencies": { + "lodash.throttle": "^4.1.1" + } + }, + "node_modules/@uppy/xhr-upload": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz", + "integrity": "sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==", + "peer": true, + "dependencies": { + "@uppy/companion-client": "^2.2.2", + "@uppy/utils": "^4.1.2", + "nanoid": "^3.1.25" + }, + "peerDependencies": { + "@uppy/core": "^2.3.3" + } + }, "node_modules/@vitejs/plugin-vue": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.0.0.tgz", @@ -1277,6 +1357,164 @@ } } }, + "node_modules/@wangeditor/basic-modules": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz", + "integrity": "sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==", + "peer": true, + "dependencies": { + "is-url": "^1.2.4" + }, + "peerDependencies": { + "@wangeditor/core": "1.x", + "dom7": "^3.0.0", + "lodash.throttle": "^4.1.1", + "nanoid": "^3.2.0", + "slate": "^0.72.0", + "snabbdom": "^3.1.0" + } + }, + "node_modules/@wangeditor/code-highlight": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz", + "integrity": "sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==", + "peer": true, + "dependencies": { + "prismjs": "^1.23.0" + }, + "peerDependencies": { + "@wangeditor/core": "1.x", + "dom7": "^3.0.0", + "slate": "^0.72.0", + "snabbdom": "^3.1.0" + } + }, + "node_modules/@wangeditor/core": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/@wangeditor/core/-/core-1.1.19.tgz", + "integrity": "sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==", + "peer": true, + "dependencies": { + "@types/event-emitter": "^0.3.3", + "event-emitter": "^0.3.5", + "html-void-elements": "^2.0.0", + "i18next": "^20.4.0", + "scroll-into-view-if-needed": "^2.2.28", + "slate-history": "^0.66.0" + }, + "peerDependencies": { + "@uppy/core": "^2.1.1", + "@uppy/xhr-upload": "^2.0.3", + "dom7": "^3.0.0", + "is-hotkey": "^0.2.0", + "lodash.camelcase": "^4.3.0", + "lodash.clonedeep": "^4.5.0", + "lodash.debounce": "^4.0.8", + "lodash.foreach": "^4.5.0", + "lodash.isequal": "^4.5.0", + "lodash.throttle": "^4.1.1", + "lodash.toarray": "^4.4.0", + "nanoid": "^3.2.0", + "slate": "^0.72.0", + "snabbdom": "^3.1.0" + } + }, + "node_modules/@wangeditor/editor": { + "version": "5.1.23", + "resolved": "https://registry.npmjs.org/@wangeditor/editor/-/editor-5.1.23.tgz", + "integrity": "sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==", + "peer": true, + "dependencies": { + "@uppy/core": "^2.1.1", + "@uppy/xhr-upload": "^2.0.3", + "@wangeditor/basic-modules": "^1.1.7", + "@wangeditor/code-highlight": "^1.0.3", + "@wangeditor/core": "^1.1.19", + "@wangeditor/list-module": "^1.0.5", + "@wangeditor/table-module": "^1.1.4", + "@wangeditor/upload-image-module": "^1.0.2", + "@wangeditor/video-module": "^1.1.4", + "dom7": "^3.0.0", + "is-hotkey": "^0.2.0", + "lodash.camelcase": "^4.3.0", + "lodash.clonedeep": "^4.5.0", + "lodash.debounce": "^4.0.8", + "lodash.foreach": "^4.5.0", + "lodash.isequal": "^4.5.0", + "lodash.throttle": "^4.1.1", + "lodash.toarray": "^4.4.0", + "nanoid": "^3.2.0", + "slate": "^0.72.0", + "snabbdom": "^3.1.0" + } + }, + "node_modules/@wangeditor/editor-for-vue": { + "version": "5.1.12", + "resolved": "https://registry.npmjs.org/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz", + "integrity": "sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==", + "peerDependencies": { + "@wangeditor/editor": ">=5.1.0", + "vue": "^3.0.5" + } + }, + "node_modules/@wangeditor/list-module": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@wangeditor/list-module/-/list-module-1.0.5.tgz", + "integrity": "sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==", + "peer": true, + "peerDependencies": { + "@wangeditor/core": "1.x", + "dom7": "^3.0.0", + "slate": "^0.72.0", + "snabbdom": "^3.1.0" + } + }, + "node_modules/@wangeditor/table-module": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@wangeditor/table-module/-/table-module-1.1.4.tgz", + "integrity": "sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==", + "peer": true, + "peerDependencies": { + "@wangeditor/core": "1.x", + "dom7": "^3.0.0", + "lodash.isequal": "^4.5.0", + "lodash.throttle": "^4.1.1", + "nanoid": "^3.2.0", + "slate": "^0.72.0", + "snabbdom": "^3.1.0" + } + }, + "node_modules/@wangeditor/upload-image-module": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz", + "integrity": "sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==", + "peer": true, + "peerDependencies": { + "@uppy/core": "^2.0.3", + "@uppy/xhr-upload": "^2.0.3", + "@wangeditor/basic-modules": "1.x", + "@wangeditor/core": "1.x", + "dom7": "^3.0.0", + "lodash.foreach": "^4.5.0", + "slate": "^0.72.0", + "snabbdom": "^3.1.0" + } + }, + "node_modules/@wangeditor/video-module": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@wangeditor/video-module/-/video-module-1.1.4.tgz", + "integrity": "sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==", + "peer": true, + "peerDependencies": { + "@uppy/core": "^2.1.4", + "@uppy/xhr-upload": "^2.0.7", + "@wangeditor/core": "1.x", + "dom7": "^3.0.0", + "nanoid": "^3.2.0", + "slate": "^0.72.0", + "snabbdom": "^3.1.0" + } + }, "node_modules/acorn": { "version": "8.8.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", @@ -1550,6 +1788,12 @@ "node": ">= 0.8" } }, + "node_modules/compute-scroll-into-view": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz", + "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==", + "peer": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1601,6 +1845,16 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "peer": true, + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, "node_modules/dayjs": { "version": "1.11.7", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", @@ -1686,6 +1940,15 @@ "node": ">=8" } }, + "node_modules/dom7": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dom7/-/dom7-3.0.0.tgz", + "integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==", + "peer": true, + "dependencies": { + "ssr-window": "^3.0.0-alpha.1" + } + }, "node_modules/dotenv": { "version": "16.0.3", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", @@ -1839,6 +2102,42 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "hasInstallScript": true, + "peer": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "peer": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "peer": true, + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, "node_modules/esbuild": { "version": "0.16.17", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", @@ -1904,6 +2203,31 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "peer": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "peer": true, + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "peer": true + }, "node_modules/fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", @@ -2300,6 +2624,16 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, + "node_modules/html-void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", + "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -2313,6 +2647,15 @@ "node": ">= 6" } }, + "node_modules/i18next": { + "version": "20.6.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-20.6.1.tgz", + "integrity": "sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.12.0" + } + }, "node_modules/ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -2322,6 +2665,16 @@ "node": ">= 4" } }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -2462,6 +2815,12 @@ "node": ">=0.10.0" } }, + "node_modules/is-hotkey": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.2.0.tgz", + "integrity": "sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==", + "peer": true + }, "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -2498,6 +2857,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -2575,6 +2943,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "peer": true + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -2709,6 +3083,36 @@ "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", "dev": true }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "peer": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "peer": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "peer": true + }, + "node_modules/lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==", + "peer": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "peer": true + }, "node_modules/lodash.template": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", @@ -2728,6 +3132,18 @@ "lodash._reinterpolate": "^3.0.0" } }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", + "peer": true + }, + "node_modules/lodash.toarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "integrity": "sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==", + "peer": true + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -2808,6 +3224,15 @@ "node": ">= 0.6" } }, + "node_modules/mime-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mime-match/-/mime-match-1.0.2.tgz", + "integrity": "sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==", + "peer": true, + "dependencies": { + "wildcard": "^1.1.0" + } + }, "node_modules/mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", @@ -2910,6 +3335,12 @@ "integrity": "sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==", "dev": true }, + "node_modules/namespace-emitter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/namespace-emitter/-/namespace-emitter-2.0.1.tgz", + "integrity": "sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==", + "peer": true + }, "node_modules/nanoid": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", @@ -2921,6 +3352,12 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "peer": true + }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -3153,6 +3590,25 @@ "enhanced-resolve": "^4.1.1" } }, + "node_modules/preact": { + "version": "10.13.2", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.13.2.tgz", + "integrity": "sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "peer": true, + "engines": { + "node": ">=6" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -3242,6 +3698,12 @@ "node": ">=8.10.0" } }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "peer": true + }, "node_modules/regexp.prototype.flags": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", @@ -3345,6 +3807,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/scroll-into-view-if-needed": { + "version": "2.2.31", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz", + "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==", + "peer": true, + "dependencies": { + "compute-scroll-into-view": "^1.0.20" + } + }, "node_modules/scule": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/scule/-/scule-1.0.0.tgz", @@ -3416,6 +3887,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/slate": { + "version": "0.72.8", + "resolved": "https://registry.npmjs.org/slate/-/slate-0.72.8.tgz", + "integrity": "sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==", + "peer": true, + "dependencies": { + "immer": "^9.0.6", + "is-plain-object": "^5.0.0", + "tiny-warning": "^1.0.3" + } + }, + "node_modules/slate-history": { + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/slate-history/-/slate-history-0.66.0.tgz", + "integrity": "sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==", + "peer": true, + "dependencies": { + "is-plain-object": "^5.0.0" + }, + "peerDependencies": { + "slate": ">=0.65.3" + } + }, + "node_modules/snabbdom": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/snabbdom/-/snabbdom-3.5.1.tgz", + "integrity": "sha512-wHMNIOjkm/YNE5EM3RCbr/+DVgPg6AqQAX1eOxO46zYNvCXjKP5Y865tqQj3EXnaMBjkxmQA5jFuDpDK/dbfiA==", + "peer": true, + "engines": { + "node": ">=8.3.0" + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -3470,6 +3973,12 @@ "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, + "node_modules/ssr-window": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz", + "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==", + "peer": true + }, "node_modules/std-env": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.2.tgz", @@ -3601,6 +4110,12 @@ "node": ">=10" } }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", + "peer": true + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -3622,6 +4137,12 @@ "node": ">=8.0" } }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "peer": true + }, "node_modules/typed-array-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", @@ -4112,6 +4633,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/wildcard": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-1.1.2.tgz", + "integrity": "sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==", + "peer": true + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -4341,6 +4868,15 @@ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.1.tgz", "integrity": "sha512-JzhBFpkuhBNYUY7qs+wTzNmyCWUHEaAFpQQD2YfU1rPL38/L43Wvid0fFkiOCnHvsGncRZgEPyGnltABLcVDTg==" }, + "@babel/runtime": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "peer": true, + "requires": { + "regenerator-runtime": "^0.13.11" + } + }, "@babel/standalone": { "version": "7.21.1", "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.21.1.tgz", @@ -4712,12 +5248,24 @@ "picomatch": "^2.3.1" } }, + "@transloadit/prettier-bytes": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz", + "integrity": "sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==", + "peer": true + }, "@types/estree": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", "dev": true }, + "@types/event-emitter": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@types/event-emitter/-/event-emitter-0.3.3.tgz", + "integrity": "sha512-UfnOK1pIxO7P+EgPRZXD9jMpimd8QEFcEZ5R67R1UhGbv4zghU5+NE7U8M8G9H5Jc8FI51rqDWQs6FtUfq2e/Q==", + "peer": true + }, "@types/lodash": { "version": "4.14.191", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz", @@ -4742,6 +5290,58 @@ "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" }, + "@uppy/companion-client": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@uppy/companion-client/-/companion-client-2.2.2.tgz", + "integrity": "sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==", + "peer": true, + "requires": { + "@uppy/utils": "^4.1.2", + "namespace-emitter": "^2.0.1" + } + }, + "@uppy/core": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@uppy/core/-/core-2.3.4.tgz", + "integrity": "sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==", + "peer": true, + "requires": { + "@transloadit/prettier-bytes": "0.0.7", + "@uppy/store-default": "^2.1.1", + "@uppy/utils": "^4.1.3", + "lodash.throttle": "^4.1.1", + "mime-match": "^1.0.2", + "namespace-emitter": "^2.0.1", + "nanoid": "^3.1.25", + "preact": "^10.5.13" + } + }, + "@uppy/store-default": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@uppy/store-default/-/store-default-2.1.1.tgz", + "integrity": "sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==", + "peer": true + }, + "@uppy/utils": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@uppy/utils/-/utils-4.1.3.tgz", + "integrity": "sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==", + "peer": true, + "requires": { + "lodash.throttle": "^4.1.1" + } + }, + "@uppy/xhr-upload": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz", + "integrity": "sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==", + "peer": true, + "requires": { + "@uppy/companion-client": "^2.2.2", + "@uppy/utils": "^4.1.2", + "nanoid": "^3.1.25" + } + }, "@vitejs/plugin-vue": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.0.0.tgz", @@ -4974,6 +5574,101 @@ } } }, + "@wangeditor/basic-modules": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz", + "integrity": "sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==", + "peer": true, + "requires": { + "is-url": "^1.2.4" + } + }, + "@wangeditor/code-highlight": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz", + "integrity": "sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==", + "peer": true, + "requires": { + "prismjs": "^1.23.0" + } + }, + "@wangeditor/core": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/@wangeditor/core/-/core-1.1.19.tgz", + "integrity": "sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==", + "peer": true, + "requires": { + "@types/event-emitter": "^0.3.3", + "event-emitter": "^0.3.5", + "html-void-elements": "^2.0.0", + "i18next": "^20.4.0", + "scroll-into-view-if-needed": "^2.2.28", + "slate-history": "^0.66.0" + } + }, + "@wangeditor/editor": { + "version": "5.1.23", + "resolved": "https://registry.npmjs.org/@wangeditor/editor/-/editor-5.1.23.tgz", + "integrity": "sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==", + "peer": true, + "requires": { + "@uppy/core": "^2.1.1", + "@uppy/xhr-upload": "^2.0.3", + "@wangeditor/basic-modules": "^1.1.7", + "@wangeditor/code-highlight": "^1.0.3", + "@wangeditor/core": "^1.1.19", + "@wangeditor/list-module": "^1.0.5", + "@wangeditor/table-module": "^1.1.4", + "@wangeditor/upload-image-module": "^1.0.2", + "@wangeditor/video-module": "^1.1.4", + "dom7": "^3.0.0", + "is-hotkey": "^0.2.0", + "lodash.camelcase": "^4.3.0", + "lodash.clonedeep": "^4.5.0", + "lodash.debounce": "^4.0.8", + "lodash.foreach": "^4.5.0", + "lodash.isequal": "^4.5.0", + "lodash.throttle": "^4.1.1", + "lodash.toarray": "^4.4.0", + "nanoid": "^3.2.0", + "slate": "^0.72.0", + "snabbdom": "^3.1.0" + } + }, + "@wangeditor/editor-for-vue": { + "version": "5.1.12", + "resolved": "https://registry.npmjs.org/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz", + "integrity": "sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==", + "requires": {} + }, + "@wangeditor/list-module": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@wangeditor/list-module/-/list-module-1.0.5.tgz", + "integrity": "sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==", + "peer": true, + "requires": {} + }, + "@wangeditor/table-module": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@wangeditor/table-module/-/table-module-1.1.4.tgz", + "integrity": "sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==", + "peer": true, + "requires": {} + }, + "@wangeditor/upload-image-module": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz", + "integrity": "sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==", + "peer": true, + "requires": {} + }, + "@wangeditor/video-module": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@wangeditor/video-module/-/video-module-1.1.4.tgz", + "integrity": "sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==", + "peer": true, + "requires": {} + }, "acorn": { "version": "8.8.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", @@ -5171,6 +5866,12 @@ "delayed-stream": "~1.0.0" } }, + "compute-scroll-into-view": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz", + "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==", + "peer": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -5219,6 +5920,16 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "peer": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, "dayjs": { "version": "1.11.7", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", @@ -5283,6 +5994,15 @@ } } }, + "dom7": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dom7/-/dom7-3.0.0.tgz", + "integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==", + "peer": true, + "requires": { + "ssr-window": "^3.0.0-alpha.1" + } + }, "dotenv": { "version": "16.0.3", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", @@ -5409,6 +6129,38 @@ "is-symbol": "^1.0.2" } }, + "es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "peer": true, + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "peer": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "peer": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, "esbuild": { "version": "0.16.17", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", @@ -5461,6 +6213,33 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "peer": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "peer": true, + "requires": { + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "peer": true + } + } + }, "fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", @@ -5742,6 +6521,12 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, + "html-void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", + "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==", + "peer": true + }, "https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -5752,12 +6537,27 @@ "debug": "4" } }, + "i18next": { + "version": "20.6.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-20.6.1.tgz", + "integrity": "sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==", + "peer": true, + "requires": { + "@babel/runtime": "^7.12.0" + } + }, "ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true }, + "immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "peer": true + }, "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -5859,6 +6659,12 @@ "is-extglob": "^2.1.1" } }, + "is-hotkey": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.2.0.tgz", + "integrity": "sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==", + "peer": true + }, "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -5880,6 +6686,12 @@ "has-tostringtag": "^1.0.0" } }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "peer": true + }, "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -5930,6 +6742,12 @@ "has-tostringtag": "^1.0.0" } }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "peer": true + }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -6033,6 +6851,36 @@ "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", "dev": true }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "peer": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "peer": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "peer": true + }, + "lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==", + "peer": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "peer": true + }, "lodash.template": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", @@ -6052,6 +6900,18 @@ "lodash._reinterpolate": "^3.0.0" } }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", + "peer": true + }, + "lodash.toarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "integrity": "sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==", + "peer": true + }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -6119,6 +6979,15 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, + "mime-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mime-match/-/mime-match-1.0.2.tgz", + "integrity": "sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==", + "peer": true, + "requires": { + "wildcard": "^1.1.0" + } + }, "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", @@ -6199,11 +7068,23 @@ "integrity": "sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==", "dev": true }, + "namespace-emitter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/namespace-emitter/-/namespace-emitter-2.0.1.tgz", + "integrity": "sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==", + "peer": true + }, "nanoid": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "peer": true + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -6376,6 +7257,18 @@ "enhanced-resolve": "^4.1.1" } }, + "preact": { + "version": "10.13.2", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.13.2.tgz", + "integrity": "sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw==", + "peer": true + }, + "prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "peer": true + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -6445,6 +7338,12 @@ "picomatch": "^2.2.1" } }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "peer": true + }, "regexp.prototype.flags": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", @@ -6508,6 +7407,15 @@ "is-regex": "^1.1.4" } }, + "scroll-into-view-if-needed": { + "version": "2.2.31", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz", + "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==", + "peer": true, + "requires": { + "compute-scroll-into-view": "^1.0.20" + } + }, "scule": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/scule/-/scule-1.0.0.tgz", @@ -6558,6 +7466,32 @@ "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true }, + "slate": { + "version": "0.72.8", + "resolved": "https://registry.npmjs.org/slate/-/slate-0.72.8.tgz", + "integrity": "sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==", + "peer": true, + "requires": { + "immer": "^9.0.6", + "is-plain-object": "^5.0.0", + "tiny-warning": "^1.0.3" + } + }, + "slate-history": { + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/slate-history/-/slate-history-0.66.0.tgz", + "integrity": "sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==", + "peer": true, + "requires": { + "is-plain-object": "^5.0.0" + } + }, + "snabbdom": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/snabbdom/-/snabbdom-3.5.1.tgz", + "integrity": "sha512-wHMNIOjkm/YNE5EM3RCbr/+DVgPg6AqQAX1eOxO46zYNvCXjKP5Y865tqQj3EXnaMBjkxmQA5jFuDpDK/dbfiA==", + "peer": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -6605,6 +7539,12 @@ "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, + "ssr-window": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz", + "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==", + "peer": true + }, "std-env": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.2.tgz", @@ -6703,6 +7643,12 @@ "yallist": "^4.0.0" } }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", + "peer": true + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -6718,6 +7664,12 @@ "is-number": "^7.0.0" } }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "peer": true + }, "typed-array-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", @@ -7065,6 +8017,12 @@ "is-typed-array": "^1.1.10" } }, + "wildcard": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-1.1.2.tgz", + "integrity": "sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==", + "peer": true + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", diff --git a/blog-frontend/package.json b/blog-frontend/package.json index eb790c3..9a40454 100644 --- a/blog-frontend/package.json +++ b/blog-frontend/package.json @@ -10,6 +10,7 @@ "type-check": "vue-tsc --noEmit" }, "dependencies": { + "@wangeditor/editor-for-vue": "^5.1.12", "axios": "^1.3.4", "element-plus": "^2.2.32", "vue": "^3.2.45", diff --git a/blog-frontend/src/App.vue b/blog-frontend/src/App.vue index da25941..6d623ca 100644 --- a/blog-frontend/src/App.vue +++ b/blog-frontend/src/App.vue @@ -1,61 +1,63 @@ diff --git a/blog-frontend/src/api/api.ts b/blog-frontend/src/api/api.ts index eaaa3ff..e7db4bb 100644 --- a/blog-frontend/src/api/api.ts +++ b/blog-frontend/src/api/api.ts @@ -1,29 +1,34 @@ -import { UserControllerApiFactory, BlogControllerApiFactory, SettingControllerApiFactory, AttachControllerApiFactory, Configuration } from "@/swagger" -import { globalStore } from "./global-store" +import { + UserControllerApiFactory, + BlogControllerApiFactory, + SettingControllerApiFactory, + AttachControllerApiFactory, + Configuration, +} from "@/swagger"; +import { globalStore } from "./global-store"; export const apiConfig: Configuration = { - baseOptions: { - withCredentials: true - } -} + baseOptions: { + withCredentials: true, + }, +}; export const api = { - AttachController: AttachControllerApiFactory(apiConfig), - UserController: UserControllerApiFactory(apiConfig), - BlogController: BlogControllerApiFactory(apiConfig), - SettingController: SettingControllerApiFactory(apiConfig), - updateCurrentUserInfo: function () { - this.UserController.getCurrentUserInfo() - .then(resp => { - let vo = resp.data - if (vo.code === 200) { - globalStore.currentUserInfo = vo.data - console.log("current user info: ", vo.data) - } else { - globalStore.currentUserInfo = undefined - console.warn("ckeck current user info failed!") - } - globalStore.save() - }) - } -} + AttachController: AttachControllerApiFactory(apiConfig), + UserController: UserControllerApiFactory(apiConfig), + BlogController: BlogControllerApiFactory(apiConfig), + SettingController: SettingControllerApiFactory(apiConfig), + updateCurrentUserInfo: function () { + this.UserController.getCurrentUserInfo().then((resp) => { + let vo = resp.data; + if (vo.code === 200) { + globalStore.currentUserInfo = vo.content; + console.log("current user info: ", vo.content); + } else { + globalStore.currentUserInfo = undefined; + console.warn("ckeck current user info failed!"); + } + globalStore.save(); + }); + }, +}; diff --git a/blog-frontend/src/api/global-store.ts b/blog-frontend/src/api/global-store.ts index cfbd229..f4057cc 100644 --- a/blog-frontend/src/api/global-store.ts +++ b/blog-frontend/src/api/global-store.ts @@ -1,39 +1,32 @@ -import { reactive, ref } from "vue" +import { reactive, ref } from "vue"; -import type { UserInfoResponseVO } from "@/swagger" +import type { UserInfoResponseVO } from "@/swagger"; export const globalStore = reactive<{ - currentUserInfo?: UserInfoResponseVO, - load: Function - save: Function + currentUserInfo?: UserInfoResponseVO; + load: Function; + save: Function; }>({ - load: function () { - this.currentUserInfo = JSON.parse(window.localStorage.getItem("currentUserInfo") || "{}") - console.log("local storage user info: ", this.currentUserInfo) - }, - save: function () { - if (this.currentUserInfo?.id) { - window.localStorage.setItem("currentUserInfo", JSON.stringify(this.currentUserInfo)) - } else { - window.localStorage.removeItem("currentUserInfo") - } - } -}) + load: function () {}, + save: function () {}, +}); export const siteSetting = reactive({ - keys: { - site: { - title: "site.title", - navigation: "site.navigation", - css: "site.css", - footer: "site.footer" - } + keys: { + site: { + title: "site.title", + navigation: "site.navigation", + css: "site.css", + footer: "site.footer", }, - title: "网站标题", - footer: "", - css: "", - navigation: ref>(), -}) + }, + title: "网站标题", + footer: "", + css: "", + navigation: ref< + Array<{ + url: string; + text: string; + }> + >(), +}); diff --git a/blog-frontend/src/api/index.ts b/blog-frontend/src/api/index.ts index f53cb8c..23b34e6 100644 --- a/blog-frontend/src/api/index.ts +++ b/blog-frontend/src/api/index.ts @@ -1,3 +1,3 @@ -export * from "./api.js" -export * from "./global-store.js" -export * from "@/swagger" \ No newline at end of file +export * from "./api.js"; +export * from "./global-store.js"; +export * from "@/swagger"; diff --git a/blog-frontend/src/assets/base.css b/blog-frontend/src/assets/base.css index cc0d8b6..72f8d86 100644 --- a/blog-frontend/src/assets/base.css +++ b/blog-frontend/src/assets/base.css @@ -65,10 +65,11 @@ body { background: var(--color-background); transition: color 0.5s, background-color 0.5s; line-height: 1.6; - font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, - Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; + font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, + Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", + sans-serif; font-size: 15px; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; -} \ No newline at end of file +} diff --git a/blog-frontend/src/assets/main.css b/blog-frontend/src/assets/main.css index 20db1c9..b1f9962 100644 --- a/blog-frontend/src/assets/main.css +++ b/blog-frontend/src/assets/main.css @@ -1,4 +1,4 @@ -@import './base.css'; +@import "./base.css"; html, body, @@ -7,4 +7,4 @@ body, height: 100%; margin: 0; padding: 0; -} \ No newline at end of file +} diff --git a/blog-frontend/src/components/BlogComponent.vue b/blog-frontend/src/components/BlogComponent.vue index 92cbf08..5951b63 100644 --- a/blog-frontend/src/components/BlogComponent.vue +++ b/blog-frontend/src/components/BlogComponent.vue @@ -10,7 +10,7 @@ const props = defineProps<{ }>() function showBlog() { - router.push("/blog/" + props.blog.id + "/") + router.push("/blog/" + props.blog.id + "/read/") } function showCreator() { diff --git a/blog-frontend/src/components/FooterComponent.vue b/blog-frontend/src/components/FooterComponent.vue index 572fc19..6040b48 100644 --- a/blog-frontend/src/components/FooterComponent.vue +++ b/blog-frontend/src/components/FooterComponent.vue @@ -1,44 +1,41 @@ - \ No newline at end of file + diff --git a/blog-frontend/src/components/HeaderComponent.vue b/blog-frontend/src/components/HeaderComponent.vue index 46f12b8..ca34f81 100644 --- a/blog-frontend/src/components/HeaderComponent.vue +++ b/blog-frontend/src/components/HeaderComponent.vue @@ -1,72 +1,88 @@ - \ No newline at end of file + diff --git a/blog-frontend/src/components/manage/SiteManageComponent.vue b/blog-frontend/src/components/manage/SiteManageComponent.vue index 3e6ccba..8e6c0c6 100644 --- a/blog-frontend/src/components/manage/SiteManageComponent.vue +++ b/blog-frontend/src/components/manage/SiteManageComponent.vue @@ -1,28 +1,67 @@ - + \ No newline at end of file + diff --git a/blog-frontend/src/main.ts b/blog-frontend/src/main.ts index 91feb20..c5fe906 100644 --- a/blog-frontend/src/main.ts +++ b/blog-frontend/src/main.ts @@ -1,12 +1,12 @@ -import { createApp } from 'vue' -import App from './App.vue' -import router from './router' +import { createApp } from "vue"; +import App from "./App.vue"; +import router from "./router"; -import './assets/main.css' -import 'element-plus/dist/index.css' +import "./assets/main.css"; +import "element-plus/dist/index.css"; -const app = createApp(App) +const app = createApp(App); -app.use(router) +app.use(router); -app.mount('#app') +app.mount("#app"); diff --git a/blog-frontend/src/router/index.ts b/blog-frontend/src/router/index.ts index 22f71cf..2385c3a 100644 --- a/blog-frontend/src/router/index.ts +++ b/blog-frontend/src/router/index.ts @@ -29,9 +29,20 @@ const router = createRouter({ component: () => import('@/views/TagsView.vue') }, { - path: '/blog/:id/', + path: '/blog/:id', name: 'blog', - component: () => import('@/views/BlogReadView.vue') + children: [ + { + path: 'read', + name: 'read', + component: () => import('@/views/BlogReadView.vue') + }, + { + path: 'edit', + name: 'edit', + component: () => import('@/views/BlogEditView.vue') + } + ] }, ] }) diff --git a/blog-frontend/src/swagger/apis/blog-controller-api.ts b/blog-frontend/src/swagger/apis/blog-controller-api.ts index 2af484a..bc77966 100644 --- a/blog-frontend/src/swagger/apis/blog-controller-api.ts +++ b/blog-frontend/src/swagger/apis/blog-controller-api.ts @@ -18,8 +18,8 @@ import { Configuration } from '../configuration'; import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base'; import { BlogUpdateRequireVO } from '../models'; import { ResponseVOBlogInfoResponseVO } from '../models'; -import { ResponseVOListBlogInfoResponseVO } from '../models'; import { ResponseVOLong } from '../models'; +import { ResponseVOPageableVOBlogInfoResponseVO } from '../models'; import { ResponseVOVoid } from '../models'; /** * BlogControllerApi - axios parameter creator @@ -296,7 +296,7 @@ export const BlogControllerApiFp = function(configuration?: Configuration) { * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async getBlogInfoList(page: number, size: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> { + async getBlogInfoList(page: number, size: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> { const localVarAxiosArgs = await BlogControllerApiAxiosParamCreator(configuration).getBlogInfoList(page, size, options); return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; @@ -369,7 +369,7 @@ export const BlogControllerApiFactory = function (configuration?: Configuration, * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async getBlogInfoList(page: number, size: number, options?: AxiosRequestConfig): Promise> { + async getBlogInfoList(page: number, size: number, options?: AxiosRequestConfig): Promise> { return BlogControllerApiFp(configuration).getBlogInfoList(page, size, options).then((request) => request(axios, basePath)); }, /** @@ -434,7 +434,7 @@ export class BlogControllerApi extends BaseAPI { * @throws {RequiredError} * @memberof BlogControllerApi */ - public async getBlogInfoList(page: number, size: number, options?: AxiosRequestConfig) : Promise> { + public async getBlogInfoList(page: number, size: number, options?: AxiosRequestConfig) : Promise> { return BlogControllerApiFp(this.configuration).getBlogInfoList(page, size, options).then((request) => request(this.axios, this.basePath)); } /** diff --git a/blog-frontend/src/swagger/apis/user-controller-api.ts b/blog-frontend/src/swagger/apis/user-controller-api.ts index c766f6d..ad65943 100644 --- a/blog-frontend/src/swagger/apis/user-controller-api.ts +++ b/blog-frontend/src/swagger/apis/user-controller-api.ts @@ -322,10 +322,10 @@ export const UserControllerApiAxiosParamCreator = function (configuration?: Conf * @param {*} [options] Override http request option. * @throws {RequiredError} */ - register: async (body: UserCreateRequireVO, options: AxiosRequestConfig = {}): Promise => { + registerUser: async (body: UserCreateRequireVO, options: AxiosRequestConfig = {}): Promise => { // verify required parameter 'body' is not null or undefined if (body === null || body === undefined) { - throw new RequiredError('body','Required parameter body was null or undefined when calling register.'); + throw new RequiredError('body','Required parameter body was null or undefined when calling registerUser.'); } const localVarPath = `/api/v1/user/`; // use dummy base URL string because the URL constructor only accepts absolute URLs. @@ -511,8 +511,8 @@ export const UserControllerApiFp = function(configuration?: Configuration) { * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async register(body: UserCreateRequireVO, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> { - const localVarAxiosArgs = await UserControllerApiAxiosParamCreator(configuration).register(body, options); + async registerUser(body: UserCreateRequireVO, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> { + const localVarAxiosArgs = await UserControllerApiAxiosParamCreator(configuration).registerUser(body, options); return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; return axios.request(axiosRequestArgs); @@ -613,8 +613,8 @@ export const UserControllerApiFactory = function (configuration?: Configuration, * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async register(body: UserCreateRequireVO, options?: AxiosRequestConfig): Promise> { - return UserControllerApiFp(configuration).register(body, options).then((request) => request(axios, basePath)); + async registerUser(body: UserCreateRequireVO, options?: AxiosRequestConfig): Promise> { + return UserControllerApiFp(configuration).registerUser(body, options).then((request) => request(axios, basePath)); }, /** * @@ -715,8 +715,8 @@ export class UserControllerApi extends BaseAPI { * @throws {RequiredError} * @memberof UserControllerApi */ - public async register(body: UserCreateRequireVO, options?: AxiosRequestConfig) : Promise> { - return UserControllerApiFp(this.configuration).register(body, options).then((request) => request(this.axios, this.basePath)); + public async registerUser(body: UserCreateRequireVO, options?: AxiosRequestConfig) : Promise> { + return UserControllerApiFp(this.configuration).registerUser(body, options).then((request) => request(this.axios, this.basePath)); } /** * diff --git a/blog-frontend/src/swagger/models/attach-entity.ts b/blog-frontend/src/swagger/models/attach-entity.ts deleted file mode 100644 index daaf969..0000000 --- a/blog-frontend/src/swagger/models/attach-entity.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * OpenAPI definition - * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) - * - * OpenAPI spec version: v0 - * - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ -import { UserEntity } from './user-entity'; -/** - * - * @export - * @interface AttachEntity - */ -export interface AttachEntity { - /** - * - * @type {number} - * @memberof AttachEntity - */ - id?: number; - /** - * - * @type {Array} - * @memberof AttachEntity - */ - data?: Array; - /** - * - * @type {UserEntity} - * @memberof AttachEntity - */ - creator?: UserEntity; - /** - * - * @type {UserEntity} - * @memberof AttachEntity - */ - updater?: UserEntity; - /** - * - * @type {Date} - * @memberof AttachEntity - */ - createTime?: Date; - /** - * - * @type {Date} - * @memberof AttachEntity - */ - updateTime?: Date; -} diff --git a/blog-frontend/src/swagger/models/blog-attach-entity.ts b/blog-frontend/src/swagger/models/blog-attach-entity.ts deleted file mode 100644 index 2876218..0000000 --- a/blog-frontend/src/swagger/models/blog-attach-entity.ts +++ /dev/null @@ -1,64 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * OpenAPI definition - * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) - * - * OpenAPI spec version: v0 - * - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ -import { BlogEntity } from './blog-entity'; -import { UserEntity } from './user-entity'; -/** - * - * @export - * @interface BlogAttachEntity - */ -export interface BlogAttachEntity { - /** - * - * @type {number} - * @memberof BlogAttachEntity - */ - id?: number; - /** - * - * @type {Array} - * @memberof BlogAttachEntity - */ - data?: Array; - /** - * - * @type {BlogEntity} - * @memberof BlogAttachEntity - */ - blogEntity?: BlogEntity; - /** - * - * @type {UserEntity} - * @memberof BlogAttachEntity - */ - creator?: UserEntity; - /** - * - * @type {UserEntity} - * @memberof BlogAttachEntity - */ - updater?: UserEntity; - /** - * - * @type {Date} - * @memberof BlogAttachEntity - */ - createTime?: Date; - /** - * - * @type {Date} - * @memberof BlogAttachEntity - */ - updateTime?: Date; -} diff --git a/blog-frontend/src/swagger/models/blog-entity.ts b/blog-frontend/src/swagger/models/blog-entity.ts deleted file mode 100644 index 69015d3..0000000 --- a/blog-frontend/src/swagger/models/blog-entity.ts +++ /dev/null @@ -1,100 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * OpenAPI definition - * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) - * - * OpenAPI spec version: v0 - * - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ -import { BlogAttachEntity } from './blog-attach-entity'; -import { UserEntity } from './user-entity'; -/** - * - * @export - * @interface BlogEntity - */ -export interface BlogEntity { - /** - * - * @type {number} - * @memberof BlogEntity - */ - id?: number; - /** - * - * @type {string} - * @memberof BlogEntity - */ - title?: string; - /** - * - * @type {string} - * @memberof BlogEntity - */ - abstracts?: string; - /** - * - * @type {string} - * @memberof BlogEntity - */ - password?: string; - /** - * - * @type {string} - * @memberof BlogEntity - */ - content?: string; - /** - * - * @type {boolean} - * @memberof BlogEntity - */ - top?: boolean; - /** - * - * @type {boolean} - * @memberof BlogEntity - */ - publish?: boolean; - /** - * - * @type {Array} - * @memberof BlogEntity - */ - tags?: Array; - /** - * - * @type {Array} - * @memberof BlogEntity - */ - attachEntities?: Array; - /** - * - * @type {UserEntity} - * @memberof BlogEntity - */ - creator?: UserEntity; - /** - * - * @type {UserEntity} - * @memberof BlogEntity - */ - updater?: UserEntity; - /** - * - * @type {Date} - * @memberof BlogEntity - */ - createTime?: Date; - /** - * - * @type {Date} - * @memberof BlogEntity - */ - updateTime?: Date; -} diff --git a/blog-frontend/src/swagger/models/blog-info-response-vo.ts b/blog-frontend/src/swagger/models/blog-info-response-vo.ts index b750504..8517e38 100644 --- a/blog-frontend/src/swagger/models/blog-info-response-vo.ts +++ b/blog-frontend/src/swagger/models/blog-info-response-vo.ts @@ -11,8 +11,7 @@ * https://github.com/swagger-api/swagger-codegen.git * Do not edit the class manually. */ -import { BlogAttachEntity } from './blog-attach-entity'; -import { UserEntity } from './user-entity'; +import { UserInfoResponseVO } from './user-info-response-vo'; /** * * @export @@ -37,12 +36,6 @@ export interface BlogInfoResponseVO { * @memberof BlogInfoResponseVO */ abstracts?: string; - /** - * - * @type {string} - * @memberof BlogInfoResponseVO - */ - password?: string; /** * * @type {string} @@ -69,22 +62,16 @@ export interface BlogInfoResponseVO { tags?: Array; /** * - * @type {Array} + * @type {UserInfoResponseVO} * @memberof BlogInfoResponseVO */ - attachEntities?: Array; + creator?: UserInfoResponseVO; /** * - * @type {UserEntity} + * @type {UserInfoResponseVO} * @memberof BlogInfoResponseVO */ - creator?: UserEntity; - /** - * - * @type {UserEntity} - * @memberof BlogInfoResponseVO - */ - updater?: UserEntity; + updater?: UserInfoResponseVO; /** * * @type {Date} diff --git a/blog-frontend/src/swagger/models/index.ts b/blog-frontend/src/swagger/models/index.ts index 193a3a0..b5613a8 100644 --- a/blog-frontend/src/swagger/models/index.ts +++ b/blog-frontend/src/swagger/models/index.ts @@ -1,8 +1,5 @@ export * from './attach-attach-idbody'; -export * from './attach-entity'; export * from './attach-info-response-vo'; -export * from './blog-attach-entity'; -export * from './blog-entity'; export * from './blog-info-response-vo'; export * from './blog-update-require-vo'; export * from './pageable-voattach-info-response-vo'; @@ -10,7 +7,6 @@ export * from './pageable-voblog-info-response-vo'; export * from './pageable-vosetting-info-response-vo'; export * from './pageable-vouser-info-response-vo'; export * from './response-voblog-info-response-vo'; -export * from './response-volist-blog-info-response-vo'; export * from './response-volong'; export * from './response-vopageable-voattach-info-response-vo'; export * from './response-vopageable-voblog-info-response-vo'; @@ -23,7 +19,6 @@ export * from './response-vovoid'; export * from './setting-info-response-vo'; export * from './setting-update-require-vo'; export * from './user-create-require-vo'; -export * from './user-entity'; export * from './user-info-response-vo'; export * from './user-login-require-vo'; export * from './user-update-require-vo'; diff --git a/blog-frontend/src/swagger/models/pageable-voattach-info-response-vo.ts b/blog-frontend/src/swagger/models/pageable-voattach-info-response-vo.ts index 8eebac4..5493a5d 100644 --- a/blog-frontend/src/swagger/models/pageable-voattach-info-response-vo.ts +++ b/blog-frontend/src/swagger/models/pageable-voattach-info-response-vo.ts @@ -47,5 +47,5 @@ export interface PageableVOAttachInfoResponseVO { * @type {Array} * @memberof PageableVOAttachInfoResponseVO */ - data?: Array; + elements?: Array; } diff --git a/blog-frontend/src/swagger/models/pageable-voblog-info-response-vo.ts b/blog-frontend/src/swagger/models/pageable-voblog-info-response-vo.ts index 9d98d37..74727a2 100644 --- a/blog-frontend/src/swagger/models/pageable-voblog-info-response-vo.ts +++ b/blog-frontend/src/swagger/models/pageable-voblog-info-response-vo.ts @@ -47,5 +47,5 @@ export interface PageableVOBlogInfoResponseVO { * @type {Array} * @memberof PageableVOBlogInfoResponseVO */ - data?: Array; + elements?: Array; } diff --git a/blog-frontend/src/swagger/models/pageable-vosetting-info-response-vo.ts b/blog-frontend/src/swagger/models/pageable-vosetting-info-response-vo.ts index 1a61fbd..0eafbf9 100644 --- a/blog-frontend/src/swagger/models/pageable-vosetting-info-response-vo.ts +++ b/blog-frontend/src/swagger/models/pageable-vosetting-info-response-vo.ts @@ -47,5 +47,5 @@ export interface PageableVOSettingInfoResponseVO { * @type {Array} * @memberof PageableVOSettingInfoResponseVO */ - data?: Array; + elements?: Array; } diff --git a/blog-frontend/src/swagger/models/pageable-vouser-info-response-vo.ts b/blog-frontend/src/swagger/models/pageable-vouser-info-response-vo.ts index ae3f36f..3f4a730 100644 --- a/blog-frontend/src/swagger/models/pageable-vouser-info-response-vo.ts +++ b/blog-frontend/src/swagger/models/pageable-vouser-info-response-vo.ts @@ -47,5 +47,5 @@ export interface PageableVOUserInfoResponseVO { * @type {Array} * @memberof PageableVOUserInfoResponseVO */ - data?: Array; + elements?: Array; } diff --git a/blog-frontend/src/swagger/models/response-voblog-info-response-vo.ts b/blog-frontend/src/swagger/models/response-voblog-info-response-vo.ts index ceae10e..b9f0f3d 100644 --- a/blog-frontend/src/swagger/models/response-voblog-info-response-vo.ts +++ b/blog-frontend/src/swagger/models/response-voblog-info-response-vo.ts @@ -35,5 +35,5 @@ export interface ResponseVOBlogInfoResponseVO { * @type {BlogInfoResponseVO} * @memberof ResponseVOBlogInfoResponseVO */ - data?: BlogInfoResponseVO; + content?: BlogInfoResponseVO; } diff --git a/blog-frontend/src/swagger/models/response-volist-blog-info-response-vo.ts b/blog-frontend/src/swagger/models/response-volist-blog-info-response-vo.ts deleted file mode 100644 index 29da331..0000000 --- a/blog-frontend/src/swagger/models/response-volist-blog-info-response-vo.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * OpenAPI definition - * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) - * - * OpenAPI spec version: v0 - * - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ -import { BlogInfoResponseVO } from './blog-info-response-vo'; -/** - * - * @export - * @interface ResponseVOListBlogInfoResponseVO - */ -export interface ResponseVOListBlogInfoResponseVO { - /** - * - * @type {number} - * @memberof ResponseVOListBlogInfoResponseVO - */ - code?: number; - /** - * - * @type {string} - * @memberof ResponseVOListBlogInfoResponseVO - */ - msg?: string; - /** - * - * @type {Array} - * @memberof ResponseVOListBlogInfoResponseVO - */ - data?: Array; -} diff --git a/blog-frontend/src/swagger/models/response-volong.ts b/blog-frontend/src/swagger/models/response-volong.ts index a21362f..82f29d1 100644 --- a/blog-frontend/src/swagger/models/response-volong.ts +++ b/blog-frontend/src/swagger/models/response-volong.ts @@ -34,5 +34,5 @@ export interface ResponseVOLong { * @type {number} * @memberof ResponseVOLong */ - data?: number; + content?: number; } diff --git a/blog-frontend/src/swagger/models/response-vopageable-voattach-info-response-vo.ts b/blog-frontend/src/swagger/models/response-vopageable-voattach-info-response-vo.ts index 0c8a4e2..62c1805 100644 --- a/blog-frontend/src/swagger/models/response-vopageable-voattach-info-response-vo.ts +++ b/blog-frontend/src/swagger/models/response-vopageable-voattach-info-response-vo.ts @@ -35,5 +35,5 @@ export interface ResponseVOPageableVOAttachInfoResponseVO { * @type {PageableVOAttachInfoResponseVO} * @memberof ResponseVOPageableVOAttachInfoResponseVO */ - data?: PageableVOAttachInfoResponseVO; + content?: PageableVOAttachInfoResponseVO; } diff --git a/blog-frontend/src/swagger/models/response-vopageable-voblog-info-response-vo.ts b/blog-frontend/src/swagger/models/response-vopageable-voblog-info-response-vo.ts index 512057c..089ec7c 100644 --- a/blog-frontend/src/swagger/models/response-vopageable-voblog-info-response-vo.ts +++ b/blog-frontend/src/swagger/models/response-vopageable-voblog-info-response-vo.ts @@ -35,5 +35,5 @@ export interface ResponseVOPageableVOBlogInfoResponseVO { * @type {PageableVOBlogInfoResponseVO} * @memberof ResponseVOPageableVOBlogInfoResponseVO */ - data?: PageableVOBlogInfoResponseVO; + content?: PageableVOBlogInfoResponseVO; } diff --git a/blog-frontend/src/swagger/models/response-vopageable-vosetting-info-response-vo.ts b/blog-frontend/src/swagger/models/response-vopageable-vosetting-info-response-vo.ts index 8262174..6e11026 100644 --- a/blog-frontend/src/swagger/models/response-vopageable-vosetting-info-response-vo.ts +++ b/blog-frontend/src/swagger/models/response-vopageable-vosetting-info-response-vo.ts @@ -35,5 +35,5 @@ export interface ResponseVOPageableVOSettingInfoResponseVO { * @type {PageableVOSettingInfoResponseVO} * @memberof ResponseVOPageableVOSettingInfoResponseVO */ - data?: PageableVOSettingInfoResponseVO; + content?: PageableVOSettingInfoResponseVO; } diff --git a/blog-frontend/src/swagger/models/response-vopageable-vouser-info-response-vo.ts b/blog-frontend/src/swagger/models/response-vopageable-vouser-info-response-vo.ts index b59723f..b70fd7f 100644 --- a/blog-frontend/src/swagger/models/response-vopageable-vouser-info-response-vo.ts +++ b/blog-frontend/src/swagger/models/response-vopageable-vouser-info-response-vo.ts @@ -35,5 +35,5 @@ export interface ResponseVOPageableVOUserInfoResponseVO { * @type {PageableVOUserInfoResponseVO} * @memberof ResponseVOPageableVOUserInfoResponseVO */ - data?: PageableVOUserInfoResponseVO; + content?: PageableVOUserInfoResponseVO; } diff --git a/blog-frontend/src/swagger/models/response-vosetting-info-response-vo.ts b/blog-frontend/src/swagger/models/response-vosetting-info-response-vo.ts index 5d6d94a..00630de 100644 --- a/blog-frontend/src/swagger/models/response-vosetting-info-response-vo.ts +++ b/blog-frontend/src/swagger/models/response-vosetting-info-response-vo.ts @@ -35,5 +35,5 @@ export interface ResponseVOSettingInfoResponseVO { * @type {SettingInfoResponseVO} * @memberof ResponseVOSettingInfoResponseVO */ - data?: SettingInfoResponseVO; + content?: SettingInfoResponseVO; } diff --git a/blog-frontend/src/swagger/models/response-vostring.ts b/blog-frontend/src/swagger/models/response-vostring.ts index bfa6aa9..b493985 100644 --- a/blog-frontend/src/swagger/models/response-vostring.ts +++ b/blog-frontend/src/swagger/models/response-vostring.ts @@ -34,5 +34,5 @@ export interface ResponseVOString { * @type {string} * @memberof ResponseVOString */ - data?: string; + content?: string; } diff --git a/blog-frontend/src/swagger/models/response-vouser-info-response-vo.ts b/blog-frontend/src/swagger/models/response-vouser-info-response-vo.ts index edd73f4..c957fcd 100644 --- a/blog-frontend/src/swagger/models/response-vouser-info-response-vo.ts +++ b/blog-frontend/src/swagger/models/response-vouser-info-response-vo.ts @@ -35,5 +35,5 @@ export interface ResponseVOUserInfoResponseVO { * @type {UserInfoResponseVO} * @memberof ResponseVOUserInfoResponseVO */ - data?: UserInfoResponseVO; + content?: UserInfoResponseVO; } diff --git a/blog-frontend/src/swagger/models/response-vovoid.ts b/blog-frontend/src/swagger/models/response-vovoid.ts index 50a4737..e023dda 100644 --- a/blog-frontend/src/swagger/models/response-vovoid.ts +++ b/blog-frontend/src/swagger/models/response-vovoid.ts @@ -34,5 +34,5 @@ export interface ResponseVOVoid { * @type {any} * @memberof ResponseVOVoid */ - data?: any; + content?: any; } diff --git a/blog-frontend/src/swagger/models/user-create-require-vo.ts b/blog-frontend/src/swagger/models/user-create-require-vo.ts index 969e68b..a3383b0 100644 --- a/blog-frontend/src/swagger/models/user-create-require-vo.ts +++ b/blog-frontend/src/swagger/models/user-create-require-vo.ts @@ -34,5 +34,5 @@ export interface UserCreateRequireVO { * @type {string} * @memberof UserCreateRequireVO */ - password?: string; + password: string; } diff --git a/blog-frontend/src/swagger/models/user-entity.ts b/blog-frontend/src/swagger/models/user-entity.ts deleted file mode 100644 index a1a9790..0000000 --- a/blog-frontend/src/swagger/models/user-entity.ts +++ /dev/null @@ -1,87 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * OpenAPI definition - * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) - * - * OpenAPI spec version: v0 - * - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ -import { AttachEntity } from './attach-entity'; -import { BlogEntity } from './blog-entity'; -/** - * - * @export - * @interface UserEntity - */ -export interface UserEntity { - /** - * - * @type {string} - * @memberof UserEntity - */ - id?: string; - /** - * - * @type {string} - * @memberof UserEntity - */ - email: string; - /** - * - * @type {string} - * @memberof UserEntity - */ - nickname: string; - /** - * - * @type {string} - * @memberof UserEntity - */ - password?: string; - /** - * - * @type {string} - * @memberof UserEntity - */ - role?: UserEntityRoleEnum; - /** - * - * @type {Array} - * @memberof UserEntity - */ - blogEntities?: Array; - /** - * - * @type {Array} - * @memberof UserEntity - */ - attachEntities?: Array; - /** - * - * @type {Date} - * @memberof UserEntity - */ - createTime?: Date; - /** - * - * @type {Date} - * @memberof UserEntity - */ - updateTime?: Date; -} - -/** - * @export - * @enum {string} - */ -export enum UserEntityRoleEnum { - GUEST = 'GUEST', - AUTHOR = 'AUTHOR', - ADMIN = 'ADMIN' -} - diff --git a/blog-frontend/src/swagger/models/user-info-response-vo.ts b/blog-frontend/src/swagger/models/user-info-response-vo.ts index 36ea011..e92d69a 100644 --- a/blog-frontend/src/swagger/models/user-info-response-vo.ts +++ b/blog-frontend/src/swagger/models/user-info-response-vo.ts @@ -11,8 +11,6 @@ * https://github.com/swagger-api/swagger-codegen.git * Do not edit the class manually. */ -import { AttachEntity } from './attach-entity'; -import { BlogEntity } from './blog-entity'; /** * * @export @@ -43,18 +41,6 @@ export interface UserInfoResponseVO { * @memberof UserInfoResponseVO */ role?: UserInfoResponseVORoleEnum; - /** - * - * @type {Array} - * @memberof UserInfoResponseVO - */ - blogEntities?: Array; - /** - * - * @type {Array} - * @memberof UserInfoResponseVO - */ - attachEntities?: Array; /** * * @type {Date} diff --git a/blog-frontend/src/views/BlogEditView.vue b/blog-frontend/src/views/BlogEditView.vue index 061b9f9..ef2e189 100644 --- a/blog-frontend/src/views/BlogEditView.vue +++ b/blog-frontend/src/views/BlogEditView.vue @@ -1,33 +1,71 @@ \ No newline at end of file +.editor-toolbar { + border-bottom: 1px solid #ccc; + height: auto; +} + +.editor-scrollbar { + height: 100%; +} + +.editor { + height: 80%; +} + diff --git a/blog-frontend/src/views/BlogReadView.vue b/blog-frontend/src/views/BlogReadView.vue index 061b9f9..12a3d70 100644 --- a/blog-frontend/src/views/BlogReadView.vue +++ b/blog-frontend/src/views/BlogReadView.vue @@ -1,33 +1,70 @@ \ No newline at end of file +.blog-header { + background-color: aqua; + height: auto; + padding: 5px 0 5px 0; +} + +.blog-title { + text-align: center; + font-size: xx-large; +} + +.blog-aside { + border-width: 0 1px 0 0; + border-style: solid; +} + +.blog-content { +} + +.flex-grow { + flex-grow: 1; +} + diff --git a/blog-frontend/src/views/IndexView.vue b/blog-frontend/src/views/IndexView.vue index bb888a6..4919b99 100644 --- a/blog-frontend/src/views/IndexView.vue +++ b/blog-frontend/src/views/IndexView.vue @@ -1,55 +1,64 @@ - + - \ No newline at end of file diff --git a/blog-frontend/src/views/LoginView.vue b/blog-frontend/src/views/LoginView.vue index 6765664..905ab35 100644 --- a/blog-frontend/src/views/LoginView.vue +++ b/blog-frontend/src/views/LoginView.vue @@ -1,67 +1,68 @@ \ No newline at end of file + diff --git a/blog-frontend/src/views/ManagePaneView.vue b/blog-frontend/src/views/ManagePaneView.vue index 9e37baa..3ebb37f 100644 --- a/blog-frontend/src/views/ManagePaneView.vue +++ b/blog-frontend/src/views/ManagePaneView.vue @@ -1,28 +1,27 @@ - - \ No newline at end of file + diff --git a/blog-frontend/src/views/RegisterView.vue b/blog-frontend/src/views/RegisterView.vue index 8941a56..c0a30a0 100644 --- a/blog-frontend/src/views/RegisterView.vue +++ b/blog-frontend/src/views/RegisterView.vue @@ -1,65 +1,66 @@ \ No newline at end of file + diff --git a/blog-frontend/src/views/TagsView.vue b/blog-frontend/src/views/TagsView.vue index 8e8347f..fb62d1f 100644 --- a/blog-frontend/src/views/TagsView.vue +++ b/blog-frontend/src/views/TagsView.vue @@ -1,13 +1,7 @@ - - - - \ No newline at end of file +